TJESの紹介
本書では、TJESの特徴、コンポーネント、マルチノード構成、TJESシステムの起動と終了およびシステム・データセットについて説明します。
1. 概要
OpenFrame Batch XSP TJES(Tmax Job Entry Subsystem、以下TJES)は、富士通メインフレームのOSであるXSP(以下、富士通 XSP)のJESに対応するOpenFrameシステムのバッチ・ジョブ管理モジュールです。TJESは、マルチノード構成や自動化されたエラー復旧をサポートするために、TmaxSoftのTPモニター製品であるTmax上に実装されています。
TJESは、UNIX上で富士通XSPに最も類似したXSP JCLをサポートするバッチ処理ソリューションとして、検証されたミドルウェアを利用したマルチノード・クラスタリングにより、大規模メインフレームでも安定したリホストを実現できる優れた拡張性を提供します。
TJESは、JCLを通じてユーザーからサブミットされたジョブに対して、ジョブ・グループの設定やシステム・リソースの状況に合わせてスケジューリングし、ランナーで実行します。また、ジョブの実行結果を出力し、ジョブの実行状況をチェックするなど、OpenFrameで実行されるすべての処理を管理します。
TJESの最も重要な機能と特徴は以下のとおりです。
-
JCLを通じてジョブをサブミットします。
-
富士通XSPのJCLをサポートします。
-
ジョブ・グループの設定が可能です。
-
Control-Mなどのスケジューラーと連携できます。
-
-
サブミットされたジョブをスケジューリングします。
-
ジョブ・グループの優先順位、多重度、直列実行などの属性およびシステムの多重度やジョブの優先度に従ってスケジューリングします。
-
マルチノードのスケジューリングをサポートします。
-
-
ジョブの出力を処理します。
2. 特徴
TJESは、XSP JCLを通じてメインフレームのバッチ・プログラム(ユーティリティ、COBOLプログラム、PL/Iプログラム)を起動できます。また、UNIXシェル・スクリプト、Cプログラムなど、UNIXで実行可能なすべてのプログラムを起動することができます。UNIXでシェル・スクリプトとcronを使用してバッチ処理を行う場合は、体系化されたジョブ・スケジューリングや管理およびリソースの制御などが不十分な場合があります。
TJESでは、バッチ・システムで以下の機能を提供します。
-
ジョブ・グループの属性に基づいてスケジューリングします。
-
システムの多重度を制限し、同時に実行できるバッチ・ジョブ数を制御します。
-
ジョブの進行状況と結果の確認できます。
-
ジョブ・グループの属性変更および一時停止、再開などをサポートします。
-
ジョブの属性変更および一時停止、再開、停止などをサポートします。
-
アウトプットを管理します。
-
データセットをロックすることで、データの整合性を保証します。
-
TACFを通じてセキュリティ性を向上させます。
3. 構成要素
TJESの構成を下記の図に示します。

