Buenas tardes KUK.
Muchisimas gracias por tu interés. He probado la programación que me indicas y no consigo que funcione.
Creo que me he explicado mal. Te cuento otra vez mi problema.
Tengo una DLL que llama a un EXE.
El programa EXE tiene que devolver un valor y desde la DLL recogerlo.
La programación de la DLL
Código COBOL:
WORKING-STORAGE SECTION.
01 EXT-VARIABLE PIC X(2).
PROCEDURE DIVISION.
PRINCIPAL SECTION.
INVOKE POW-SELF "ExecuteSync" USING "CONEXION.EXE" POW-SWNORMAL.
IF EXT-VARIABLE = "SI"
INVOKE POW-SELF "DisplayMessage" USING "¡Hay conexión!" 64
ELSE
INVOKE POW-SELF "DisplayMessage" USING "¡NO hay conexión!" 48
END-IF
La programación del programa EXE
Código COBOL:
WORKING-STORAGE SECTION.
*********************************
01 CONEXION PIC X(20).
01 FUNCION PIC X(24).
01 RESP PIC S9(9) COMP-5.
*********************************
01 GLB-CMD IS GLOBAL PIC X(260).
01 VALOR REDEFINES GLB-CMD GLOBAL.
05 PTR-VAR POINTER.
05 PIC X(256).
LINKAGE SECTION.
01 EXT-VARIABLE PIC X(2).
PROCEDURE DIVISION.
PRINCIPAL SECTION.
MOVE "CommandLine" OF POW-SELF TO GLB-CMD
MOVE "InternetCheckConnectionA" TO FUNCION
MOVE "http://www.google.es" TO CONEXION
CALL FUNCION WITH STDCALL USING
by reference CONEXION
by value 1
by value 0
returning RESP
END-CALL
SET ADDRESS OF EXT-VARIABLE TO PTR-VAR
IF RESP = ZEROS
MOVE "NO" TO EXT-VARIABLE
ELSE
MOVE "SI" TO EXT-VARIABLE
END-IF.
Cuando ejecuto el programa da un error.