ジョブの管理

本書では、ジョブの状態と状態の変更、クラスの概要、JCLの管理、ジョブの処理、ジョブの検索、ジョブ・ロギング、ジョブのバックアップおよびジョブの終了コードについて説明します。OpenFrameでは、tjesmgrとOpenFrame Managerを使用してジョブを管理することができます。同書では、tjesmgrツールを使用してジョブを管理する方法について説明します。

OpenFrame Managerを使用してジョブを管理する方法については、OpenFrame Manager『ユーザーガイド』を参照してください。

1. ジョブの状態

TJESでは、以下のようにジョブをSTART、HOLD、WORKING、SUSPEND、DONE、ERROR、STOP、FLUSHの状態に分けて管理しています。

figure 2 1
ジョブの状態フロー

READYはサブミットを処理中の状態であり、PURGEはジョブがTJESから削除されることを示します。

ジョブの各状態について以下に詳しく説明します。

状態 説明

START

JCLでサブミットされたジョブが実行されるまでの状態です。ジョブ・スケジューリングの対象であり、ランナースロットにまだ割り当てられていない状態です。

HOLDコマンドを使用してジョブをHOLD状態に変更するか、CANCELコマンドを使用してJOBQから削除することができます。

HOLD

JCLでサブミットされたジョブが実行されるまでの状態です。ジョブ・スケジューリングの対象外です。

以下の場合、HOLD状態となります。

  • JCLのJOB文にHOLDオペランドを記述してサブミットした場合

  • START状態のジョブをHOLDコマンドを使用して状態を変更した場合

WORKING

tjclrunがジョブを実行中の状態です。実行中のステップの特性に従って、複数のUNIXプロセスで起動できます。SUSPENDコマンドを使用して実行中のジョブを一時停止するか、STOPコマンドを使用してジョブの実行を終了してSTOP状態に変更することができます。

SUSPEND

ジョブの実行が一時停止した状態です。RESUMEコマンドを使用してWORKING状態にするか、STOPコマンドを使用してジョブの実行を終了させ、STOP状態に変更できます。

サードパーティ・ユーティリティを使用する場合は、ユーティリティの内部でセッションを新しく設定すると、そのプロセスとサブプロセスは一時停止されないということに注意します。

DONE

ジョブが正常に実行された状態です。

ユーザー・プログラムの実行結果は、スプール・データ(PODD)や各ステップのリターン・コード(PSJOB)などから別途確認する必要があります。REMOVEコマンドを使用してJOBQから削除できます。

要求されたジョブのすべてのステップが実行され、リターンコードがCOND文またはrc設定の範囲内であることを示しており、各ステップに指定されたプロシージャやプログラムが正常に実行されたことを意味するわけではありません。

ERROR

ジョブの実行結果がCOND文またはrc設定のリターンコードの範囲を超えた状態です。REMOVEコマンドを使用してJOBQから削除できます。

STOP

WORKING状態のジョブをSTOPコマンドを使用して強制終了したか、障害復旧プラン(Disaster Recovery Plan)によってTJESが自動的に再起動され、ジョブが強制終了した状態です。ジョブの実行に使用されたすべてのリソースを解放して終了します。

REMOVEコマンドを使用してJOBQから削除できます。

FLUSH

ジョブの実行中にランナーでエラーが発生し、ジョブを実行できなくなった状態です。JCLランタイム解析エラーまたはFDの割り当てエラーなどが主な原因です。

REMOVEコマンドを使用してJOBQから削除できます。

1.1. コマンドを使用したジョブの状態変更

ユーザーはコマンドを使用してジョブの状態を変更することができます。

以下は、ジョブの状態を変更するためのtjesmgrコマンドの一覧です。たとえば、現在の状態(START)でHOLDコマンドを実行すると、HOLD状態に変更されます。

現在の状態 コマンド 変更後の状態

-

RUN

START、HOLD

START

CANCEL

ジョブの実行前にJOBQからジョブが削除されます。

