What can cause a u3336 abend calling COBOL?

Document ID : KB000018450
Last Modified Date : 14/02/2018
Show Technical Document Details

Description:

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.

Solution:

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