ジョブの管理

本章では、ジョブの状態、ジョブの実行手順と実行結果の確認、およびジョブの管理方法について説明します。OpenFrameでは、tjesmgrとOpenFrame Managerを使用してジョブを管理することができます。本書では、tjesmgrを使用してジョブを管理する方法についてのみ説明します。

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

1. ジョブの状態

TJESでは、ジョブをSTART、HOLD、WORKING、SUSPEND、DONE、ERROR、STOP、FLUSHの8つの状態に区別して管理しています。

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

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

以下は、TJESでのジョブ状態についての説明です。

状態 内容

START

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

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

HOLD

JCLによってサブミットされたジョブが実行される前までの状態です。ジョブ・スケジューリングの対象外です。HOLD状態に該当する場合は以下のとおりです。

  • JCLにTYPRUN=HOLDを記述してサブミットした場合

  • HOLDとして設定されたジョブ・クラスでサブミットした場合

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

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

WORKING

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

SUSPEND

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

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

DONE

JCL記述に従ってジョブが正常に実行された状態です。

ユーザー・プログラムが意図した結果を出しているかどうかは、スプール・データを表示(PODD)するか、各ステップのリターンコード(PSJOB)を表示して別途確認する必要があります。REMOVEコマンドを使用してJOBQからジョブを削除することができます。

DONE状態は、JCL記述に従ってジョブの全ステップが実行され、リターンコードがCOND文またはOpenFrame環境設定のrcサブジェクトなどで指定された有効範囲内にあることを示しているだけであり、各ステップに指定されたプロシージャまたはプログラムが正常に実行されたことを示しているわけではありません。

ERROR

ジョブの実行結果がCOND文、またはOpenFrame環境設定のrcサブジェクトで指定されたリターンコードの有効範囲外の場合です。REMOVEコマンドを使用してJOBQからジョブを削除することができます。

STOP

WORKING状態のジョブをSTOPコマンドを実行して強制終了するか、障害復旧計画に基づいてTJESが自動的に再起動され、ジョブが強制終了された状態です。ジョブの実行に使用されたすべてのリソースを返して終了されます。

REMOVEコマンドを使用してJOBQから該当するジョブを削除することができます。

FLUSH

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

REMOVEコマンドを使用してJOBQからジョブを削除することができます。

1.1. コマンドによるジョブ状態の変更

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

次のtjesmgrコマンドを使用して、現在のジョブ状態を変更後のジョブ状態にすることができます。

現在のジョブ状態 tjesmgrコマンド 変更後のジョブ状態

-

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から削除する必要があります。

JOBQからジョブを削除する際、CANCELコマンドはジョブが実行される前に、REMOVEコマンドはジョブが実行された後に削除します。

HOLD状態のジョブはスケジューリングされないため、HOLD状態のジョブを実行したい場合は、STARTコマンドを使用してジョブをSTART状態に変更する必要があります。

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

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

2. JCLの管理

OpenFrameでは既存のメインフレームで使用していたJCLをそのまま実行させることができます。

JCLは一般ディレクトリで管理しても構いませんが、OpenFrame環境設定のtjesサブジェクトのPROCLIBセクションのJCLLIBキーに登録されているデータセットのメンバーとして登録することをお勧めします。JCLが多い場合は、別のPDSを作成してメンバーとして管理することをお勧めします。

OpenFrameでは、PDSが実際のディレクトリとして作成されているため、そのディレクトリにJCLをコピーしておくと、PDSのメンバーになります。

JCLをPDSのメンバーとして登録しておくと、JCLをサブミットする際、データセット名とメンバー名だけで対象JCLを検索することができます。特にJCLがOpenFrame環境設定のtjesサブジェクトのPROCLIBセクションのJCLLIBキーに登録されているデータセットのメンバーとして登録された場合は、メンバー名だけで対象JCLを検索できます。JCLLIBに指定されたPDSの順でデータセットのメンバーを検索します。

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

3. ジョブの処理手順

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

  1. サブミット(Submit): TJESからJCLを受け取ります。

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

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

  4. 出力(Output): ジョブの実行が終わり、その出力が処理されます。

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

3.1. サブミット

サブミットでは、受け取ったJCLを分析してジョブ単位でTJESに送信します。

JCLがサブミットされると、TJESはそのJCLを分析してジョブ・エントリを構成し、JOBID、SPOOLなど、ジョブの管理に必要なリソースを割り当てた後、JOBQに保存します。サブミットされたジョブの情報はスケジューラーに通知され、スケジューラーによってランナー・スロットに割り当てられます。

以下は、TJESによってジョブに割り当てられるリソースです。

リソース 説明

JOBID