HOLD

HOLD

HOLD

CANCEL

ジョブの実行前にJOBQからジョブが削除されます。

START

START

WORKING

SUSPEND

SUSPEND

STOP

STOP

SUSPEND

STOP

STOP

RESUME

WORKING

DONE

REMOVE

ジョブの実行後にJOBQからジョブが削除されます。

ERROR

REMOVE

ジョブの実行後にJOBQからジョブが削除されます。

STOP

REMOVE

ジョブの実行後にJOBQからジョブが削除されます。

FLUSH

REMOVE

ジョブの実行後にJOBQからジョブが削除されます。

JOBQに格納できるは、OpenFrame環境設定のtjesサブジェクトのJOBDEFセクションに設定された値の分だけ格納できるため、不要なジョブはJOBQから削除する必要があります。

CANCELとREMOVEは、JOBQからジョブを削除するコマンドですが、CANCELはジョブが実行される前に、REMOVEはジョブが実行された後に削除されるという点が異なります。HOLD状態のジョブはスケジューリングされないため、HOLD状態のジョブを実行する場合は、START状態に変更する必要があります。そのとき、STARTコマンドを使用して状態を変更できます。

  1. tjesサブジェクトの詳細については、OpenFrame Batch『環境設定ガイド』を参照してください。

  2. 各コマンドの使用方法については、TJESMGRコマンドを参照してください。

2. ジョブ・グループ

XSP TJESは、複数のジョブをグループ化できるジョブ・グループをサポートします。すべてのジョブは特定のジョブ・グループに含まれ、システムのデフォルト・ジョブ・グループであるSYSGRPまたはJCLで記述されたジョブ・グループに属することになります。

ジョブ・グループは、そのグループに属するジョブの基本属性を決定するか、スケジュール開始条件の指定、ジョブの実行手順、多重度の制限などのジョブ・スケジューリング・ポリシーを決定します。

スケジューリングの詳細については、スケジュールを参照してください。

2.1. ジョブ・グループの種類

XSP TJESのジョブ・グループには、システム・ジョブ・グループ、常駐ジョブ・グループ、一時ジョブ・グループがあります。

ジョブ・グループ 説明

システム・ジョブ・グループ

システムを初期設定する場合に自動的に設定されるグループ(SYSGRP)です。システム運用中に常に使用されるため、削除できません。

常駐ジョブ・グループ

システムを初期設定する際に登録されるか、システムの運用中にtjesmgrによって登録されたジョブ・グループです。ユーザーが削除しない限り有効です。

一時ジョブ・グループ

JCLのJOBG文によって登録されるグループです。ジョブ・グループに新しいジョブが登録されない限り、グループ内のすべてのジョブが終了したら、自動的に削除されます。

2.2. ジョブ・グループの属性

以下は、ジョブ・グループの属性です。

  • 多重度

    XSP TJESで同時に実行されるジョブの数を示します。ジョブ・グループに多重度が指定されている場合、同時に実行されるジョブの数は多重度に指定された数を超えることができません。ジョブ・グループの多重度が最大値に達していない場合でも、システム多重度(システム全体の多重度の制限)によって同時に実行されるジョブの数が制限されることがあります。多重度の指定を省略した場合、デフォルト値は1です。

  • REL

    ジョブ・グループ内のジョブの順次実行を示します。TJESは、基本的にジョブ・グループ内のジョブを優先順位(JOB Priority)および送信時間(JOB submit time)に従って実行しますが、RELを指定した場合は、優先順位を無視して送信時間に従って順次実行します。RELを指定すると、多重度は1になります。つまり、同時に実行されるジョブの数は1です。

  • ジョブ・グループの優先順位

    ジョブのジョブ・グループの優先順位を示します。スケジューリングする際にジョブ・グループの選択に使用されます。優先順位が高いジョブ・グループからスケジューリングされます。

  • ジョブのデフォルト・パラメータ

    JCLのJOB文にパラメータが省略された場合、デフォルトとして使用されるパラメータを指定します。ジョブの優先順位などを設定できます。

  • 処理開始の待機

    XSP TJESでのジョブ・グループは、以下の属性のいずれかに対して開始の待機を指定できます。待機要件が満たされるか、管理者によって解除されない限り、そのジョブ・グループはスケジューリングから除外されます。

    区分 説明

    オペレータの応答を待機

    オペレータから処理開始の応答を受け取るまで待ちます。

    処理開始時刻まで待機

    hh:mmで指定された時刻まで待ちます。

    指定されたhh:mmを過ぎた場合は、翌日の時刻に指定されます。

    N日後の時刻を指定する場合は、N*24+hh:mmで指定します。

    データ完了まで待機

    JCLのDATA文によってデータ作成の完了が通知されるまで待ちます。

    他のジョブ・グループの完了まで待機

    ターゲット・ジョブ・グループが完了し、削除されるまで待ちます。

