参照渡しのパラメータ (2)
パラメータは毎回参照によって渡す必要のないことを示します。例えば、プロシージャで複数の結果を返したい場合は、以下が可能です。
-
参照渡しの使用法 :参照によって複数の変数を渡し、プロシージャで、それぞれが特定の結果を持つ変数を作成します。
-
値渡しの使用法 :区切り文字列や結果リストを返す関数としてのプロシージャを記述します。
他の例としては、num を 2 倍にする場合、dblbyref1 プロシージャで参照渡しを使用します。あるいは、dblbyval プロシージャを使用して set num=$$dblbyval(num) と記述しても同じ結果を取得できます。
最後に、プロシージャに配列を渡す場合は、必ず参照渡しする必要があります。
passbyref.mac のコードは以下のとおりです。
passbyref ; passing parameters by value and reference
; pass by value
read !, "Enter a number: ", num
set dblnum = $$dblbyval( num )
write !, num, " doubled is: ", dblnum
; num passed IN and OUT by reference
write !, num
do dblbyref1( .num )
write " doubled is: ", num
; num passed IN by value
; result passed OUT by reference
do dblbyref2(num, .result)
write !, num, " doubled again is: ", result
quit
dblbyval(anynum) PUBLIC
{ quit anynum * 2 }
dblbyref1(anynum) PUBLIC
{ set anynum = anynum * 2
quit }
dblbyref2(anynum, double) PUBLIC
{ set double = anynum * 2
quit }