17.1.1 引数の受け渡しの種類
プログラム間で引数を受け渡す場合は,CALL文のUSING指定を,メソッドを呼び起こす場合は,INVOKE文のUSING指定を,それぞれ使用します。
- 引数の受け渡しの種類
-
引数の受け渡しには,次の3種類があります。受け渡しの種類の指定を省略した場合は,BY REFERENCEが仮定されます。
引数の受け渡しの種類
データの渡し方
仮引数の更新
BY REFERENCE
参照渡し
実引数に反映される。
BY CONTENT
内容渡し
実引数に反映されない。
BY VALUE
値渡し
実引数に反映されない。
それぞれの受け渡し方法の違いについて,次に説明します。
- 参照渡し(BY REFERENCE指定)
-
呼び出し元プログラムのデータ項目を直接参照するアドレスを,呼び出し先プログラムに渡します。呼び出し先プログラムでデータ項目の値を変更すると,呼び出し元プログラムのデータ項目にも反映されます。
- 内容渡し(BY CONTENT指定)
-
呼び出し元プログラムのデータ項目の内容を一時領域に転記し,転記後のデータ項目を参照するアドレスを呼び出し先プログラムに渡します。呼び出し先プログラムでデータ項目の値を変更しても,呼び出し元プログラムのデータ項目には影響しません。
- 値渡し(BY VALUE指定)
-
呼び出し元プログラムのデータ項目の値を,呼び出し先プログラムに渡します。呼び出し先プログラムでデータ項目の値を変更しても,呼び出し元プログラムのデータ項目には影響しません。
引数を値渡しする場合は,呼び出し元プログラムのデータ項目と呼び出し先プログラムのデータ項目での型の対応に注意する必要があります。