3. ジョブ実行プロセス

TJESで実行されるすべてのジョブは、以下の手順で実行されます。

  1. サブミット(Submit) : TJESからJCLがサブミットされます。

  2. スケジュール(Schedule) : 条件を満たすランナースロットにジョブを割り当てます。

  3. 実行(Execution) : ランナーがジョブを実行します。

  4. 出力(Output) : ジョブの実行が終了し、出力されます。

  5. 削除(Remove) : 実行済みのジョブをTJESから削除します。

3.1. サブミット

TJESはサブミットされたJCLを分析し、各ジョブ・グループ別にジョブを登録します。

JCLがサブミットされると、TJESはそのJCLを分析してジョブ・グループとジョブ情報を取得します。TJESにそのジョブ・グループが存在しない場合は、ジョブ・グループを登録します。その後、ジョブ・エントリを構成し、JOBIDやスプールなど、ジョブの管理に必要なリソースを割り当ててからJOBQに格納します。

サブミットされたジョブの情報は対応するジョブ・グループに登録され、ジョブはスケジューラーによってランナースロットに割り当てられます。

TJESは、以下のリソースをジョブに割り当てます。

リソース 説明

JOBID

TJESがジョブを区別するためには、各ジョブに一意のID(JOBID)を付与する必要があります。TJESでは「JOBnnnnn」形式でJOBIDを管理しています。OpenFrame環境設定のtjesサブジェクトのJOBDEFセクションのENDNUMキーを使用して指定します。指定できるJOBIDの範囲は、00001から99999または000001から999999です。

JOBIDはサブミット時に発行され、CANCELまたはREMOVEコマンドによって削除されるときに返されます。返されたJOBIDはローテーションされます。

SPOOL

TJESはジョブごとに独立したスプール領域を割り当てます。この領域はスプール・ボリュームにJOBIDで作成されたディレクトリです。

スプールには、サブミットされた時点のJCLを保存するためにコピーしたINPJCL、INPJCLで呼び出したマクロの内容を展開して実際の実行対象となるEXPJCL、ジョブの実行結果であるSYSOUT、TJESがジョブの実行状態をレポートするために内部で使用するSYSMSGファイルなどが格納されます。内部で管理されるファイルは、設定によってシステム表に保存することもできます。

スプールは、tjesinitツールを使用して初期化します。

JOBQ

TJESはジョブの検索と変更などを容易に行うために、システム表にジョブの基本情報を保存します。

JOBQに保存されたジョブの情報は、tjesinitツールを使用して初期化できます。

以下は、JCLがTJESにサブミットされる手順です。

  1. ジョブ・グループの登録およびロック(ジョブのサブミット中にジョブ・グループのスケジューリングを防止)設定を行います。

  2. JOBIDを発行します。

  3. スプールを作成します。

  4. サブミットされたJCLをスプールにINPJCLとしてコピーします。

  5. マクロを展開します。

  6. JCLの構文エラーを確認します。

  7. マクロが展開されたJCLをスプールからEXPJCLにコピーします。

  8. JCLで定義されたジョブの情報をJOBQに格納します。

  9. obmjschdのジョブ・グループに登録します。

  10. ジョブ・グループのロックを解除します。

