In some situations, the need may arise to determine what programs in the installation call the Endevor API. For example:
If there is no internal documentation onsite specifying what these programs are, they must be found in some other way.
How to do that?
There are different possible approaches to obtain this information
Each and every call to the Endevor API passes the 'API control structure' block (AACTL) as the first parameter. This block is mapped by copybooks ECHAACTL (for COBOL programs) and ENHAACTL (for assembler programs). Therefore, scanning the source programs for the respective copybook name will identify programs that may invoke the Endevor API
If the programs are managed by Endevor, there are some tools available to assist with this task:
For programs not managed by Endevor, it is possible to use the ISPF SRCHFOR utility , either in the member list of a particular library or in a data set list display.
Notes:
Programs invoke the Endevor API by calling the stub program ENA$NDVR. The call may be static (with the stub linked within the program load module) or dynamic (with the stub loaded at run time.
In both cases, the string ENA$NDVR will be present within the load module. It may be either:
Therefore, it is possible to use the ISPF search functions looking for string ENA$NDVR in the load libraries to identify load modules that may potentially call the endevor API.
If the load modules have been generated by Endevor and contain endevor footprints, they lead to the elements which originated the load modules. The View Footprint Information function of the Endevor dialog and the CONRPT80 Report (Library Member Footprint Report Details) may be used for this task
For load modules that have the ENA$NDVR stub linked within, the CAMODID utility may be used to identify load modules containing this stub. This utility is normally used to report the fix level of product modules and will react to the ENA$NDVR stub found within the load module. The command would be:
CAMODID DETAIL DSN(load.library.name)