Is there any way to know the name of the program that is currently running, besides calling another program and in that program using the "C$CALLEDBY" routine?
In version 6.2.0 the following C$MYFILE library routine was introduced.
This routine returns the filename of the disk file containing the currently executing program. Here is an example of how to use it:
77 PROGRAM-NAME pic x(80) value spaces.
77 CALL-STATUS pic s99 value 0.
Where CALL-STATUS PIC contains one of the following values:
1 PROGRAM-NAME was filled successfully
-1 Program name unknown
When successfully called, it indicates the name of the disk file containing the currently executing program, if it is known, for example:
The runtime will use as much space for the name of the file as the COBOL program allows.
The PROGRAM-NAME parameter will contain the filename just as the runtime received it.
If the program is part of a COBOLl object library, for example, mylib.lib contains File1.acu, along with other COBOL objects; after calling the "C$MYFILE" library routine, PROGRAM-NAME will have a value of:
which is the COBOL library name instead the name of the program.