COBOL 連絡節と特定グループ項目の項目の中には、他の言語から直接アクセスできないものがあります。以前は、これらの項目に他のマネージ言語からアクセスするには、中間ラッパ・コードを作成するかまたは元の COBOL コードを変更する必要がありました。ILSMARTLINKAGE 指令を使用してコンパイルすることで、連絡節とエントリ・ポイントを他のマネージ言語に公開できるようになりました。
例えば、COBOL グループ項目は次のように定義できます。
linkage section. 01 lnk-b-details. 03 lnk-b-stockno pic x(4). 03 lnk-b-retail pic 99v99. 03 lnk-b-onhand pic 9(5).
ILSMARTLINKAGE 指令によって各グループ項目のクラスが作成され、下位レベルのデータ項目がクラスのメンバとして公開されます。これらのデータ項目は、ハイフンの削除とそれに続く大文字によって公開されます。また、COBOL ネイティブ・タイプをマネージ・タイプとして公開します。さらに、そのグループのデータ項目にクラスのプロパティとしてアクセスできます。次に例を示します。
lnkBDetails.setlnkBStockno lnkBDetails.getlnkBStockno
ILCUTPREFIX 指令を使用してコンパイルすることで、グループ項目名からプレフィックスを削除できます。例えば、ILCUTPREFIX(lnk-b) を使用してコンパイルすると、lnk-b-details が Details として公開され、次のようにデータ項目にアクセスできます。
Details.setStockno Details.getStockno
要約すると、次のようにグループ項目を公開します。
次の COBOL プログラムは、ILSMARTLINKAGE、ILCUTPREFIX(lnk-b-)、および ILCUTPREFIX(lnk-) でコンパイルされます。
program-id. BookLegacy.
...
linkage section.
01 lnk-function pic x.
01 lnk-b-details.
03 lnk-b-text-details.
05 lnk-b-title pic x(50).
05 lnk-b-type pic x(20).
05 lnk-b-author pic x(50).
03 lnk-b-stockno pic x(4).
03 lnk-b-retail pic 99v99.
03 lnk-b-onhand pic 9(5).
procedure division using by value lnk-function
by reference lnk-b-details.
Java では、次のように JVM マネージ COBOL で BookLegacy プログラムのデータにアクセスできます。
BookLegacy myBook = new BookLegacy();
//creates an object corresponding to the BookLegacy program
Details myDetails = new Details();
//creates an instance corresponding to the group lnk-bdetails
. . .
myDetails.setStockno("6666");
myDetails.setTitle("Managed COBOL");
myDetails.setAuthor("Mike Focus");
myDetails.setType("Reference");
myDetails.setRetail(new ScaledInteger(155, 5));
myDetails.setOnhand(20);