3.2.1 プログラム定義
プログラム定義は,見出し部でプログラム名段落を指定して定義します。COBOL85で記述されたプログラムは,COBOL2002のプログラム定義に該当します。
プログラム名段落の言語仕様については,マニュアル「COBOL2002 言語 標準仕様編」 「7.8 プログラム名段落(PROGRAM-ID)」を参照してください。
プログラム定義には,最外側のプログラムと内側のプログラムがあります。
-
ほかのプログラムに含まれないプログラムです。
最外側のプログラムでは,プログラム名段落に指定したプログラム名称が,オブジェクトファイル中に外部参照として出力されます。このため,ほかの翻訳単位のプログラム(COBOL言語以外を含む)から呼び出せます。
最外側のプログラムは,複数の内側のプログラムを含むことができます。
-
ほかのプログラムに含まれるプログラムです。
内側のプログラムは,そのプログラムを呼び出せる位置にある最外側のプログラム,または内側のプログラムから呼び出せます。また,プログラム名段落で指定したプログラム名称が,オブジェクトファイル中に外部参照として出力されないため,別の翻訳単位のプログラムからは呼び出せません。
内側のプログラムは,複数の内側のプログラム(入れ子のプログラム)を含むことができます。
一つの翻訳グループ中には,複数の最外側のプログラムを記述できます。この翻訳グループを翻訳する場合,スタックコンパイル(連続コンパイル)が実行されます。翻訳グループに複数の最外側のプログラムおよび内側のプログラムを記述した場合の翻訳単位の考え方を次に示します。
- 内側のプログラム(1),(2)
-
内側のプログラム(3)に直接含まれる内側のプログラムです。
- 内側のプログラム(3),(4)
-
最外側のプログラム(5)に直接含まれる内側のプログラムです。
- 最外側のプログラム(5),(6)
-
翻訳グループ(SAMPLE1.CBL)に含まれる最外側のプログラムです。
このプログラム定義では,一つの翻訳グループ(SAMPLE1.CBL)に二つの最外側のプログラム(最外側のプログラム(5),(6))が含まれているので,コンパイラを1回起動すると,1回のスタックコンパイルによって二つの翻訳単位がコンパイルされます。