サブミット中にエラーが発生すると、OpenFrame環境設定のofsysサブジェクトのDIRECTORYセクションのLOG_DIRキーに指定されたファイル・パスのjobサブディレクトリに「submit_YYYYMMDD.log」という名前のファイルで格納されます。正常にサブミットされたジョブは、STARTとHOLDのいずれかの状態で作成されます。

tjesmgrのRUNコマンドによってJCLが正常にサブミットされると、作成されたジョブがJOBQに登録されます。

  1. サブミット・ログの形式については、サブミット・ログを参照してください。

  2. JOBQの出力については、PS(Print Screen)を参照してください。

  3. tjesサブジェクトの詳細については、OpenFrame Batch『環境設定ガイド』を参照してください。

以下は、OpenFrameでサポートされるJCLのサブミット方法です。

  • tjesmgrのRUNコマンドを使用してサブミットします。詳細については、TJESMGRコマンドRUNを参照してください。

  • textrunツールを使用してサブミットします。詳細については、OpenFrame Batch『ツールリファレンスガイド』の「4.4 textrun」を参照してください。

  • OpenFrame Batch Manager(BM)を使用してサブミットします。詳細については、OpenFrame Manager『ユーザーガイド』を参照してください。

3.2. スケジュール

START状態のジョブをスケジューリング・ポリシーに従ってランナースロットに割り当てます。TJESは、基本的に以下の条件を満たすランナースロットに現在START状態のジョブを割り当てます。

  • ランナースロットの状態がアクティブ化されている必要があり、他のジョブを実行中であってはなりません。

  • ジョブのサミット時に特定のノードでジョブが実行されるように指定した場合、そのノードとランナースロットが属するノードが一致する必要があります。

スケジューリングは、基本的にジョブ・グループの属性とジョブの優先順位に従って行われます。

  • システム実行の多重度(システム全体で同時に実行できるジョブの数)が最大値に達していない場合にスケジューリングされます。

  • 優先順位が高いジョブ・グループからラウンドロビン方式でジョブをスケジューリングします。

  • ジョブ・グループ実行の多重度(ジョブ・グループで同時に実行できるジョブの数)が最大値に達していない場合にスケジューリングされます。

  • ジョブ・グループのREL属性がYESの場合、ジョブの優先順位に関係なく、サブミットされた順にスケジューリングします。

  • ジョブ・グループのREL属性がNOの場合、ジョブの優先順位に従ってスケジューリングします。ただし、優先順位が同じである場合は、サブミットされた順にスケジューリングします。

以下は、スケジューリング・メソッドを擬似コード(pseudo code)で記述しています。

   While working_job_count < system multiplicity
 Select a available job group with highest priority in round robin manner
 IF no job group is selectd, BREAK
 IF the job group has REL property
  Get a oldest job in the job group
 ELSE
  get a job with highest priority in the job group
 ENDIF
Check node affinity. If fails, continue
Assign the job to the runner and break

3.3. 実行

ランナーがJCLで定義されたジョブを実行します。

ランナーは、スプールにコピーされているEXPJCLを解析し、その結果に従ってジョブを実行します。1つのジョブは複数のジョブ・ステップで構成されており、ランナーは、JCLで定義されたジョブ・ステップに従って順次実行します。また、ジョブの実行時に必要なデータセットの割り当ても行われます。

3.4. 出力

ジョブの実行中に生成されたSYSOUTを処理します。SYSOUTはOUTPUT単位で処理され、OUTPUT CLASSを使用するプリンターと基本的な後処理が決まります。

出力は外部プリンターに印刷されるか、その他のシステムでサポートされるライターを介して処理されます。詳細については、出力処理を参照してください。

3.5. 削除

TJESからジョブを削除します。

