COBOLプログラムを介して意図的にジョブを異常終了させることは可能ですか。ヘッダー、詳細、およびトレーラーのレコードを持つ入力ファイルがあるとします。このファイルを読み取るCOBOLpgmを作成します。このファイルに詳細レコードが見つからない場合は、異常終了メッセージと異常終了コードを指定してジョブを異常終了させたいのですが、可能ですか?
5 に答える
プログラムを ABEND しますか、それとも単にRETURN-CODEを設定しますか?
RETURN-CODE を設定し、メッセージを書き込んでからSTOP RUN
orを介してプログラムを終了するGOBACK
ことだけが本当にやりたいことだと思います。実際に ABEND を発生させる必要はないかもしれません。
IBM バッチ環境では、プログラムによって設定された RETURN-CODE が、プログラムが実行された JCL ジョブ ステップの RC になります。これは通常、設定してテストする対象です。
数値を指定することRETURN-CODE
で設定されます。MOVE
例えば:
DISPLAY 'No Detail Records found in file.'
MOVE 16 TO RETURN-CODE
GOBACK.
CEE3DMP --Generate dump ユーティリティを使用して、Language Environment (IBM Mainframe オプション) で実行されるプログラムからプログラム ダンプを発行することもできます。
古い IBM メインフレーム COBOL プログラムでは、ILBOABN0
ルーチンへの呼び出しが見られる場合があります。この呼び出しにより、プログラムが異常終了し、ダンプが発行されました。このルーチンは現在、上で概説した手法を支持して減価償却されています。
最後に、非常に古いプログラムには、異常終了を生成するコードが含まれている場合があります。これはさまざまな方法で実行できますが、ゼロによる除算がしばしば好まれました。
DIVIDE SOME-NUMBER BY ZERO GIVING SOME-NUMBER.
いつでも活躍!
個人的には、RETURN-CODE
オーバー コールILBOABN0
またはデータ例外テクニックを設定することをお勧めします。
注: RETURN-CODE 特殊レジスターは、COBOL-85 標準の一部ではありません。これは、言語に対する IBM 拡張として使用できます。非 IBM 互換環境で作業している場合は、別のメカニズムに頼る必要がある場合があります。
JCLジョブ・ステップに戻される戻りコードを設定する方法、およびAbenedコードを強制する方法については、次のリンクを参照してください。 http://www.tek-tips.com/viewthread.cfm?qid=1058302&page=22
まず、自分のショップ/サイトの作業基準で何が受け入れられているかを確認する必要があります。ほとんどのチームは、「ロジック」の理由で意図的にプログラムを異常終了させる方法をすでに受け入れています。私が働いていた会社には、SYSABND2 という非常に単純なプログラムがあります。これはアセンブラーで書かれていると思いますが、プログラムを異常終了させるためだけに呼び出されます。
つまり、(戻りコードを設定するだけでなく) ABEND するには、モジュールCEE3ABD (または以前のバージョンILBOABN0。現在は推奨されていません) を呼び出す必要があります。
詳細については、次を参照してください。
実行の異常終了を行う 1 つの方法は、プログラムが実行されるコンピューターの種類に応じて、メッセージをユーザー端末またはメインフレーム コンピューター センターのオペレーターに出力し、必要に応じてプリンターに出力することです。cobol では、DISPLAY UPON .. を使用して、環境部の SPECIAL-NAMES セクションのエントリで定義されている端末、オペレータ コンソール、またはプリンタの識別子を使用できます。OPERATOR-CONSOLE IS OUT-OP2 in special-names with DISPLAY "RUN ERROR - NO DETAIL RECORDS, ABORTING" UPON OUT-OP2 and DISPLAY "REPORT TO OPERATIONS MANAGER" の場合の正しいデバイス名を使用した例は、次のようになります。 UPON OUT-OP2 と STOP RUN。手続き部で。状況への参照は、すべてのジョブまたはマクロおよび操作手順に含める必要があります。
はい、存在しないモジュールを 1 つ呼び出すだけで、COBOL プログラムを介して意図的にジョブを異常終了させることができます。S806 異常終了コードが表示されます。