- BTEQでは、I/Oの異常終了が直接ユーザーに渡されず、ユーザー1000の異常終了に変換されるか、エラー処理されるため、プログラムは処理を続行することができます。
- BTEQで異常終了がユーザー1000に変換されるときには、汎用レジスター15に、理由を示すコード(異常終了の追加情報となる)が含まれます。 異常終了に対応する理由コードは、Cのエラー番号の値です。 次に、異常終了となるエラー番号の値を示します。
- ENOMEM
- EBADF
- ENOENT
- ENOSPC
- EIO
- ESPIPE
- EMVSERR
- EBUSY
- EMFILE
- BTEQでI/Oの異常終了が発生した場合には、システム エラー メッセージがz/OSのJESジョブ ログに出力されます。
- BTEQでI/Oエラーまたは異常終了が発生した場合には、IBM/Cランタイム ライブラリによってLSCX(Cランタイム)メッセージが生成され、それにエラーの追加情報が示される場合もあります。
- ゼロの戻りコードだけを受信するように記述されているJCLアプリケーションは、その他のエラーが発生していない場合にも、ゼロ以外のデフォルトの戻りコードが返されると終了する可能性があります。
例 – I/Oの異常終了の処理(z/OSの場合)
BTEQは、異常終了をユーザー1000に変換します。 この変換は、以下の例に示すように、ジョブ ステップの条件コード検査に基づくプロセスの自動化に効果的です。
//YNBTQ JOB 1,'Your Name',CLASS=B,Notify=YN, // MSGCLASS=A,MSGLEVEL=(1,1) //BTEQ EXEC PGM=BTQMAIN ............................................. ............................................. //NOFILE DD DSN=nofile.inthis.location,DISP=SHR //SYSIN DD DATA,DLM=## .Logon <TDPID>/<UserName>,<PassWd>; ............................................. .Import Data File=NOFILE ............................................. ## //CCTEST IF (ABENDCC=U1000) THEN //CRDAFL EXEC PGM=CRATDTFL ............................................. ............................................. //NOABND ELSE //PROCED EXEC PGM=DOSMTHNG ............................................. ............................................. // ENDIF
この例では、結果的にI/Oエラーによるユーザーの異常終了1000になったBTEQプログラムを実行しようとした場合に、CRATDTFLプログラムが実行されます。 BTEQプログラムが正常に実行されると、DOSMTHNGが実行されます。