それぞれのソートまたはマージが完了すると、 SORT または MERGE ステートメントは、 完了コード 0 (正常終了) または 16 (不成功な完了) を戻します。 完了コードは、SORT-RETURN 特殊レジスターに保管されます。
それぞれの SORT または MERGE ステートメントの後で、正常終了かどうかをテストしなければなりません。以下に、その例を示します。
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.
. . .
プログラムの中で SORT-RETURN をまったく参照しないと、COBOL ランタイムで完了コードがテストされます。 16 の場合は、ランタイム診断メッセージが発行され、実行単位 (またはマルチスレッド環境ではスレッド) が終了します。 診断メッセージには、ソートまたはマージ・エラー番号が含まれており、 これを使用して問題の原因を判別できます。
SORT または MERGE ステートメントの 1 つ以上 (しかし、必ずしも全部ではない) について SORT-RETURN をテストすると、COBOL ランタイムで 完了コードが検査されません。 ただし、SORT または MERGE ステートメントの後で、 例えば以下のようにして iwzGetSortErrno サービスを呼び出すことにより、ソートまたはマージ・エラー番号を取得できます。
77 sortErrno PIC 9(9) COMP-5.
. . .
CALL 'iwzGetSortErrno' USING sortErrno
. . .
iwzGetSortErrno を呼び出すには、SYSTEM 呼び出しインターフェース規則 と、PGMNAME(MIXED) および NODYNAM コンパイラー・オプションを使用する必要があります。
エラー番号およびそれらの意味のリストについては、以下の関連参照をご覧ください。
関連参照
ソートおよびマージ・エラー番号
SYSTEM