JOBIDは、TJESがジョブを識別するために割り当てる一意のIDです。TJESによって管理されるJOBIDは「JOBnnnnn」または「J0nnnnnn」形式であり、OpenFrame環境設定のtjesサブジェクトのJOBDEFセクションのENDNUMキーで指定します。 ジョブに指定できるJOBIDの有効範囲は、00001から99999、または000001から999999です。

JOBIDはサブミット時に発行され、ジョブがCANCELまたはREMOVEコマンドによって削除されるときに返されます。返されたJOBIDは再使用されます。

そのほか、CICSで生成される「STCnnnnn」、TSOで生成される「TSOnnnnn」形式のJOBIDがありますが、これらはTJESが管理していません。

SPOOL

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

SPOOLには、サブミットされたJCLを保存するためにコピーしたINPJCL、カタログをコピーしたCATPROC、ジョブの実行結果であるSYSOUT、TJESがジョブの実行状態をレポートするために内部で使用するファイルなどが格納されます。内部で管理するファイルは、設定によりシステム・テーブルに格納することもできます。

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

JOBQ

TJESは、ジョブの検索や変更などを容易にするため、システム・テーブルにジョブの基本情報を保存します。

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

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

  1. JCL構文エラーを確認します。プロシージャの有無と構文エラーはこの時点では確認できず、tjclrunによってJCLが解析されるときに確認されます。

  2. JOBIDを発行します。

  3. SPOOLを作成します。

  4. サブミットされたJCLをコピーしたINPJCLをSPOOLに格納します。

  5. JCLのジョブに関する情報をJOBQに格納します。

  6. JCLのJOB文にTYPRUN=HOLDが記述されているか、OpenFrame環境設定のtjesサブジェクトのJOBCLASSセクションの特定のCLASSキー値にHOLD属性が指定されていない場合は、obmjschdに通知してスケジューリングします。

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

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

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

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

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

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

  • tjesmgrのRUNコマンドを使用方法 (TJESMGRコマンドRUNを参照)

  • textrunツールを使用する方法(OpenFrame Batch『ツールリファレンスガイド』の「textrun」を参照)

  • OpenFrame Manager[Batch]メニューを使用する方法(OpenFrame Manager『ユーザーガイド』を参照)

3.2. スケジューリング

スケジュールでは、以下の条件を満たすランナー・スロットに現在START状態のジョブを割り当てます。

  • ランナー・スロットがACTIVE状態(有効な状態)であり、別のジョブが実行中でない場合に限ります。

  • RUNNER CLASSとJOB CLASSが一致する必要があります。

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

以下は、スケジューリング・メソッドを疑似コードで示しています。

Priority aging
For i = 1 to 8 /  * to iterate RUNNER CLASSes */
    For each idle runner {
      Get the list of Job which matches the ith class of the runner
      For each Job in descending priority order {
         Check node affinity. If fails, try next Job
         Check Jobname duplication. If fails, try next Job
         Assign the Job to the runner and break
      }
    }
JOB CLASS

JOB CLASSは、ジョブの属性です。JCL JOB文のクラス・パラメータにA~Zまたは0~9のいずれかの値を記述します。

JCLにクラスが記述されていない場合は、OpenFrame環境設定のtjclrunサブジェクトのJOBセクションのCLASSキーに記述されたデフォルトのJOB CLASSを使用します。JOB CLASSは、ジョブ・スケジューリングの際に、ジョブを実行できるランナー・スロットを制限するために使用されます。AというJOB CLASSを持つジョブは、RUNNER CLASSにCBAまたはABCのようにAが含まれたランナー・スロットにのみ割り当てられます。

また、JOB CLASSのサブ属性であるHOLDによってTJESの動作方式が変わります。HOLD属性が指定されたJOB CLASSでサブミットされたジョブは、JCL JOB文にTYPRUN=HOLDが指定されていなくてもHOLD状態でサブミットされます。

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

RUNNER CLASS

RUNNER CLASSは、ランナー・スロットの属性です。OpenFrame環境設定のtjesサブジェクトののINITDEFセクションに記述されます。

RUNNER CLASSは、JOB CLASSと一致する必要があるため、A~Zまたは0~9のJOB CLASSと同じ値を持ちます。1つのランナー・スロットは、最大8つのクラスを持つことができます。

複数のRUNNER CLASSが設定された場合は、先に記述されたクラスのジョブがない場合にのみ後述されたクラスを使用することができます。つまり、最初に設定されたクラスが最優先され、最後に設定されたクラスが最も低い優先順位を持ちます。また、i番目に記述されたクラスのジョブを実行するには、TJESのすべてのランナー・スロットがi番目以前に記述されたクラスのジョブを実行できない状態である必要があります。

