プログラム仕様ブロック (PSB) 生成ユーティリティー

プログラム仕様ブロック (PSB) 生成ユーティリティーは、アプリケーション・プログラムの特性と論理端末および論理データ構造の使用を記述したマクロ命令から PSB を生成します。

IMS システムで ACB の IMS 管理が使用可能になっていない限り、 IMSの下でアプリケーション・プログラムを実行するには、PSB 生成ユーティリティーが必要です。 ACB 保守ユーティリティーは、データベース記述子 (DBD) と一緒に PSB を使用して、実行時に使用するアプリケーション制御ブロック (ACB) を作成します。

IMS システムで ACB の IMS 管理が使用可能な場合、PSB 生成ユーティリティーを使用する代わりに、CREATE PROGRAMVIEW などの SQL 動的定義言語 (DDL) ステートメントを使用して、アプリケーション・プログラムの特性を IMS に対して記述します。

PSB 生成ステートメントは、使用する IMS リソースの識別と特性を提供します。 これらのプログラム連絡ブロック (PCB) は、アプリケーション・プログラムが使用するメッセージ宛先とデータベースを表します。 さらに、アプリケーション・プログラム自体の特性を与えるステートメントも必要です。 メッセージ・プログラム、バッチ・プログラム、または 各高速機能プログラムごとに 1 つの PSB が必要です。 PSB の名前およびそれに関連するアプリケーション・プログラムは、通信システム内で同じである必要があります。

1 つの入出力 PCB と 1 つの変更可能代替 PCB のみが必要な場合には、生成済みの PSB (GPSB) を使用して、アプリケーション・プログラムに必要なリソースを記述できます。 GPSB は、すべてのオンライン環境で使用できますが、通常は DCCTL アプリケーション・プログラムで使用されます。 GPSB のために PSBGEN を実行する必要はありません。

注意: PROCOPT 値によって BMP アプリケーションがデータベース内のセグメントを挿入、置換、または削除できるようにする場合は、変更をコミットせずに、BMP アプリケーションが合計 300 を超えるデータベースと HALDB 区画を更新しないようにしてください。

非コミット更新があるすべての全機能データベース・タイプが、この制限値 300 に不利に働きます。 非コミット更新の件数に関する 300 というデータベース制限に近づく最も一般的な原因は、HALDB データベースの区画の数であるため、HALDB データベースを設計する際には十分に注意してください。

サブセクション。

制約事項

現在、PSB 生成ユーティリティーについて文書化されている制約事項はありません。

前提条件

現在、PSB 生成ユーティリティーについて文書化されている前提条件はありません。

要件

現在、PSB 生成ユーティリティーについて文書化されている要件はありません。

推奨事項

現在、PSB 生成ユーティリティーについて文書化されている推奨事項はありません。

入出力

PSB 生成ユーティリティーにより、作成された PSB は PSB ライブラリーに入れられます。 各 PSB は、オペレーティング・システムの区分データ・セット IMS.PSBLIB IMS バッチ実行 (DL/I 領域タイプ) の場合、必要なデータベース PCB PSB が PSBLIB からロードされ、DL/I データベース PCB ステートメント処理に必要な拡張 PSB がそこから作成されます。 ACB 生成を実行して、拡張 PSB を ACBLIB に事前に組み込む必要があります。 PSBLIB は、ACB 生成プロセスへの入力として使用されます。 バッチ実行でもまた、JCL 実行ステートメントに領域タイプ「DBB」を指定することにより、ACBLIB からの事前組み込みブロックを使用することができます。 オンライン領域 (BMP) で実行されているアプリケーションが、定義された 1 つ以上の GSAM PCB を持つ PSB を参照する場合、 IMS は PSBLIB を持つ ACBLIB を使用して内部制御ブロックを作成します。 その場合、PSB は ACBLIB と PSBLIB の両方で同じものとして定義してある必要があります。

PSB 生成で使用する 6 つのタイプのステートメントは次のものです。

  • 入力メッセージのソース以外の出力メッセージの宛先用の PCB ステート メント。 これらのステートメントは代替 PCB と呼ばれ、 IMS メッセージ・キューとのインターフェースを持つメッセージ処理、バッチ・メッセージ処理、および高速機能プログラムで使用されます。
  • DL/I データベースおよび高速機能データベース用の PCB ステートメ ント。 これらのステートメントは、メッセージ処理プログラム、バッチ処理プログラム、および高速機能処理プログラムが、データベースとの インターフェースを定義するときに使用します。
  • アプリケーション・プログラム・センシティブな、データベース内の セグメント用の SENSEG ステートメント。 これらのステートメントは、メッセージ処理プログラム、バッチ処理プログラム、高速機能処理プログラムが、論理データ構造を定義するときに使用します。
  • アプリケーション・プログラムに依存する 、セグメント内のフィールド用の SENFLD ステートメント。
  • 各 PSB 用の PSBGEN ステートメント。 このステートメントは、関連するアプリケーション・プログラムの特性を表すときに使用されます。
  • PSBGEN ステートメントごとに必要なアセンブラー言語の END ステートメント。

PSB 生成に使用されるステートメントのリストには、入力メッセージ・ソース用の PCB は含まれていません。 入出力 PCB は、この目的のために IMS オンライン制御プログラム中核内に存在します。 メッセージ処理に使用するアプリケーション・プログラムに入ったときに、入力メッセージの ソースを指す PCB ポインターが、PCB アドレス・ポインターのリスト内の最初の項目として用意されます。 PCB リストの残りの項目は、関連する PSB 内で定義された PCB と直接関係しており、PSB 生成時に定義された順序と同じ順序でアプリケーション・プログラムに定義する必要があります。 DL/I メッセージおよびデータベース呼び出しを行う際には、すべての PCB をアプリケーション・プログラムで使用できます。 特定の DL/I 呼び出しでは 1 つの PCB のみが使用されます。

