If your error is not caused by any of the items listed above, examine your routine or routines for changes since the last successful run. If there have been changes, review these changes for errors that might be causing the problem. One way to isolate the problem is to branch around or comment out recent changes and rerun the routine. If the run is successful, the error can be narrowed to the scope of the changes.
Duplicate names shared between Fortran routines and C library routines can produce unexpected results. Language Environment provides several cataloged procedures to properly resolve duplicate names. For more information on how to avoid name conflicts, see z/OS Language Environment Programming Guide.
Changes in optimization levels, addressing modes, and input/output file formats can also cause unanticipated problems in your routine.
In most cases, generated condition tokens or runtime messages point to the nature of the error. The runtime messages offer the most efficient corrective action. To help you analyze errors and determine the most useful method to fix the problem, Table 1 lists common error symptoms, possible causes, and programmer responses.
Error Symptom | Possible Cause | Programmer Response |
---|---|---|
Numbered runtime message appears | Condition raised in routine | For any messages you receive, read the Programmer Response. For information about message structure, see Interpreting runtime messages. |
User abend code < 4000 |
|
See the Language Environment abend codes in z/OS Language Environment Runtime Messages. Check for a subsystem-generated abend or a user-specified abend. |
User abend code ≥ 4000 |
|
For any abends you receive, read the appropriate explanation listed in the abend codes section of z/OS Language Environment Runtime Messages. |
System abend with TRAP(OFF) | Cause depends on type of malfunction | Respond appropriately. See the messages and codes book of the operating system. |
System abend with TRAP(ON) | System-detected error | See the messages and codes information of the operating system. |
No response (wait/loop) | Application logic failure | Check routine logic. Ensure ERRCOUNT and DEPTHCONDLMT runtime options are set to a nonzero value. |
Unexpected message (message received was not from most recent service) | Condition caused by something related to current service | Generate a traceback using CEE3DMP. |
Incorrect output | Incorrect file definitions, storage overlay, incorrect routine mask setting, references to uninitialized variables, data input errors, or application routine logic error | Correct the appropriate parameters. |
No output | Incorrect ddname, file definitions, or message file setting | Correct the appropriate parameters. |
Nonzero return code from enclave | Unhandled condition of severity 2, 3, or 4, or the return code was issued by the application routine | Check the Language Environment message file for runtime message. |
Unexpected output | Conflicting library module names | See the name conflict resolution steps outlined in z/OS Language Environment Programming Guide. |