ジョブの管理
本章では、ジョブの状態、ジョブの実行手順と実行結果の確認、およびジョブの管理方法について説明します。
OpenFrameでは、tjesmgrとOpenFrame Managerを使用してジョブを管理することができます。本書では、tjesmgrを使用してジョブを管理する方法についてのみ説明します。
| OpenFrame Managerを使用してジョブを管理する方法については、OpenFrame Manager『ユーザーガイド』を参照してください。 | 
1. ジョブの状態
TJESでは、ジョブをSTART、HOLD、WORKING、SUSPEND、DONE、ERROR、STOP、FLUSHの8つの状態に区別して管理しています。
 
| READYは、ジョブがサブミット中であることを示しており、PURGEは、ジョブがTJESから削除されたことを示します。 | 
以下は、TJESでのジョブ状態についての説明です。
| 状態 | 内容 | 
|---|---|
| START | JCLによってサブミットされたジョブが実行される前までの状態です。ジョブ・スケジューリングの対象であり、ランナー・スロットに割り当てられていない状態です。 JOB CLASSを変更することが可能であり、HOLDコマンドを使用してジョブをHOLD状態に変更したり、CANCELコマンドを使用してJOBQから削除したりすることができます。 | 
| HOLD | JCLによってサブミットされたジョブが実行される前までの状態です。ジョブ・スケジューリングの対象外です。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状態に変更する必要があります。
| 
 | 
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の順でデータセットのメンバーを検索します。
| 
 | 
