I have a COBOL program that calls a VB6 program, which reads data from a weight scale using COM port.
STRING WS-PATH, '\', LINK-KEY, '\vb.exe' DELIMITED BY ' ' INTO WS-COMMAND.
CALL 'SYSTEM' USING WS-COMMAND 128 GIVING WS-STATUS.
CANCEL 'SYSTEM'.
The data is saved into a TXT file, then the COBOL program opens the TXT and reads the data.
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'
Everything works fine so far, but is it possible to pass and receive data between the programs directly without creating any file?
Edit: So I created a DLL and used axdefgen for testing purposes:
* 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
Now how do I call/pass parameters to the function fSum? I tried this:
CREATE clsMath
SERVER-NAME IS '128.0.0.220'
HANDLE IN WS-TEMP.
INQUIRE WS-TEMP fSum IN WS-TEMP2.
DISPLAY WS-TEMP2.
And I get this:
'FSUM' must be a 'get' property or method of '@CLSMATH'
Does this mean I need something like this?
PROPERTY-GET, 17, @Day RETURNING "short"