ジョブに割り当てられたJOBID、SPOOL、JOBQなどのすべてのリソースがシステムに戻されます。TJESから削除されたジョブをバックアップする必要がある場合は、スプール・バックアップ・コマンドを使用します。バックアップされたジョブは、スプールから自動的に削除されます。

4. ジョブの状態の確認

サブミットされたジョブは、JCLのパラメータ値に従ってSTART状態またはHOLD状態でJOBQに登録されます。JOBQに登録されているすべてのジョブは、tjesmgrのPSコマンドを使用してジョブの状態を確認することができます。

START状態のジョブはスケジューリングによってWORKING状態に変更および実行され、ERROR、DONE,またはFLUSH状態で終了します。

以下のtjesmgrコマンドを使用して、ジョブの詳細情報を確認できます。

コマンド 説明

PSJOB

ジョブの詳細情報を表示します。

PSIO

ジョブで使用したデータセットの入出力情報を表示します。

POSPOOL

ジョブで生成されたスプール情報を表示します。

PODD

ジョブで生成されたスプールの内容を表示します。

POJOB

ジョブの出力の詳細情報を表示します。

ジョブ情報を確認する詳しい方法については、ジョブ出力コマンドを参照してください。

5. ログ

TJESで発生する各種イベントに関するログが記録されます。

OpenFrame Batch for XSP 7.3では、以下の2つのTJESログが記録されます。

  • JCLのサブミットに関する情報を記録するサブミット・ログ

  • ジョブのすべての状態変化に関するジョブ・ログ

毎日膨大な量のログが記録されるため、長期間そのまま運用すると、ログ・ファイルのサイズが過剰に大きくなる可能性があります。TJESではこのような問題を解決するために、日付別にログを生成するオプションを提供しています。

5.1. サブミット・ログ

サブミット・ログは、OpenFrame環境設定のofsysサブジェクトのDIRECTORYセクションのLOG_DIRキーに指定されたファイル・パスのjobサブディレクトリに「submit_YYYYMMDD.log」という名前のファイルで格納されます。サブミット・ログは、成功または失敗に関係なく、obmjmsvrが検知したすべてのJCLのサブミットを記録します。

以下は、サブミット・ログの形式です。

>> timestamp    jclpath
submit_result
項目 説明

timestamp

yyyymmddHHMMSS形式の14桁の数字です。

jclpath

サブミットされたJCLのUNIX絶対パスです。

submit_result

サブミットの結果です。

5.2. ジョブ・ログ

ジョブ・ログは、OpenFrame環境設定のofsysサブジェクトのDIRECTORYセクションのLOG_DIRキーに指定されたパスのjobサブディレクトリに「job_YYYYMMDD.log」という名前のファイルで格納されます。

以下は、ジョブ・ログの形式です。

[YYYY-MM-DDTHH:MI:SS.FFFFFF][MODULE(PID)][MSG_LEVEL][MSG_CODE] CMD=operation,NODE=nodename,USER=userid,JOBID=jobid,JOBNAME=jobname,additional info

以下は、共通項目についての説明です。

項目 説明

CMD

オペレーションを設定します。

  • SUBMIT : ジョブがサブミットされます。

  • EXECUTE : ジョブをランナーに割り当てます。

  • CHANGE : ジョブの属性が実行前に変更されました。

  • FINISH : ジョブの実行が終了されます。

  • REMOVE : ジョブがTJESから削除されます。

  • SUSPEND : ジョブが一時停止されます。

  • RESUME : 一時停止されたジョブが再開されます。

  • STEP : 特定のジョブ・ステップの実行情報です。

  • CANCEL : ジョブの実行がキャンセルされます。

NODE

ジョブが実行されるノード名です。

JCLにジョブが実行されるexecution_nodeが定義されていないか、OpenFrame環境設定のtjesmgrサブジェクトのDEFAULT_OPTIONセクションのDEFAULT_RUNNING_NODEキーのVALUE項目をMYに設定していない場合は、すべてのノードで実行できるようにアスタリスク(*)が設定されます。

