18.3.1 COBOLプログラムを主プログラムとして動作させる場合
COBOL主プログラムは,制御プログラムから直接呼ばれる場合と,制御プログラムから間接的に呼ばれる場合(他言語のプログラムから呼ばれる場合)があります。それぞれの場合の動作の違いを,次に示します。
(1) 制御プログラムから直接呼ばれる場合(アプリケーションの主プログラムの場合)
制御プログラムから直接呼ばれるCOBOL主プログラムを作成するには,-Main,Systemまたは-Main,V3オプションを指定してプログラムをコンパイルします。
-Main,Systemまたは-Main,V3オプションを指定してコンパイルしたCOBOL主プログラム(-Mainオプションが指定されたプログラム)には,スタートアップルーチン※が組み込まれます。制御プログラムからCOBOL主プログラムを呼び出す場合は,まず制御プログラムからスタートアップルーチンが呼ばれ,スタートアップルーチンからCOBOL主プログラムの手続きへと制御が移ります。
- 注※
-
スタートアップルーチンとは,main関数またはWinMain関数を含むCOBOL2002の実行時ライブラリのことです。
COBOLプログラムが制御プログラムから直接呼ばれる場合の例を次に示します。
(2) 制御プログラムから間接的に呼ばれる場合
制御プログラムから間接的に呼ばれるCOBOL主プログラムを作成するには,-Main,Systemおよび-Main,V3オプションを指定しないで,プログラムをコンパイルします。
-Main,Systemおよび-Main,V3オプションを指定しないでコンパイルしたCOBOL主プログラムには,スタートアップルーチンが組み込まれません。この場合,制御プログラムからはスタートアップルーチンに代わる主プログラムが呼ばれ,主プログラムからCOBOL主プログラムが呼ばれます。
COBOLプログラムが制御プログラムから間接的に呼ばれる場合の例を次に示します。
(3) 注意事項
COBOLプログラムでGOBACK文を実行すると,STOP RUN文と同様にプロセスを終了します。したがって,COBOL主プログラムを呼んだプログラムが制御プログラムでないとき,呼び出し元のプログラムには制御が戻りません。