PCB の名前 (PCBNAME = name) を定義し、LIST = NO を指定することによって、アプリケーション・プログラムに渡される PCB リストから、代替 PCB、DL/I PCB、高速機能 PCB、および GSAM PCB を除外することができます。 アプリケーション・インターフェース・ブロック (AIB) を使用して呼び出しを発行する場合は、PCB に名前を付ける必要があります。 AIB は、すべてのタイプの PCB に使用できます。

バッチ処理領域のメッセージ処理プログラムまたはバッチ・メッセージ処理プログラムをテストするときは、PSBGEN ステートメントの CMPAT オプションを使用します。 CMPAT = YES を指定すると、 IMS は、メッセージ処理領域で実行されているかのように、PCB をアプリケーションに提供します。 CMPAT を使用すると、バッチ実行とオンライン実行の間にプログラムを 再コンパイルする必要がなくなります。

バッチ・プログラムの場合は、PSBGEN ステートメントの CMPAT オプションで 要求しない限り、入出力 PCB はリスト内に存在しません。 したがって、CMPAT=YES を指定しなければ、プログラムに与えられる PCB のリス トは PSB 内の PCB と直接関係しています。 バッチ処理領域でのバッチ処理の場合、TP PCB を PSB 内に入れてはなりません。

TM バッチ環境では、CMPAT=YES が暗黙指定され、PSBGEN でこれを変更することはできません。 DCCTL バッチ領域で実行されるアプリケーション・プログラム用の PCB リストは、必ず 1 つの入出力 PCB を含んでいます。

IMS バッチ・メッセージ処理領域で動作するバッチ・プログラムに関連付けられた PSB に、代替 PCB を指定することができます。 これらの PCB は、出力メッセージ・キューイング用に利用できます。 バッチ・メッセージ処理領域内で動作するバッチ・プログラムは、入力メッセージ・キューのメッセージにアクセスできます。 メッセージ処理プログラムの場合と同様に、1 つの入出力 PCB が必ず用意されています。

高速機能領域で実行される高速機能プログラムに関連する PSB の中に、代替 PCB および変更可能代替 PCB を指定できます。 同じ PTERM を持つ応答代替 PCB を使用すれば、高速機能出力メッセージを、 別のコンポーネントが端末に接続されている元の PTERM に送り戻すことができます。 代替 PCB (非応答モード) を使用して、任意の端末または IMS メッセージ・キューに出力メッセージを送信することができます。

DL/I 呼び出しを行い PCB 情報 (状況コードおよびフィードバック情報) の問い合わせを行うために、アプリケーション・プログラムへの入り口でアプリケーション・プログラムに渡される PCB リストを、アプリケーション・プログラム内に定義された名前で参照できます。 PCB のアドレスは、アプリケーション・プログラムから IMSへの DL/I 呼び出しの 2 番目のパラメーターにすることができます。 PCB アドレスは、入力メッセージのソース、出力メッセージの宛先、またはデータベースを表すことができます。 DL/I 呼び出しが完了すると、PCB には、その呼び出しに関連する状況および フィードバック情報が入ります。

出力メッセージと統計

PSB 生成では、3 つのタイプの印刷出力と 1 つのロード・モジュールが生成されます。これらは、区分データ・セット IMS.PSBLIB 出力のタイプは次のとおりです。

制御ステートメントのリスト
これは、このジョブ・ステップへの入力ステートメント・イメージを リストしたものです。
診断
制御ステートメントの処理中にエラーが検出されると、エラーが検出される前に読み取られた最後の制御ステートメントのイメージの直後に、診断メッセージが印刷されます。 このメッセージは、直前の制御ステートメントまたは先行する制御ステートメントのグループを指し示すことができます。 制御ステートメントごとに複数のメッセージを印刷することも可能です。 この場合、それらのメッセージは、出力リスト上でそれぞれの後に続きます。 すべての制御ステートメントが読み取られた後に、デック全体の論理について さらに検査が行われます。 これによって、さらに、1 つ以上の診断メッセージが出される場合があります。

エラーが検出されると、診断メッセージが印刷され、制御ステートメントがリストされ、残りの出力は抑制されます。 しかし、PSB 生成の実行が終了する前に、すべての制御ステートメントが読み取られて、検査されます。 制御ステートメント・エラーが検出された場合は、PSB 生成のバインド・ステップは実行されません。

アセンブラー・リスト
PRINT NOGEN を指定しない限り、PSB 生成の実行で作成される PSB のオペレーティング・システム・アセンブラー言語リストが出力されます。
ロード・モジュール
PSB 生成は、2 ステップからなるオペレーティング・システム・ジョブです。 ステップ 1 は、オブジェクト・モジュールを生成するマクロ・アセンブリーの実行です。 ステップ 2 はオブジェクト・モジュールのバインドです。これにより、 IMS.PSBLIB

JCL 仕様

PSB 生成ユーティリティーは、標準オペレーティング・システム・ジョブ として実行されます。 EXEC ステートメントおよびユーティリティー制御ステートメントを定義する必要があります。

EXEC ステートメント

次の形式でなければなりません。

// EXEC PSBGEN,MBR=APPLPGM1