Common errors in routines
- If you do not have enough virtual storage, increase your region size or decrease your storage usage (stack size) by using the storage-related runtime options and callable services. (See Controlling storage allocation for information about using storage in routines.)
- If you do not have enough disk space, increase your disk allocation.
- If executable files are not available, check your executable library to ensure that they are defined. For example, check your STEPLIB or JOBLIB definitions.
If your error is not caused by any of these items, 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 that are 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 about how to avoid name conflicts, see Resolving library module name conflicts between Fortran and C in 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 that is 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 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 that is listed in Language Environment abend codes in 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 that ERRCOUNT and DEPTHCONDLMT runtime options are set to a nonzero value. |
| Unexpected message (message received was not from most recent service) | Condition that is caused by something that is related to current service. | Generate a traceback by 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 that are outlined in Resolving library module name conflicts between Fortran and C in z/OS Language Environment Programming Guide. |