このドキュメントでは、Natural CICS インターフェイスの機能について説明します。
内容は以下のとおりです。
Natural CICS インターフェイスはコマンドレベルのアセンブラで実装されるため、Natural は、CICS マルチプルリージョンオプションおよびデバッグ機能 CEDF と互換性があります。
Natural CICS インターフェイスは、セッションの初期化、ロールイン再スタート(擬似会話型モード)、端末の I/O、データベースアクセス、ABEND 処理、Natural ローカルバッファプール呼び出しと、外部サブルーチンのロード、リンク、および解放を制御します。 さらに、すべてのロール I/O 操作は Natural CICS インターフェイスから行われます。
Natural ニュークリアスは、Natural のリエントラントモジュールとさまざまなサポートルーチンの組み合わせです。これらのルーチンは、サイト依存のアセンブリを必要とするソースプログラムおよびロードモジュールとして提供されます。
Natural ニュークリアスの CICS 関連のコンポーネントを以下に示します。
Natural CICS インターフェイスモジュール NCISTART
これはエントリルーチンです。特に Natural CICS インターフェイス言語環境(LE)リンクの準備を行います。「Natural CICS インターフェイスおよび IBM 言語環境(LE)」を参照してください。 このモジュールは CICS のバージョンに依存しています。
Natural CICS インターフェイスモジュール NCIROOT
このモジュールは、すべての CICS 関連のロジックを CICS サービスおよび CICS コントロールブロックアクセスとして保持します。 このモジュールは CICS のバージョンに依存しています。
Natural CICS パラメータモジュール NCIPARM
このモジュールは、Natural CICS インターフェイスランタイムおよびシステム環境生成オプションを保持します。 このモジュールは CICS のバージョンに依存していません。ただし、パラメータの一部は CICS のバージョンに基づいて設定する必要があります。
Natural CICS インターフェイスオブジェクトのみの NCINUC
このモジュールは、Natural ニュークリアスおよび Natural CICS インターフェイスシステム制御ロジックによって呼び出されるサービスルーチンを保持します。 これらのルーチンは CICS および CICS のバージョンに依存しておらず、NCIROOT
および NCISTART
で CICS サービスルーチンを呼び出すことにより CICS を処理します。
Natural CICS インターフェイスモジュール NCIXCALL
このモジュールは CICS の個別プログラムです。つまり、Natural によって呼び出される 3GL プログラムから EXEC CICS LINK
を介して起動されるため、Natural ニュークリアスにリンクされていません。『オペレーション』ドキュメントの「Natural 3GL CALLNAT インターフェイス」を参照してください。 このモジュールは CICS のバージョンに依存しています。
CICS 固有の Natural 機能には、スレッドでの動的ストレージの構成、およびこれらのスレッドを処理する追加の機能が含まれているため、Natural CICS システム制御プログラムはより効率的に動的ストレージを処理することができます。
Natural CICS システム制御プログラムは、当初 CICS 環境での GETMAIN の 64 KB 制限を克服するために開発されました。 これにより、擬似会話型ユーザーに対するロールファイル I/O 操作および再配置機能を含む完全なストレージの割り当ておよび管理機能が提供されます。
CICS での Natural の擬似会話型処理機能を拡張するために、システム制御プログラムでは、スレッド(ユーザーごとに設定される連続したストレージ)を使用します。 この構造により、Natural は CICS の関与を最小限に抑えながら動的ストレージを管理することができます。
システム制御について完全に理解するには、その構造および操作に関する以下の説明を参照してください。 CICS 環境での Natural のインストール手順を開始する前に、このメカニズムをよく理解してください。
単一の CICS リージョン
以下の図は、CICS 動的ストレージに存在する Natural システムのコンポーネントを示しています。 コンポーネントについては、次の項目で説明しています。
シナリオ 1 は、z/OS または z/VSE 環境において単一の CICS アプリケーションリージョンで Natural をローカルに実行する場合に適用されます。
注意:
z/OS システムに関する注意事項:この他のシナリオも実現可能です。 次の 3 つの図は、z/OS システム、CICS リージョン、Natural ロールサーバー、および Natural 認可サービスマネージャの組み合わせを示しています。
単一の z/OS、単一の CICS リージョン、単一のロールサーバー
単一の z/OS、複数の CICS リージョン、単一のロールサーバー、および(オプションの)認可サービスマネージャ
複数の z/OS、複数の CICS リージョン、複数のロールサーバー/認可サービスマネージャ
モジュール | シナリオ 1 | シナリオ 2 | シナリオ 3 | シナリオ 4 |
---|---|---|---|---|
NTBPI (BPI )
|
TYPE=SWAP、SIZE= nnn
|
n/a | n/a | n/a |
NCMDIR CICSPLX |
NO |
NO |
YES/MODE |
YES/MODE |
NCMDIR SIPSERV |
NO |
NO/YES |
YES |
YES |
NCMDIR ROLLSRV |
NO |
YES |
YES |
YES |
ロールサーバー
CF 構造名 |
n/a | なし | なし | name |
認可サービスマネージャ/SIP | n/a | n/a | SIP スロット番号/サイズ | XCF グループ名/CF 構造名 |
Natural CICS インターフェイスでは、256 バイトの SIP スロットサイズが必要です。
注意:
シナリオ 2、3、4 では、NCI 環境を初期化する最初の Natural のセッションで、SUBSID
パラメータを対応するロールサーバーおよび/または認可サービスマネージャの値に設定する必要があります。
スレッドとは、Natural が必要とするすべてのストレージを要求する連続したストレージエリアのことです。 これは複数の Natural ユーザーで共有するストレージでも、または、31 ビットモード環境では、特定タスク専用の 16 MB 境界より上の CICS ユーザーストレージでもかまいません。
各ストレージスレッドは、Natural ユーザーにとっては "アドレススペース" と見なすことができます。 Natural ニュークリアスによって発行された各メモリ割り当て要求は、システム制御プログラムに転送され、ストレージスレッドから満たされます。
ストレージスレッドは、Natural CICS インターフェイスが初期化されるときに割り当てられます。 ストレージスレッドは、CICS リージョンまたはパーティションに割り当てられる場合には永久(共有)スレッドで、Natural CICS タスクの開始時に割り当てられる場合には排他スレッド(タスク依存のユーザーストレージ)です。
ストレージスレッドの技術は、次の理由から Natural に実装されました。
非 31 ビットモードシステムのユーザーストレージにおいて CICS の 64 KB 制限を克服するため。
ローリングを最適化できるようにするため(以前は、ユーザーストレージの各部分をロール媒体に書き込む必要があったが、現在は連続するストレージエリアがあるため、このエリアはロールアウト前に関連する部分を互いに連続させることにより圧縮される)。
Natural CICS インターフェイスは、スレッドから Natural セッションのすべての GETMAIN
要求を満たそうと試みます。 この方が、CICS サービスコールによる GETMAIN
要求より速く実施することができます。 このことは、CICS コマンドレベルの呼び出しに特に当てはまります。これは、CICS EXEC
インターフェイスプログラム(EIP
)も関係するためです。
スレッドは画面 I/O ごとに所有するタスクによって解放されます。 これは会話型タスクと擬似会話型タスクの両方に当てはまります。 セッションが再開されると、ストレージが残されていない限り、つまり他のタスクによってスレッドが使用されていない限り、そのストレージは再度スレッドにロールされます。
Natural スレッド選択アルゴリズムは、ロール I/O を最小限にするためにスレッドを使用するバランスを保ちます。 つまり、スレッドが多いほど、古いデータが見つかる可能性が高くなり、ロールインを防ぐことができます。 しかし、スレッドが多いほど、実ストレージにすべてのスレッドを効率的に保存するために、オペレーティングシステムは頻繁にページングを実行する必要があります。
スレッドはサイズとタイプ、つまり永久的な共有ストレージとして事前に割り当てられているか、または GETMAIN
要求を介しているかに基づいてグループ化されます。 使用するスレッドグループの決定は、セッション初期化時に CICS トランザクションコードによって制御されます。 同一グループに属するストレージスレッドは、すべて同じサイズです。
スレッドはできるだけ小さく定義する必要があります。Natural の『ユーティリティ』ドキュメントで Natural ユーティリティ SYSTP
のバッファ使用統計機能も参照してください。 ただし、スレッドは最大サイズのセッションを保持できる大きさが必要です。
Natural 開発環境と実稼動環境が別にある場合は、実稼動環境では小さいスレッドを使用して(稼動要求にできるだけ速く対応するため)、開発環境では少数の大きいスレッドを使用します(Natural プログラマは通常、大きい Natural のサイズと長い "思考時間" を必要とするため)。
最初の Natural のセッションで、永久的な(共有)スレッドがすべて割り当てられます。
永久的なストレージスレッドは複数のユーザーによって共有され、GETMAIN
を介して割り当てられた大きいスレッドは、長期間保存しない方がよいため、Natural タスクによって端末 I/O ごとにスレッドが解放されます。 しかし以前は、端末 I/O が実行された後に Natural セッションを再スタートできるようにユーザーデータを保存する必要がありました。
セッションデータは、以下を使用して保存することができます。
ローカルロールバッファとロールファイルを含む Natural ロールサーバー
CICS ロール機能
Natural スワッププール
さまざまなコンポーネントのシナリオも参照してください。 詳細については、Natural の『オペレーション』ドキュメントの「ロールサーバー」を参照してください。
CICS ロール機能はローカルの CICS ストレージ機能です。 これらは、CICS のメインまたは補助の一時ストレージ、またはユーザーが以前 CICS に定義した VSAM 相対レコードデータセット(RRDS)です。 これらのファイルにより、ロールアウトの発生時に Natural はユーザーの圧縮した動的ストレージを格納することができます。
スワッププールを使用する場合は、CICS ロール機能はスワッププールのバックアップ機能のみを果たします。 Natural のパフォーマンスおよび処理能力に影響するため、スワッププールを使用しないときのロール媒体の選択は非常に重要です。
すべての CICS サービス要求により、CICS システムにオーバーヘッドが発生します。 このため、ロール機能の CISIZE
/レコードサイズが大きいほど、Natural セッションをロールするための CICS サービスコールが少なくなるため、CPU のオーバーヘッドは小さくなります。 一方で、CISIZE
/レコードサイズが大きいと、ロール機能に割り当てられる VSAM バッファスペースも大きくなります。
ロール機能の詳細については、「パフォーマンスの考慮事項」を参照してください。
注意: ロールサーバーを使用するときは、スワッププールおよび CICS ロール機能は利用できません。 |
Natural ローカルバッファプールには、Natural モジュールが Adabas または VSAM システムファイルからロードされた後は、Natural モジュールの実行およびコピー時にすべての Natural モジュールが含まれます。
ローカルバッファプールには、Natural プログラムのロード数を最小限にするために、十分なサイズが必要です。 しかしローカルバッファプールが大きすぎると、ストレージが浪費されて、ページングのオーバーヘッドが発生する場合があります。
ローカルバッファプールは GETMAIN
ストレージとして割り当てられます。つまり、CICS トランザクションサーバーのすべてのバージョンで EXEC CICS GETMAIN SHARED
、z/VSE 環境の CICS/VSE では GETVIS
要求です。 パーティションまたは関連する CICS DSA で、十分なストレージを利用できる必要があります。
Natural はグローバルバッファプールでも実行できるため、ローカルバッファプールはオプションです。グローバルバッファプールは、バッチモードの Natural(z/OS および z/VSE)または TSO 環境での Natural または IMS 環境での Natural(z/OS のみ)などの他の Natural 環境と共有することができます。
Natural スワッププールを使用すると、効率の悪いロール I/O を実行する代わりに、圧縮した Natural セッションをスレッドからメインストレージエリアに "スワップ" することができます。
スワッププールは GETMAIN
ストレージとして割り当てられます。つまり、CICS トランザクションサーバーのすべてのバージョンで EXEC CICS GETMAIN SHARED
、z/VSE 環境の CICS/VSE では GETVIS
要求です。 パーティションまたは関連する CICS DSA で、十分なストレージを利用できる必要があります。
スワップ管理のオプションは、Natural CICS ソースモジュール NCISCPCB
で、Natural プロファイルパラメータ BPI
を使用して設定します。
スワッププールのサイズ、名前、およびキャッシュサイズは、プロファイルパラメータ BPI
または Natural パラメータモジュール NATPARM
で対応するマクロの NTBPI
を使用して指定します。つまり、NCI 環境を初期化する Natural セッションに有効な NTBPI
または BPI
設定が使用されます。
スワッププールの詳細については、Natural の『オペレーション』ドキュメントの「Natural スワッププール」、および「CICS 環境での Natural スワッププールの使用」を参照してください。
スワッププールを使用できるのは、単一の CICS リージョンにおいて CICS 環境の Natural をローカルに実行している場合のみです。 しかし、このようなシナリオにおいても、ロールサーバーを代わりに使用する方がよい場合があります。ロールサーバーは CICS リージョンに対して非同期に実行されること、およびロールサーバーは、データスペースにおいてスワッププールより多くのロールバッファを提供できることがその理由です。 ロールサーバーを使用するときは、スワッププールおよびロール機能を CICS 環境で利用することはできません。
Natural CICS インターフェイスは、GETMAIN
が実行された永久的なストレージを記憶します。このストレージは、CICS のメイン一時ストレージの NCI システム制御レコードにおいて、EXEC CICS GETMAIN SHARED
、または OSCOR
/GETVIS
ストレージに対するオペレーティングシステムの GETMAIN
要求を介して取得されたストレージです。
これらのシステム制御レコードは次の 2 つの理由から保存されます。
システムリカバリ
すべての NCI 関連のストレージは NCI システムディレクトリに連鎖されているため、システム制御レコードを使用すると、ストレージ破損の場合にはストレージチェーンを再構築することができます。
NCI システムディレクトリモジュールの CICS NEWCOPY
の後に古い NCI システムをクリーンアップ
NCI システム環境の初期化時に NCI は既存のシステム制御レコードをチェックして、見つかった場合は、新しい環境をインストールする前に関連する永久的なストレージを解放します。
これらの制御レコードの CICS 一時ストレージキュー名は prefixXCR です。prefix は、Natural CICS コンポーネントに共通の接頭辞で(NCIPARM
生成パラメータ PREFIX
を参照)、X は 16 進値です。以下のようになります。
x'01' |
NCI システムディレクトリ拡張、共有スレッド(TYPE=SHR )、および第 2 の SIR ブロックに関する情報を保持するメインシステム制御レコード(NCMDIR 生成パラメータ USERS を参照)。
|
x'02' |
ファイル入力を介して取得した NCI 共有プロファイルパラメータに関する情報を保持するパラメータシステム制御レコード(NCIPARM 生成パラメータ PRMDEST を参照)。
|
x'03' |
潜在的なスワッププールを含む NCI 環境に属するすべてのローカルプールに関する情報を保持するプールシステム制御レコード。 |
重要:
NCI システム制御レコードにローカルの NCI 環境について記述されているため、これらの CICS メイン一時ストレージキューも CICS AOR に保存する必要があります。 これは、CICSPlex で Natural を実行する場合に特に当てはまります。
NCIPRM
マクロの DIRNAME
パラメータを介して明示的に指定されていない限り、Natural CICS インターフェイスシステムディレクトリモジュールの名前は、デフォルトで接頭辞 CB
になります(NCMPRM
マクロの PREFIX
パラメータを参照)。
NCIDIREX
出口インターフェイスは、ランタイムに Natural CICS インターフェイスのシステムディレクトリモジュールの名前を設定/変更します。 これにより、同じ NCI ドライバ/NCIPARM
を使用しながら、CICS システム ID、トランザクション ID などに応じて異なるシステムディレクトリモジュールにアクセスすることで、異なる NCI 環境(スレッドグループ/スレッドサイズなど)を使用することが可能になります。
ディレクトリモジュール名の最初の 5 文字も、対応する NCI 環境と関連した CICS 一時ストレージのキュー名の一部として使用されます。 このため、CICS リージョンで複数の Natural CICS 環境を実行する場合は、関連するシステムディレクトリモジュール名は最初の 5 文字が異っている必要があります。
NCIDIREX
インターフェイス出口は、標準のリンケージ規約を使用して呼び出されますが(レジスタ 13、14、15、および 1)、これに加えて、CICS サービスを呼び出す出口を有効にするために、CICS EIB および EISTG アドレスを保持しているレジスタ
4 および 5 も使用されます。
ソースモジュール XNCIDIRX
には、サンプルのシステムディレクトリモジュール名の出口が含まれています。
CICS リージョンごとに一意な 4 文字の CICS 端末 ID が、Natural CICS インターフェイスによってセッションキーの一部として使用されます(SIP サーバー、ロールサーバー、CICS 一時ストレージのキュー)。 Natural
との互換性のために、Natural CICS インターフェイスでは 8 文字のフィールドを使用します。 この NCI 端末 ID は、CICS 端末 ID に CICS システム ID を追加することにより、複数の CICS リージョン間で一意にすることができます(NCMPRM
マクロの UNITID
パラメータを参照)。
または、NCITIDEX
端末 ID 出口インターフェイスを使用して、その NCI 端末 ID を設定することができます。 CICS のために(一時ストレージキュー名など)、NCI 端末 ID の最初の 4 文字のみが使用されます。 このため、これらの 4 文字の文字列は一意でなければなりません。
NCITIDEX 出口インターフェイスは CICS 環境のセッションマネージャにとって、同じ物理端末で実行されている複数の Natural セッションを識別するために特に重要です。
NCITIDEX
出口によって設定された端末 ID は、Natural CICS インターフェイスによって "外部的" に使用され、Natural "内部" で使用する Natural システム変数 *INIT-ID
のデフォルトです (*INIT-ID
システム変数は、後で NCIUIDEX
/NATUEX1
ユーザー ID 出口インターフェイスによって変更することができます)。
NCITIDEX
インターフェイス出口は、標準のリンケージ規約を使用して呼び出されますが(レジスタ 13、14、15、および 1)、これに加えて、CICS サービスを呼び出す出口を有効にするために、CICS EIB および EISTG アドレスを保持しているレジスタ
4 および 5 も使用されます。
ソースモジュール XNCITIDX
には、サンプルの端末 ID 出口が含まれています。
論理端末 ID の最初の 4 文字が物理端末と一致しない場合、一部の Natural CICS インターフェイス機能は動作しません。
この結果、次のことができなくなります。
メッセージ交換を使用して論理端末にメッセージを送信することができません。
論理端末でセッションをフラッシュするために SYSTP
ユーティリティまたは NEP を使用することができません。
Natural の NATUEX1
ユーザー出口インターフェイスを使用すると、ユーザーが Natural を使用する権限、およびさまざまな Natural システム変数を設定する権限を与えられているかどうかを判断できます。
Natural ユーザーセッションが開始されると、NATUEX1
インターフェイス出口が標準のリンケージ規約を使用して呼び出されます(レジスタ 13、14、15、および 1)。
CICS 環境では、標準リンケージ規約は CICS サービスコールを発行し、かつ CICS コントロールブロックのアドレス可能度を取得するために十分ではありません。
そのため、Natural CICS インターフェイスでは CICS 環境における NATUEX1
インターフェイス出口としてロードモジュール NCIUEX1
を提供します。 このモジュールは CICS でアドレス可能度を設定し、NCIUIDEX
インターフェイス出口を呼び出します。この方法として、標準リンケージ規約(レジスタ 13、14、15、および 1)を使用するのに加え、他のレジスタ R4(EIB
)、R5(EISTG
)、R6(TCTTE
)で CICS 関連のアドレスを渡します。
このように、CICS 環境のアドレス可能度を必要とする要求を発行する場合は、標準の NATUEX1
インターフェイスではなく、NCIUIDEX
ユーザー ID の出口インターフェイスを使用する必要があります。
ソースモジュール XNCIUIDX
には、サンプルのユーザー ID 出口が含まれています。
重要:
新しい CICS リリースをインストールするたびに、NCIUIDEX
インターフェイス出口を再アセンブルしてリンクする必要があります。
次のトピックについて説明します。
対応するオプションに "1" を指定することによって、ドライバに固有のオプションに対してダイナミックパラメータ TPF=(TPF1,TPF2,TPF3,TPF4,TPF5,TPF6,TPF7,TPF8)
を設定することができます。
サポートされるオプションは、以下のとおりです。
TPF1 |
DCI を介してではなく、TWA および CICS COMMAREA の Adabas パラメータを指定した EXEC CICS LINK を介して、Adabas リンクモジュールを起動します。
CEDF を介して Adabas 関連の問題のデバッグを有効にします。 |
TPF2 |
Natural スワッププール全体をダンプします。 このパラメータ設定では、Natural スワッププール全体が CICS トランザクションダンプに含まれます。 |
TPF3 |
Natural バッファプール全体をダンプします。 このパラメータ設定では、Natural バッファプール全体が CICS トランザクションダンプに含まれます。 注意: |
TPF4 |
EDITOR バッファプール全体をダンプします。
このパラメータ設定では、EDITOR バッファプールが CICS トランザクションダンプに含まれます。 |
TPF6 |
NCI で端末 I/O エラーを処理します。
このパラメータ設定では、NCI は端末 I/O エラーに関して Natural に制御を渡さずに、エラーを単独で処理します。この結果、エラーメッセージ |
TPF7 |
NCI システムエラーの場合に強制的に異常終了します。
このパラメータ設定では、エラーメッセージ |
0
を指定すると(省略可)、対応するオプションは設定されません。以下に例を挙げます。
TPF=(0,0,0,1)
は、TPF=(,,,1)
と同じ意味です。
Natural を開始するダイナミックパラメータ文字列の最初の 5 文字が ASYN,
の場合、セッションが端末内かどうかに関係なく、Natural CICS インターフェイスは常に非同期 Natural セッションを設定します。
これはテスト目的の場合、特に EDF または他のデバッグ用ツールがインストールされている場合に役に立ちます。
Natural トランザクションは、すべて 128 バイトの TWA サイズで定義されますが、Natural CICS インターフェイスは、CICS トランザクションワークエリア(TWA)の最初の 88 バイトだけを使用して、Natural で以下の機能を処理します。
Adabas で Adabas パラメータリスト(32 バイトまで)を呼び出す。Natural CICS インターフェイスは、Adabas を呼び出す前に TWA の内容を保存して Adabas を呼び出した後に復元します。
外部プログラムでパラメータリストのアドレスポインタ(20 バイトまで。Natural の CALL
ステートメントを参照)を呼び出す。Natural CICS インターフェイスは、外部プログラムを呼び出す前に TWA の内容を保存して、外部プログラムを呼び出した後に TWA の呼び出し部分を復元します。
終了メッセージおよび潜在的な終了データ(80 バイト。Natural の『オペレーション』ドキュメントの「バックエンドプログラム呼び出し規則」を参照)のためにバックエンドプログラムを起動する。
セッション終了時の終了メッセージおよび潜在的な終了データ、および、Natural ダイアログステップの終了時に低い値に完全にリセットされる終了メッセージエリア(セッション終了時およびダイアログステップの終了時に 80 バイト)のために、"LINK" フロントエンドの呼び出し元に制御を返す。
CICS タスク開始時に LE 情報を渡す(タスク開始時に 88 バイトまで)。
ユーザープログラム(フロントエンド、バックエンド、呼び出された外部プログラム)で CICS TWA を利用して Natural とは別に通信を行うこともできますが、ユーザープログラムでは Natural で使用する TWA の部分を使用しないでください。このような場合は、Natural トランザクションの TWA のサイズを増加して、最初の 128 バイト以外の TWA の部分を使用することをお勧めします。