| フィールド | 長さ (バイト) | データのタイプ | 説明 |
|---|---|---|---|
| SPA 長 | 2 | 2 進数 | セグメントの長さ。 |
| SPA ID | 4 | 2 進数 | IMS での SPA の識別に使用される固有名。 この名前は MPP では変更できません。 |
| IMS トランザクション名 | 8 | 文字 | EGL プログラムの IMS トランザクション名。 |
| セグメンテーション状況バイト (オプション) | 1 | 16 進数 | このオプション・バイトは、spaSize=n および spaStatusBytePosition=15 が指定され、これが据え置きの切り替えである場合に使用されます。 データが作業データベースに保存されたかどうかを示します。 |
| プログラム・データ | 可変長 | 可変長 | この領域には、transfer to transaction ステートメントに渡され、ターゲット・プログラムによってその入力レコードに受け取られるレコードが格納されます。 |
| セグメンテーション状況バイト (オプション) | 1 | 16 進数 | このオプション・バイトは、これが即時切り替えであり、spaSize=n および spaStatusBytePosition=n である場合に使用されます。 (状況バイトの位置は、状況バイトがデータに先行する場合は 15、状況バイトがデータに後続する場合は SPA のサイズと同じ値になります。) この場合、バイトの内容は無視されます。 また、このオプション・バイトは、spaSize=n および spaStatusBytePosition=n が指定され、これが据え置きの切り替えである場合にも使用されます。 この場合、バイトはデータが作業データベースに保存されたかどうかを示します。 |
以下の例に、会話型処理に対する据え置きまたは即時のプログラム間メッセージ交換のいずれかで渡されるスクラッチパッド領域の COBOL 定義を示します。 PL/I では、COBOL での使用に 2 バイトではなく、4 バイトの長さのフィールドが必要であることに注意してください。 詳しくは、ご使用のシステムの IMS/VS 資料を参照してください。 特定のフィールド名は説明の目的にのみ使用されています。 実際のフィールド名は生成されるコードによって異なることがあります。
* SPA IO 領域。
01 SPA.
05 SPA-LENGTH PIC S9(4) COMP.
05 SPA-ID PIC S9(9) COMP.
05 IMS-TRAN-NAME PIC X(8).
05 CSP-OPTIONAL-SSM-BYTE PIC X(1). 注 1 を参照。
05 CSP-APPL-WS-DATA.
10 data-item-1 PIC ........................
10 data-item-2 PIC ........................
.
.
.
05 CSP-OPTIONAL-SSM-BYTE PIC X(1). 注 2 を参照。
上記の表で「プログラム・データ」として識別されるデータは、ターゲット・プログラムの入力レコードとして処理されます。 この手法により、非 EGL プログラムが SPA にデータを格納し、その SAP データを使用または変更する EGL プログラム (または一連の EGL プログラム) へ切り替えることが可能になります。 EGL プログラムでは最終的に、SPA に格納された EGL プログラムからの情報を伴って、非 EGL プログラムに切り替え戻すことができます。 SPA サイズの変更に関する IMS の制約事項に従ってください。
以下の表には、SPA、transfer to transaction または show ステートメントに指定されたレコード、およびターゲット・プログラムの入力レコードの、会話型処理での関係が定義されています。
| 機能 | データ域サイズ対移動レコード・サイズ | 結果 |
|---|---|---|
| transfer to transaction | SPA 内のプログラム・データ域のサイズが、transfer to transaction または show ステートメントに指定された EGL レコードのサイズを超えている。 | SPA のプログラム・データ域が EGL レコード全体を使用して作成され、SPA の残りのバイトは空白に初期化されます。 |
| transfer to transaction | SPA 内のプログラム・データ域のサイズが、transfer to transaction に指定された EGL レコードのサイズより小さい。 | EGL レコードの余分のバイトは切り捨てられます。 |
| ターゲット・プログラムの入力レコードの初期化 | SPA 内のプログラム・データ域のサイズが、 ターゲット・プログラムの入力レコードに指定された EGL レコードのサイズを超過している。 | SPA 内のプログラム・データ域の余分のバイトは、その入力レコードへの移動時に切り捨てられます。 |
| ターゲット・プログラムの入力レコードの初期化 | SPA 内のプログラム・データ域のサイズが、 ターゲット・プログラムの入力レコードに指定された EGL レコードのサイズより小さい。 | 入力レコードは SPA 内のプログラム・データ域で初期化され、入力レコードの残りのバイトはデータ・タイプに基づいて初期化されます。 |