Created On:  12 November 2012

Problem:

In RM/COBOL the PROGRAM-ID is a special register that returns the program name. For example in RM/COBOL the following code sets the data item ws-pgmid with the value of the program-id.

03 ws-pgmid pic x(30) value PROGRAM-ID.

This is not valid in Visual COBOL

Resolution:

Visual COBOL has its own set of Library routines that can be found in the documentation under Reference > Library Routines.

An example of how to return program information about the current program and other program in the run-unit is as follows: (please see entry for CBL_GET_PROGRAM_INFO for more detailed information), solution although it means code change….

Get Program-ID into Visual COBOL program

      program-id. testProgram.      data division.      working-storage section.      01 wsfunction              pic x(4) comp-5.      01 param-block.         05 cblte-gpi-size      pic x(4) comp-5.         05 cblte-gpi-flags     pic x(4) comp-5.         05 cblte-gpi-handle    usage pointer.          05 cblte-gpi-prog-id   usage pointer.          05 cblte-gpi-attrs     pic x(4) comp-5.       01 return-buf             pic x(100).       01 return-buf-len         pic x(4) comp-5 value 100.      01 status-code     pic x(4) comp-5 value 0.      procedure division.          move length of param-block to cblte-gpi-size          move length of return-buf to return-buf-len                  *> Establish the current program and return handle                               move 0 to wsfunction          perform 100-call-program-info          display "program name = " return-buf                  *> Get first entry point in program          move 4 to wsfunction          perform 100-call-program-info          display "entry point = " return-buf                *> Close the handle that was established                    move 6 to wsfunction          perform 100-call-program-info          stop run.            100-call-program-info.                           call "CBL_GET_PROGRAM_INFO"              using                 by value wsfunction                by reference   param-block                by reference   return-buf                by reference   return-buf-len            returning      status-code           end-call.