このドキュメントでは、Adabas をバッチモードで、TP モニタとともにインストールするために必要な情報について説明します。 本書には、次のトピックが含まれています。
このセクションでは、IBM プラットフォーム用の TP モニタの Adabas リンクルーチンの準備について説明します。 Adabas 8 リンクルーチンのソースモジュールは、Adabas 8 の基本ソースライブラリでは提供されません。 Adabas 8 リンクルーチンは、ZAP 経由またはリンクグローバルテーブルを使用してのみカスタマイズできます。
すべての Adabas 8 リンクルーチンには、AMODE および RMODE アセンブリ指示が含まれています。 これらのアセンブリ指示により、リンク JCL、JCS、または EXEC で、AMODE または RMODE リンケージエディタコントロールステートメントの競合が発生した場合、リンケージエディタは警告メッセージを生成します。
これらのアセンブリ指示は、各リンクルーチンに対して選択された AMODE および RMODE を記述するためにも使用されます。 リンクルーチン内外のこれらの指示が、実行中のリンクルーチンの実際のアドレッシングモードを変更しないことに注意してください。
特定の AMODE
と RMODE
の組み合わせで、Adabas 8 リンクルーチンを再リンクすると、リンケージエディタによって警告メッセージが生成されることがあります。
これは、リンクルーチンを構成するロードモジュールの ESD レコードの AMODE
または
RMODE
の競合に関連している場合、かつ意図したアプリケーションプログラムのコールで結果のモジュールが実行される際に、モジュールに適切な
AMODE
および RMODE
属性が設定されている場合に限り、無視しても問題ありません。
注意が必要なのは、リンクルーチンの再リンク時に選択した属性でリンクルーチンを起動するときに、AMODE(24)
アプリケーションが正常に動作するかどうかです。 これは、RMODE(ANY)
属性が関連付けられているリンクルーチンが、動的にロードされるにもかかわらず、AMODE(24)
のプログラムによって起動される場合に特に重要です。 この場合、アドレスの例外によるアベンドを避けるため、リンクルーチンを
AMODE(31)
、RMODE(24)
で再リンクする必要があります。これは AMODE(24)
アプリケーションはリンクルーチンが 16 MB
境界より上にある場合に、リンクルーチンを正常に起動できないためです。
Adabas 8 リンクルーチンはすべて、初期化後に AMODE(31)
で実行されますが、コール元の AMODE
でコール元に返されます。
注意:
CICS では、V8 リンクは AMODE(31)
で実行されますが、実行中の CICS
トランザクションの AMODE
と RMODE
は、Dataloc
RDO パラメータによって決定されます。
バッチ/TSO 非リエントラントリンクルーチン ADALNK
は
AMODE(31)
、RMODE(24)
でアセンブルとリンクが行われています。これは AMODE(24)
または
RMODE(24)
アプリケーションプログラムをサポートするための推奨コンフィグレーションです。
必要に応じて、AMODE(31)
、RMODE(ANY)
で再リンクすることもできますが、すべてのコール元プログラムが AMODE(31)
であることを確認できた場合のみにしてください。
ADALNKR
バッチ TSO
リエントラントリンクルーチンは、AMODE(31)
、RMODE(ANY)
でリンクエディットされています。 このリンクルーチンが AMODE(24)
のアプリケーションによってロードされる場合、AMODE(31)
、RMODE(24)
で再リンクする必要があります。
ZOS Com-Plete モジュール ADALCO
は、AMODE(31)
、RMODE(ANY)
でアセンブルとリンクが行われています。 Com-plete TP モニタは、Com-plete Adabas インターフェイスルーチン
TLOPADAB
を通じて、ADALCO を起動する
AMODE(24)
または RMODE(24)
プログラム間を切り替えるときに、適切な AMODE が選択されるようにします。
すべての V8 CICS
リンクルーチンモジュール(ADACICS
、ADACICT
、ADACIC0
、ADACIRQ
)は、AMODE(31)
、RMODE(ANY)
でリンクエディットされています。
CICS はプログラムのロードと起動を、プログラムおよびトランザクション定義に関連付けられた DATALOC 値に基づいて管理します。
Adabas IMS インターフェイスリンクルーチン ADALNI
は、AMODE(31)
、RMODE(ANY)
でリンクエディットされています。 これは最近の IMS アプリケーション用に推奨されるコンフィグレーションです。インストール環境に
AMODE(24)
IMS
アプリケーションが存在する場合は、ADALNI
をAMODE(31)
、RMODE(24)
で再リンクすることもできます。
Software AG では、すべてのバッチアプリケーションで ADAUSER モジュール経由で Adabas
コールを起動することをお勧めしています。 このモジュールは、通常アプリケーションプログラムとリンクエディットされ、その後 ADARUN や
ADAIOR/ADAIOS とともに適切なリンクルーチンをロードします。 ソースメンバには AMODE
31
、RMODE ANY
としてコーディングされた
AMODE
命令と RMODE
命令があります。
これはさまざまなアプリケーションプログラムに対して ADAUSER をアセンブルおよびリンクするための最も柔軟なコンフィグレーションです。
しかし、ADAUSER が動的にロードされる場合は、再アセンブルの前に RMODE
アセンブラ指示を
RMODE 24
に変更する必要があります。または、ADAUSER モジュールを
AMODE(31)
、RMODE(24)
で再リンクして、AMODE 24
アプリケーションが 16 MB
境界の下で適切に起動できるようにする必要があります。
Adabas 8 バッチおよび TSO リンクルーチンのソースコードは Adabas 8 には含まれていません。 これらのモジュールは、LNKUES で、変換テーブル ASC2EBC および EBC2ASC とともに提供されます。 このバージョンの Adabas 8 では、これらの UES コンポーネントとともに実行してください。 バージョン 8 ターゲットデータベースが UES 有効データベースではない場合、リンクルーチンがそれを検出し、コールが UES 変換を必要とするクライアントからのものであった場合、Adabas レスポンス 228 を返します。
Adabas 8 Com-plete リンクルーチンは、LCOGBL モジュールの設定から、UES サポートが必要かどうかを判断します。LCOGBL モジュールの設定は、Com-plete を使用する Adabas のインストールで修正およびアセンブルします。 詳細については、「Com-plete を使用する場合の Adabas のインストール」を参照してください。
このセクションでは、次のトピックについて説明します。
デフォルトでは、Adabas 8 リンクルーチンのロードモジュールは、LNKUES およびデフォルト変換テーブルとリンクされています。
LNKUES は Adabas バッファのデータを変換し、コール元のアーキテクチャに応じて、必要な場合はバイトスワップを行います。
標準的な変換テーブルは次の 2 つです。
ASC2EBC:ASCII から EBCDIC への変換
EBC2ASC:EBCDIC から ASCII への変換
Adabas 変換テーブルペアについては、「変換テーブル」を参照してください。
ロードモジュールとリンクされたデフォルトの変換テーブルを使用する代わりに、独自のカスタマイズした変換テーブルを準備し、テーブルを再アセンブルして、配布された LNKUES または LNKUES7 モジュールとリンクすることもできます。
注意:
LNKUES は、Adabas リンクルーチン要求(X’1C’)コールおよび応答(X’20’)コールで、コミュニケーション ID の先頭バイトに X’01’ が含まれ、2 バイト目に EBCDIC(X’04’)ビットが設定されていない場合にのみ、呼び出されます。 Adabas 8 要求では、LNKUES は UEXIT1 の前に制御を受け取ります。 Adabas 8 応答では、LNKUES は UEXIT2 の後に制御を受け取ります。
次のリストは、z/OS 環境の Adabas リンクルーチンでユニバーサルエンコーディングサポートを管理するためのサンプルジョブです。
サンプルジョブ | 説明 |
---|---|
LNKGCICS | CICS グローバルテーブルをアセンブルし、LNKUES およびデフォルト変換テーブル ACS2EBC、EBC2ASC とリンクします。 |
LNKLCO8 | Com-plete リンクグローバルテーブルを、LNKUES およびデフォルト変換テーブル ACS2EBC、EBC2ASC とリンクします。 |
LNKLNI8 | IMS リンクルーチンを、LNIGBL リンクグローバルテーブル、LNKUES、およびデフォルト変換テーブル ACS2EBC、EBC2ASC とリンクします。 |
LNKLNK8 | バッチリンクルーチンを、LNKGBLS リンクグローバルテーブル、LNKUES、およびデフォルト変換テーブル ACS2EBC、EBC2ASC とリンクします。 |
LNKLNKR8 | リエントラントバッチリンクルーチンを、LNKRGBL リンクグローバルテーブル、LNKUES、およびデフォルト変換テーブル ACS2EBC、EBC2ASC とリンクします。 |
これらのジョブを使用する前に、編集して JOB カードを準備し、ロードライブラリ名を更新する必要があります。また、必要に応じて、環境に合わせたその他の変更を行うこともできます。 詳細については、ジョブ内に記述されているコメントを参照してください。
このセクションでは、何らかの理由で必要になったときに、Adabas 8 の IMS/TM、Com-plete、およびバッチ/TSO リンクルーチンの UES サポートを無効化する方法について説明します。
リンクルーチンの UES サポートを無効化するには、次の手順に従います。
関連するリンクルーチンのリンクグローバルテーブルを編集します。 UES パラメータを NO に設定します。
必要に応じて、ソースモジュールの EQU 文とその他の指示に必要な変更を加えた後、リンクグローバルテーブルをアセンブルします。
Adabas リンクルーチンを新しくアセンブルされたリンクグローバルテーブルとリンクします。このとき、UES コンポーネント(LNKUES、ASC2EBC、EBC2ASC)を組み込まないでください。
特定のリンクルーチンの詳細については、「Adabas 8 配下での IMS/TM を使用する場合の Adabas のインストール」、「Adabas 8 配下での Com-plete を使用する場合の Adabas のインストール」、および「Adabas 8 配下での Batch/TSO を使用する場合の Adabas のインストール」を参照してください。
このセクションでは、Adabas 8 で IMS/TM TP モニタを使用する場合の Adabas リンクルーチンのインストールについて説明します。
IMS が Adabas データベースとコミュニケートする場合は、Adabas リンクルーチンが必要になります。 Adabas バージョン 8 実行可能デフォルトリンクルーチンは、AIIvrs.LOAD ライブラリの メンバ ADALNI で提供されます(vrs はテープで提供される最新の Adabas バージョン番号)。 このリンクルーチンを変更する場合は、メンバ ADALNI8 を使用してください。 ADALNI8 は、準備したリンクグローバルモジュールとリンクする必要があります。また、アプリケーションが IMS メッセージ処理プログラム(MPP)リージョンをコールしたときに、IMS MPP によってロードされる、最終的な ADALNI ロードモジュールを作成するために必要なリンクルーチンもすべてリンクする必要があります。 メンバ ADALNI と ADALNI8 には一部デフォルトが設定されています。
このセクションでは、次のトピックについて説明します。
IMS/TM 用の Adabas 8 リンクルーチンを次に示します。
ADALNI は、メッセージ処理プログラム(MPP)の実行可能なデフォルトモジュールです。 リンクルーチンのデフォルトを変更する必要がない場合は、このモジュールを使用します。
ADALNI8 は、メッセージ処理プログラム(MPP)の基本モジュールとして使用します。 インストール環境で ADALNI をカスタマイズする必要がある場合は、ADALNI8 を使用して、更新された ADALNI を生成します。
ADALNK は、バッチメッセージ処理(BMP)プログラム、バッチ指向 BMP プログラム、およびバッチ処理プログラム(DLIBATCH)用の Adabas リンクルーチンです。
ADALNI および ADALNK は、デフォルトで CSECT 名および ENTRY 指示 ADABAS を使用します。
Adabas バージョン 8 の ADALNI と ADALNK は UES が有効な状態で提供されています。 詳細は、「UES 対応データベースの接続」セクションを参照してください。
このセクションでは、ADALNI と ADALNI8 の使い方についてのみ説明します。 ADALNK の使い方については、「バッチ/TSO を使用する場合の Adabas インストールの全般的な考慮事項」を参照してください。
Adabas ユーザー ID は、ADALNI ロードモジュールの実行時に IOPCB の LTERM フィールド(先頭 8 バイト)から取得されます。 ユーザー ID は Adabas ユーザーブロックフィールド UBUID に格納され、Adabas コミュニケーション ID の末尾 8 バイトに使用されます。
SAF ID は、IBM の RACF または CA の ACF2 などの外部セキュリティパッケージが存在する場合に、Adabas SAF Security(ADASAF)で使用するためにサポートされています。 SAF ID は、ADALNI ロードモジュールの実行時に、IOPCB のユーザー ID フィールド(33~40 バイト目)から取得されます。 有効な SAF ユーザー ID を取得するには、IMS インストール環境で SAF サインオンがアクティブになっている必要があります。また、ユーザーが IMS/SIGN コマンドを実行して、IMS 端末にログオンしている必要があります。
デフォルト設定を変更し、IMS 用の Adabas 8 リンクルーチンを準備するには、次の手順に従います。
Adabas 8 AIIvrs.SRCE ライブラリに含まれているサンプルメンバ LNIGBL を変更可能な任意のユーザーソースライブラリにコピーします。 これらのモジュールには、リンクコンポーネントのデフォルト設定を作成するのに使用する LGBLSET パラメータが含まれています。 LGBLSET パラメータの詳細については、「バージョン 8 でのソースメンバデフォルトの修正(LGBLSET マクロ)」に記載されています。
ユーザーソースライブラリの LNIGBL メンバを修正します。
注意:
OPSYS パラメータは ZOS に設定する必要があります。
サンプルジョブ ASMGBLS を、ジョブの先頭で示されているとおりに修正および実行します。 ASMGBLS は Adabas 8 ADAvrs.JOBS ライブラリ内にあります。 完全に修正する場合、ジョブの SET ステートメントが前の手順で準備した LNIGBL メンバを参照し、NAME リンクエディットコントロールステートメントが LNIGBL メンバの GBLNAME パラメータによって指定される名前を参照している必要があります。
修正したら、ASMGBLS ジョブを実行してリンクグローバルモジュールをアセンブルおよびリンクエディットします。
新しいリンクグローバルモジュールが、ASMGBLS ジョブで指定されたユーザーロードライブラリに生成されます。モジュール名は LNIGBL の GBLNAME パラメータで指定された名前になります。
サンプルジョブ LNKLNI8 をユーザーソースライブラリにコピーし、前の手順で作成した新しいリンクグローバルモジュールおよびその他の必要な出口が ADALNI8 基本モジュールとリンクするように修正します。 サンプルジョブの修正手順は、ジョブの先頭に記載されています。 このジョブの出力先を適切なユーザーロードライブラリに設定するようにしてください。 LNKLNI8 は Adabas 8 AIIvrs.SRCE ライブラリ内にあります。
このジョブで生成されるモジュールは ADALNI です。
IMS MPP リージョンで使用できるロードライブラリに ADALNI モジュールを配置します。
これで Adabas 8 リンクルーチンの準備は完了です。
マクロレベルリンクルーチン ADALNC は z/OS 配下で実行する CICS のすべてのレベルでサポートされなくなりました。 これらの環境では、現行バージョンの Adabas を実行し、提供されるコマンドレベルリンクコンポーネントを使用する必要があります。
Adabas コマンドレベルリンクルーチンは CICS トランザクションサーバー(CTS)環境をサポートしています。
注意:
次のセクションでは、Adabas/CICS に固有のインストールと操作について、CICS 側の観点から説明します。
CICS 配下で Adabas Bridge for VSAM 4.2 もしくは 5.1 を実行している場合、CICS 3.3 以上および Adabas バージョン 7.1 以上のコマンドレベルリンクルーチンを実行しなければなりません。
Adabas CICS コマンドレベルリンクルーチンを CICS マルチプルリージョンオプション(MRO)で実行する場合、MRO パラメータを "YES" に設定し、NETOPT パラメータのデフォルト値を使用する必要があります。 Adabas 8 インストールでは、これらのパラメータは、LGBLSET マクロで指定します。詳細については、「バージョン 8 でのソースメンバデフォルトの修正(LGBLSET マクロ)」を参照してください。
Adabas をコールするアプリケーションが複数アプリケーションリージョン間に渡る場合、LGBLSET NTGPID パラメータを使用して、Adabas SVC によって使用される Adabas コミュニケーション ID に 4 バイトのリテラルを指定できます。
あるいは、次の処理を行うリンクルーチンのユーザー出口を作成することができます。
UBFLAG1(UB DSECTのバイト X'29')に値 X'08'(UBF1IMSR)を指定します。
4 バイトの英数字値を UB フィールド UBIMSID に挿入します。
この出口はリンクユーザー出口 1(LUEXIT1)です。 この出口によって、複数リージョンでトランザクションが発生する場合でも、Adabas SVC は、Adabas コマンドキューエレメント(CQE)に適切な Adabas コミュニケーション ID を提供することができます。
ストレージ保護機構(STGPROT)は、CICS/ESA 3.3 で導入されました。 ストレージ保護は、ストレージプロテクションキーを使用することによって、CICS ストレージまたはユーザーストレージにアクセスする許可をリソースに与えます。
ユーザーキーでは CICS ストレージを上書きできません。このようにして CICS をある程度保護できます。
CICS キーでは CICS ストレージまたはユーザーキーストレージのどちらも読み書きでき、CICS リソースへの最高のアクセス権を与えます。
トランザクションアイソレーションは CICS/ESA 3.3 配下で導入されたストレージ保護メカニズムの拡張です。 CICS リソースをサブスペースに隔離することにより、さらに強力に CICS リソースを保護します。 これは、ユーザーキーリソースを相互に保護し、CICS のカーネルから CICS キーリソースを保護します。 トランザクションアイソレーションは CICS TRANISO システム初期化(SIT)パラメータを使用してグローバルに有効にできます。また、新しいリソース定義 ISOLATE キーワードで各 CICS トランザクションを有効にできます。 トランザクションアイソレーションによって、CICS システムの存続中および CICS システムで実行しているすべてのトランザクションに有効でなければならない CICS リソースが制限されます。
Adabas 8 インストールでは、CICS リンクルーチンはタスク関連のユーザー出口、モジュール ADACICT を常に使用するため、ストレージアイソレーションはデフォルトでサポートされています。
z/OS および VSE 用の CICS/TS 1.1 以上の場合、CICS プログラムやトランザクションの定義およびインストールには、RDO(リソース定義オンライン)を使用することをお勧めします。 CICS ドキュメントでは、現在、リソースの定義に PPTと PCT エントリの再アセンブリを推奨していません。
メンバ DEFADA8 のサンプル DEFINE ステートメントを修正して、IBM DFHCSDUP への入力として使用し、Adabas CICS コマンドレベルコンポーネントを定義します。 DFHCSDUP ユーティリティに関する情報については、該当する IBM CICS ドキュメントを参照してください。 DEFADA8 メンバは Adabas 8 CICS コマンドレベルソースライブラリ(ACIvrn.SRCE)にあります。
次の表に、Adabas 8 配下で CICS を使用する場合の Adabas のインストールをサポートするための、Adabas インストレーションで提供されるモジュールを示します。
モジュール | 説明 |
---|---|
ADACICS | CICS コマンドレベルモジュール |
ADACICT | CICS タスク関連ユーザー出口(TRUE)モジュール |
Adabas 8 CICS リンクルーチンコンポーネントをインストールするには、次の手順に従います。
Adabas 配布ライブラリから Adabas 8 CICS ロードモジュールを CICS DFHRPL 連結内のロードライブラリにコピーします(Adabas 8 ADAvrn.JOBS ライブラリのサンプルメンバ CPYCICSM を参照)。
Adabas 8 ACIvrn.SRCE ライブラリ内のサンプルメンバ CICSGBL を修正します。 このメンバには、デフォルトのインストールパラメータ(LGBLSET)設定のサンプルが含まれています。 このメンバの何を修正するかについては、「バージョン 8 でのソースメンバデフォルトの修正(LGBLSET マクロ)」を参照してください。
注意:
OPSYS パラメータは ZOS に設定する必要があります。
修正した CICSGBL メンバを固有の名前で適切なユーザーソースライブラリに保存します。
サンプルジョブ ASMGBLS を、ジョブの先頭で示されているとおりに修正および実行します。 ASMGBLS は Adabas 8 ADAvrs.JOBS ライブラリ内にあります。 完全に修正する場合、ジョブの SET ステートメントが前の手順で準備した CICSGBL メンバを参照し、NAME リンクエディットコントロールステートメントが CICSGBL メンバの GBLNAME パラメータによって指定される名前を参照している必要があります。
ACIvrn.SRCE ライブラリの LNKGCICS の内容を確認してから実行し、前の手順で新しくアセンブルしたグローバルテーブルを任意のユーザー出口または Software AG 製品出口とリンクします。 特定の Software AG 製品出口の詳細については、製品のインストールマニュアルを参照してください。LNKGCICS メンバは特定の命令を提供します。 グローバルテーブルをリンクするロードライブラリは、DFHRPL ライブラリ連結で CICS から利用可能にする必要がある点に注意してください。 任意のユーザー出口または Software AG リンクルーチン出口は、このモジュールとリンクエディットする必要があります。
DEFADA8 メンバを修正して、前の手順(手順 4)で作成したリンクルーチングローバルデフォルトテーブルの正しい名前を指定します。 デフォルトのモジュール名は CICSGBL です。 必要に応じて、このメンバのその他の CICS インストール値を修正します。
注意:
リンクグローバルテーブルの名前以外の Adabas 8 CICS
プログラム名は、事前に定義されており、変更できません(ADACICS、ADACICT、ADACIRQ、ADACIC0 など)。
IBM DFHCSDUP ユーティリティを実行して、修正した DEFADA8 を入力として使用する CICS の CICS CSD ファイルを更新します。
CICS PLTPI テーブルを修正して、Adabas CICS タスク関連ユーザー出口(TRUE)を有効にして開始するエントリを追加します。 レガシー Adabas TRUE および新しいバージョン 8 の TRUE を有効にして、PLT の第 2 フェーズで開始するには、Adabas 8 ACIvrn.SRCE ライブラリのメンバ ADAPLTXX をサンプルとして使用してください。
修正した PLTPI テーブルをアセンブルし、目的の CICS リージョンで利用可能なライブラリにリンクします。
CICS 起動 JCL を修正して、手順 4 で準備したリンクグローバルテーブルの名前を指定する DDLINK DD ステートメントを追加します。 この作業の詳細については、「CICS 用の DDLINK 入力の準備」を参照してください。
CICS を開始し、コンソールに表示される Adabas TRUE モジュールのインストールに関連するメッセージに注意します。
Adabas 8 CICS リンクルーチンの操作は、各 CICS アドレススペースごとにカスタマイズできます。リンクグローバルテーブルをアセンブルおよびリンクし、そのテーブルを実行時に CICS から利用できるようにします。 テーブルには規則に従った任意のロードモジュール名を付けることができます。CICS が識別可能で、CICS リージョンで使用されている既存のロードモジュール名と競合しないことが条件です。
グローバルテーブルは CICS にプログラムとして定義する必要があります。 Adabas 8 ACIvrn.SRCE ライブラリのサンプル DEFADA8 メンバの内容を確認して、CICSGBL というサンプルの定義を参考にしてください。 DEFADA8 メンバは、必要に応じて修正し、DFHCSDUP ユーティリティへの入力として使用します。このユーティリティで、CICS CSD の Adabas 8 コンポーネントを定義します。 この手順は、Adabas 8 配下のインストール手順でも説明されています。 DFHCSDUP ユーティリティの詳細については、適切な IBM CICS ドキュメントを参照してください。
CICS リージョンの各リンクルーチングローバルテーブルには固有の名前があります。 Adabas 8 CICS リンクルーチンは、外部の一時的なデータキューから、この名前を指定されます。 キュー名は ADAI です。この定義も DEFADA8 メンバに記述されています。
Adabas 8 タスク関連ユーザー出口(TRUE)を ADACIC0 プログラムから有効にすると、CICS の起動時または ADA0 トランザクション発生時に、ADACIRQ モジュールが起動され、ADAI 一時データキューが読み込まれます。 読み込まれたデータは、ファイルまたはパーティション分割されたデータセットメンバ内に提供されるか、DDLINK DD ステートメントによってシステムに入力されます。 CICS JCL を修正してこの DD ステートメントを指定する必要があります。修正しない場合は、デフォルトのリンクグローバルテーブル名 "CICSGBL" が使用されます。 リンクグローバルテーブルが見つからなかった場合、Adabas 8 TRUE は有効にならず、開始されません。
読み込まれる入力データのフォーマットは次のとおりです。
内容 | 説明 |
---|---|
ADALINK | このキーワードが 1~6 カラム目に存在する必要があります。 |
スペース | 7 カラム目にスペース(空白)が必要です。 |
LGTNAME=
または LGT= |
7 カラム目のスペースの後、8 カラム目からキーワード LGTNAME または LGT とそれに続く等号(=)が必要です。 |
module-name | LGTNAME または LGT キーワードに続く等号の後ろに、準備したグローバルテーブルのモジュール名が必要です。 |
例えば、CICS JCL に次のような文を追加します。
//DDLINK DD * ADALNK LGTNAME=CICSGBL /*
この例では、"CICSGBL" という名前のリンクデフォルトグローバルテーブルを準備し、アセンブルおよびリンクエディットして、この CICS に定義する必要があります。
このセクションでは、Adabas 8 で使用する CICS ハイパフォーマンススタブルーチンのインストールについて説明します。 ここで説明するモジュールとインストール手順は、既存の Adabas 8 アプリケーションを引き続き使用できるように構成されています。
Adabas ハイパフォーマンススタブルーチンは、Natural バージョン以外の言語(アセンブラ、COBOL、PL/I など)で書かれたアプリケーションに対する Adabas CICS コマンドレベルリンクコンポーネントで利用可能なダイレクトコールインターフェイス(DCI)機能を拡張します。
注意:
スタブルーチンは Adabas CICS コマンドレベルリンクコンポーネントで使用する必要があります。 スタブルーチンは Adabas
CICS/VSE マクロレベルリンクコンポーネントで正常に機能しません。 Adabas バージョン 8 ライブラリで提供される LNCSTUB
モジュールは、Adabas バージョン 7.4 CICS リンクルーチンを使用しても正常に動作します。
DCI によって CICS/TS アプリケーションから、Adabas コマンドレベルリンクルーチン経由での Adabas コールが可能になります。 そのため、EXEC CICS LINKと EXEC CICS RETURN コマンドセットを使用してプログラムコントロールを転送するときのオーバーヘッドが回避されます。 ハイパフォーマンススタブまたは Natural 3.1 以上からのイニシャルコール(IC)コマンドで正しい環境が設定されると、DCI によって BALR インターフェースの使用が許可されます。
ハイパフォーマンススタブルーチンはアセンブラ言語で記述されています。 アプリケーションプログラムとリンクすると、アプリケーションと Adabas CICS コマンドレベルリンクコンポーネントの間のインターフェースとして使用できます。 また、Adabas コマンドを実行するときに、アプリケーションプログラムから CALL ステートメントを発行して、スタブルーチンにアクセスできます。
CICS/TS 1.1 以上のアプリケーションは、ハイパフォーマンススタブから次のような効果を得られます。
CICS/TS 1.1 以上で Adabas コマンドを発行するときに、CICS LINK および RETURN プログラムコントロールメカニズムに関連して CICS サービスの使用が削減されるため、パフォーマンスとスループットが向上します。
CICS/TS 1.1 以上での Adabas 要求に対するコールメカニズムは、CICS 環境で 1 つのプログラムから別のプログラムに情報とコントロールを渡すときに通常使用される手法よりも単純になっています。
このセクションでは、次のトピックについて説明します。
次の制限と必要条件がハイパフォーマンススタブルーチンに適用されます。
CICS/TS 1.1 以上
Adabas ハイパフォーマンススタブルーチンは CICS/TS 1.1 以上でサポートされます。
アプリケーションがハイパフォーマンススタブルーチンを正常に実行するには、少なくとも 24 バイトの CICS トランザクションワークエリア(TWA)、または少なくとも 32 バイトの CICS COMMAREA が必要です。 Adabas 8 LNCSTUB モジュールおよび Adabas 8 インストール確認プログラムは、IVP プログラム、LNCSTUB、および CICS の間のデータ受け渡しに、CICS TWA ではなく、CICS COMMAREA を使用するようになりました。 CICS COMMAREA の使用により、CICS TWA の場合に比べて、次のような利点があります。
COMMAREA のサイズは、アプリケーションによってコールごとに設定することができます。一方、TWA のサイズは CICS トランザクションが定義されるときに設定されます。
CICS COMMAREA を使用するアプリケーションは、CICS PLTPI のステージ II または III で実行することができます。 CICS TWA は、PLTPI 処理中に使用することができません。
CICS COMMAREA の動的サイズ変更は、Adabas 8 ACBX ダイレクトコール、ACBX コントロールブロック、および Adabas バッファ記述(ABD)の制限のないフォーマットに適しています。 Adabas バージョン 8 のダイレクトコールインターフェイスおよびそのデータ構造については、『Adabas コマンドリファレンス』を参照してください。
CICS コマンドレベルリンク
アプリケーションプログラムは CICS コマンドレベルインターフェイスと命令を使用して書かれる必要があり、CICS マクロレベルコマンドは発行できません。
サポートされるプログラミング言語
アプリケーションプログラムは ALC(アセンブラ言語)、VS/COBOL、COBOL II、COBOL/LE、PL/I、または C で作成できます。 インストール確認プログラム(IVP)は、Adabas ソースライブラリに ALC および COBOL で提供されます。
特定のプログラミング言語に必要な追加条件については、この章の各言語に関連するセクションを参照してください。
タイプ | メンバ | 説明 |
---|---|---|
ソース |
ADAGSET |
LNCSTUB と ALCSIVP のアセンブルに必要なマクロ |
ジョブ制御 |
JCLALCI |
ACL インストール確認用のサンプル JCL |
Adabas CICS ハイパフォーマンススタブルーチンをインストールするには、次の手順に従います。
LNCSTUB モジュールを編集、プリプロセス、アセンブル、リンクします。
RDO または DFHCSDUP ユーティリティを使用して、アプリケーションプログラム、オプションの IVP、CICS リンクコンポーネントを CICS に定義します。
(オプション)適切なインストール確認プログラム(IVP)を修正、プリプロセス、コンパイルまたはアセンブル、リンクし、実行します。
アプリケーションプログラムを修正、プリプロセス、コンパイルまたはアセンブル、リンクし、実行します。
詳細については、次の手順を参照してください。
Adabas CICS ハイパフォーマンススタブルーチンはアセンブラ言語のモジュールで、配布テープのメンバ LNCSTUB にソース形式で提供されます。
手順 1 では、次の作業を行います。
注意:
ADAGSET マクロの編集については、「ソースメンバデフォルトの修正(ADAGSET
マクロ)」を参照してください。
ライブラリ内の ADAGSET マクロを編集します。これは、LNCSTUB をアセンブルするときに、SYSLIB 連結で使用できます。
LNCSTUB と ALCSIVP IVP モジュールは両方とも次の ADAGSET キーワードから値を取得するようになります。
LOGID。データベース ID を識別します。
PARMTYP。LNCSTUB および ALCSIVP プログラムからデータを渡すときに、TWA または COMMAREA を使用するかを指定します。
ENTPT。LNCSTUB および ALCSIVP プログラムによって起動される CICS リンクルーチンまたは CICS スタブの名前を指定します。 Adabas CICS コマンドレベルリンクコンポーネントプログラムが ADACICS 以外の名前でリンクされている場合、ADAGSET マクロの ENTPT キーワードの値を変更します。 このフィールドの値は LNCSTUB が発行する EXEC CICS LINK コマンドを提供するときに使用されます。
TRUENM。使用する Adabas TRUE の名前を指定します。
Adabas 8 LNCSTUB モジュールには、アセンブラの GBLC 変数(&STBNAME)があります。この変数にはエントリポイントの別名を設定し、コール元プログラムで使用できます。 必要に応じて、LNCSTUB ソースメンバの先頭近くにある SETC ステートメントを修正し、別名を設定します。 アプリケーションプログラムは、"LNCSTUB"、または SETC ステートメントで設定したエントリポイントの別名を使用して、コールを発行することができます。
メンバ JCLLNCS を使用して LNCSTUB モジュールをプリプロセス、アセンブル、リンクします。 この JCL を環境に合わせて修正するには、メンバの JOB カードと次の表に示す記号の値を変更します。
値 | 説明 |
---|---|
&SUFFIX | CICS トランスレータに使用する接尾値。 デフォルト値は 1$。 |
&ASMBLR | LNCSTUB ソースコードをアセンブルするために使用されるアセンブラプログラムの名前(ASMA90)。 |
&M | 処理するメンバ名。LNCSTUB または ALCSIVP を指定します。 |
&STUBLIB | LNCSTUB ロードモジュールを挿入するためのロードライブラリの名前。 このライブラリはアプリケーションプログラムをリンクするとき、使用可能である必要があります。 |
&INDEX | アセンブラ用の SYSLIB DD ステートメントで使用する CICS マクロライブラリに対するハイレベル修飾子。 |
&INDEX2 | トランスレータ STEPLIB DD ステートメントおよびリンクステップの SYSLIB に使用する CICS ロードライブラリに対するハイレベル修飾子。 |
&ADACOML | ADACB、ADAGDEF、ADAGSET、および LNCDS コピーコードとマクロが存在する Adabas コマンドレベルソースライブラリの名前。 |
&ADASRCE | 追加コピーコードまたはマクロ展開に使用する Adabas ソースライブラリの名前。 |
&STBSRCE | 配布した Adabas CICS ハイパフォーマンススタブ LNCSTUB が存在するソースライブラリの名前。 |
&MAC1 | プライマリシステムマクロライブラリ(通常は SYS1.MACLIB)。 |
&OUTC | SYSPRINT、SYSOUT メッセージの出力クラス。 |
® | ステップリージョンサイズ。 |
&NCAL | リンケージエディタ NCAL パラメータの値。 推奨値は NCAL です。 |
&LSIZE | リンケージエディタに使用されるプライマリおよびセカンダリテーブルサイズ。 |
&WORK | テンポラリデータセットとユーティリティデータセットに使用する DASD デバイスタイプ。 |
31 ビット命令が使用されているため、CICS プリプロセスの後、LNCSTUB モジュールをアセンブルするときに、ハイレベルアセンブラ(ASMA90)を使用する必要があります。
注意:
LNCSTUB モジュールは、リエントラントまたは再利用可能としてリンクできます。
リエントラントでリンクした場合、自動的に再利用可能になります。再利用可能でリンクした場合、自動的にリエントラントにはなりません。
CICS マクロライブラリの他に、Adabas CICS コマンドレベルソースライブラリと標準 Adabas ソースライブラリをアセンブリステップの SYSLIB DD ステートメントに指定する必要があります。
LNCSTUB ロードモジュールをリンクするとき、CICS ロードライブラリを SYSLIB DD ステートメントに連結しないでください。
LNCSTUB オブジェクトデッキの後の SYSLIN データストリームに次のコントロールステートメントを使用してください。
NAME LNCSTUB(R)
LNCSTUB ロードモジュールに CICS スタブモジュール DFHEAI0と DFHEAI1 を組み込まないでください。 次のような実行結果となります。
リンケージエディタは、DFHEAI1が未解決の外部参照であることを示す IEW462 または同様のメッセージを発行します。
LNCSTUB モジュールはリンケージエディタによって NOT EXECUTABLE としてマークされることがあります。
リンクステップのコンディションコードは 8 になります。
アプリケーションプログラムを LNCSTUB とリンクすると、外部参照はすべて解決されます。 CICS スタブピースが欠落した場合に、LNCSTUB のリンクエディットからコンディションコード '04' が発行されるように、リンクエディットパラメータ LET および NCAL を使用することをお勧めします。
LNCSTUB モジュールにはエントリ名 ADABAS があります。このエントリ名は、アプリケーションプログラムがパラメータリスト付きで LNCSTUB に制御を渡すときに CALL ステートメントのオブジェクトとして使用できます。 LNCSTUB に対する言語固有のコール規則については、このセクションで後述します。
LNCSTUB モジュールには、&STBNAME の値を設定するための、エントリ名 LNCSTUB または SETC ステートメントで記述したエントリ名の別名があります。 どちらの値も、アプリケーションプログラムからパラメータリスト付きで LNCSTUB に制御を渡すときに、CALL ステートメントのオブジェクトとして使用できます。 LNCSTUB に対する言語固有のコール規則については、このセクションで後述します。
LNCSTUB ロードモジュールは DCI 機能を使用するためにアプリケーションプログラムのリンクステップで有効にする必要があります。
注意:
同じステップで、CICS ロードライブラリを有効にしてください。そうでないと、CICS
スタブモジュールに対する外部参照が未解決になります。
LNCSTUB ロードモジュールはアプリケーションプログラムをリンクするとき組み込まれるので、アプリケーション言語のアセンブラやコンパイラから利用できるライブラリに設置してください。
2 つのインストール確認プログラム(IVP)がソース形式で 提供されています。1 つはアセンブラ言語用、もう 1 つは COBOL/VS 用です。 これらのプログラムはユーザーアプリケーションに Adabas ハイパフォーマンススタブルーチンを実装するためのサンプルです。 また、LNCSTUB モジュールの適切なインストールを確認する方法も提供します。
このセクションでは、これらの IVP について 1 つずつ説明します。
注意:
2 つのインストール確認プログラム ALCSIVP と COBSIVP は、Software AG
が提供するデモンストレーションファイル EMPLOYEES のフィールド AA と AE のみを使用します。 Software AG
が提供するデモンストレーションファイルについての詳細は、 z/OS
インストレーション指示の「デモンストレーションファイルのロード」を参照してください。
LNCSTUB モジュールを使用する Adabas DCI のデモと確認のために、ソースメンバ ALCSIVP が提供されています。 このプログラムは、従来の CICS LINK/RETURN メカニズムを使用して一連の Adabas コマンドを発行し、出力データの一部を表示します。次に Adabas DCIと LNCSTUB サブプログラムを使用して同じコール順序を再実行します。
アセンブラ IVP(ACLSIVP)をインストールして実行するには、次の手順に従います。
ソースメンバ ALCSIVP の修正
ファイル番号フィールド DBFNR を修正して、使用する Software AG 提供のデモンストレーションデータベースの EMPLOYEES ファイルにアクセスするために必要な値に一致するようにします。 Software AG が提供するデモンストレーションファイルについての詳細は、 z/OS インストレーション指示の「デモンストレーションファイルのロード」を参照してください。
ALCSIVP プログラムは、ADAGSET マクロに指定された LOGID キーワードからデータベース ID を取得します。
フィールド FBUFF、SBUFF、VBUFF の値が EMPLOYEES ファイルの FDT とデータ内容に一致しているかをチェックします。
EXEC CICS LINK ステートメントで使用している名前が Adabas CICS コマンドレベルリンクコンポーネントプログラムの名前に一致しているかをチェックします。 フィールド LNCNAME が使用されるようになりました。このフィールドの値は、ADAGSET マクロの ENTPT キーワードによって決定されます。
LNCSTUB モジュールのエントリポイントの別名は、ALCSIVP でテストできます。SETC フィールド名 &STBNAME を使用して、記述されたエントリポイント名と一致するように SETC ステートメントのフィールド &STUBNM を変更します。
注意:
ALCSIVP プログラムは、ADAGSET キーワード PARMTYP の値を使用して、CICS LINK コマンドで
Adabas CICS リンクルーチンを起動するときに、処理の最初の部分で自身と Adabas CICS リンクルーチンの間のデータの受け渡しに CICS
TWA と CICS COMMAREA のどちらを使用するかを判定します。 ALCSIVP がアセンブルされるときに使用された ADAGSET
マクロで、PARMTYP=TWA と記述されていた場合、CICS TWA が使用されます。それ以外の場合は、CICS COMMAREA が EXEC CICS
LINK コマンドで使用されます。
サンプルジョブストリーム JCLALCI の修正
インストール確認プログラム ALCSIVP をプリプロセス、アセンブル、リンクするためにメンバ JCLALCI を使用します。 ロードモジュールを CICS DFHRPL ライブラリ連結に挿入します。
環境に合わせてこの JCL を修正するには、メンバの JOB カードと手順 1 の表で示した記号の値を変更します(「手順 1、メンバ JCLLNCS の修正」参照)。
JCLALCI メンバは追加の記号パラメータ &CICSLIB を使用します。 これは CICS RPL ライブラリの名前です。
修正したサンプル JCLALCI メンバを使用して ALCSIVP をプリプロセス、アセンブル、リンクします。
CICS システムに次の RDO エントリを追加するか、RDO 機能を使用して ALCSIVPプログラムを実行するための STB1 トランザクションを追加します。
DEFINE PROGRAM(ALCSIVP) GROUP(ADABAS) DESCRIPTION(ADABAS s ASSEMBLER IVP FOR HIGH-PERFORMANCE STUB) LANGUAGE(ASSEMBLER) RELOAD(NO) RESIDENT(NO) USAGE(NORMAL) USELPACOPY(NO) STATUS(ENABLED) CEDF(YES) DATALOCATION(ANY) EXECKEY(USER) EXECUTIONSET(FULLAPI) DEFINE TRANSACTION(STB1) GROUP(ADABAS) DESCRIPTION(TRANSACTION TO EXECUTE THE ASSEMBLER IVP FOR HIGH-PERFORMANCE STUB) PROGRAM(ALCSIVP) TWASIZE(32) PROFILE(DFHCICST) STATUS(ENABLED) TASKDATALOC(ANY) TASKDATAKEY(USER) STORAGECLEAR(NO) RUNAWAY(SYSTEM) SHUTDOWN(DISABLED) ISOLATE(YES) DYNAMIC(NO) PRIORITY(1) TRANCLASS(DFHTCL00) DTIMOUT(NO) INDOUBT(BACKOUT) RESTART(NO) SPURGE(NO) TPURGE(NO) DUMP(YES) TRACE(YES) RESSEC(NO) CMDSEC(NO)
STB1 トランザクションを起動して ALCSIVP を実行します。 ALCSIVP を実行すると LNCSTUB モジュールが確認されます。
メンバ COBSIVP は Adabas DCI と COBOL プログラムの使用例です。 CICS LINK/RETURN 機能から実行した一連の Adabas コールによって出力行が作成され、COBIVP がこれを画面に表示します。続いて、DCI を使用してこれらの Adabas コマンドを再実行します。
COBOL IVP(COBSIVP)をインストールして実行するには、次の手順に従います。
ソースメンバ COBSIVP の修正
フィールド WORK-DBID および WORK-FNR を修正して、使用する Software AG 提供のデモンストレーションデータベースの EMPLOYEES ファイルにアクセスするためのデータベース ID とファイル番号を VALUE 節に記述します。 Software AG が提供するデモンストレーションファイルについての詳細は、 z/OS インストレーション指示の「デモンストレーションファイルのロード」を参照してください。
フィールド LINK-NAME の値が Adabas CICS コマンドレベルリンクコンポーネントプログラムで使用する名前に一致していることを確認します。
次のフィールドの値(PROCEDURE DIVISION のリテラル)が、使用している EMPLOYEES ファイルの FDT とデータ内容の要求に一致していることを確認します。
ADABAS-FORMAT-BUFFER, ADABAS-SEARCH-BUFFER, and ADABAS-VALUE-BUFFER
サンプルジョブストリーム JCLCOBI の修正
インストール確認プログラム COBSIVP をプリプロセス、アセンブル、リンクするためにメンバ JCLCOBI を使用します。 環境に合わせて JCLCOBI を修正するには、メンバの JOB カードと次の表のシンボリックプロシ-ジャ変数に指定する値を変更します。
値 | 説明 |
---|---|
&ADALIB | ADASTWA ロードモジュールをリンケージエディタに指定するために使用する Adabas ロードライブラリの名前。 |
&MEM | 処理するメンバ名。この場合は COBSIVP。 |
&CICSLIB | CICS 配下で実行するために COBSIVP ロードモジュールが挿入される CICS RPL ライブラリの名前。 |
&COBLIB | COBOL コンパイラ STEPLIB。 |
&INDEX | コンパイラ用の SYSLIB DD ステートメントで使用する CICS マクロライブラリに対するハイレベル修飾子。 |
&INDEX2 | トランスレータ STEPLIB DD ステートメントおよびリンクステップの SYSLIB に使用する CICS ロードライブラリに対するハイレベル修飾子。 |
&LINKLIB | COBOL の LINKLIB。 |
&STBSRCE | 配布した Adabas CICS ハイパフォーマンススタブ LNCSTUB が存在するソースライブラリの名前。 |
&STUBLIB | LNCSTUB ロードモジュールを挿入するためのロードライブラリの名前。 このライブラリはアプリケーションライブラリをリンクするとき、使用可能である必要があります。 |
&SYSMSG | トランスレータメッセージの出力クラス。 |
&SYSOUT | SYSOUT メッセージと SYSPRINT メッセージの出力クラス。 |
&WORK | テンポラリデータセットとユーティリティデータセットに使用する DASD デバイスタイプ。 |
COBSIVP のプリプロセス、コンパイル、リンク
修正した JCLCOBI ジョブを使用して COBSIVP プログラムをプリプロセス、コンパイル、リンクします。 COBOL プログラムをリンクするときに使用可能なライブラリに ADASTWA をアセンブルします。 ADASTWA ロードモジュールを COBSIVPのリンクに組み込みます。
修正した JCLCOBI ジョブを使用して COBSIVP プログラムをプリプロセス、コンパイル、リンクします。 COBSIVP は Adabas CICS リンクルーチンにデータを渡すときに CICS COMMAREA を使用するようになりました。そのため、バージョン 8 では、ADASTWA プログラムを COBSIVP とリンクする必要はありません。
LNCSTUB サブルーチンは、渡された Adabas パラメータを TWA に挿入するので、ADASTWA を使用しません。 したがって、LNCSTUB モジュール経由で Adabas DCI を利用する COBOL アプリケーションをリンクするとき、ADASTWA ルーチンは必要ありません。
COBSIVP プログラムを LNCSTUB ロードモジュールとリンクし、LNCSTUB ロードモジュールをリンケージエディタから利用できるようにして、COBSIVP ロードモジュールに組み込みます。
注意:
CICS スタブモジュールはリンクステップでも解決されます。
CICS システムに次の RDOエントリを追加するか、RDO 機能を使用して COBSIVP プログラムを実行する STB2 トランザクションを追加します。
DEFINE PROGRAM(COBSIVP) GROUP(ADABAS) DESCRIPTION(ADABAS s COBOL IVP FOR HIGH-PERFORMANCE STUB) LANGUAGE(COBOL) RELOAD(NO) RESIDENT(NO) USAGE(NORMAL) USELPACOPY(NO) STATUS(ENABLED) CEDF(YES) DATALOCATION(ANY) EXECKEY(USER) EXECUTIONSET(FULLAPI) DEFINE TRANSACTION(STB2) GROUP(ADABAS) DESCRIPTION(TRANSACTION TO EXECUTE THE COBOL IVP FOR HIGH-PERFORMANCE STUB) PROGRAM(COBSIVP) TWASIZE(32) PROFILE(DFHCICST) STATUS(ENABLED) TASKDATALOC(ANY) TASKDATAKEY(USER) STORAGECLEAR(NO) RUNAWAY(SYSTEM) SHUTDOWN(DISABLED) ISOLATE(YES) DYNAMIC(NO) PRIORITY(1) TRANCLASS(DFHTCL00) DTIMOUT(NO) INDOUBT(BACKOUT) RESTART(NO) SPURGE(NO) TPURGE(NO) DUMP(YES) TRACE(YES) RESSEC(NO) CMDSEC(NO)
STB2 トランザクションを起動して COBSIVP を実行します。 COBSIVP を実行すると LNCSTUB モジュールが確認されます。
IVP プログラムが正常に実行されると、Adabas DCI で実際のアプリケーションプログラムを使用できる状態になります。 手順 3では、LNCSTUB サブプログラムを利用するためのアプリケーションプログラムインターフェイス(API)を作成します。
手順 3 では、次の作業を行います。
次のセクションで説明するガイドラインに従って、Adabas CICS ハイパフォーマンススタブルーチンを利用するアプリケーションプログラムを修正します。
アプリケーションプログラムをプリプロセス、コンパイルまたはアセンブル、リンクして、LNCSTUB モジュールを組み込みます。
Adabas CICS ハイパフォーマンススタブを使用して、アプリケーションプログラムを実行します。
LNCSTUB ロードモジュールをアプリケーションプログラムにリンクする必要があります。 アプリケーションプログラムは標準のバッチ的なコールメカニズムを使用して DCI インターフェースを起動します。 LNCSTUB モジュールはデータを Adabas CICS コマンドレベルリンクコンポーネントに渡すために必要な追加の CICS 要求を行います。
LNCSTUB がサポートするプログラミング言語
LNCSTUB は、アセンブラ言語、VS/COBOL、COBOL II、COBOL/LE、PL/I、および C で書かれたアプリケーションプログラムで動作します。
CICS トランザクションワークエリアの使用
Adabas DCI または Adabas CICS コマンドレベルリンクコンポーネントを使用するトランザクションは最低 28 バイトのトランザクションワークエリア(TWA)を提供できます。 充分な TWA が提供できないと、アベンド U636(タスクの異常終了)が発生します。
CICS COMMAREA の使用
Adabas バージョン 8 CICS リンクルーチンおよび Adabas 8 LNCSTUB モジュールでは、EXEC CICS LINK コマンドによるデータの受け渡しに、CICS COMMAREA を使用することを強くお勧めします。 CICS COMMAREA は最低 32 バイト長で、かつ COMMAREA の先頭 8 バイトに文字列 "ADABAS52" または "ADABAS8X" が含まれている必要があります。 文字列 "ADABAS8X" は、新しい Adabas バージョン 8 ACBX ダイレクトコールインターフェイスとそのパラメータリストを排他的に使用するアプリケーションに使用します。
リエントラント条件
アプリケーションプログラムはリエントラントでもリエントラントでなくてもかまいません。 LNCSTUB モジュールは、リエントラント対応で記述されていますが、アプリケーションプログラムもリエントラントとしてマークしない限り、リンケージエディタパラメータを使用して、LNCSTUB ロードモジュールをリエントラントとしてマークすることはお勧めしません。
LNCSTUB が発行する CICS 要求
LNCSTUB モジュールは呼び出されると次のコマンドレベル CICS 要求を発行します。
EXEC CICS ADDRESS EIB EXEC CICS LINK
Adabas カスタマイズレベルリンクにデータを渡すときに TWA を使用する場合は、次の CICS 要求を発行します。
EXEC CICS ADDRESS TWA EXEC CICS ASSIGN TWALENG
DCI エントリポイントアドレス
Adabas CICS コマンドレベルリンクコンポーネントプログラムから DCI エントリポイントを取得するために、最低 1回 EXEC CICS LINK コマンドが LNCSTUB によって発行されます。 このアドレスはこのトランザクションの間、後続の全 Adabas コールの BALR アクセスで使用されます。 したがって、コール元のアプリケーションプログラムはフルワード(4バイト)フィールドを提供し、LNCSTUB に取得される DCI エントリポイントアドレスを保持する必要があります。 この 4 バイトフィールドはコールメカニズムによって LNCSTUB モジュールに渡される最初のパラメータです。 残りのパラメータは Adabas 要求を実行するために必要な Adabas パラメータリストで構成されます (バージョン 7 または バージョン 8 のいずれかのパラメータリストを使用できます)。
DCI パラメータリスト
LNCSTUB プログラムからの Adabas DCI パラメータリストは、Adabas CICS コマンドレベルリンクコンポーネント内の DCI エントリポイントに対するポインタと、それに続く 6 つのポインタ(Adabas コントロールブロック、フォーマットバッファ、レコードバッファ、サーチバッファ、バリューバッファ、ISN バッファ)で構成されています。
標準 Adabas コントロールブロックとバッファのコーディングについては、『Adabas コマンドリファレンスマニュアル』を参照してください。
Adabas 7 のパラメータリストのオフセットは次の表のとおりです。
オフセット | ポインタ |
---|---|
0 | Adabas コマンドレベルリンクコンポーネントの DCI エントリポイント |
4 | Adabas コントロールブロック |
8 | Adabas フォーマットバッファ |
12 | Adabas レコードバッファ |
16 | Adabas サーチバッファ |
20 | Adabas バリューバッファ |
24 | Adabas ISN バッファ |
先頭(DCI エントリポイント)以外のパラメータはすべて Adabas コールの必要条件に従ってアプリケーションプログラムに構築され、保守されます。
DCI エントリポイントパラメータはタスクの最初にバイナリのゼロに設定されます。その後アプリケーションプログラムでは修正しないでください。 疑似リエントラント機能を維持するためにパラメータリストを構成するフィールドを CICS ストレージ(COBOL の場合 WORKING-STORAGE またはアセンブラの場合 DFHEISTG ユーザーストレージエリア)に配置することを強くお勧めします。
次の例は、アセンブラ言語プログラムの場合のサンプルパラメータリストです。
DFHEISTG DSECT . PARMLIST DS 0F DS A(DCIPTR) DS A(ADACB) DS A(ADAFB) DS A(ADARB) DS A(ADASB) DS A(ADAVB) DS A(ADAIB) . DCIPTR DS F ADACB DS CL80 ADAFB DS CL50 ADARB DS CL250 ADASB DS CL50 ADAVB DS CL50 ADAIB DS CL200 . DFHEIENT CODEREG=(R12),EIBREG=(R10),DATAREG=(R13) . LA R1,PARMLIST L R15,=V(LNCSTUB) BALR R14,R15 . END
注意:
アセンブラ例の DFHEIENT マクロでは DATAREG パラメータにレジスタ 13 を使用しています。 これは
LNCSTUB プログラムの場合には必要条件です。 LNCSTUB プログラムを呼び出すとき、レジスタ 13 は標準 CICS
セーブエリア(DFHEISA)を、レジスタ 1 はパラメータリストをポイントしている必要があります。 この標準を確実にする最良の方法は、例のように
DFHEIENT マクロを使用したアセンブラアプリケーションをコーディングすることです。
次の例は、COBOL 言語プログラムの場合のサンプルパラメータリストです。
WORKING-STORAGE SECTION. . 01 STUB-DCI-PTR PIC S9(8) COMP VALUE ZERO. 01 ADACB PIC X(80). 01 ADAFB PIC X(50). 01 ADARB PIC X(250). 01 ADASB PIC X(50). 01 ADAVB PIC X(50). 01 ADAIB PIC X(200). . PROCEDURE DIVISION. . CALL ’LNCSTUB’ USING STUB-DCI-PTR, ADACB, ADAFB, ADARB, ADASB, ADAVB, ADAIB. . EXEC CICS RETURN END-EXEC. . GOBACK.
アプリケーションプログラムのコーディングに関する制限
他のすべての点で、アプリケーションプログラムは標準 CICS コマンドレベルルーチンと同様にコーディングしてください。 LNCSTUB が呼び出されるとき DCI パラメータリストが正しければ、アプリケーションが発行できる CICS コマンドに関する制限はありません。
標準バッチコールメカニズムの使用
アセンブラおよび COBOL 言語プログラム例のパラメータリストで示したように LNCSTUB エントリポイントへのコールはバッチアプリケーションと同じように処理されます。 同様に、サポートされる他の言語に対するコールは、その標準バッチコールメカニズムでコーディングしてください。
LNCSTUB モジュールをアプリケーションプログラムと正しくリンクするには、アプリケーションをリンクして LNCSTUB モジュールと CICS スタブモジュールを組み込みます。 これを行うための方式はアプリケーションに使用するプログラミング言語によって異なります。
アセンブラ言語プログラムには DFHEAIと DFHEAI0 CICS モジュールを組み込む必要があります。
COBOL アプリケーションには DFHECIと DFHEAI0 を組み込む必要があります。
DFHEAI0 モジュールへの二重の参照を回避するために、リンケージエディタ REPLACE DFHEAI0 コントロールステートメントを SYSLIN データの先頭に指定します。
アセンブラ言語プログラムをリンクする場合
アセンブラプログラムの場合、SYSLIN 入力は次のようになります。
INCLUDE DFHEAI
アセンブラオブジェクト入力は次のようになります。
REPLACE DFHEAI0 INCLUDE SYSLIB(LNCSTUB) INCLUDE SYSLIB(DFHEAI0) NAME ALCSIVP(R)
リンケージエディタからクロスリファレンスを検査するとき、シンボル entry-name はリンクマップの LNCSTUB モジュールと同じ開始位置にする必要があります。
COBOL 言語プログラムをリンクする場合
COBOL プログラムの場合、SYSLIN 入力は次のようになります。
REPLACE DFHEAI0 INCLUDE SYSLIB(DFHECI)
COBOL オブジェクト入力は次のようになります。
INCLUDE SYSLIB(LNCSTUB) INCLUDE SYSLIB(DFHEAI0) NAME COBSIVP(R)
リンケージエディタからクロスリファレンスを検査するとき、シンボル entry-name はリンクマップの LNCSTUB モジュールと同じ開始位置にする必要があります。
PL/I および C 言語プログラムをリンクする場合
CICS 配下の PL/I と C アプリケーションのリンクについての情報は IBM マニュアル『CICS System DefinItion Guide』を参照してください。
Adabas DCI を使用するアプリケーションから最高のパフォーマンスを得るには、DCI インターフェースの動作を論理レベルで確認します。
Adabas リンクルーチンへのアクセスに標準 LINK/RETURN メカニズムを使用する CICSアプリケーションは、すべての Adabas からのリンクルーチンに対する要求で CICS プログラムコントロールサービスをコールします。 LNCSTUB モジュールによって BALR インターフェースの使用が許可されます。 BALR インターフェースは、アプリケーションプログラムから Adabas CICS コマンドレベルリンクコンポーネントに制御を渡すときに発生する CICS オーバーヘッドを減らします。
LNCSTUB モジュールは、Adabas CICS コマンドレベルリンクルーチンへのイニシャルコール(IC)を行うための標準 EXEC CICS LINK/RETURN を使用してこれを実行します。 リンクルーチンはこのコールを認識し、DCI サブルーチンのエントリポイントアドレスを LNCSTUB に返します。 次に、LNCSTUB はこのアドレスを、呼び出したタスクの存続中に確実に存在する場所に保存する必要があります。 これはコール元プログラムが DCI エントリポイントアドレスを保持する 4 バイトフィールドを提供しなければならないためです。 DCI アドレスを取得した後で、このアドレスを後続の Adabas コールで渡される最初のパラメータとして受け取ると、LNCSTUB は BALR インターフェースを利用して、Adabas CICS コマンドレベルリンクコンポーネントプログラムに制御を渡します。
このロジックによって、IC 間の Adabas 要求が多くなった場合に、CICS 配下の Adabas とアプリケーション間のデータの受け渡しに関してアプリケーションが効率的になります。 実際、タスクが呼び出されるたびに 1つの Adabas コールを発行する擬似会話型アプリケーションでは、DCI を使用しないでください。なぜなら、コール元プログラムが Adabas コマンドを発行するたびに IC 要求が発生するからです。
Adabas CICS コマンドレベルリンクコンポーネントプログラムを常駐するように CICS に定義することによって、さらにパフォーマンス向上を実現できます。 これにより、DCI エントリポイントを CICS タスク全体に保存でき、さまざまなプログラムから有効な DCI エントリポイント付きの LNCSTUB モジュールをコールできるようになります。 これにより、各プログラム開始時の IC は回避されます。 ただし、この手順を使用した場合には、エントリポイントアドレスを無効にする CICS 環境への変更(NEWCOPY など)は、予期しない結果や損害をもたらすことがあります。
CICS サービスを使用する Adabas CICS コマンドレベルリンクコンポーネントプログラムには、1 つ以上の IC を作成することが必須です。 このコールは Adabas ユーザーブロック(UB)およびレジスタセーブエリアの配列に対する共通ストレージの取得をトリガするために使用されます。 IC 要求を行わない場合、Adabas コールは、ワーキングストレージが不足しているため、またリンクルーチンで使用する重要なコントロールブロックや Adabas SVC エントリが作成されていないために実行されません。
注意: Adabas 8 では、Adabas 8 ACIvrn.SRCE ライブラリの ADAGSET マクロは、Adabas 8 CICS ハイパフォーマンススタブルーチンのデフォルト値を生成するためだけに使用してください。 |
Adabas CICS ハイパフォーマンススタブルーチンのアセンブリを容易にするために、環境に特有のデフォルト値を持つ ADAGSET マクロをプログラミングし、アセンブリ時にそれを SYSLIB 連結に有効なソースライブラリに入れることを推奨します。
ADAGSET パラメータオプションとそのデフォルト値(下線付き)の説明は次のとおりです。
パラメータ | 説明 | 構文 |
---|---|---|
AVB |
このコマンドレベルリンクルーチンで Software AG の Adabas Bridge for VSAM をサポートするかどうかを示します。
|
AVB={ NO | YES } |
パラメータ | 説明 | 構文 |
---|---|---|
ENABNM |
CICS PLTPI 処理中に Adabas TRUE を有効にするために実行されるプログラムに対するエントリポイント名。 値は、使用環境の DFHPLT テーブルに指定されたモジュール名と一致している有効なプログラム名でなければなりません。 デフォルト値は ADAENAB です。 TRUE=NO を指定する場合、このパラメータは無視されます。 |
ENABNM={'ADAENAB' | 'name' } |
パラメータ | 説明 | 構文 |
---|---|---|
ENTPT |
Adabas CICS ハイパフォーマンススタブリンクルーチンの名前。 この名前を EXEC CICS LINK コマンドに使用して CICS アプリケーションプログラムから Adabas サービスを呼び出します。 インストール手順の注 1 と注 2 も参照してください。 |
ENTPT={'ADACICS' | 'name' } |
パラメータ | 説明 | 構文 |
---|---|---|
LOGID |
デフォルトの論理データベース ID の値。 有効な ID 番号は 1~65535 です。 |
LOGID= nnn |
パラメータ | 説明 | 構文 |
---|---|---|
LRINFO |
REVEXITB プログラムに使用される Adabas Review データエリアの長さ(バイト)。 指定しない場合は 0(デフォルト)になります(Adabas Review は使用されません)。 最小(および推奨)値は 256 です。この値は、REVEXITB プログラムが呼び出されたときに Adabas Review で必要になるサイズです。 詳細については、Adabas Review のドキュメントを参照してください。 |
LRINFO={ 0 | 256} |
パラメータ | 説明 | 構文 |
---|---|---|
LUINFO |
CICS リンクルーチンから Adabas UEXITA と UEXITB に渡されるユーザーデータの長さ。 LUINFO を指定しない場合、0(デフォルト)になり、ユーザーセーブエリアは渡されません。 |
LUINFO={ 0 | length} |
パラメータ | 説明 | 構文 |
---|---|---|
LUSAVE |
Adabas ユーザー出口 UEXITA と UEXITB に使用されるユーザーセーブエリアのサイズ。 LUSAVE を指定する場合は、72 以上の値を指定する必要があります。 LUSAVE を指定しない場合、0(デフォルト)になり、ユーザーデータは渡されません。 |
LUSAVE={ 0 | size} |
パラメータ | 説明 | 構文 |
---|---|---|
LXITAA |
UEXITA ユーザー出口プログラムに提供するワークエリアの長さ。 指定できる値は 0(デフォルト)~32767 です。 0 は、UEXITA プログラムが Adabas コマンドレベルリンクルーチンにリンクされていないため、UEXITA にデータが渡されないことを示します。 注意: |
LXITAA={ 0 | nn} |
パラメータ | 説明 | 構文 |
---|---|---|
LXITBA |
UEXITB ユーザー出口プログラムに提供するワークエリアの長さ。 指定できる値は 0(デフォルト)~32767 です。 0 は、UEXITB プログラムが Adabas コマンドレベルリンクルーチンにリンクされていないため、UEXITB にデータが渡されないことを示します。 注意: |
LXITBA={ 0 | nn} |
パラメータ | 説明 | 構文 |
---|---|---|
MRO |
MRO パラメータは、CICS マルチプルリージョンオプションを使用するかどうかを指定します。 CICS マルチプルリージョンオプション(MRO)とともに CICS コマンドレベルリンクを実行する場合、MRO=YES をセットします。そうでないと、デフォルト値 MRO=NO を使用します。 MRO=YES の場合、NETOPT に NETOPT=NO(デフォルト)をセットし、マルチプルアプリケーションリージョンからユニークでない LU 名を回避しなければなりません。 NETOPT=YES および MRO=YES のとき、アセンブラ MNOTE およびリターンコード 16 がアセンブリステップから出力されます。 |
MRO={ NO | YES } |
パラメータ | 説明 | 構文 |
---|---|---|
NETOPT |
NETOPT=YES が指定されている場合は、8 バイトのユーザー ID が VTAM LU 名から構成されます。 NETOPT=NO が指定されている場合、ユーザー ID は定数 CICS に端末タスク用の 4 バイトの CICS 端末 ID(TCTTETI)で作られます。 非端末タスクの場合、ユーザー ID は定数 CIC と CICS タスク番号で構成されます。 CICS マルチプルリージョンオプション(MRO)付きで実行する場合、このオプションに対してデフォルト値を使用する必要があります。 NETOPT=YES および MRO=YES のとき、アセンブラ MNOTE およびリターンコード 16 がアセンブリステップから出力されます。 |
NETOPT={ NO | YES } |
パラメータ | 説明 | 構文 |
---|---|---|
NTGPID |
このパラメータは、必要に応じて、Natural バージョン 2.2.8 以降を使用して、固有の Adabas ユーザー ID を CICSplex 環境で生成するために 4 バイトの Natural グループ ID の指定に使用します。 値は、指定値でアセンブルされた Adabas コマンドレベルリンクルーチンをコールするすべてのユーザーに関連します。 デフォルト値はありません。 値が指定されない場合、従来どおり Adabas 内部ユーザー ID が作成されます。 4 バイトの英数字の値を指定することもできますが、CICSplex または z/OS イメージで実行している Adabas コマンドレベルリンクルーチンごとに固有である必要があります。 複数の NTGPID が必要なとき(テストと本番の Natural 2.2.8 など)、TRUE に関連する複数の Adabas コマンドレベルリンクルーチンを生成する必要があります。 CICS マルチプルリージョンオプション(MRO)付きで実行する場合、NTGPID を使用して、マルチプルアプリケーションリージョンが Adabas をコールするとき、Adabas SVC に使用される Adabas コミュニケーション ID 用の 4 バイトリテラルを指定します。 |
NTGPID=4-byte-value |
パラメータ | 説明 | 構文 |
---|---|---|
NUBS |
CICS リンクルーチンで作成されるユーザーブロック(UB)数。 ブロック数は同時に発生することが予想される最大 Adabas 要求数を処理可能な大きさにする必要があります。 注意: |
NUBS={ 50 | blocks } |
パラメータ | 説明 | 構文 |
---|---|---|
PARMTYP |
Adabas パラメータリストを取得するためのエリア。 TWA は、トランザクションワークエリア(TWA)の先頭の 6 フルワードのパラメータリストを取得します。 PARMTYP=COM の場合、Adabas パラメータが EXEC CICS LINK コマンドを伴ったコール元プログラムからコールされた CICS COMMAREA に指定されます。 ACB コールの COMMAREA リストは最低 32 バイト必要で、ラベル "ADABAS52" で始まります。 PARMTYP=ALL(デフォルト)は COMMAREA と TWA の両方を使用して Adabas パラメータを渡します。この場合、COMMAREA が最初にチェックされます。 TRUE=YES オプションが指定されている場合は、PARMTYP=ALL または PARMTYP=COM を使用する必要があります。 |
PARMTYP={ ALL | COM | TWA } |
パラメータ | 説明 | 構文 |
---|---|---|
PURGE |
CICS 3.2 以上でアセンブルするとき、PURGE パラメータが使用されます。 PURGE=YES を指定すると、CICS WAIT EXTERNAL はそのパラメータの 1 つとして PURGEABLE を含むので、DTIMOUT 値を超えたときに PURGE が指定されると、CICS はトランザクションを削除できるようになります。 PURGE=NO(デフォルト)が指定されている場合は、NONPURGEABLE オプションが生成されます。 |
PURGE={ NO | YES } |
パラメータ | 説明 | 構文 |
---|---|---|
RMI |
RMI パラメータは、CICS リソースマネージャインターフェイスを使用するかどうかを示すために使用します。 RMI=YES が指定されている場合は、CICS リソースマネージャインターフェイス(RMI)を使用して、Adabas タスク関連ユーザー出口(TRUE)がリソースマネージャ(RM)として実行されます。 RMI=YES は、Adabas Transaction Manager がインストールされ、有効で、CICS 環境で実行しているユーザーに利用可能なときにだけ有効です。 Adabas TRUE のインストレーションと関連する付加的な手順については Adabas Transaction Manager のドキュメントを参照してください。 |
RMI={ NO | YES } |
パラメータ | 説明 | 構文 |
---|---|---|
SAF |
Adabas SAF Security(ADASAF)を使用するかどうかを示します。 ADASAF を使用している場合は、SAF=YES を設定する必要があります。
CICS/TS 1.1 以上で実行するとき、ADASAF は Adabas タスク関連ユーザー出口(TRUE)を必要とします。 SAF=YES で TRUE=YES のとき、タスク関連ユーザー出口はユーザーの外部セキュリティ ID(サインオン)を Adabas に渡します。 この場合 TRUE=YES を指定しないと、ADAGSET マクロは LNKOLSC、LNKTRUE、または LNKENAB アセンブリ処理を MNOTE で終了し、コード 16 を返します。 CICS/ESA 3.3 以下で ADASAF を実行している場合、TRUE=YES は必要ありません。 この場合、SAF=YES と TRUE=NO の組み合わせは有効です。 |
SAF={ NO | YES } |
パラメータ | 説明 | 構文 |
---|---|---|
SAP |
SAP パラメータは、SAP アプリケーションシステムに Adabas サポートが必要かどうかを指定するために使用されます。 SAP=YES を指定すると、LNKOLSC プログラムは SAP 初期化コールを検出し、初期化コールに提供された定数にフィールド ACBADD2 を合わせて SAP アプリケーションのためのユーザー ID をセットします。 詳細については、SAP アプリケーションシステムを使用するお客様のために提供されている補足情報を参照してください。 |
SAP={ NO | YES } |
パラメータ | 説明 | 構文 |
---|---|---|
SVCNO |
SVCNO パラメータは、Adabas SVC 番号の値を指定するために使用します。 |
SVCNO={ 0 | nnn} |
パラメータ | 説明 | 構文 |
---|---|---|
TRUE |
TRUE パラメータは、Adabas タスク関連ユーザー出口を使用するかどうかを示すために使用します。 TRUE=YES を指定する場合、LNKOLSC は Adabas タスク関連ユーザー出口 LNKTRUE を使用します。 TRUE=YES を指定する場合、PARMTYP={ALL | COM} と TRUENM='name' のパラメータ設定も指定する必要があります。 |
TRUE={ NO | YES } |
パラメータ | 説明 | 構文 |
---|---|---|
TRUENM |
TRUENM パラメータは、Adabas タスク関連ユーザー出口の名前を指定するために使用します。 TRUE=YES を指定する場合、このパラメータが必要です。 インストール手順の注 1 と注 2 も参照してください。 |
TRUENM= {'name' | 'ADATRUE' } |
パラメータ | 説明 | 構文 |
---|---|---|
UBPLOC |
UBPLOC パラメータは、ユーザーブロック(UB)プールを CICS の 16 MB 境界より上(デフォルト)に取得するか、または下に取得するかを指定します。 EXEC CICS WAIT WAITCICS または EXEC CICS WAIT EXTERNAL によって使用される ECB を UP プールに組み込みます。 UBPLOC=BELOW を設定すると、ECB を 16 MB 境界より上に許可しない CICS バージョン、つまり、CICS/ESA 3.2 以下をサポートします。 詳細については、IBM マニュアル『CICS Application Programming Reference』を参照してください。 |
UBPLOC= { ABOVE | BELOW} |
パラメータ | 説明 | 構文 |
---|---|---|
XWAIT |
XWAIT パラメータは、LNKOLSC モジュールのアセンブラ処理によってコマンドレベルリンクコンポーネントに、標準 EXEC CICS WAITCICS(XWAIT=NO)または WAIT EVENTS EXTERNAL(XWAIT=YES)のどちらを生成するかを指定するために使用します。 XWAIT=YES がデフォルトです。 CICS/TS 1.1 以上では CICS WAIT EVENTS EXTERNAL(XWAIT=YES)が望ましいインターフェイスです。 CICS WAITCICS ステートメント(XWAIT=NO)は、CICS/MVS 2.1.2 および CICS/VSE 2.1~2.3 での使用のために提供されています。 これは、CICS/TS 1.1 以上でも使用できますが、CICS トランザクションのパフォーマンスを低下させるか、またはビジーな CICS 環境では予期しない結果を招くことがあります。 注意: |
XWAIT={ NO | YES } |
注意:
CICS WAITCICS(XWAIT=NO)は、指定された ECB のソフトポストをサポートすることができます。 これには、ハンドポスタブルワークは全ワークサイクル上で CICS に処理されないため、優先度の低い CICS/TS 環境のディスパッチ可能なワークユニットになるという短所があります。
これに反して、EXEC CICS WAIT EXTERNAL(XWAIT=YES)により、CICS がその特別ポスト出口コードを使用できるようにし、全 CICS ワークサイクル上でチェックと処理(ポストされた場合)を常に行います。
各種の CICS WAIT コマンドとそのハードおよびソフトポスティングメカニズムの関係の違いの詳細については、IBM の『CICS/ESA Application Programming Reference Guide』および添付テキストの IBM APAR PN39579 または IBM InfoLink サービスの Item RTA000043874 を参照してください。
Adabas SVC は XWAIT=YES 設定と完全な互換性があります。 SVC は、Adabas 6 コマンドレベルリンクルーチンを使用する CICS/TS 配下の Adabas コール元に対して必要なハードポストを実行します。 ハードポストを必要としないバッチコール元に対しては、同じ SVC がソフトポストを実行します。
Adabas をインストールするとき、Com-Plete(Software AG提供の TP モニタ)には一定のパラメータが必要です。 詳しくは『Com-plete System Programming』を参照してください。
Software AG の TP モニタ Com-plete が Adabas データベースとコミュニケートする場合は、Adabas リンクルーチンが必要です。Software AG の Entire Net-Work 製品を使用するか、Com-plete 配下で動作する Entire System Server のような製品を使用してください。 現在のところ Com-plete は Adabas 7 と Adabas 8 のリンクルーチンの混在をサポートしていないため、Com-plete は、Adabas 7 リンクルーチンか Adabas 8 リンクルーチンのどちらか一方で実行する必要があります。
Adabas バージョン 8 リンクルーチンは、Adabas 8 z/OS ロードライブラリのメンバ ADALCO で提供されています。 このメンバは、準備したリンクグローバルモジュールとリンクする必要があります。また、Com-plete の初期化時に Com-plete によってロードされる最終的な ADALCO ロードモジュールを作成するために必要なすべてのリンクルーチン出口とリンクする必要があります。 リンクする最終的な ADALCO ロードモジュールと出口はリエントラントである必要があります。
次の表に、Adabas 8 配下で Com-plete を使用する場合の Adabas のインストールをサポートするための、Adabas インストレーションで提供されるモジュールを示します。
モジュール | 説明 |
---|---|
ADALCO8 | 基本モジュール |
ADALCO | 実行可能なデフォルトのモジュール |
Adabas リンクルーチンを準備するには、次の手順に従います。
Adabas 8 ADAvrs.SRCE に含まれているサンプルメンバ LCOGBL ライブラリを修正可能な任意のユーザーソースライブラリにコピーします(vrs はテープで提供される Adabas の最新バージョン番号)。 LCOGBL は、LGBLSET パラメータを含むモジュールです。このパラメータはコマンドレベルリンクコンポーネントのデフォルト設定を作成するために使用します。 LGBLSET パラメータの詳細については、「バージョン 8 でのソースメンバデフォルトの修正(LGBLSET マクロ)」に記載されています。
ユーザーソースライブラリの LCOGBL メンバを修正します。
LCOGBL では、少なくとも次の LGBLSET パラメータの値を指定する必要があります。
パラメータ | 指定する内容 |
---|---|
LOGID | デフォルトデータベースまたはターゲット ID。
"1"~"65535" の範囲の数値で指定します。
デフォルト値は "1" です。
注意: |
SVCNO | デフォルトの Adabas SVC 番号。 z/OS の場合、この番号の範囲は
"200"~"255" です。
注意: |
OPSYS | Com-plete が実行されるオペレーティングシステムの 3 文字の省略形。 有効な値は
"ZOS" や "VSE" などです。
注意: |
TPMON | COM。 このキーワードは、3 文字の TP モニタの省略形を指定します。 Com-plete の場合、この値は "COM" にする必要があります。 |
RENT | YES。 このキーワードは、モジュールが連続的にリエントラントかどうかを示します。 Com-plete の場合、この値は "YES" にする必要があります。 |
GEN | CSECT。 このキーワードは、CSECT と DSECT のどちらを生成するかを指定します。 リンクルーチングローバルロードモジュールとしてリンク可能なオブジェクトモジュールを生成するには、CSECT を指定する必要があります。 |
UES | Adabas ユニバーサルエンコーディングサポート(UES)を有効にするかどうかを指定します。 デフォルトは YES です。 詳細については、「UES 対応データベースの接続」を参照してください。 |
出口パラメータ | その他の出口をアクティブにするかどうか、ユーザー出口を使用する場合は、ユーザー出口モジュール名を指定します。 この情報を LGBLCOM の他のパラメータで指定する方法については、「バージョン 8 でのソースメンバデフォルトの修正(LGBLSET マクロ)」を参照してください。 |
サンプルジョブ ASMGBLS を、ジョブの先頭で示されているとおりに修正および実行します。 ASMGBLS は Adabas 8 ADAvrs.JOBS ライブラリ内にあります。 完全に修正する場合、ジョブの SET ステートメントが前の手順で準備した LCOGBL メンバを参照し、NAME リンクエディットコントロールステートメントが LCOGBL メンバの GBLNAME パラメータによって指定される名前を参照している必要があります。
修正したら、ASMGBLS ジョブを実行してリンクグローバルモジュールをアセンブルおよびリンクエディットします。
新しいリンクグローバルモジュールが、ASMGBLS ジョブで指定されたユーザーロードライブラリに生成されます。モジュール名は LCOGBL の GBLNAME パラメータで指定された名前になります。
サンプルジョブ LNKLCO8 をユーザーソースライブラリにコピーし、前の手順で作成した新しいリンクグローバルモジュールおよびその他の必要な出口が ADALCO8 基本モジュールとリンクするように修正します。 サンプルジョブの修正手順は、ジョブの先頭に記載されています。 このジョブの出力先を適切なユーザーロードライブラリに設定するようにしてください。 LNKLCO8 は Adabas 8 ADAvrs.SRCE ライブラリ内にあります。
このジョブで生成されるモジュールは ADALCO と呼ばれます。
Com-plete を開始するジョブステップで使用できるロードライブラリに ADALCO モジュールを配置します。
これで Adabas 8 リンクルーチンの準備は完了です。
TSO システムに Adabas 8 をインストールする場合、Adabas-TSO 間のコミュニケーションは、バッチリンクルーチン ADALNK8(非リエントラント)および ADALNKR8(リエントラント)によって行われます。
Adabas バージョン8.1 の ADALNK は配布時のままで UES に対応しています。 詳細は、「UES 対応データベースの接続」セクションを参照してください。
ただし、ADAUSER とリンクしたユーザープログラムも ADARUN をロードすることに注意してください。 また、ADARUN は他のモジュールをロードします。
ADAUSER とリンクしたユーザープログラムを起動するには、次のモジュールが、特定の TSO ユーザーに対して定義されたロードライブラリから実行時にすべて使用できるようにする必要があります。
ADAIOR ADAMLF ADAIOS ADAPRF ADALNK ADARUN
このセクションでは、次のトピックについて説明します。
Adabas 8 ロードライブラリの ADALNK モジュールは、次の条件を満たす場合に、Adabas 7 互換の方法で動作します。
コール元のアプリケーションが ADAUSER とリンクされている。 コール元のアプリケーションが ADAUSER とリンクされていない場合、ADALNK は機能しません。
最新の Adabas 8 ロードライブラリの ADARUN モジュールが使用されている。
データベース ID と Adabas SVC 番号が、DD ステートメントで入力として指定されている。 それ以外の場合、リンクグローバルテーブルの値によってこれらの値が上書きされます。
これら 3 つの条件をすべて満たす場合、デフォルトデータベース ID と Adabas SVC 番号は、DD ステートメント入力で指定された値によって上書きされ、ADARUN によってリンクルーチンに渡されます。
この方法で動作させる場合、データベース管理者(DBA)とアプリケーションプログラマによる改変が最小限で済みます。 Adabas ユーティリティを実行する場合にも、この動作モードをお勧めします。
Software AG のいくつかの製品では、リエントラントバッチリンクルーチンを使用する必要があります。これらの製品をサポートするために、Adabas ロードライブラリで ADALNKR ロードモジュールが提供されています。 Adabas 8 ADALNKR ソースモジュールは提供されません。
これらのリエントラントバッチリンクルーチンのデフォルト値を変更できます。 詳細については、次のセクションを参照してください。
バッチアプリケーションプログラムには ADALNK や ADALNKR ではなく ADAUSER モジュールをリンクすることをお勧めします。 ADAUSER ロードモジュールはリエントラントではありませんが、アプリケーションプログラムが「バッチ/TSO リエントラント ADALNKR8 モジュールのワークエリア」で解説されているコール要件を満たし、DDCARD 入力でキーワードパラメータ PROG=USER の代わりに PROG=RENTUSER ADARUN パラメータが指定されている場合に限り、リエントラントリンクルーチンモジュールとリンクすることができます。
最新の Adabas 8 ADALNKR モジュールを使用して、バッチまたは TSO でリエントラント操作を実行するには、事前に ADALNKR モジュールを準備する必要があります。 データベース ID、Adabas SVC 番号、およびその他の要件のデフォルトを指定する、修正したリンクグローバルテーブルとリンクする必要があります。 リエントラント出口もすべてリンクが必要です。
Adabas 8 を TSO システムにインストールする場合、Adabas/TSO コミュニケーションには標準 Adabas 8 バッチリンクルーチン(ADALNK)が使用されます(SMA ジョブ番号 I056)。
このセクションでは、次のトピックについて説明します。
次の表は、Adabas 8 配下でバッチ/TSO 使用の Adabas インストールをサポートするための、Adabas インストレーションで提供されるモジュールのリストです。
モジュール | 説明 |
---|---|
ADALNK8 | 基本モジュール |
ADALNKR8 | 基本リエントラントモジュール |
ADALINK | 実行可能なデフォルトのモジュール |
ADALNKR | 実行可能なデフォルトのリエントラントモジュール |
Adabas 8 ADALNK および ADALNKR モジュールで使用されるさまざまなリンクルーチンパラメータのデフォルト値を変更できます。
デフォルト値を変更するには、次の手順に従います。
Adabas 8 ADAvrs.SRCE ライブラリ(vrs はテープで配布される最新の Adabas バージョン番号)において提供されるサンプルメンバ LNKGBLS(非リエントラントリンクの場合)または LNKRGBL(リエントラントリンクの場合)メンバを、修正可能な任意のユーザーソースライブラリにコピーします。 これらのモジュールには、リンクコンポーネントのデフォルト設定を作成するのに使用する LGBLSET パラメータが含まれています。 LGBLSET パラメータの詳細については、「バージョン 8 でのソースメンバデフォルトの修正(LGBLSET マクロ)」に記載されています。
ユーザーソースライブラリの LNKGBLS または LNKRGBL メンバを修正します。 インストール要件に合わせて、LOGID、SVC、その他のキーワードの値を指定します。
注意:
OPSYS パラメータは ZOS に設定する必要があります。
サンプルジョブ ASMGBLS を、ジョブの先頭で示されているとおりに修正および実行します。 ASMGBLS は Adabas 8 ADAvrs.JOBS ライブラリ内にあります。 完全に修正する場合、ジョブの SET ステートメントが、前の手順で準備した LNKGBLS または LNKRGBL メンバを参照し、NAME リンクエディットコントロールステートメントが LNKGBLS または LNKRGBL メンバの GBLNAME パラメータによって指定される名前を参照している必要があります。
修正したら、ASMGBLS ジョブを実行してリンクグローバルモジュールをアセンブルおよびリンクエディットします。
新しいリンクグローバルモジュールが、ASMGBLS ジョブで指定されたユーザーロードライブラリに生成されます。モジュール名は、LNKGBLS または LNKRGBL メンバの GBLNAME パラメータで指定された名前になります。
サンプルジョブ LNKLNK8 または LNKLNKR8(リエントラント)をユーザーソースライブラリにコピーし、前の手順で作成した新しいグローバルモジュールおよび必要なすべての出口が 適切な ADALNK8 または ADALNKR8(リエントラント)基本モジュールとリンクするように修正します。 サンプルジョブの修正手順は、ジョブの先頭に記載されています。 ジョブの出力先を適切なユーザーロードライブラリに設定するようにしてください。 LNKLNK8 と LNKLNKR8 は Adabas 8 ADAvrs.SRCE ライブラリ内にあります。
このジョブから生成されるモジュールは、ADALNK または ADALNKR のいずれか適切な名前になります。
Adabas 8 バッチ/TSO リンクルーチンを使用するジョブステップの ADARUN DDCARD 入力を修正します。 DDCARD 入力に次の更新を含める必要があります。
非リエントラントリンクルーチンの場合、ADARUN PROG=USER パラメータを指定します。ジョブステップでリエントラントリンクルーチンを使用する場合は、ADARUN PROG=RENTUSER を指定します。 PROG パラメータの詳細については、「PROGRAM:実行するプログラム」を参照してください。
ジョブステップから適切なロードライブラリが利用できることを確認します。 これらのロードライブラリは、STEPLIB、TASKLIB、JOBLIB、リエントラントモジュールの場合は、LPA または LINKLIB になります。
Adabas 8 ADALNK および ADALNKR モジュールで使用されるさまざまなリンクルーチンパラメータのデフォルト値を変更できます。
Adabas 8 バッチ/TSO リンクルーチン、ADALNK、および ADALNKR の一部のデフォルト値は、ADALNK または ADALNKR モジュールの ZAP で変更されます。 例えば、データベース ID や Adabas SVC 番号のデフォルト値などがあります。 その他すべてのデフォルト値は、リンクグローバルテーブルを使用して設定する必要があります。詳細については、「Adabas 8 ADALNK または ADALNKR モジュールのデフォルト値の変更」を参照してください。
次の IMASPZAP コントロールステートメントを使用して、ADALNK または ADALNKR(適切な方)のデフォルト値を変更します。
NAME ADALNK ADALNK8 VER 0080 0001 Default DBID REP 0080 #### Site-specific DBID VER 0084 0AF9 Default Adabas SVC number REP 0084 0A## Site-specific Adabas SVC number * NAME ADALNKR ADALNKR8 VER 0080 0001 Default DBID REP 0080 #### Site-specific DBID VER 0084 0AF9 Default Adabas SVC number REP 0084 0A## Site-specific Adabas SVC number
z/OS 環境で Adabas リンクルーチンを使用するアプリケーションは、コールで使用されるデータベース ID に基づき、特定の Adabas SVC を通じてデータベースコールをルーティングすることができます。 SVC のルーティングは、ユーザーが設定する DBID/SVC ルーティングテーブルによって管理されます。 テーブルで最大 1000 個のデータベース ID を指定し、z/OS システムにインストールされている任意の数の有効な SVC 番号と関連付けることができます。 DBID/SVC ルーティングテーブルは、MDBSVC マクロを使用して作成します。
データベース ID の重複は DBID/SVC ルーティングテーブルでは許可されていません。これは、複数のデータベース ID がリストされていると、あるデータベース ID にどの SVC を使用すべきかをリンクルーチンが決定する際の信頼性がなくなるからです。 テーブルのアセンブル中に重複するデータベース ID が見つかった場合、アセンブラ MNOTE のフラグが設定され、アセンブルの試行に対してリターンコード 16 が返されます。
注意:
注意:
この機能の使用には注意が必要です。 トランザクションの完全性は保証されません。 あるアプリケーションが、複数の Adabas SVC
にルーティングされる複数のデータベースにコールを行う場合、1 つのデータベースのトランザクションに影響する可能性がある
ET、BT、OP、CL、RC、またはその他の Adabas コマンドの発行が可能ですが、それ以前にアクセスされた、異なる Adabas SVC
上で実行している他のデータベースに対しては発行できません。 したがって、複数の Adabas SVC
が使用されている複数のデータベース間で、トランザクションの整合性を確実にするために必要なロジックがすべてアプリケーションプログラムに含まれている必要があります。
このセクションでは、次のトピックについて説明します。
Adabas DBID/SVC ルーティング機能の一般的なインストール手順は次のとおりです。
MDBSVC マクロステートメントを使用して、ライブラリメンバに DBID/SVC ルーティングテーブルを定義します。 DBID/SVC ルーティングテーブルと MDBSVC マクロの詳細については、「MDBSVC マクロの使用」を参照してください。
DBID/SVC ルーティングメンバをアセンブルおよびリンクエディットし、SVC ルーティング機能を使用する操作環境で利用できるロードモジュールを作成します。
操作環境のリンクグローバルテーブルを修正し、LGBLSET キーワード DYNDBSVC=YES および DBSVCTN=name を指定します。name はリンクルーチンによって使用される DBID/SVC ルーティングテーブルロードモジュールの名前です。 操作環境で必要な場合は、更新したリンクグローバルテーブルをアセンブルおよびリンクエディットします。 リンクグローバルテーブルと LGBLSET マクロの詳細については、「バージョン 8 でのソースメンバデフォルトの修正(LGBLSET マクロ)」を参照してください。 テーブル更新後のリンクグローバルテーブルのアセンブルとリンクエディットについては、このセクションの各 z/OS TP モニタリング環境に関する指示を参照してください。
準備した DBID/SVC ルーティングテーブルを、アプリケーションプログラムのジョブステップからアクセスできるロードライブラリで利用できるようにします。これにより、実行時にリンクルーチンがロードできます。
このセクションでは、次のトピックについて説明します。
バッチ、TSO、および IMS 配下での Adabas SVC ルーティング機能のインストール手順はどれも同じです。
バッチ、TSO、または IMS 配下で Adabas DBID/SVC ルーティング機能をインストールするには、次の手順に従います。
ライブラリメンバの一連の MDBCSVC マクロをコーディングして、DBID/SVC ルーティングテーブルを定義または修正します。 サンプルの ADASVCTB メンバは、このメンバの準備用のテンプレートとして ADAvrs.MVSSRCE ライブラリで提供されています。 MDBSVC マクロの使用についての詳細は、「MDBSVC マクロの使用」を参照してください。
DBID/SVC ルーティングテーブルメンバをアセンブルおよびリンクエディットし、アプリケーション実行ジョブステップから利用できるロードモジュールを作成します。 同一の Adabas SVC にアクセスする複数のコマンドの処理オーバーヘッドを削減するために、リンクルーチンサブプログラム LNKDSL は DBID/SVC モジュールに Adabas SVC IDT ヘッダーのアドレスを格納する必要があるため、ロードモジュールは再利用不可および非リエントラントとしてリンクされる必要があります。
実行環境のリンクグローバルテーブルを定義または修正します。 Adabas SVC ルーティング機能をサポートするには、次の LGBLSET キーワードが必要です。
LGBLSET キーワード設定 | 説明 |
---|---|
DYNDBSVC=YES | このキーワードおよび設定は、Adabas SVC ルーティングがこのジョブステップでアクティブであることを示します。 |
DBSVCTN=name | このキーワードは、このジョブステップの DBID/SVC テーブル名を指定します。 この名前は、リンクルーチンの実行時に適切なテーブルがロードされるように、作成されたロードモジュールの名前と一致する必要があります。 |
TP モニタ別の指示に従って、更新したリンクグローバルテーブルのアセンブルおよびリンクエディットします。 バッチ/TSO の場合は、「Adabas 8 配下での Batch/TSO を使用する場合の Adabas のインストール」を参照してください。IMS の場合は、「Adabas 8 配下での IMS/TM を使用する場合の Adabas のインストール」を参照してください。
CICS 配下で Adabas DBID/SVC ルーティング機能をインストールするには、次の手順に従います。
ライブラリメンバの一連の MDBCSVC マクロをコーディングして、DBID/SVC ルーティングテーブルを定義または修正します。 サンプルの ADASVCTB メンバは、このメンバの準備用のテンプレートとして ADAvrs.MVSSRCE ライブラリで提供されています。 MDBSVC マクロの使用についての詳細は、「MDBSVC マクロの使用」を参照してください。
DBID/SVC ルーティングテーブルメンバをアセンブルおよびリンクエディットし、テーブルをロードモジュールとして作成し、CICS DFHRPL 連結の一部となるライブラリに配置します。 同一の Adabas SVC にアクセスする複数のコマンドの処理オーバーヘッドを削減するために、リンクルーチンサブプログラム LNKDSL は DBID/SVC モジュールに Adabas SVC IDT ヘッダーのアドレスを格納する必要があるため、ロードモジュールは再利用不可および非リエントラントとしてリンクされる必要があります。
RDO または DFHCSDUP ユーティリティを使用して、ロードモジュールをプログラムとして CICS に定義します。 サンプル DFHCSDUP 定義ステートメントについては、ACIvrs.MVSSRCE ライブラリのメンバ DEFADA8 を参照してください。 プログラム属性は、Reload(No)、Resident(Yes)、Dataloc(Any)、Execkey(CICS) にする必要があります。
実行環境のリンクグローバルテーブルを定義または修正します。 Adabas SVC ルーティング機能をサポートするには、次の LGBLSET キーワードが必要です。
LGBLSET キーワード設定 | 説明 |
---|---|
DYNDBSVC=YES | このキーワードおよび設定は、Adabas SVC ルーティングがこのジョブステップでアクティブであることを示します。 |
DBSVCTN=name | このキーワードは、このジョブステップの DBID/SVC テーブル名を指定します。 この名前は、リンクルーチンの実行時に適切なテーブルがロードされるように、作成されたロードモジュールの名前と一致する必要があります。 |
「Adabas 8 配下での CICS を使用する場合の Adabas のインストール」の説明に従って、更新したグローバルテーブルをアセンブルおよびリンクエディットします。
このセクションで前述したAdabas SVC ルーティング機能をインストールすると、次のようにロードされます。
バッチ、TSO、または IMS 環境では、リンクルーチンの初期化時に DBID/SVC ルーティングテーブルがロードされます(リンクグローバルテーブルの LGBLSET DYNDBSVC パラメータが YES に設定されている場合)。 ルーティングテーブルのアドレスは、その後のコールで使用できるように、リンクルーチンのワークエリアに保持されます。
CICS 環境では、通常 PLTPI 処理中に実行される Adabas 8 初期化モジュールが DBID/SVC ルーティングテーブルをロードして検証します(CICS リージョンのリンクグローバルテーブルで LGBLSET DYNDBSVC パラメータが YES に設定されている場合)。 ルーティングテーブルのアドレスは、Adabas 8 タスク関連ユーザー出口(TRUE)モジュール ADACICT に関連付けられたグローバルワークエリアに保持されます。また、このアドレスは、Adabas コマンドレベルモジュール ADACICS/ADADCI による TRUE へのアプリケーションコールで利用できます。
アプリケーションコールが実行されると、DBID/SVC ルーティングテーブルは、各操作環境の適切なリンクルーチンにリンクされた LNKDSL サブルーチンによって検索されます。 Adabas 以前のコールのユーザー出口がその後の処理用にコマンドのデータベース ID を変更している可能性があるため、LNKDSL は LUEXIT1(リンクルーチンユーザー出口 1)の起動後に呼び出されます。 Adabas Review、Adabas Fastpath、Adabas Transaction Manager などのモニタリング製品が、DBID/SVC ルーティングテーブルにある適切な Adabas SVC に基づいて処理を行えるように、LNKDSL へのコールは何らかのモニタリングまたは Adabas Fastpath 出口が呼び出される前に実行されます。
特定のコールに関連付けられているデータベース Id が DBID/SVC ルーティングテーブルで見つからなかった場合、MDBSVC マクロの TYPE=INIT パラメータで指定された、Adabas SVC のデフォルト値が使用されます。 特定された SVC が Adabas SVC でない場合、または z/OS システムにインストールされていない場合、Adabas レスポンスコード 213、サブコード 16 または 20 がアプリケーションに返されます。 コール元のデータベースが SVC 番号に対してアクティブでない場合、Adabas レスポンスコード 148 がアプリケーションに返されます。
データベース ID の重複は DBID/SVC ルーティングテーブルでは許可されていません。これは、複数のデータベース ID がリストされていると、あるデータベース ID にどの SVC を使用すべきかをリンクルーチンが決定する際の信頼性がなくなるからです。 テーブルのアセンブル中に重複するデータベース ID が見つかった場合、アセンブラ MNOTE のフラグが設定され、アセンブルの試行に対してリターンコード 16 が返されます。
MDBSVC マクロを使用して、Adabas DBID/SVC ルーティングテーブルのさまざまな定義を行います。 複数の MDBSVC マクロ を TYPE=INIT、TYPE=GEN、TYPE=FINAL キーワードを使用してまとめてコーディングすることで、1 つのソースモジュールまたはメンバを構成します。 このソースモジュールまたはメンバをアセンブルおよびリンクエディットし、DBID/SVC ルーティングテーブルロードモジュールを作成します。 ADAvrs.MVSSRCE のサンプルメンバ ADASVCTB をテンプレートとして使用して、各環境に合わせた DBID/SVC ルーティングテーブルソースモジュールを作成できます。 次に CSECT 名 TESTDBT を使用した DBID/SVC ルーティングテーブルソースメンバの例を示します。テーブルをアセンブルすると、ロードモジュール名は TESTDBT になります。
TESTDBT CSECT MDBSVC TYPE=INIT,SVC=249,DBID=001 MDBSVC TYPE=GEN,SVC=237,DBID=(2,10,21,33,175,1149), X DBID2=(100,101,102,13500) MDBSVC TYPE=GEN,SVC=231,DBID=(226,899) MDBSVC TYPE=GEN,SVC=206,DBID=(15,16,69,99,500,12144) MDBSVC TYPE=GEN,SVC=248,DBID=(14,54,111,177,1213,5775) MDBSVC TYPE=GEN,SVC=249,DBID=(17,19,25,35,42,44,61,76) MDBSVC TYPE=FINAL END
MDBSVC マクロステートメントのキーワード値をコーディングする場合、行の継続、リストの識別、およびキーワード値の指定に関するアセンブラの規則に従わないと、アセンブリエラーが発生するため注意してください。 キーワードのオブジェクトとしてコーディングされたリストを含むキーワードと値は、コンマで区切る必要があります。 MDBSVC マクロでは位置パラメータは使用されません。
MDBSVC マクロには、次の表に示す 4 種類のステートメントを含めることができます。
MDBSVC TYPE=INIT ステートメントの前に、名前付きの CSECT、AMODE および RMODE ステートメントを配置することができます。 CSECT、AMODE、または RMODE ステートメントを含める場合、使用する名前が DBID/SVC ルーティングテーブルの名前と一致している必要があります。つまり、MDBSVC TYPE=INIT ステートメントの TABNAME パラメータでコーディングされた名前と、リンクグローバルテーブルを作成するときに、LGBLSET マクロの DBSVCTN キーワードで指定された名前です。
このセクションでは、次のトピックについて説明します。
MDBSVC TYPE=INIT ステートメントの構文は次のとおりです。
MDBSVC TYPE=INIT [,SVC=svcno] [,DBID=dbid] [,TABNAME={name|ADBSVCT}] [,OPSYS={ZOS|VSE}]
MDBSVC TYPE=INIT ステートメントでコーディングできるパラメータについては、「MDBSVC パラメータ」を参照してください。
MDBSVC TYPE=GEN ステートメントの構文は次のとおりです。
MDBSVC TYPE=GEN [,SVC=svcno] [,DBID=id[, id]...][,DBID2=id[, id]...]
MDBSVC TYPE=GEN ステートメントでコーディングできるパラメータについては、「MDBSVC パラメータ」を参照してください。
MDBSVC TYPE=FINAL ステートメントの構文は次のとおりです。
MDBSVC TYPE=FINAL
MDBSVC TYPE=FINAL ステートメントではパラメータを使用することはできません。
MDBSVC ステートメントで指定できるパラメータには次のようなものがあります。
DBID パラメータは、MDBSVC TYPE=INIT ステートメントと MDBSVC TYPE=GEN ステートメントの両方で使用できます。
MDBSVC TYPE=INIT ステートメントで指定する場合、SVC パラメータで指定された SVC に関連付けられたデフォルトデータベース ID を指定します。 この場合、TYPE=INIT ステートメントの DBID パラメータにリストできるデータベース ID は 1 つだけです。
MDBSVC TYPE=GEN ステートメントで指定する場合、SVC パラメータで指定されたパラメータに関連付けられたデータベース ID を指定します。 複数のデータベース ID をリストする場合、かっこで囲み、コンマで区切る必要があります。
DBID パラメータでリストするデータベース ID は、インストールした Adabas データベースの ID に対応する数値にする必要があります。 z/OS 環境では、データベース ID は 1 から 65535 の範囲である必要があります。 同一のデータベース ID を複数の MDBSVC ステートメントに指定することはできません。データベース ID は、DBID/SVC ルーティングテーブルのすべての DBID および DBID2 ステートメントにおいてユニークでなければなりません。 重複した値には MNOTE のフラグが設定されます。これにより DBID/SVC ルーティングテーブルのアセンブルが停止してリターンコード 16 が返されます。
MDBSVC ステートメントに対する DBID パラメータの設定例を次に示します。 SVC 237 に関連付けられているデータベース ID をリストしている MDBSVC ステートメントが 2 つあることに注意してください。 これにより、同一の SVC 番号に対して、より多くのデータベース ID をコーディングすることができます。 この方法で記述した内容と同じものを DBID2 パラメータを使用して記述した例と比べてみてください。 どちらのコーティングも、結果は同じになります。
MDBSVC TYPE=INIT,SVC=249,DBID=1 MDBSVC TYPE=GEN,SVC=237,DBID=(2,4,10,16,21,33) MDBSVC TYPE=GEN,SVC=237,DBID=(175,1149,1221) MDBSVC TYPE=GEN,SVC=242,DBID=(3,18) MDBSVC TYPE=FINAL END
DBID2 パラメータは、MDBSVC TYPE=GEN ステートメントでのみ使用できます。 SVC パラメータで指定した Adabas SVC に関連付けるデータベース ID のリストを追加することができます。 DBID2 パラメータはオプションですが、指定する場合は、DBID パラメータの直後に指定する必要があります。
DBID2 パラメータでリストするデータベース ID は、インストールした Adabas データベースの ID に対応する数値にする必要があります。 z/OS 環境では、データベース ID は 1 から 65535 の範囲である必要があります。 同一のデータベース ID を複数の MDBSVC ステートメントに指定することはできません。データベース ID は、DBID/SVC ルーティングテーブルのすべての DBID および DBID2 ステートメントにおいてユニークでなければなりません。 重複した値には MNOTE のフラグが設定されます。これにより DBID/SVC ルーティングテーブルのアセンブルが停止してリターンコード 16 が返されます。
DBID2 パラメータを含む MDBSVC ステートメントの例を次に示します。 この方法で記述した内容と同じものを DBID パラメータを使用して記述した例と比べてみてください。 どちらのコーティングも、結果は同じになります。
MDBSVC TYPE=INIT,SVC=249,DBID=1 MDBSVC TYPE=GEN,SVC=237,DBID=(2,4,10,16,21,33), X DBID2=(175,1149,1221) MDBSVC TYPE=GEN,SVC=242,DBID=(3,18) MDBSVC TYPE=FINAL END
OPSYS パラメータは、MDBSVC TYPE=INIT ステートメントでのみ使用できるオプションのパラメータです。 このパラメータは、DBID/SVC ルーティングテーブルがアセンブリされるオペレーティングシステムを識別します。 OPSYS パラメータに有効な値としては "ZOS" と "VSE" があり、"ZOS" がデフォルトです。
PREFIX パラメータは、MDBSVC TYPE=DSECT ステートメントでのみ使用できます。このパラメータは Software AG が内部で使用するために予約されています。 このパラメータは使用しないでください。
SVC パラメータは、MDBSVC TYPE=INIT ステートメントと MDBSVC TYPE=GEN ステートメントの両方で使用できます。
MDBSVC TYPE=INIT ステートメントで指定する場合、デフォルトの Adabas SVC 番号を指定します。この番号は、コール元のアプリケーションから指定されたデータベース ID が、DBID/SVC ルーティングテーブルに見つからなかったときに使用されます。
MDBSVC TYPE=GEN ステートメントで指定する場合、DBID および DBID2 パラメータで指定される Adabas データベースに関連付ける Adabas SVC 番号を指定します。
SVC パラメータで指定する SVC 番号は、数値であり、かつインストールした Adabas SVC の SVC 番号に対応している必要があります。 z/OS 環境では、SVC 番号の範囲は 200~255 です。 複数の MDBSVC ステートメントで SVC 値を重複して使用できます。これにより、データベース ID の長いリストを記述し、それらを同一の Adabas SVC に関連付けることができます。
次の例で、2 つの MDBSVC ステートメントで SVC 249 が指定されている点に注意してください。 この SVC は、リンクルーチンのデフォルト SVC であるとともに、データベース 1、2、18 でも使用されます。 また、SVC 237 に対しても 2 つの MDBSVC ステートメントがあります。2 つのステートメントで、SVC 237 に関連付ける 9 つのデータベースがリストされています(2、4、10、16、21、33、175、1149、1221)。
MDBSVC TYPE=INIT,SVC=249,DBID=1 MDBSVC TYPE=GEN,SVC=237,DBID=(2,4,10,16,21,33) MDBSVC TYPE=GEN,SVC=237,DBID=(175,1149,1221) MDBSVC TYPE=GEN,SVC=249,DBID=(3,18) MDBSVC TYPE=FINAL END
TABNAME パラメータは、MDBSVC TYPE=INIT ステートメントでのみ使用できるオプションのパラメータです。 このパラメータには、ソースメンバに独立した(かつ以前にコーディングされた)CSECT ステートメントが含まれていない場合に、DBID/SVC ルーティングテーブルの名前を指定します。 この場合、TABNAME パラメータで指定した名前が、名前付き CSECT ステートメントおよび、名前付き AMODE、RMODE 指示の生成に使用されます。
指定する DBID/SVC ルーティングテーブル名は、1~8 文字の英数字にする必要があります。 次の例では、TESTDBT という名前の DBID/SVC ルーティングテーブルがコーディングされています。
MDBSVC TYPE=INIT,SVC=249,DBID=1,TABNAME=TESTDBT MDBSVC TYPE=GEN,SVC=237,DBID=(2,4,10,16,21,33) MDBSVC TYPE=GEN,SVC=237,DBID=(175,1149,1221) MDBSVC TYPE=GEN,SVC=249,DBID=(3,18) MDBSVC TYPE=FINAL END
Adabas 8 LGBLSET マクロは、Adabas リンクルーチンのデフォルトのインストール値の設定に使用します。 このマクロは、Adabas 8 リンクルーチンとリンクエディットされているか、リンクルーチンを実行しているジョブステップのリンクルーチンに提供されるオブジェクトモジュールを準備するために使用します。 Adabas ライブラリには、各環境の各種 TP モニタをサポートするために提供されたサンプルメンバが含まれています。 これらのサンプルメンバは適切なライブラリにコピーされ、指定した環境で実行するリンクルーチンに必要なカスタマイズを行うために変更されます。
LGBLSET パラメータオプションとそのデフォルト値(下線付き)については、このセクションの後半を参照してください。
パラメータ | 説明 | 構文 |
---|---|---|
ADL |
このコマンドレベルリンクルーチンにより Software AG の Adabas Bridge for DL/I の Consistency Interface がサポートされるかどうかを示します。
|
ADL={NO|YES} |
パラメータ | 説明 | 構文 |
---|---|---|
AVB |
このコマンドレベルリンクルーチンにより Software AG の Adabas Bridge for VSAM がサポートされるかどうかを示します。
|
AVB={NO|YES} |
パラメータ | 説明 | 構文 |
---|---|---|
CITSNM |
Adabas の CICS TS キュー名を表す 16 バイトの文字列を指定します。 デフォルトは "ADACICS" です。 |
CITSNM={ADACICS|qname} |
パラメータ | 説明 | 構文 |
---|---|---|
COR |
Adabas System Coordinator(SYSCOR)、Adabas Transaction Manager、および Adabas Fastpath の出口がインストールされアクティブになっているかどうかを示します。
|
COR={NO|YES} |
パラメータ | 説明 | 構文 |
---|---|---|
DBSVCTN |
実行中にリンクルーチンに使用される DBID/SVC ルーティングテーブルの名前を指定します(存在する場合)。 ルーティングテーブル名は z/OS 標準ロードモジュールの名前に従う必要があります。 このテーブル名は、バッチ、TSO、または IMS 操作の実行中は z/OS LOAD マクロ/SVC に、CICS 操作の実行中は EXEC CICS LOAD PROGRAM コマンドにより使用されます。 リストされたロードモジュールが見つからない場合、またはも無効なヘッダー情報を含んでいる場合は、バッチ、TSO、または IMS 環境でユーザーアベンド U657 が発行されます。 ロードモジュールが CICS に定義されていない場合、または CICS DFHRPL 連結に見つからない場合は、Adabas CICS リンクルーチン環境は初期化されません。 注意: z/OS 環境のデータベース ID ごとの SVC ルーチンの詳細については「Establishing Adabas SVC Routing by Adabas Database ID」を参照してください。 |
DBSVCTN={name|ADASVCTB} |
パラメータ | 説明 | 構文 |
---|---|---|
DYNDBSVC |
リンクルーチンに対して、データベース ID による Adabas SVC ルーティングを有効にするかどうかを示します。 DYNDBSVC=YES を指定すると、データベース ID による Adabas SVC ルーティングが有効になりますが、DYNDBSVC により無効になります。 デフォルトは NO です。 z/OS 環境のデータベース ID ごとの SVC ルーチンの詳細については「Establishing Adabas SVC Routing by Adabas Database ID」を参照してください。 |
DYNDBSVC={YES|NO} |
パラメータ | 説明 | 構文 |
---|---|---|
ENTPT |
Adabas CICS コマンドレベルリンクルーチン名。 この名前を EXEC CICS LINK コマンドに使用して CICS アプリケーションプログラムから Adabas サービスを呼び出します。 インストール手順の注 1 と注 2 も参照してください。 |
ENTPT={ADACICS|name} |
パラメータ | 説明 | 構文 |
---|---|---|
GBLNAME |
リンクグローバルモジュール名。 |
GBLNAME={LNKGBLS|name} |
パラメータ | 説明 | 構文 |
---|---|---|
GEN |
CSECT または DSECT が生成されているかどうかを示します。 |
GEN={CSECT|DSECT} |
パラメータ | 説明 | 構文 |
---|---|---|
IDTNAME |
BS2000 IDT の共通メモリプール名。 |
IDTNAME=name |
パラメータ | 説明 | 構文 |
---|---|---|
IDTUGRP |
メモリプールがユーザー連結かどうかを示します(BS2000)。 |
IDTUGRP={NO|YES} |
パラメータ | 説明 | 構文 |
---|---|---|
LOGID |
デフォルトのターゲットデータベース ID の値。 有効な ID 番号は 1~65535 です。 デフォルトは "1" です。 |
LOGID={nnn | 1} |
パラメータ | 説明 | 構文 |
---|---|---|
LUEXIT1A |
リンクユーザー出口 1 のワークエリアの長さ。 有効な値は 0~32,767 の数値です。 デフォルトは "0" です。 |
LUEXIT1A={nnn|0} |
パラメータ | 説明 | 構文 |
---|---|---|
LUEXIT2A |
リンクユーザー出口 2 のワークエリアの長さ。 有効な値は 0(ゼロ)~32,767 の数値です。デフォルトは "0" です。 |
LUEXIT2A={nnn|0} |
パラメータ | 説明 | 構文 |
---|---|---|
LUINFO |
ターゲットユーザー出口 4 に渡されるユーザーデータの長さ。 有効な値は 0~32,767 の数値です。 LUINFO を指定しない場合、0(デフォルト)になり、ユーザーセーブエリアは渡されません。 |
LUINFO={0|length} |
パラメータ | 説明 | 構文 |
---|---|---|
LUSAVE |
Adabas ユーザー出口 LUEXIT1 と LUEXIT2 に使用されるユーザーセーブエリアのサイズ。 有効な値の範囲は 0(ゼロ)~256 です。 デフォルトは "72" です。 LUSAVE を指定しない場合、0(デフォルト)になり、ユーザーデータは渡されません。 |
LUSAVE={72|size} |
パラメータ | 説明 | 構文 |
---|---|---|
LX1NAME |
リンクユーザー出口 1 のモジュール名 |
LX1NAME={LUEXIT1|name} |
パラメータ | 説明 | 構文 |
---|---|---|
LX2NAME |
リンクユーザー出口 2 のモジュール名 |
LX2NAME={LUEXIT2|name} |
パラメータ | 説明 | 構文 |
---|---|---|
MRO |
CICS マルチプルリージョンオプション(MRO)のサポートが必要かどうかを示します。 CICS MRO とともに CICS コマンドレベルリンクを実行する場合、MRO=YES をセットします。それ以外の場合は、デフォルト値 MRO=NO を使用します。 MRO=YES の場合、NETOPT に NETOPT=NO(デフォルト)をセットし、マルチプルアプリケーションリージョンからユニークでない LU 名を回避しなければなりません。 NETOPT=YES および MRO=YES のとき、アセンブラ MNOTE およびリターンコード 16 がアセンブリステップから出力されます。 |
MRO={NO|YES} |
パラメータ | 説明 | 構文 |
---|---|---|
NETOPT |
NETOPT=YES が指定されている場合は、8 バイトのユーザー ID が VTAM LU 名から構成されます。 NETOPT=NO が指定されている場合、ユーザー ID は定数 CICS に端末タスク用の 4 バイトの CICS 端末 ID(TCTTETI)で作られます。 非端末タスクの場合、ユーザー ID は定数 CIC と CICS タスク番号で構成されます。 CICS マルチプルリージョンオプション(MRO)付きで実行する場合、このオプションに対してデフォルト値を使用する必要があります。 NETOPT=YES および MRO=YES のとき、アセンブラ MNOTE およびリターンコード 16 がアセンブリステップから出力されます。 |
NETOPT={NO|YES} |
パラメータ | 説明 | 構文 |
---|---|---|
NTGPID |
Natural バージョン 2.2.8 以上の CICSplex 環境でユニークな Adabas ユーザー ID を生成する必要がある場合には、4 バイトの Natural グループ ID を指定します。 値は、指定値でアセンブルされた Adabas コマンドレベルリンクルーチンをコールするすべてのユーザーに関連します。 デフォルト値はありません。 値が指定されない場合、従来どおり Adabas 内部ユーザー ID が作成されます。 4 バイトの英数字の値を指定することもできますが、CICSplex または z/OS イメージで実行している Adabas コマンドレベルリンクルーチンごとに固有である必要があります。 複数の NTGPID が必要なとき(テストと本番の Natural 2.2.8 など)、TRUE に関連する複数の Adabas コマンドレベルリンクルーチンを生成する必要があります。 CICS マルチプルリージョンオプション(MRO)付きで実行する場合、NTGPID を使用して、マルチプルアプリケーションリージョンが Adabas をコールするとき、Adabas SVC に使用される Adabas コミュニケーション ID 用の 4 バイトリテラルを指定します。 |
NTGPID=4-byte-value |
パラメータ | 説明 | 構文 |
---|---|---|
NUBS |
CICS リンクルーチンでユーザーブロックプールに作成されるユーザーブロック(UB)数。 ブロック数は同時に発生することが予想される最大 Adabas 要求数を処理可能な大きさにする必要があります。 注意: |
NUBS={100|blocks} |
パラメータ | 説明 | 構文 |
---|---|---|
OPSYS |
使用しているオペレーティングシステム。 |
OPSYS={ZOS|VSE|CMS|BS2} |
パラメータ | 説明 | 構文 |
---|---|---|
PARMTYP |
Adabas パラメータリストを取得するための CICS エリア。 "TWA" は、トランザクションワークエリア(TWA)の先頭の 6 フルワードのパラメータリストを取得します。 PARMTYP=COM の場合、Adabas パラメータが EXEC CICS LINK コマンドを伴ったコール元プログラムからコールされた CICS COMMAREA に指定されます。 ACB コールの COMMAREA リストは最低 32 バイト必要で、ラベル "ADABAS52" で始まります。 ACBX コールの COMMAREA リストは最低 24 バイト必要で、ラベル "ADABAS8X" で始まります。 また、ACBX コールの COMMAREA リストの最後の ABD を指定するために、VL ビットを設定する必要があり、アドレスの上位ビットを(X'80')にします。 PARMTYP=ALL(デフォルト)は COMMAREA と TWA の両方を使用して Adabas パラメータを渡します。この場合、COMMAREA が最初にチェックされます。 CICS TWA を Adabas 8 ACBX ダイレクトコールにマッピングすることはお勧めしません。 これは、TWA はトランザクションごとにサイズが限定されていることと、CICS 起動時に TWA は使用できないことが理由です。 そのため、Adabas 8 CICS リンクルーチンを使用する CICS プログラムでは、データを渡すときだけ COMMAREA を使用することをお勧めします。 |
PARMTYP={ALL|COM |TWA} |
パラメータ | 説明 | 構文 |
---|---|---|
PRE |
DSECT データ接頭辞として、2 バイトの文字列が使用されます。 デフォルトは "LG" です。 |
PRE={LG|prefix} |
パラメータ | 説明 | 構文 |
---|---|---|
PURGE |
CICS 3.2 以上でアセンブルするとき、PURGE パラメータが使用されます。 PURGE=YES を指定すると、CICS WAIT EXTERNAL はそのパラメータの 1 つとして PURGEABLE を含むので、DTIMOUT 値を超えたときに PURGE が指定されると、CICS はトランザクションを削除できるようになります。 PURGE=NO(デフォルト)が指定されている場合は、NONPURGEABLE オプションが生成されます。 |
PURGE={NO|YES} |
パラメータ | 説明 | 構文 |
---|---|---|
RENT |
グローバルモジュールがリエントラントかどうかを示します。 |
RENT={NO|YES} |
パラメータ | 説明 | 構文 |
---|---|---|
RETRYX |
再試行コマンド出口がアクティブになっているかどうかを示します。 |
RETRYX={NO|YES} |
パラメータ | 説明 | 構文 |
---|---|---|
REVIEW |
Software AG の Review パフォーマンスモニタがインストールされアクティブになっているかどうかを示します。 |
REVIEW={NO|YES} |
パラメータ | 説明 | 構文 |
---|---|---|
RMI |
CICS リソースマネージャインターフェイスが使用されているかどうかを示すために、RMI パラメータが使用されます。 RMI=YES が指定されている場合は、CICS リソースマネージャインターフェイス(RMI)を使用して、Adabas タスク関連ユーザー出口(TRUE)がリソースマネージャ(RM)として実行されます。 RMI=YES は、Adabas Transaction Manager がインストールされ、有効で、CICS 環境で実行しているユーザーに利用可能なときにだけ有効です。 Adabas TRUE のインストレーションと関連する付加的な手順については Adabas Transaction Manager のドキュメントを参照してください。 |
RMI={NO|YES} |
パラメータ | 説明 | 構文 |
---|---|---|
RTXNAME |
コマンド再試行出口モジュールの名前。 |
RTXNAME={LUEXRTR|name} |
パラメータ | 説明 | 構文 |
---|---|---|
SAF |
Software AG の Adabas SAF Security サポートが必要かどうかを示します。 |
SAF={NO|YES} |
パラメータ | 説明 | 構文 |
---|---|---|
SAP |
SAP ユーザー ID の生成がサポートされているかどうかを示します。 SAP=YES を指定すると、プログラムは SAP 初期化コールを検出し、初期化コールに提供された定数にフィールド ACBADD2 を合わせて SAP アプリケーションのためのユーザー ID をセットします。 詳細については、SAP アプリケーションシステムを使用するお客様のために提供されている補足情報を参照してください。 |
SAP={NO|YES} |
パラメータ | 説明 | 構文 |
---|---|---|
SAPSTR |
使用する 4 バイトの SAP ID 文字列。 |
SAPSTR={'SAP*'|string} |
パラメータ | 説明 | 構文 |
---|---|---|
SVCNO |
Adabas SVC 番号の値。 z/OS システムでは、有効な値の範囲は 200~255 です。デフォルトは "249" です。 z/VSE システムでは、有効な値の範囲は 32~128 です。デフォルトは "45" です。 |
SVCNO=nnn |
パラメータ | 説明 | 構文 | ||
---|---|---|---|---|
TPMON |
TP モニタのオペレーティング環境。 有効な値は次のように指定してください。
|
TPMON={BAT|CICS|COM|IMS} |
パラメータ | 説明 | 構文 |
---|---|---|
TRUENM |
Adabas CICS タスク関連ユーザー出口(TRUE)のモジュール名を指定します。 デフォルトは ADACICT です。 |
TRUENM={ADACICT|name} |
パラメータ | 説明 | 構文 |
---|---|---|
UBPLOC |
ユーザーブロック(UB)プールを CICS の 16 MB 境界より上(デフォルト)に取得するか、または下に取得するかを指定します。 EXEC CICS WAIT WAITCICS または EXEC CICS WAIT EXTERNAL によって使用される ECB を UP プールに組み込みます。 UBPLOC=BELOW を設定すると、ECB を 16 MB 境界より上に許可しない CICS バージョン、つまり、CICS/ESA 3.2 以下をサポートします。 詳細については、IBM マニュアル『CICS Application Programming Reference』を参照してください。 |
UBPLOC={ABOVE|BELOW} |
パラメータ | 説明 | 構文 |
---|---|---|
UES |
ユニバーサルエンコーディングサポート(UES)が必要かどうかを示します。 |
UES={NO|YES} |
パラメータ | 説明 | 構文 |
---|---|---|
USERX1 |
ユーザー出口 1 がアクティブになっているかどうかを示します。 |
USERX1={NO|YES} |
パラメータ | 説明 | 構文 |
---|---|---|
USERX2 |
ユーザー出口 2 がアクティブになっているかどうかを示します。 |
USERX2={NO|YES} |
パラメータ | 説明 | 構文 |
---|---|---|
XWAIT |
標準 EXEC CICS WAITCICS(XWAIT=NO)または WAIT EVENTS EXTERNAL(XWAIT=YES)が Adabas 8 タスク関連ユーザー出口(TRUE)によって実行されるかどうかを示します。 XWAIT=YES がデフォルトです。 CICS/TS 1.1 以上では CICS WAIT EVENTS EXTERNAL(XWAIT=YES)が望ましいインターフェイスです。 CICS WAITCICS ステートメント(XWAIT=NO)は、CICS/MVS 2.1.2 および CICS/VSE 2.1~2.3 での使用のために提供されています。 これは、CICS/TS 1.1 以上でも使用できますが、CICS トランザクションのパフォーマンスを低下させるか、またはビジーな CICS 環境では予期しない結果を招くことがあります。 注意: |
XWAIT={NO|YES} |
注意:
CICS WAITCICS(XWAIT=NO)は、指定された ECB のソフトポストをサポートすることができます。 これには、ハードポストワークは全ワークサイクル上で CICS に処理されないため、優先度の低い CICS 環境のディスパッチ可能なワークユニットになるという短所があります。
これに反して、EXEC CICS WAIT EXTERNAL(XWAIT=YES)により、CICS がその特別ポスト出口コードを使用できるようにし、全 CICS ワークサイクル上でチェックと処理(ポストされた場合)を常に行います。
各種の CICS WAIT コマンドとそのハードおよびソフトポスティングメカニズムの関係の違いの詳細については、IBM の『CICS Application Programming Reference Guide』および添付テキストの IBM APAR PN39579 または IBM InfoLink サービスの Item RTA000043874 を参照してください。
Adabas SVC は XWAIT=YES 設定と完全な互換性があります。 SVC は、Adabas コマンドレベルリンクルーチンを使用する CICS 配下の Adabas コール元に対して必要なハードポストを実行します。 ハードポストを必要としないバッチコール元に対しては、同じ SVC がソフトポストを実行します。