3.1. TJESコンポーネント
-
obmjschd
ジョブ・スケジューラーです。TJESのドメイン全体で1つのみ起動されるサーバーであり、TJESのジョブ・スケジューリングをサポートします。ジョブIDの発行や各ノードの起動状態およびスケジューリングに影響を与えるジョブ・グループなどを管理します。
-
ofrpmsvr
プリンター管理サーバーです。TJESのドメイン全体で1つのみ起動されるサーバーであり、OUTPUTQに登録された出力を条件に合ったプリンターに送信します。
-
obmjhist
ジョブの履歴サーバーです。TJESのドメイン全体で1つのみ起動されるサーバーであり、ジョブの状態を変更するすべてのアクション情報が記録されます。
-
obmjspbk
スプールのバックアップ・サーバーです。TJESのドメイン全体で1つのノードでのみ起動されるサーバーであり、実行済みのジョブをTJESから削除すると同時にそのジョブのスプールを別の場所にバックアップします。また、バックアップされたスプールは、TJESと同じ方法で確認することができます。
-
obmjinit
ランナーとランナースロットを管理するサーバーです。obmjinitは、TJESのノードごとに1つずつ起動するサーバーであり、自分のノードに割り当てられたランナーとランナースロットを管理し、ジョブをランナーに割り当てます。
-
obmjmsvr
ジョブを管理するサーバーです。TJESのジョブと出力を確認および管理することができます。
-
tjclrun
XSP JCLを実際に起動するモジュールです。JCLで記述された1つのジョブをステップ順に実行します。
-
obmtsmgr
TSOを管理するサーバーです。OpenFrameでTSO画面にログインすると、TSOコマンドがバッチ・ジョブとして実行されます。そのとき、画面とジョブを連携および管理します。
3.2. TJESコンポーネントのDBセッション
一部のTJESサーバーは、システム・メタデータの管理やデータセットI/Oなどの処理のためにDBを使用しており、それに応じて必要なDBセッションを持ちます。
使用するDBセッションは、下記の表を参照してください。
順番 | セッションクライアント | セッション数 | セッションタイプ | 目的 |
---|---|---|---|---|
1 |
obmjinit |
1 |
ODBC |
OpenFrameメタ |
2 |
obmjspbk |
1 |
ODBC |
OpenFrameメタ |
3 |
obmjschd |
1 |
ODBC |
OpenFrameメタ |
4 |
obmjmsvr |
1 |
ODBC |
OpenFrameメタ |
5 |
ofrpmsvr |
1 |
ODBC |
OpenFrameメタ |
6 |
obmtsmgr |
1 |
ODBC |
OpenFrameメタ |
7 |
tjclrun(ジョブの実行時に増加) |
1 |
ODBC |
OpenFrameメタ、最大2つ(VSAM) STEPで実行されるプログラムまたはUTILからDBに接続する場合、セッション数が増加する可能性があります。 |
3.3. TJESと連携するOpenFrame製品
-
OpenFrame Base
OpenFrame(Batch、AIM、OpenFrame Managerなど)を稼働するために必要な製品です。OpenFrame Baseは、非VSAM、TSAMなどのデータセットをサポートし、カタログやデータセットのロックなどを管理します。
OpenFrame Baseの詳細については、OpenFrame Base『Baseガイド』を参照してください。
-
OpenFrame TACF
OpenFrameのセキュリティ製品です。OpenFrame TJESとOpenFrame TACFを連携し、ユーザー認証、データセット、ジョブ名などのリソースへの権限チェックを行い、強力なセキュリティ機能を使用できます。
OpenFrame TACFの詳細については、OpenFrame TACF『管理者ガイド』を参照してください。
3.4. TJESが使用するリソース
-
ランナースロット
ランナースロットはランナーの運用情報が保存されている領域であり、1つのランナーに1つのランナースロットが割り当てられます。ランナースロットは、ランナーとobmjinit間でデータをやり取りする窓口として使用されます。ランナースロットは、obmjinitが正常に起動されると作成され、obmjinitの終了時に削除されます。RDB表のレコードとして実装されています。
-
スプール
TJESが使用する特別なデータセットです。ジョブの起動に必要なリソースやジョブの実行情報と結果を保存します。ジョブをサブミットする際にジョブIDと同じ名前でディレクトリを作成し、そのディレクトリのサブディレクトリを使用します。また、スプール関連のメタ情報は、設定に応じてRDB表またはデータセット・メンバーとして管理することができます。ジョブ・スプールは、REMOVEコマンドまたはCANCELコマンドが実行されると削除されます。
-
TJESシステム・テーブル
TJESが内部情報を保存するために使用されるテーブルとして、JOBQ、JESST、OUTPUTQなどがあります。詳細については、TJESシステム・テーブルを参照してください。
3.5. インターフェース
-
textrun
サードパーティ・スケジューラーからTJESにジョブをサブミットし、進行状況と結果を監視できるモジュールです。UNIX上のサードパーティ・スケジューラーは、ジョブの開始と終了をプロセスの開始と終了とするため、textrunは自分がサブミットしたジョブの実行が終了するまで実行し続け、ジョブが終了すると結果を返して終了します。
-
tjesmgr
システム管理者向けのコマンド・ベースのユーザー・インターフェースです。BOOTおよびSHUTDOWNコマンドを含むTJESのすべての機能を使用できます。
-
OpenFrame Manager
一般ユーザー向けのGUIベースのユーザー・インターフェースです。TJESシステムの起動と終了などのTJES管理を除く、ジョブのサブミット・検索・管理機能を提供します。
4. マルチノードのTJES構成
TJESは、ジョブの処理性能やサービスの可用性を高めるために、複数のUNIXマシンを1つのマシンであるかのように使用できるマルチノード環境をサポートしています。本節では、TJESをマルチノードで構成する際、各構成要素の配置と動作方法について説明します。
以下の図は、2つのノードでTJESを構成した場合の構成要素です。

