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.