If a client forgets to define an online DC COBOL program to the System Generation, they may encounter random program checks and other unpredictable errors, or a DC090002 abend.
Online DC COBOL programs MUST be defined to the System Generation.
Normally, if you try to run a DC COBOL program which has not been defined to SYSGEN, you will get a specific and accurate error message such as DC171030 or a 3020 error-status.
However, there are some scenarios where a NULL PDE can be built for a DC COBOL program which is not previously defined to the SYSGEN. This NULL PDE will be built with TYPE UNDEFINED and LANGUAGE ASSEMBLER. Such a definition can cause the unpredictable results when the program is executed.
The scenarios which can cause this situation are as follows:
The ultimate solution is to define the program to SYSGEN with LANGUAGE IS COBOL. Programs can also be dynamically defined to the system with the following command:
DCMT VARY DYNAMIC PROGRAM program-name COBOL.
However such a definition lasts only as long as the CV is active. For definitions to be persistent across a CV shutdown, they must be defined to the SYSGEN.