TJESをマルチノードで構成するには、スプール、データセット、TSAMなどのデータ・ストレージ・リソースを共有する必要があります。TJESは、共有リソースを介して、複数のノードで同じデータセットを使用するか、他のノードで実行されたジョブの結果を確認することができます。
NODE1のofrsasvr、ofrpmsvr、obmjschd、obmjhist、obmjspbk、obmtsmgrは、ドメイン全体で1つのみ存在できるTmaxサーバーです。NODE1に問題が発生した場合は、Tmaxによって自動的にNODE2が起動(フェイルオーバー)されるため、サービスの可用性が向上されます。
NODE1とNODE2の両方に存在するobmjmsvr、ofrdsedt、ofrlhsvr、ofruisvr、obmjinitは、マルチノード・サービスを提供するために各ノードに1つ以上存在する必要があります。ただし、obmjinitは、各ノードに1つのみ存在する必要があります。
tjclrunは、オンデマンド方式で実行されるプロセスであり、各ノードごとに現在実行中のジョブ数と同数のtjclrunが存在し、実行中のジョブがない場合はtjclrunも存在しません。obmjinitとtjclrunは、TJESランナースロットを介して情報をやり取りします。TJESランナースロットは、obmjinitの起動時に生成され、終了時に削除されます。
外部U/Iであるtextrun、OpenFrame Manager、tjesmgrは、Tmaxを介してすべてのノードに接続できます。
5. TJESのブートとシャットダウン
ブートはTJESがジョブを実行できる状態であり、シャットダウンはTJESがジョブを実行できない状態です。システム管理者は、tjesmgrのノード・コマンドであるBOOTとSHUTDOWNコマンドを使用して制御できます。
詳細については、イニシエーター・コマンドのBOOTとSHUTDOWNを参照してください。 |
5.1. ブート
BOOTコマンドは、TJESがシャットダウン状態でのみ実行でき、すでにブートしている場合は無視されます。BOOTは、TJESの各ノードで自分のランナースロットを使用できる状態に初期化した後、TJESのobmjschdにランナースロットの現在の状態をレポートし、ジョブがスケジューリングされるようにします。
TJESが正常にブートされると、SYS1.JESSTシステム・データセットにそのノードがブートされたことが記録されます。これにより、データベースへの接続失敗などの障害が発生した場合、TJESの自動復旧によってブート状態が維持されます。
マルチノードのTJES環境では、TJESのブート時にTJESの全ドメインに属するすべてのノードにBOOTコマンドを送信します。また、各ノードごとにブートすることもできます。ブートされるノードのランナースロットは、DOWENDからDOWN状態になる前のACTIVEまたはINACTIVE状態で復旧されます。ブートされたことがない場合は、OpenFrame環境設定のtjesサブジェクトのINITDEFセクションに適用されたデフォルト状態に復元されます。
5.2. ウォームブートとコールドブート
-
ウォームブート
システムを初期化した後、一般的な起動方法です。TJESのランナースロット表を初期化し、スケジューラーにランナースロットの現在の状態情報を送信してジョブがスケジューリングできるようにします。tjesmgrのBOOTコマンドを使用してウォームブートを行います。
-
コールドブート
OpenFrame TJESを初期化するためのブートです。tjesinitツールを使用してシステム・データセット表を初期化します。ただし、実際にジョブを実行するには、コールドブートの後にウォームブートを行う必要があります。
以下の場合にコールドブートを行います。
-
OpenFrame TJESのインストール後
-
システム表の構造変更など、主要システムのアップグレード後
-
tjes設定の変更をシステムに適用する際
-
[JOBDEF]セクションのJOBNUMの範囲を変更した後
-
OUTPUTQサイズを変更した後
-
JOB GROUPの設定を変更した後
-
-
コールドブートの詳細については、OpenFrame Batch『ツールリファレンスガイド』の「tjesinit」を参照してください。 |
5.3. シャットダウン
SHUTDOWNコマンドは、obmjinitがブートされている状態でのみ実行でき、すでにシャットダウンしている状態では無視されます。SHUTDOWNコマンドが実行されると、TJESはそのノードの状態を「Not booted」に変更し、システムのシャットダウン後に発生される追加的なジョブのスケジューリングを制限します。
シャットダウンされる前にスケジューリングされ実行中のジョブは、終了されるまで正常に実行されますが、ユーザーが強制終了を明示した場合は、SHUTDOWNコマンドの実行と同時に停止されます。
実行中のジョブをすべて終了してからシステムをシャットダウンする場合は、STOPコマンドを使用して実行中のジョブを終了した後、SHUTDOWNコマンドを使用してTJESシステムをシャットダウンします。
TJESが正常にシャットダウンしたら、OFM_BATCH_NODESTシステム表にそのノードがシャットダウンされたことを記録します。これにより、データベースへの接続失敗などの障害が発生した場合、TJESの自動復旧によってシャットダウン状態が維持されます。
マルチノードのTJES環境では、TJESがシャットダウンされるとき、TJESの全ドメインに属するすべてのノードにSHUTDOWNコマンドを送信します。また、各ノードごとにシステムをシャットダウンすることもできます。
-
システム全体をシャットダウンするコマンド
shutdown
-
各システムごとにシャットダウンするコマンド
shutdown node=nodename
SHUTDOWNコマンドが実行されたノードの各ランナースロットはDOWEND状態に変更されます。実行中のジョブがある場合はランナースロットをWORKING状態で維持し、ジョブの実行が終了されたらDOWEND状態に変更します。
6. TJESシステム・テーブル
TJESは、システムの設定と各種リソースの情報をノード間で共有するために、以下のようなシステム・テーブルに格納しています。
6.1. JESST
TJESのシステム・レベル情報(JESST)は、種類に応じて3つのシステム表(OFM_BATCH_JESST、OFM_BATCH_JOBGST、OFM_BATCH_NODEST)に格納されます。
システム表の名前 | 説明 |
---|---|
ノード情報 |
システムに存在するノードの情報や各ノードの起動状態は、システム表のOFM_BATCH_NODESTに格納されます。 |
JOBID情報 |
JOBIDの範囲と最後のJOBID情報は、システム表のOFM_BATCH_JESSTに格納されます。 |
OUTPUTQ情報 |
OUTPUTQのサイズ情報は、システム表のOFM_BATCH_JESSTに格納されます。 |
ジョブ・グループ情報 |
各ジョブ・グループの属性情報は、システム表のOFM_BATCH_JOBGSTに格納されます。 |
コールドブート中に記録する必要があるJESSTシステム表のJOBIDやOUTPUTQなどの情報は、tjesinitツールを介してのみ更新できるため、OpenFrame環境設定のtjesサブジェクトを変更した場合は、tjesinitツールを使用してシステム表に変更を適用する必要があります。 |
6.2. JOBQ
TJESでジョブを管理するために必要な情報を格納するシステム表であり、表名は OFM_BATCH_JOBQです。
JOBID、JOBNAME、JOB_STATUS、JOBCLASS、JOBPRTY、JOBGNAME、JCLPATH、USER ACCOUNTなどがJOBQに格納されます。JOBIDに対してデフォルト索引が設定されています。
6.3. OUTPUTQ
TJESで実行されたジョブの実行結果である出力を管理するために必要な情報が格納されるシステム表であり、表名は OFM_BATCH_OUTPUTQです。
OUTPUTID、JOBID、JOBNAMEなど、出力を検索および管理するための情報とデータ・ファイルのパス、OUTPUT CLASS、OUTPUT DISPなどの出力情報がOUTPUTQに格納されます。
TJESで使用されるすべてのシステム表は、OpenFrameのインストール時にbatchinitツールを使用してインストールします。batchinitツールの詳細については、OpenFrame Batch『ツールリファレンスガイド』の「batchinit」を参照してください。
OpenFrameを初めてインストールした場合は、tmbootを実行する前にOpenFrameが提供するコールドブート用のUNIXツールであるtjesinitを使用してシステム表を初期化する必要があります。