USER

ジョブを実行したユーザー名です。CMD=FINISHの場合は、TJESで出力されます。

JOBID

サブミットされたジョブIDです。

JOBNAME

ジョブ名です。

additional info

CMD=operationの値に応じて異なります。

5.2.1. SUBMIT

ジョブがサブミットされます。

  • 構文

    CLASS=class,STATUS=status,JCL=path
    項目 説明

    CLASS

    サブミットされたジョブ・クラスです。(XSPでは無効です)

    STATUS

    ジョブのサブミット状態に応じて設定されます。

    • S : START

    • H : HOLD

    • D : DONE

    JCL

    コピーされたINPJCLのパスではなく、サブミットされたJCLのソース・ファイルのパスです。

5.2.2. EXECUTE

ジョブをランナーに割り当てます。

  • 構文

    INDEX=index,PID=pid,CLASS=class
    項目 説明

    INDEX

    ジョブを実行中のランナースロットのインデックスです。この値は、実行中のノードでのみ有効です。

    PID

    ジョブを実行中のランナーのプロセスIDです。この値は、実行中のノードでのみ有効です。

    CLASS

    ランナースロットに割り当てられた複数のクラスのうち、ジョブを実行するために使用しているクラスです。(XSPでは無効です)

5.2.3. CHANGE

ジョブの属性が実行前に変更されました。

  • 構文

    CLASS=class,PRIORITY=priority,STATUS=status
    項目 説明

    CLASS

    変更された後のジョブ・クラスです。(XSPでは無効です)

    PRIORITY

    変更された後のジョブの優先順位です。

    STATUS

    変更された後のジョブの状態です。

    • S : START

    • H : HOLD

5.2.4. FINISH

ジョブの実行が終了されます。

  • 構文

    INDEX=index,PID=pid,STATUS=status,RCODE=exitcode
    項目 説明

    INDEX

    ジョブを実行中のランナースロットのインデックスです。この値は、実行中のノードでのみ有効です。

    PID

    ジョブを実行中のランナーのプロセスIDです。この値は、実行中のノードでのみ有効です。

    STATUS

    ジョブの終了状態です。

    • D : DONE

    • E : ERROR

    • T : STOP

    • F : FLUSH

    RCODE

    ジョブの終了コードです。詳細については、ジョブの終了コードを参照してください。

5.2.5. REMOVE

ジョブがTJESから削除されます。

  • 構文

    STATUS=status
    項目 説明

    STATUS

    削除されたジョブの終了状態です。

    • D : DONE

    • E : ERROR

    • T : STOP

    • F : FLUSH

5.2.6. SUSPEND

ジョブが一時停止されます。

  • 構文

    INDEX=index,PID=pid,STATUS=status
    項目 説明

    INDEX

    ジョブを実行中のランナースロットのインデックスです。この値は、実行中のノードでのみ有効です。

    PID

    ジョブを実行中のランナーのプロセスIDです。この値は、実行中のノードでのみ有効です。

    STATUS

    一時停止されたジョブの状態です。

    • P : SUSPEND

5.2.7. RESUME

一時停止されたジョブが再開されます。

  • 構文

    INDEX=index,PID=pid,STATUS=status
    項目 説明

    INDEX

    ジョブを実行中のランナースロットのインデックスです。この値は、実行中のノードでのみ有効です。

    PID

    ジョブを実行中のランナーのプロセスIDです。この値は、実行中のノードでのみ有効です。

    STATUS

    再開されたジョブの状態です。

    • W : WORKING

5.2.8. STEP

特定のジョブ・ステップの実行情報です。

  • 構文

    STEPNAME=stepname,SKIP=skip,STEPSEQ=seqnum,RCODE=exitcode
    項目 説明

    STEPNAME

    ジョブ・ステップ名です。

    SKIP

    ジョブ・ステップの実行をスキップするかどうかを指定します。

    • Y : 実行されません。

    • N : 実行されます。

    STEPSEQ

    ジョブ・ステップのシーケンス番号です。1から開始されます。

    RCODE

    ジョブの終了コードです。詳細については、ジョブの終了コードを参照してください。