たとえば、TJES内の1番のランナー・スロットはRUNNER CLASSがABCであり、2番ランナー・スロットはBCAの場合、RUNNER CLASSがCのジョブは、Bのジョブがない場合に、2番ランナー・スロットの2番目のクラス・ジョブとして実行できます。また、Cのジョブを1番ランナー・スロットの3番目のクラス・ジョブとして実行するには、AとBのジョブが存在せず、2番ランナー・スロットが別のジョブを実行中であるか、無効状態であるため、2番目のクラス・ジョブを実行できない状態である必要があります。

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

3.3. 実行

ランナーがJCL記述に基づいてジョブを実行する段階です。

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

3.4. 出力

ジョブの実行中に生成されたSYSOUTを処理します。SYSOUTは出力という単位で処理されます。また、出力クラスによって処理できるプリンターと基本的な後処理が決まります。

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

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は、運用に関する資料として使用したり、運用中に発生し得るさまざまな問題の責任を明確にする目的で、TJES内で発生する各種イベントについてログを記録します。

OpenFrame Batchシステムにおいて、TJESは以下の2種類のログを出力します。

  • JCLのサブミットに関する情報が保存されるサブミット・ログ

  • すべてのジョブ状態の変更が記録されるジョブ・ログ

毎日大量のログが記録される可能性があるため、整理作業を行わずに長期間運用を続けると、ログファイルのサイズが非常に大きくなることがあります。このような問題を解決するために、日付ごとにログを生成するオプションを提供しています。

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_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:一時停止されたジョブを再実行します。

  • NICE:ジョブのCPU使用時間に対する相対的な優先順位を指定します。

  • 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項目の値によって異なります。

5.2.1. SUBMIT

ジョブをサブミットします。

  • 構文

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

    CLASS

    サブミットされたジョブのクラスです。

    STATUS

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

    • S:START状態

    • H:HOLD状態

    • D:DONE状態

    JCL

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

5.2.2. EXECUTE

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

  • 構文

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

    INDEX

    ジョブを実行しているランナー・スロットのインデックスです。実行中のノードでのみ有効です。

    PID

    ジョブを実行しているランナーのプロセスIDです。実行中のノードでのみ有効です。

    CLASS

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

5.2.3. CHANGE

ジョブの属性を実行前に変更します。

  • 構文

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

    CLASS

    変更後のジョブのクラスです。

    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. NICE

ジョブのCPU使用時間に対する相対的な優先順位を指定します。

  • 構文

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

    INDEX

    ジョブを実行しているランナー・スロットのインデックスです。実行中のノードでのみ有効です。

    PID

    ジョブを実行しているランナーのプロセスIDです。実行中のノードでのみ有効です。

    STATUS

    NICEコマンドを実行したジョブの状態です。

    • P:SUSPEND状態

    • W:WORKING状態

    NICE

    0 ~ 20の数字で、数字が低いほど優先順位が高いです。

5.2.9. STEP

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

  • 構文

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

    STEPNAME

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

    SKIP

    ジョブ・ステップの実行をスキップするかどうかです。

    • Y:ジョブ・ステップが実行されません。

    • N:ジョブ・ステップが実行されます。

    STEPSEQ

    ジョブ・ステップの順番です。1から始まります。

    RCODE

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

5.2.10. 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、F、Mのいずれかが指定されます。

    項目 説明

    R

    標準状態です。アプリケーションが正常終了したことを示します。

    S

    システムABENDです。アプリケーションがシグナルで終了したことを示します。

    SIGPIPE、SIGSEGV、SIGABEND、SIGBUGなどのシグナルのうち、プロセスを終了させるシグナルによってプロセスが異常終了した場合です。

    U

    ユーザーABENDです。アプリケーションがABEND状態であることをレポートし、WAASABNDによって終了したことを示します。

    A

    アプリケーションABENDによって該当のアプリケーションは正常終了したものの、そのRC値を呼び出したプログラム(IKJEFT01など)が条件を満たしていないと判断したため、ジョブを終了することを示します。

    F

    FLUSH状態です。ランナーの内部エラーによって、アプリケーションが正常に実行されなかったことを示します。

    M

    JOB文にTYPRUN=JEMと記述されているか、tjesmgr JEMコマンドで実行したジョブの結果でのみ返されるリターンコードです。

  • NNNN

    NNNN: 0~4096までの数字で、アプリケーションの戻り値です(255以上は外部RCモジュールを介してリターンコードがレポートされます)。ただし、「F」状態の場合はランナーの戻り値です。

7.2. ジョブ終了コード

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

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

  • DONE

    XNNNNN

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

  • ERROR

    XNNNNN

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

  • STOP

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

  • FLUSH

    [+-]NNNNN
    区分 説明

    +

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

    -

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