Rational Developer for System z
COBOL for Windows バージョン 7.5 プログラミング・ガイド


CICS での動的呼び出し

CICS 環境では、CALL identifier ステートメントを使用して、 動的呼び出しをすることができます。 ただし、COBPATH 環境変数を正しく設定する必要があります。

以下では、alpha が CICS ステートメントを含む COBOL プログラムである例を考えます。

WORKING-STORAGE SECTION.
01  WS-COMMAREA   PIC 9    VALUE ZERO.
77   SUBPNAME     PIC X(8) VALUE SPACES
. . .
PROCEDURE DIVISION.
    MOVE 'alpha' TO SUBPNAME.
    CALL SUBPNAME USING DFHEIBLK, DFHCOMMAREA, WS-COMMAREA.

CICS 制御ブロック DFHEIBLK および DFHCOMMAREA (上記に示される) を alpha に渡す必要があります。 alpha のソースはファイル alpha.ccp 内にあります。コマンド cicstcl は、alpha.ccp の変換、コンパイル、およびリンクに使用されます。

TXSeries では、cicstcl コマンドによって alpha.ibmcob という DLL が作成されます。 alpha.ibmcob が常駐するディレクトリーは、COBPATH 環境変数に組み込む必要があります。また、次のことを行う必要もあります。

DLL の考慮事項: 1 つ以上の COBOL プログラムを含む DLL がある場合、これを同じ CICS トランザクション内の複数の実行単位で使用することはできません。 これを行うと、予測不能な結果が生じます。 次の図は、2 つの異なる実行単位から同一のサブプログラムが呼び出された場合の CICS トランザクションを示しています。

この図は、2 つの異なる実行単位から呼び出されるサブプログラムを示しています。

プログラム A と B はプログラム C の同一コピーを共用するため、コピーの状態が変化すると両方に影響を与えます。

CICS 環境では、実行単位内で初回呼び出し時にのみ、DLL 内のプログラムが初期化 (WSCLEARコンパイラー・オプションと VALUE 文節の両方の初期化) されます。 1 つの COBOL サブプログラムが複数回呼び出される場合、呼び出し元のメインプログラムが同一であってもなくても、サブプログラムは初回呼び出し時にのみ初期化されます。それぞれのメインプログラムからの初回呼び出し時に、サブプログラムを初期化する必要がある場合は、 サブプログラムの個々のコピーを各呼び出し側プログラムと静的にリンクします。呼び出しのたびにサブプログラムを初期化する必要がある場合は、次のいずれかの方法を使用してください。


ご利用条件 | フィードバック

Copyright IBM Corporation 1996, 2008.
このインフォメーション・センターでは Eclipse テクノロジーが採用されています。(http://www.eclipse.org)