5.2.9. CANCEL

ジョブの実行がキャンセルされます。

  • 構文

    STATUS=status
    項目 説明

    STATUS

    キャンセルされたジョブの状態です。

    • S : START

    • H : HOLD

6. ジョブのバックアップ

JOBQがいっぱいになると、ジョブをサブミットできなくなるため、JOBQから古いジョブを削除する必要があります。そのとき、削除するジョブの情報を残すためにスプールをバックアップします。

以下は、スプールのバックアップ・コマンドです。

コマンド 説明

SPOOLBACKUP

JOBQからジョブを削除し、削除されたジョブのスプールをバックアップします。

SPOOLBACKUPLIST

スプールがバックアップされた日付を表示します。

SPOOLPS

指定の日付にバックアップされたジョブを表示します。

SPOOLRESTORE

バックアップされたジョブを一時ディレクトリに復元します。

SPOOLPSJOB

復元されたジョブの詳細情報を表示します。(PSJOBと同一情報を出力)

SPOOLPSIO

復元されたジョブの入出力情報を表示します。(PSIOと同一情報を出力)

SPOOLPOSPOOL

復元されたジョブのスプール一覧を表示します。(POSPOOLと同一情報を出力)

SPOOLPODD

復元されたジョブのスプール情報を表示します。(PODDと同一機能)

SPOOLCLEAR

一時ディレクトリに復元されたジョブを削除します。

詳細については、スプール・バックアップ・コマンドを参照してください。

7. ジョブの終了コード

以下は、TJESでのジョブとステップの終了コードを定義します。

7.1. ステップ終了コード

各ステップの終了時に、以下の形式でリターンコードを返します。

XNNNN
  • X

    終了ステータスとしてR、S、U、Aのいずれかを持ちます。

    項目 説明

    R

    Normal Conditionであり、アプリケーションが正常に終了したことを示します。

    S

    SYSTEM ABENDであり、アプリケーションがシグナルで終了したことを示します。つまり、SIGPIPE、SIGSEGV、SIGABEND、SIGBUGなどのシグナルのうち、プロセスの終了シグナルによってプロセスが異常終了した場合です。

    U

    USER ABENDであり、アプリケーションが定義したABEND状態であることを報告し、WAASABNDによって終了したことを示します。

    A

    Application ABENDであり、アプリケーションが正常終了したが、そのRC値を呼び出したプログラムで条件を満たしていないと判断され、ジョブを終了する必要があることを示します。

  • NNNN

    0~4096までの数字で、アプリケーションの戻り値です。255以上は、外部RCモジュールを介してリターンコードが返されます。

7.2. ジョブ終了コード

ジョブ終了コードは、ジョブの終了状態に関する付加情報であり、XNNNNN形式で表示されます。(X : R、S、U、 A、F、Mのアルファベットと2つの記号文字(+, -)、N : 0~9の数字)

以下は、各ジョブの状態と形式についての説明です。

  • DONE

    XNNNNN

    最後のジョブ・ステップの終了コードです。(Xは、ジョブ・ステップ終了コードと同じです)

  • ERROR

    XNNNNN

    エラーを発生させたジョブ・ステップの終了コードです。(Xは、ジョブ・ステップ終了コードと同じです)

  • STOP

    ユーザーがSTOPコマンドを実行した場合であり、終了コードは無効です。

  • FLUSH

    [+-]NNNNN
    区分 説明

    +

    異常を検知して終了した場合です。NNNNNは、ランナーまたは関連プロセスの戻り値です。OpenFrameのエラー・コードとして定義されたエラーについてはエラー・コードを返し、その他の定義されていないエラーに対しては、1が返されます。

    -

    ランナーが、UNIXシグナルによって異常終了した場合です。NNNNNは、UNIXシグナル番号です。