Cobol Foro

Cobol Foro (https://www.cobolforo.es/index.php)
-   NetCOBOL (https://www.cobolforo.es/forumdisplay.php?f=2)
-   -   [Compilador] Fujitsu Cobol for Windows Call EXE (https://www.cobolforo.es/showthread.php?t=502)

Joseg 27 de octubre de 2016 13:45

Fujitsu Cobol for Windows Call EXE
 
Alguém sabe como chamar um EXE (qualquer executável), num programa em Cobol.
O mesmo que se faz no Power: pow-self "execute" commandline


Grcias

Rapinto 29 de octubre de 2016 23:18

Joseg,

Utilizei este código nos WebServices das Guias de transporte

Na Working Storage
Código COBOL:
  1.  01 ProcessInfo.
  2.    02 prcinf01   PIC 9(9) COMP-5.
  3.    02 prcinf02   PIC 9(9) COMP-5.
  4.    02 prcinf03   PIC 9(9) COMP-5.
  5.    02 prcinf04   PIC 9(9) COMP-5.
  6.  01 StartupInfo.
  7.    02 stainf01   PIC 9(9) COMP-5.
  8. *
  9.    02 stainf02   PIC 9(9) COMP-5.
  10.    02 stainf03   PIC 9(9) COMP-5.
  11.    02 stainf04   PIC 9(9) COMP-5.
  12. *
  13.    02 stainf05   PIC 9(9) COMP-5.
  14.    02 stainf06   PIC 9(9) COMP-5.
  15.    02 stainf07   PIC 9(9) COMP-5.
  16.    02 stainf08   PIC 9(9) COMP-5.
  17.    02 stainf09   PIC 9(9) COMP-5.
  18.    02 stainf10   PIC 9(9) COMP-5.
  19.    02 stainf11   PIC 9(9) COMP-5.
  20.    02 stainf12   PIC 9(9) COMP-5   VALUE 1.
  21.    02 stainf13   PIC 9(4) COMP-5   VALUE 0.
  22.    02 stainf14   PIC 9(4) COMP-5.
  23.    02 stainf15   PIC 9(9) COMP-5.
  24. *
  25.    02 stainf16   PIC 9(9) COMP-5.
  26.    02 stainf17   PIC 9(9) COMP-5.
  27.    02 stainf18   PIC 9(9) COMP-5.
  28.  01 appPath      PIC X(256) VALUE SPACE.
  29.  01 pathLeng     PIC S9(9) COMP-5.
  30.  01 cmdline      PIC X(256) VALUE SPACE.
  31.  01 cmdlinLeng   PIC S9(9) COMP-5.

E na Procedure:


Código COBOL:
  1.      CALL "CreateProcessA" WITH STDCALL LINKAGE
  2.                                    USING BY REFERENCE appPath
  3.                                          BY VALUE 0                    
  4.                                          BY VALUE 0
  5.                                          BY VALUE 0
  6.                                          BY VALUE 0
  7.                                          BY VALUE 0
  8.                                          BY VALUE 0
  9.                                          BY VALUE 0
  10.                                          BY REFERENCE StartupInfo
  11.                                          BY REFERENCE ProcessInfo
  12.                                    RETURNING WSRESULT.
  13. *
  14.      IF WSRESULT = 1 THEN
  15.         CALL "WaitForSingleObject" WITH STDCALL LINKAGE USING BY VALUE prcinf01 -1
  16.         CALL "GetExitCodeProcess" WITH STDCALL LINKAGE USING BY VALUE prcinf01 BY REFERENCE WSRESULT
  17.         CALL "CloseHandle" WITH STDCALL LINKAGE USING BY VALUE prcinf01
  18.         CALL "CloseHandle" WITH STDCALL LINKAGE USING BY VALUE prcinf02
  19.      ELSE
  20.         CALL "GetLastError" WITH STDCALL LINKAGE RETURNING WSRESULT
  21.         DISPLAY "Failed in execution " appPath(1:pathLeng)
  22.         DISPLAY "Return code is '" WSRESULT "'."
  23.         GO TO MAIN-99-EXIT
  24.      END-IF.

Vê se ajuda ou não.

Abraço,
Rui Pinto


La franja horaria es GMT +2. Ahora son las 02:47.

Powered by: vBulletin, Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.