変数引数(参照渡し)

副プログラムの実引数に変数を書いたとき,仮引数は実引数と同じ記憶場所を指す。
従って,副プログラム内で仮引数の値を変更すると,CALL文の実行後,実引数の値も変更される。


100 DECLARE EXTERNAL SUB exchange
110 LET a=1
120 LET b=2
130 CALL exchange(a,b)
140 PRINT a,b
150 END
200 EXTERNAL SUB exchange(x,y)
210 LET t=x
220 LET x=y
230 LET y=t
240 END SUB

 引数が変更されないようにしたいときは,引数を括弧で括るなどして変数として解釈されないようにする。
例 130 CALL exchange((a),(b))

◇関数定義では,仮引数の記憶場所は必ず実引数と別の場所に取られる。したがって,関数定義では実引数に変数を書いても値が変更されることはない。