19.1.5 外部属性を持つデータ項目の共用
COBOLプログラムで定義した外部属性を持つデータ項目をCプログラムと共有する方法を,次に示します。
なお,外部属性を持つデータ項目の共有属性については,「4.2.2 外部属性(EXTERNAL句)」を参照してください。
- COBOLプログラム
: DATA DIVISION. WORKING-STORAGE SECTION. 01 EXTREC IS EXTERNAL. ………… EXTERNAL領域定義 02 EXT-REC1 PIC S9(9) USAGE COMP. 02 EXT-REC2 PIC S9(4) USAGE COMP. 02 EXT-REC3 PIC X(14). :
- Cプログラム
struct extarea{ int ext_rec1; short ext_rec2; char ext_rec3[14]; }; int sample2() { extern struct extarea EXTREC; ……… 外部参照宣言 if (EXTREC.ext_rec1 == 1){ EXTREC.ext_rec2 = 2; } return(0); }
COBOLプログラムで外部属性を持つデータ項目を指定した場合,Cプログラムからこれを参照,更新できます。このときの注意事項を次に示します。
-
Cプログラムで参照する外部変数名には,COBOLプログラムで定義したデータ項目の名称を使用してください。ただし,-EquivRule,NotAnyオプションが指定されていない場合,COBOLプログラム中のデータ項目名に英小文字を用いると英大文字に変換されるので,外部変数名に英小文字は使用できません。
また,外部変数名には,2バイトコードや,ハイフン(-),下線(_),#なども使用できません。
-
COBOLプログラム内で定義するデータ項目の名称は,最外側のプログラム名と異なる名称にしてください。
-
Cプログラムとの間では,EXTERNAL句による属性チェックはされません。このため,Cプログラムで外部属性を持つデータ項目の参照,および更新する場合,各データ項目の属性,位置,サイズを同じにする必要があります。
-
EXTERNAL句にINDEXED BY指定をした場合,Cプログラムからの参照や更新はできません。
-
EXTERNAL句にDYNAMICを指定した場合,Cプログラムからの参照や更新はできません。
-
外部属性を持つデータ項目が日本語の場合,Cプログラムからの参照や更新はできません。