An intermittent Abend U3336 occurs when invoking a COBOL subroutine. The program uses the ANSINT routine to establish the COBOL environment and abends when a return code of 4 is returned.
The ANSINT routine delivered with the product in the optional materials library, OPTMATL, is an ANSI COBOL Interface. It was written to enable users to call a COBOL routine such that COBOL will interpret it as a subroutine rather than main program.
ANSINT is no longer required if the LE environment is being used.
It is no longer needed because VISION:Report automatically invokes the LE environment and any called COBOL program would then be a subroutine.
If it is still used for some reason, the user should expect a return code of 4 and is expected to modify the program for that return code.
Following is why the IGZERRE program returns with a return code of 4.
Note the excerpt below from the Enterprise COBOL for z/OS, Version 4.1, Compiler and Runtime Migration Guide:
********************************************************************************************** Using IGZERRE You can continue to use IGZERRE to explicitly drive the initialization and termination functions of COBOL. However, you need to be aware of changes in three of the return codes. On return from IGZERRE, register 15 contains a return code. Table 1 shows the changes when running with Language Environment: Table 1. Return code changes for IGZERRE Return code Comments 0 No change 4 Is issued if Language Environment is already initialized (previously issued if VS COBOL II was already initialized) **********************************************************************************************
The ANSINT sample which is delivered was last modified before LE was used.
It is looking for a zero which, as documented above, is no longer returned.
In this case two lines in ANSINT required modification to look for the new Return Code values:
LTR R15,R15 ANY PROBLEMS? 00125 BZR R12 ... NO, GO ON 00126 Should be changed to CH 15,=H'4' BNHR 12