CALL(呼ぶ)文は,実行単位中のあるプログラムから他のプログラムヘ制御を移す.
【書き方1】
【書き方2】
(1) |
定数-1は,文字定数でなければならない.定数-1は,プログラム名の構成規則に従わなければならない. |
(2) |
一意名-1は,プログラム名を値とすることができるような英数字データ項目として定義しなければならない.一意名-1の値は,プログラム名の構成規則に従わなければならない.
|
(3) |
USING指定の中の各作用対象は,ファイル節,作業場所節又は連絡節の中のデータ項目として定義され,レベル番号01のデータ項目,レベル番号77のデータ項目,又は基本データ項目でなければならない.
|
(4) |
USING指定の作用対象に記述する内部ブール項目は,バイト境界から始まっていなければならない. |
(1) | 定数-1又は一意名-1のデータ項目の内容は,呼ばれるプログラムの名前とする. CALL文を書いたプログラムは,呼ぶプログラムとする.呼ばれようとするプログラムがCOBOLプログラムならば,定数-1又は一意名-1のデータ項目の内容は,呼ばれるプログラムのプログラム名段落に書かれたプログラム名を含まなければならない. |
||||||||||
(2) | CALL文が実行されたとき,CALL文によって指定されたプログラムが実行可能となるならば,制御は呼ばれるプログラムに移る.制御が呼ばれるプログラムから戻った後,ON OVERFLOW 指定又はON EXCEPTION指定が書かれていても無視され,制御は, CALL文の終わり又はNOT ON EXCEPTION指定が書かれていれば無条件文-2に移る.制御が無条件文-2に移ると,無条件文-2に指定された各文の規則に従って,実行が続けられる.制御の明示移行を起こす手続き分岐文又は条件文を実行すると,その文の規則に従って制御が移る.そうでなければ,無条件文-2の実行を完了し,制御はCALL文の終わりに移る. |
||||||||||
(3) | CALL文が実行されたとき,CALL文によって指定されたプログラムが実行不可能であると判断されるならば,以下に示す二つの動作のうちの一つが起こる.
|
||||||||||
(4) | 実行単位の二つ以上のプログラムは,同じプログラム名をもってよい.また,そのようなプログラム名のCALL文での参照は,プログラムに対する名前の範囲の規則によって解決される.
|
||||||||||
(5) | 呼ばれるプログラムが初期化属性をもたないならば,それ及びその中に直接又は間接に含まれる各プログラムは,実行単位で最初に呼び出された時及びその呼ばれるプログラムの取り消し後最初に呼び出された時,その初期化状態である.
|
||||||||||
(6) | 呼ばれるプログラムが初期化属性をもつならば,それ及びその中に直接又は間接に含まれる各プログラムは,実行単位の中でその呼ばれるプログラムが呼び出される時は,いつでも初期化状態に置かれる. |
||||||||||
(7) |
そのプログラムが初期状態のとき,呼ばれるプログラムの内部ファイル結合子に関連するファイルは,開かれた状態でない. |
||||||||||
(8) | 呼ぶプログラムの呼ぶ処理又は呼ばれるプログラムから戻る処理は,外部ファイル結合子に関連するファイルの状態又は位置付けを変更しない. |
||||||||||
(9) | 呼び出されようとするプログラムがCOBOLプログラムならば,そのUSING指定は,呼ばれるプログラムの手続き部の見出し又はENTRY文にUSING指定がある場合だけ, CALL文に記述できる.そのような場合,各USING指定の作用対象の数は,同一でなければならない. |
||||||||||
(10) | CALL文のUSING指定中のデータ名及び呼ばれるプログラムの手続き部の見出しの対応するUSING指定中のデータ名又はENTRY文のUSING指定中のデータ名の出現順序は,呼ぶプログラム及び呼ばれるプログラムによって使用されるデータ名の間の対応を決める.この対応は,位置によるものであり,名前によるものではない.すなわち,一方のUSING指定の最初のデータ名が他方の最初のデータ名と,二番目のデータ名が二番目のデータ名というように対する. |
||||||||||
(11) | CALL文のUSING指定で参照されるパラメタの値は,そのCALL文が実行された時に呼ばれるプログラムで有効となる. |
||||||||||
(12) | BY CONTENT指定とBY REFERENCE指定の両方は,それらに続くパラメタに対して,別のBY CONTENT指定又はBY REFERENCE指定が現れるまで有効である.BY CONTENT指定及びBY REFERENCE指定の両方が,最初のパラメタの前に記述されなければ,BY REFERENCE指定が書かれたものとみなす. |
||||||||||
(13) | BY REFERENCE指定がパラメタに対して明に暗に記述された場合,その実行用プログラムは,呼ばれるプログラムの対応するデータ項目が呼ぶプログラムのデータ項目と同じ記憶領域を占有するかのように作用する.呼ばれるプログラムでの対応するデータ項目の記述によって記述される文字位置の個数と同じに記述しなければならない. |
||||||||||
(14) |
BY CONTENT指定がパラメタに対して明に記述された場合,その呼ばれるプログラムは,そのCALL文のUSING指定で参照されるパラメタの値を変更することはできないけれども,その呼ばれるプログラムは,呼ばれるプログラムの手続き部の見出し中又はENTRY文の対応するデータ名によって参照されるデータ項目の値を変更してよい. CALL文のBY CONTENT指定での各パラメタのデータ記述は,手続き部の見出しのUSING指定での又はENTRY文の対応するパラメタのデータ記述と,変換,拡張又は切捨てがないという意味において同じでなければならない. |
||||||||||
(15) | 呼ばれるプログラムは,CALL文を含んでよい.しかしながら,呼ばれるプログラムは,呼ぶプログラムを直接又は間接に呼ぶCALL文を実行してはならない.CALL文が宣言部の並びの中で実行されるならば,そのCALL文は制御が渡されていて実行が完全に終わっていない呼ばれるプログラムを直接又は間接に参照できない. |
||||||||||
(16) |
END-CALL指定は,CALL文の範囲の区切りである. |
||||||||||
(17) | 呼ばれるプログラムの手続き部の先頭に制御を移すためには,定数-1又は一意名-1の値として呼ばれるプログラムのプログラム名を指定する.
|
||||||||||
(18) | USING指定の作用対象として01レベル以外の集団項目を記述する場合で,その集団項目に従属する項目に用途が計算用(COMPUTATIONAL)又は2進(BINARY)でしかもSYNCHRONIZED指定が記述されている項目があるとき,その集団項目の左端を計算機の記憶装置の固有の境界に合わせるのは利用者の責任である. |
||||||||||
(19) | 同じ大域名を参照できるプログラムを呼び出すCALL文のUSING指定に,その大域名を書いてはならない. |