Getting a result from a CALL "SYSTEM"

 3 Replies
 0 Subscribed to this topic
 17 Subscribed to this forum
Sort:
Author
Messages
Leon Feder
New Member
Posts: 2
New Member
    I know how to call a system command from a COBOL program (Thanks, your article is great) but how can I use the results? I would like to get the result code and also look at the redirected output of the command.
    John Henley
    Posts: 3353
      Hi Leon!

      I haven't tried it, but I think you can capture the return status using
      CALL "system" USING xxx
      GIVING WS-RETURN-STATUS.

      Ref: http://supportline.microf...2sp1/printf.htm#0033

      For the definition of WS-RETURN-STATUS, see http://supportline.microf...s/sx22sp1/prenvi.htm

      10.2.5 Handling Return Codes
      There are two different methods for handling return codes passed back from a called subprogram to the calling program. The first method is to make use of the COBOL special register, RETURN-CODE. The register is given a value in the COBOL subprogram before that subprogram passes control back to the COBOL calling program with an EXIT PROGRAM or GOBACK statement. The RETURN-CODE register of the calling program is then automatically updated with the subprogram's return code and this register can be examined accordingly. The RETURN-CODE register is predefined as PIC S9(4) COMP (unless the program has been compiled with the RTNCODE-SIZE "4" directive when it is PIC S9(8) COMP) which, while being suitable for COBOL-to-COBOL interprogram communication, is not really flexible enough to deal with calls to non-COBOL subprograms.

      The preferred, and more flexible, way of handling return codes to and from COBOL programs in mixed-language applications is to make use of the RETURNING phrase on the CALL, EXIT PROGRAM, GOBACK, STOP RUN statements. This syntax enables you to define the format of the return code yourself and so cope with whatever size of return code you require.
      Thanks for using the LawsonGuru.com forums!
      John
      John Henley
      Posts: 3353
        As for the redirection of the output, it might be easiest to redirect the command to a file, and then just read the file back in...
        Thanks for using the LawsonGuru.com forums!
        John
        Leon Feder
        New Member
        Posts: 2
        New Member
          John,
          Thanks. That makes sense.