The SORT or MERGE statement returns a completion code of either 0 (successful completion) or 16 (unsuccessful completion) after each sort or merge has finished. The completion code is stored in the SORT-RETURN special register.
You should test for successful completion after each SORT or MERGE statement. For example:
SORT SORT-WORK-2
ON ASCENDING KEY SORT-KEY
INPUT PROCEDURE IS 600-SORT3-INPUT-PROC
OUTPUT PROCEDURE IS 700-SORT3-OUTPUT-PROC.
IF SORT-RETURN NOT=0
DISPLAY “SORT ENDED ABNORMALLY. SORT-RETURN = ” SORT-RETURN.
. . .
600-SORT3-INPUT-PROC SECTION.
. . .
700-SORT3-OUTPUT-PROC SECTION.
. . .
If you do not reference SORT-RETURN anywhere in your program, the COBOL run time tests the completion code. If it is 16, COBOL issues a runtime diagnostic message and terminates the run unit (or the thread, in a multithreaded environment). The diagnostic message contains a sort or merge error number that can help you determine the cause of the problem.
If you test SORT-RETURN for one or more (but not necessarily all) SORT or MERGE statements, the COBOL run time does not check the completion code. However, you can obtain the sort or merge error number after any SORT or MERGE statement by calling the iwzGetSortErrno service; for example:
77 sortErrno PIC 9(9) COMP-5.
. . .
CALL 'iwzGetSortErrno' USING sortErrno
. . .
To call iwzGetSortErrno, use the SYSTEM call interface convention and the PGMNAME(MIXED) and NODYNAM compiler options.
See the related reference below for a list of the error numbers and their meanings.
related references
Sort and merge error numbers
SYSTEM