3. ジョブの処理手順
TJESを介して実行されるすべてのジョブは、以下の手順で処理されます。
- 
サブミット(Submit):TJESからJCLを受け取ります。 
- 
スケジューリング(Schedule):条件を満たすランナー・スロットにジョブを割り当てます。 
- 
実行(Execution):ランナーがジョブを実行します。 
- 
出力(Output):ジョブの実行が終わり、その出力が処理されます。 
- 
削除(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がサブミットされる手順です。
- 
JCL構文エラーを確認します。プロシージャの有無と構文エラーはこの時点では確認できず、tjclrunによってJCLが解析されるときに確認されます。 
- 
JOBIDを発行します。 
- 
SPOOLを作成します。 
- 
サブミットされたJCLをコピーしたINPJCLをSPOOLに格納します。 
- 
JCLのジョブに関する情報をJOBQに格納します。 
- 
JCLのJOB文にTYPRUN=HOLDが記述されているか、OpenFrame環境設定のtjesサブジェクトのJOBCLASSセクションの特定のCLASSキー値にHOLD属性が指定されていない場合は、obmjschdに通知してスケジューリングします。 
サブミット中にエラーが発生すると、OpenFrame環境設定のofsysサブジェクトのDIRECTORYセクションのLOG_DIRキーに指定されたパスのジョブのサブディレクトリに、submit_YYYYMMDD.logという名前でファイルが保存されます。正常にサブミットされたジョブは、STARTまたはHOLDのいずれかの状態になります。
tjesmgrのRUNコマンドを使用してJCLを正常にサブミットすると、それによって作成されたジョブがJOBQに登録されます。
| 
 | 
以下は、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は出力という単位で処理されます。また、出力クラスによって処理できるプリンターと基本的な後処理が決まります。
出力はプリンターに出力されるか、インターナル・リーダーを介してTJESにサブミットされます。詳細については、出力処理を参照してください。
4. ジョブの検索
サブミットされたジョブは、JCLのパラメータに記述された値によって、START状態またはHOLD状態でJOBQに登録されます。JOBQに登録されているすべてのジョブは、tjesmgrのPSコマンドを使用してジョブの状態を確認できます。
START状態のジョブはスケジューリングによってWORKING状態に切り替わり、実行された後、ERROR、DONE、またはFLUSH状態で終了します。
以下のtjesmgrコマンドを使用して、ジョブの詳細情報を表示できます。
| コマンド | 説明 | 
|---|---|
| PSJOB | ジョブの詳細情報を表示します。 | 
| PSIO | ジョブで使用したデータセットの入出力情報を表示します。 | 
| POSPOOL | ジョブで生成されたスプール情報を表示します。 | 
| PODD | ジョブで生成されたスプールの内容を表示します。 | 
| POJOB | ジョブの出力の詳細情報を表示します。 | 
| ジョブ情報の表示についての詳細は、ジョブ出力コマンドを参照してください。 | 
5. ログ
TJESでは、実行中に発生するイベントをログに記録しています。
以下は、OpenFrame/BatchシステムでTJESが記録するログです。
- 
JCLのサブミットに関する情報が保存されるサブミット・ログ 
- 
すべてのジョブ状態の変更が記録されるジョブ・ログ 
tjes.confファイルの[LOG]セクションにログ・ファイル・パスを設定する際、ファイル名に「&SYSDATE」を挿入すると、「&SYSDATE」がYYYYMMDD形式の日付に置き換えられ、日付ごとにログが生成されます。
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 | |
| NODE | ジョブが実行されるノードの名前です。 JCLにジョブが実行されるexecution_nodeを指定していないか、OpenFrame環境設定にtjesmgrサブジェクトのDEFAULT_OPTIONセクションのDEFAULT_RUNNING_NODEキーのVALUE項目を「MY」に設定していない場合は、すべてのノードで実行できるようにアスタリスク(*)が設定されます。 | 
| USER | ジョブを実行したユーザーの名前です。CMD=FINISHの場合は、TJESが出力されます。 | 
| JOBID | サブミットされたジョブのジョブIDです。 | 
| JOBNAME | ジョブの名前です。 | 
| additional info | この値はCMD項目の値によって異なります。 | 
SUBMIT
ジョブをサブミットします。
- 
構文 CLASS=class,STATUS=status,JCL=path 項目 説明 CLASS サブミットされたジョブのクラスです。 STATUS ジョブのサブミット状態によって設定されます。 - 
S:START状態 
- 
H:HOLD状態 
- 
D:DONE状態 
 JCL コピーされたINPJCLのパスではなく、サブミットされたJCLソース・ファイルのパスです。 
- 
EXECUTE
ジョブをランナーに割り当てます。
- 
構文 INDEX=index,PID=pid,CLASS=class 項目 説明 INDEX ジョブを実行しているランナー・スロットのインデックスです。実行中のノードでのみ有効です。 PID ジョブを実行しているランナーのプロセスIDです。実行中のノードでのみ有効です。 CLASS ランナー・スロットに割り当てられた複数のクラスのうち、ジョブを実行するために使用しているクラスです。 
CHANGE
ジョブの属性を実行前に変更します。
- 
構文 CLASS=class,PRIORITY=priority,STATUS=status 項目 説明 CLASS 変更後のジョブのクラスです。 PRIORITY 変更後のジョブの優先順位です。 STATUS 変更後のジョブ状態を示します。 - 
S:START状態 
- 
H:HOLD状態 
 
- 
FINISH
ジョブの実行を終了します。
- 
構文 INDEX=index,PID=pid,STATUS=status,RCODE=exitcode 項目 説明 INDEX ジョブを実行しているランナー・スロットのインデックスです。実行中のノードでのみ有効です。 PID ジョブを実行しているランナーのプロセスIDです。実行中のノードでのみ有効です。 STATUS ジョブの終了状態です。 - 
D:DONE状態 
- 
E:ERROR状態 
- 
T:STOP状態 
- 
F:FLUSH状態 
 RCODE ジョブの終了コードです。詳細については、ジョブの終了コードを参照してください。 
- 
REMOVE
TJESからジョブを削除します。
- 
構文 STATUS=status 項目 説明 STATUS 削除されたジョブの終了状態です。 - 
D:DONE状態 
- 
E:ERROR状態 
- 
T:STOP状態 
- 
F:FLUSH状態 
 
- 
SUSPEND
ジョブを一時停止します。
- 
構文 INDEX=index,PID=pid,STATUS=status 項目 説明 INDEX ジョブを実行しているランナー・スロットのインデックスです。実行中のノードでのみ有効です。 PID ジョブを実行しているランナーのプロセスIDです。実行中のノードでのみ有効です。 STATUS 一時停止されたジョブの状態です。 - 
P:SUSPEND状態 
 
- 
RESUME
一時停止されたジョブを再実行します。
- 
構文 INDEX=index,PID=pid,STATUS=status 項目 説明 INDEX ジョブを実行しているランナー・スロットのインデックスです。実行中のノードでのみ有効です。 PID ジョブを実行しているランナーのプロセスIDです。実行中のノードでのみ有効です。 STATUS 再実行されたジョブの状態です。 - 
W:WORKING状態 
 
- 
NICE
ジョブのCPU使用時間に対する相対的な優先順位を指定します。
- 
構文 INDEX=index,PID=pid,STATUS=status,NICE=nice 項目 説明 INDEX ジョブを実行しているランナー・スロットのインデックスです。実行中のノードでのみ有効です。 PID ジョブを実行しているランナーのプロセスIDです。実行中のノードでのみ有効です。 STATUS NICEコマンドを実行したジョブの状態です。 - 
P:SUSPEND状態 
- 
W:WORKING状態 
 NICE 0 ~ 20の数字で、数字が低いほど優先順位が高いです。 
- 
STEP
ジョブの特定のステップの実行情報です。
- 
構文 STEPNAME=stepname,SKIP=skip,STEPSEQ=seqnum,RCODE=exitcode 項目 説明 STEPNAME ジョブ・ステップ名です。 SKIP ジョブ・ステップの実行をスキップするかどうかです。 - 
Y:ジョブ・ステップが実行されません。 
- 
N:ジョブ・ステップが実行されます。 
 STEPSEQ ジョブ・ステップの順番です。1から始まります。 RCODE ジョブの終了コードです。詳細については、ジョブの終了コードを参照してください。 
- 
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シグナル番号です。