【发布时间】:2019-11-13 02:35:02
【问题描述】:
我有一个调用 VB6 程序的 COBOL 程序,该程序使用 COM 端口从体重秤读取数据。
STRING WS-PATH, '\', LINK-KEY, '\vb.exe' DELIMITED BY ' ' INTO WS-COMMAND.
CALL 'SYSTEM' USING WS-COMMAND 128 GIVING WS-STATUS.
CANCEL 'SYSTEM'.
数据保存到TXT文件中,然后COBOL程序打开TXT并读取数据。
Dim i_data_file As Integer
i_data_file = FreeFile
Open App.Path & "\data.txt" For Binary Access Write As #i_data_file
Put #i_data_file, , data
Close #i_data_file
STRING '@[DISPLAY]:', WS-PATH, '\', LINK-KEY, '\data.txt' DELIMITED BY ' ' INTO WS-SOURCE
STRING WS-PREFIX2, WEIGHT-DATANAME DELIMITED BY ' ' INTO WS-TARGET
CALL 'C$COPY' USING WS-SOURCE, WS-TARGET GIVING WS-STATUS
CANCEL 'C$COPY'
到目前为止一切正常,但是是否可以直接在程序之间传递和接收数据而不创建任何文件?
编辑: 所以我创建了一个 DLL 并使用 axdefgen 进行测试:
* clsMath
CLASS @clsMath
CLSID, 073F9971-1BE7-45A7-B50F-82AAAC511268
NAME, "clsMath"
PRIMARY-INTERFACE
DEFAULT-INTERFACE, "_clsMath"
* fSum
METHOD, 1610809344, @fSum,
"long" @2, TYPE 3,
"long" @1, TYPE 3
RETURNING "long", TYPE 3
现在我如何调用/传递参数给函数 fSum?我试过这个:
CREATE clsMath
SERVER-NAME IS '128.0.0.220'
HANDLE IN WS-TEMP.
INQUIRE WS-TEMP fSum IN WS-TEMP2.
DISPLAY WS-TEMP2.
我明白了:
'FSUM' must be a 'get' property or method of '@CLSMATH'
这是否意味着我需要这样的东西?
PROPERTY-GET, 17, @Day RETURNING "short"
【问题讨论】:
-
你的意思是VB6程序打开文件读取数据?
标签: dll vb6 cobol acucobol-gt