COBOL2002 言語 拡張仕様編
- 形式
- 機能
- 呼び出し先プログラムの入口点を指定する。
- 構文規則
- 原始プログラムが入れ子になっているとき,ENTRY文を書いてはならない。
- 定数は,プログラム名の構成規則に従った英数字定数でなければならない。プログラム名の構成規則は,マニュアル「COBOL2002 言語 標準仕様編 7.8 プログラム名段落(PROGRAM-ID)」を参照のこと。
- 定数は,プログラム名段落で指定したプログラム名と同一であってはならない。
- 一つの実行単位を構成する幾つかのプログラムのプログラム名および入口名はそれぞれ一意でなければならない。
- プログラムの手続き部見出しにRETURNING指定があるプログラムに,ENTRY文を書いてはならない。ENTRY文はプログラム定義にだけ指定できる。
- 一般規則
- 定数は,呼び出し先プログラムの入口点の名前を指定する。
呼び出すプログラムのCALL文で渡された制御は,呼び出し先プログラムの入口点がENTRY文で指定してあるとき,このENTRY文のすぐ後に続く文に移る。
- USING指定は,呼び出し先プログラムを参照するデータ項目を指定する。規則は,マニュアル「COBOL2002 言語 標準仕様編 10.1.1 一般形式」を参照のこと。
(例)
(呼び出し元プログラム)
DATA DIVISION.
:
WORKING-STORAGE SECTION.
01 A PIC X(2).
01 B PIC 9(3).
01 C.
05 D PIC X.
05 E PIC 9(5).
01 F.
05 G OCCURS 10 INDEXED H PIC X(4).
PROCEDURE DIVISION.
:
U. CALL 'SUB1' USING B C. …(1)
:
V. CALL 'SUB2' USING A F. …(2)
- (呼び出し先プログラム)
DATA DIVISION.
:
LINKAGE SECTION.
01 K PIC 9(3).
01 L PIC X(2).
01 M.
05 N OCCURS 10 INDEXED O PIC X(4).
01 P.
05 Q PIC X.
05 R PIC 9(5).
PROCEDURE DIVISION.
:
X. ENTRY 'SUB1' USING K P. …(3)
:
Y. ENTRY 'SUB2' USING L M. …(4)
- 上の例で,(1)のCALL文を実行すると,制御は呼び出し先プログラムの入口点'SUB1'に移る(3)。呼び出し先プログラムの手続き部で連絡中のK,P,Q,Rを参照すると,それは呼び出し元プログラムのB,C,D,Eをそれぞれ参照するのと同じ効果を持つ。
- (2)のCALL文を実行すると,制御は呼び出し先プログラムの入口点'SUB2'に移る(4)。このとき,呼び出し先プログラムの手続き部で連絡中のL,M,Nを参照すると,それは呼び出し元プログラムのA,F,Gをそれぞれ参照するのと同じ効果を持つ。ただし,連絡節中の指標名Oが指す指標は,呼び出すプログラム中の指標名Hが指す指標名と同じではない。
- プログラム中で,書いたとおり上から下への順序でまたはGO TO文などでENTRY文に制御が移った場合,何も行われずにENTRY文の次の文に制御が移る。
- 呼び出し先プログラムの入口点が手続き部分の先頭のときは,ENTRY文を指定する必要はない。
- ENTRY名称を指定したCANCEL文を実行しても,何もしない。制御は,明示的なCANCEL文に続く次の実行文に移る。
- ENTRY文の記述があるソースファイルに,-Mainオプションを指定しても,ENTRYに制御は渡らない。
- 【標準仕様との関連】
- COBOL2002 言語 標準仕様編 7.8 プログラム名段落(PROGRAM-ID)
- COBOL2002 言語 標準仕様編 10.1.1 一般形式
All Rights Reserved. Copyright (C) 2003, 2013, Hitachi, Ltd.