This document covers the following topics:
Whenever ADL detects an error situation, it issues an error or warning message. Each individual message is identified by a unique number in the range from 1 to 1500. The Error Messages and Codes documentation lists all messages in numerical sequence together with an explanation and recommended action.
Note that error messages with numbers in the range from 1 to 255 are reserved for and identical to Adabas response codes. A more detailed explanation of these can be found in the Adabas Messages and Codes documentation.
If an unrecoverable error is detected, ADL terminates the user program
               abnormally. In particular, batch programs are abended with the user completion
               code 700, or the JDUMP macro in z/OS and z/VSE respectively.
               IMS/TP applications are abended with the user completion code 700.
      
In some cases, ADL terminates batch programs abnormally with a system
               completion code "0C1" (operation exception). These errors can
               easily be identified by the PSW pointing to a character string
               like:
      
-> INVALID PCB NUMBER
or
-> ATTEMPT TO ACCESS NON CONVERTED PCB
These error situations, however, are rare and should not occur under normal circumstances.
CICS applications are terminated abnormally either with an abend code
               DAZA, accompanied by an ADL error message, or any other abend code
               in the form DAZx where x may be "B",
               "C", "D" or a number between 1 and 9. These abend
               codes are explained in the section Error Messages and
                  Codes.
      
ADL treats Adabas response codes in two different ways. The first class of Adabas response codes is considered to be unrecoverable and thus leads to an abnormal termination of the user application. An example of an unrecoverable Adabas response code is the response code 148 (database not active).
The second class of Adabas response codes is considered to be recoverable. In particular, these are the response codes 3 (end-of-file or end-of-list), 9 (time limit has been exceeded), 145 (the hold queue is full) and 198 (duplicate value for unique descriptor).
Failures during system requests from ADL (like GETMAIN,
               sequential I/O etc.) are considered to be unrecoverable and generally cause an
               abnormal termination of the application (see above in this section). You should
               try to determine the cause of the error. Most of these are related to
               improperly defined sequential files or insufficient region sizes.
      
Software AG tries to minimize potential sources of internal errors like
               data exceptions, buffer overflows etc. Thus, most of the internal errors can be
               solved by adjusting the relevant parameters, for example buffer sizes. Should
               there be any internal error which requires some action by Software AG, this is
               clearly marked in the section Error Messages and Codes in
               the "Action:" clause of the particular error message.
      
Due to the fundamental differences between the two data base systems, not all Adabas response codes can be translated into DL/I status codes. ADL transforms some of the recoverable Adabas response codes into DL/I status codes.
The Adabas response code 3 normally results in a DL/I status code
               "GB" (end of dataset) or "GE" (segment not found)
               being returned to the application. The response code 198 results in a DL/I
               status code "II" (segment to insert already exists in the data base).
      
The Adabas response code 9 normally occurs in online applications only. The typical reason for this is that the user at a particular terminal has been inactive for a period of time longer than the Adabas time limit. If ADL finds that no data has been backed out by Adabas, it simply re-issues the command without any effect on the application. Otherwise it abnormally terminates the transaction, causing the online system to back out its resources as well.
If the RETRY parameter is set to
               "WAIT", ADL receives a response code 145 only when the Adabas hold
               queue is full. In this case, Adabas attempts to issue the command a second
               time. If the second attempt fails as well, the application terminates
               abnormally. Should you observe that ADL terminates applications frequently for
               this reason, you should increase the size of the Adabas hold queue. If the
               RETRY parameter is set to a numeric value, ADL
               terminates the application abnormally if a required record is in hold status.
               See the section ADL
                  Parameter Module in the ADL Installation 
               documentation for more details on the RETRY
               parameter.
      
The ADL CALLDLI Interface generates status codes which are
               identical to and have the same meaning as those of DL/I. This is in particular
               true for all status codes which are related to the contents of the data base
               (like "GB", "GE", "GK" etc.) or caused
               by invalid call or segment qualification formats (like "AM" or
               "AJ").
      
There are, however, a couple of DL/I status codes which are strongly
               related to the physical design of DL/I. Examples for these are
               "XD" (error during data base buffer write ) and "XH"
               (data base logging not active). Since these do not correspond to any Adabas
               response code, they will never be generated by ADL.
      
The meaning of the DL/I status codes can be viewed in the ADL Online Services with the "Messages and Codes" function.
If a data base request originating from a Natural program or an Adabas
               direct call does not fulfill the rules and conditions required for the
               integrity of the database, the Consistency Interface returns the response code
               216 in the response code field of the Adabas command block. In Natural
               programs, this corresponds to the *ERROR-NR 3216.
      
If this error occurs, the ADL Consistency Interface provides a more detailed error message on request. The corresponding error codes and message are explained in the section Error Messages and Codes. The section How to Retrieve an Error Code and Message below describes how an application program may obtain these comprehensive error messages.
Natural programs may retrieve the full ADL error message by a
               "CALLNAT" to the ADL-supplied Natural subprogram
               ADLERROR, supplying an 80 character string as output field.
      
Example:
IF *ERROR-NR = 3216 
     CALLNAT 'ADLERROR' #ERRMES
END-IF 
           The layout of the error message is
ADL xxxx - error text
where "xxxx" is the actual error number. The meanings of
               the individual error numbers and messages are explained in the section
               Error Messages and Codes together with a recommended action
               for each error.
      
Programs using Adabas direct calls may retrieve an ADL Consistency
               Interface error message by issuing an Adabas "S1" call as shown
               below:
      
Command Code : S1 Command ID : blank or binary zero File Number : filled in by ADL ISN Lower Limit : zero Command Option1 : blank Command Option2 : blank FB length : 26 bytes minimum RB length : 80 bytes minimum SB length : 3 bytes minimum VB length : 2 bytes minimum IB length : not used Format Buffer : must contain CL8'ADLERROR' Record Buffer : on return contains the ADL error message Search Buffer : filled in by ADL Value Buffer : filled in by ADL (error number in binary format)
Any fields of the Adabas control block not mentioned above are not used.