この章では、メインフレーム上の MVS、OS/390、および z/OS のもとで提供される各種機能を MSS でエミュレートする方法について説明します。
MSS は、問題プログラム状態で動作しているアプリケーションにアクセスできる MVS 制御ブロックをエミュレートします。これらの制御ブロックに格納される情報は、問題プログラム状態で動作しているアプリケーションにとって価値と意味があるものに限定されます。
制御ブロックは、通信ベクトル テーブル (Communication Vector Table; CVT) の適切なフィールドを参照することにより、MSS でもメインフレーム上と同じ方法でアクセスできます。CVT のアドレスは、メインフレームの場合と同様に、メモリー内の絶対アドレス 16 に格納されます。
メインフレームでは、プレフィックス保存領域 (Prefixed Save Area; PSA) は絶対位置 0 にマップされます。多くのアプリケーション プログラムは、その PSA の内容にアクセスします。当社では、 COBOL プログラムから PSA の内容にあたかもメインフレーム上で動作しているかのようにアクセスできるようにするソフトウェアを提供しています。
MSS によってエミュレートされる MVS 制御ブロックの一覧、および非メインフレーム バージョンとメインフレーム バージョンの違いを、表 13-1 に示します。
名前 | 説明 | メインフレームとの違い |
IHAACEE | アクセサー制御エレメント | ACEEVRSN は 2 に設定されます。 |
IHAASCB | アドレス空間制御ブロック | |
IHAASVT | アドレス空間ベクトル テーブル | |
IHAASXB | アドレス空間拡張ブロック | |
CVT | 通信ベクトル テーブル | CVTTOD は X'20' に設定されます。これは、時刻機構が操作可能であることを意味します。
CVTMVSE - CVTDCB の X'80' ビットは常にオンです。これは、MVS/XA 以降のもとで実行していることを意味します。 CVT4MPS - MVS 制御ブロックが 16MB ラインより上にある (つまり、3 バイトのアドレスがすべて 4 バイトのアドレスとして同じ場所に格納される) 場合にのみ、CVTDCB の X'04' ビットがオンになります (System/360 Model 65 MP 上で実行していることを意味する)。 CVTDATE は、世紀番号を使用して設定されます (つまり、CVTDATE では "0cyyddds" 形式が使用される。"c" は世紀番号。例:20 世紀は 0、21 世紀は 1 など)。 |
CVT | CVT プレフィックス | CVT プレフィックスは、すべてバイナリ ゼロに設定されます。 |
IHACDE | コンテンツ ディレクトリ エントリ | 1 つの "null" CDE が割り当てられます。そのため、この制御ブロックは、ロード モジュールがロードされていないプログラムを使用しているように見えます。 |
IDADDSA | 動的記憶領域 (FSA - 第 1 保存領域) | これは、TCBFSA によってポイントされる 88 バイトの保存領域です。TCB 第 1 保存領域として使用されます。 |
IEFJFCBN | ジョブ ファイル制御ブロック | |
IEZJSCB | ジョブ ステップ制御ブロック | |
IHAPSA | プレフィックス保存領域 | MVS 制御ブロックが 16MB ラインより上にある (つまり、3 バイトのアドレスがすべて 4 バイトのアドレスとして同じ場所に格納される) 場合にのみ、バイト 7 (最初のバイトはバイト 0) の X'01' ビットがオンになります。 |
IEESMCA | SMF 制御領域 | SMCASID は、「MSTR」に設定されます。 |
IDADTCA | タスク通信領域 |
PRV アドレスは常にゼロです。 記憶オーバーフロー ルーチンは、オーバーフロー セグメントを提供せず、単に異常終了コード S80A で異常終了します。アプリケーションに対して ISA 設定が適切であることを確認する必要があります。 |
IDADTCA | TCA プレフィックス | |
IKJTCB | タスク制御ブロック | TCB 保護キーは、キー 8 に設定されます。 |
IEFTIOT1 | タスク I/O テーブル | 最大 256 の TIOT エントリ (ジョブ ステップにおける最初の 256 DD を表す) がサポートされます。 |
MSS では、COBOL プログラムから MVS 制御ブロックにアクセスできます。次のサンプル プログラムでは、現在実行中のプログラムのジョブ、ステップ、およびプログラム名にアクセスする方法を示します。
IDENTIFICATION DIVISION. PROGRAM-ID. JOBINFO. DATA DIVISION. WORKING-STORAGE SECTION. 01 JOB-NAME PIC X(8). 01 PROGRAM-NAME PIC X(8). 01 STEP-NAME PIC X(8). LINKAGE SECTION. 01 PSA. 05 FILLER PIC X(540). 05 PSATOLD POINTER. 01 TCB. 05 FILLER PIC X(12). 05 TCBTIO POINTER. 05 FILLER PIC X(164). 05 TCBJSCBB POINTER. 01 TIOT. 05 TIOCNJOB PIC X(8). 05 TIOCSTPN PIC X(8). 01 JSCB. 05 FILLER PIC X(360). 05 JSCBPGMN PIC X(8). PROCEDURE DIVISION. * Address PSA SET ADDRESS OF PSA TO NULL * Address TCB SET ADDRESS OF TCB TO PSATOLD * Address TIOT SET ADDRESS OF TIOT TO TCBTIO MOVE TIOCNJOB TO JOB-NAME MOVE TIOCSTPN TO STEP-NAME * Address JSCB SET ADDRESS OF JSCB TO TCBJSCBB MOVE JSCBPGMN TO PROGRAM-NAME DISPLAY 'JOB NAME = ' JOB-NAME DISPLAY 'STEP NAME = ' STEP-NAME DISPLAY 'PROGRAM NAME = ' PROGRAM-NAME GOBACK .
MVS のもとでは、JCL ジョブ ストリームを SYSOUT データ セットの形式で動的に出力するプログラムを実行し、外部書き出しプログラムでそのジョブ ストリームを処理するように指定できます。IBM から提供された外部書き出しプログラム (INTRDR) を使用するか、または独自の外部書き出しプログラムを提供できます。
外部書き出しプログラムは、次のどの方法でも要求できます。
MSS は、IBM から提供された外部書き出しプログラム (INTRDR) をエミュレートします。ユーザーから提供された外部書き出しプログラムはサポートしません。
INTRDR の MSS エミュレーションは、次の点で IBM の INTRDR と異なっています。
DB2 サブシステムとそれによって管理されるデータにアクセスするには、DB2 呼び出し接続機能 (Call Attach Facility; CAF) を使用します。この操作は、適切な一連の関数を使用して DSNALI を呼び出すことによって行います。この機能の MSS エミュレーションは、次の例外を除き、メインフレーム上とまったく同じように動作します。