DEFで定義している関数X2の引数に使用しているローカル変数Aは数値変数なので文字列を与えたら「Type mismatch」エラーが出ると思う人もいるでしょう。 しかし、実際は"123123"という値を返し、ローカル変数Aは文字列変数として解釈されています。 つまり、引数に使われる変数は記述した時点では型が決まらず、代入された時点で決まるということです。 X2関数を次のように書き換えました。 DEF X2 A OUT B  B=A*2 END この場合は戻り値であるBも引数Aによって型が決まります。 したがって、引数がX2 123 OUT B のように引数が数値である場合は戻り値を入れる変数は数値変数にする必要があります。 同じ関数で引数を文字列にした場合には戻り値は文字列になるため X2 "123" OUT B$ のように戻り値には文字列変数を使う必要があります。