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