Page History
...
I/O操作の完了後に実施する戻りコードの検査にはさまざまな方法があります。
1つ目は、常にI1つ目は、常にI/Oコマンドのデフォルト・パラメータであるIO_STATUS(*STATUS)を使用する方法です。この場合、戻りコードは#IO$STSと呼ばれるフィールドにマッピングされます。そしてこの#IO$STSは他のフィールドと同様に参照することができます。例えば、以下のようになります。
FETCH FIELDS(#ORDERHEAD) FROM_FILE(ORDHDR) WITH_KEY(#ORDER)
IF COND('#IO$STS *NE OK')
MESSAGE MSGTXT('Order not found in current order file')
ENDIF
2つ目は、IO2つ目は、IO_STATUSパラメータを使って戻りコードをユーザー定義のフィールドにマッピングする方法です。例えば、以下のようになります。
DEFINE FIELD(#RETCODE) TYPE(*CHAR) LENGTH(2)
FETCH FIELDS(#ORDERHEAD) FROM_FILE(ORDHDR) WITH_KEY(#ORDER)
IO_STATUS(#RETCODE)
IF COND('#RETCODE *NE OK')
MESSAGE MSGTXT('Order not found in current order file')
ENDIF
3つ目は、IF3つ目は、IF_STATUSコマンドを使って最新の戻りコードを自動で検査する方法です(これが最適だと考えられます)。上記例は以下のようになります。
FETCH FIELDS(#ORDERHEAD) FROM_FILE(ORDHDR) WITH_KEY(#ORDER)
IF_STATUS IS_NOT(*OKAY)
MESSAGE MSGTXT('Order not found in current order file')
ENDIF
詳細と例については、、「IF_STATUSコマンド」を参照してください。