ネストされた COBOL プログラムおよび PL/I 外部ルーチンのサポート

DB2 ECM では、ネストされた COBOL プログラムおよび PL/I 外部ルーチンがサポートされますが、場合によっては、追加の DB2 コンパイラ指令オプションの指定が必要になります。

ネストされていない COBOL プログラムの場合、BND ファイルの形式の DB2 インターフェイス コードが生成され、DB2 LUW パッケージにバインドされます。BND およびパッケージ ファイルのベース名は、どちらもデフォルトではソース ファイルのベース名になります。このベース名は、PACKAGE 指令を使用して代替名を指定することでオーバーライドできます。詳細については、「PACKAGE」を参照してください。

ネストされたプログラムの場合は、次の DB2 ECM 指令のいずれかを使用して、単一のソース ファイルに対する DB2 インターフェイス コードの生成方法を定義できます。これらの指令は相互に排他的であり、特定のソース ファイルに対していずれか 1 つしか指定できません。

SINGLE_PACKAGE
これがデフォルトの動作です。ソース ファイルで定義されているすべてのプログラムに対して、単一の BND ファイルが作成されます。したがって、単一のパッケージがバインドされて DB2 LUW データベースに格納されます。パッケージ内のプログラムはすべて同じ DB2 LUW パッケージにバインドされるため、すべてのプログラムがメイン プログラムと同じ BIND タイムスタンプ トークンを共有します。BND およびパッケージ ファイルの名前は、ネストされていないプログラムと同じ命名規則に従います。この指令の使用の詳細については、「SINGLE_PACKAGE」を参照してください。
重要: 特定のパッケージ内のプログラム間で共有されるカーソルは、そのパッケージ内において一意の名前で定義する必要があります。
MULTI_PACKAGE
指定すると、デフォルトの SINGLE_PACKAGE の動作がオーバーライドされます。ソース ファイルで定義されている各プログラムに対して、それぞれ独自の BIND タイムスタンプ トークンを持つ個別の BND ファイルと対応するパッケージが作成されます。

生成される BND ファイルおよびパッケージの名前は、PACKAGE 指令で MULTI_PACKAGE のほかにもパラメーターを指定したかどうかによって異なります。

例 1:MULTI_PACKAGE を指定して DEMO.cbl をコンパイル

生成される BND およびパッケージ ファイルの名前は、ネストされた各プログラムのプログラム ID に基づきます。メイン プログラムの BND ファイルおよびパッケージの名前は、ソース ファイルのベース名に基づきます。

プログラム ID 生成される BND ファイルの名前 生成されるパッケージの名前
MAIN DEMO DEMO
SUB1 SUB1 SUB1
SUB2 SUB2 SUB2

例 2:MULTI_PACKAGE および PACKAGE=TEST を指定して DEMO.cbl をコンパイル

BND ファイルおよびパッケージの名前は、次のようにパッケージ名を含む名前に変更されます。

プログラム ID 生成される BND ファイルの名前 生成されるパッケージの名前
MAIN DEMO TEST
SUB1 TESTSUB1 TESTSUB1
SUB2 TESTSUB2 TESTSUB2

この指令の使用の詳細については、「MULTI_PACKAGE」を参照してください。

IGNORE-NESTED
ソース ファイルのメイン プログラムに EXEC SQL 文が含まれている場合や 1 つのネストされたプログラムにのみ EXEC SQL 文が含まれている場合は、IGNORE-NESTED 指令を使用して、ソース ファイル内の他のプログラムに対する DB2 インターフェイス コードの生成を抑制できます。

EXEC SQL 文を使用するネストされたプログラムがソース ファイルに複数ある場合は、プログラム ID を指定して IGNORE-NESTED を指定できます。プログラム ID を指定すると、そのプログラムが検出された時点で、そのプログラムのみについて DB2 インターフェイス コードの生成が開始されます。生成される BND およびパッケージ ファイルのベース名は、指定したプログラム ID と同じになります。

EXEC SQL 文を使用するネストされたプログラムがソース ファイルに複数ある場合にプログラム ID を指定せずに IGNORE-NESTED を指定すると、プログラム ID がソース ファイルのベース名と一致するプログラムが DB2 ECM で特定されます。この場合、生成される BND およびパッケージ ファイルのベース名は、ソース ファイルのベース名と同じになります。

この指令の使用の詳細については、「IGNORE-NESTED」を参照してください。

注: PACKAGE 指令でパラメーターを指定して、BND およびパッケージ ファイルのベース名をオーバーライドすることもできます。
注: これらの各指令には同じ機能を提供する同意語があり、代わりに使用できます。
指令 同意語
PACKAGE ACCESS
SINGLE_PACKAGE MULTI-NESTED
MULTI_PACKAGE ALLOW-NESTED