[DEF FN] コマンド

利用者定義関数を指定します。
文法 DEF FN<名前>[(<パラメータリスト>)] = <関数の定義式>
文例  DEF FNA( X, Y) = X*2 + Y*3
    DEF FNMENSEKI( R) = 3.14159* R*R
DEF FNは、利用者が使うことのできる関数を定義する命令です。
定義する関数は、数値関数、文字関数、その混在のいずれでもかまいません。
DEF FNは、プログラム中でしか実行することはできません。

<名前>はBASICの変数名として正しい形をしたものでなければなりません。
関数の型は<名前>の型となり、[変数の型] と同じ扱いです。
FNA$(S$)は文字型、FNB#(X)は倍精度型、DEFINT I-N の下にFNK(I)は整数型です。

<パラメータリスト>には、<関数の定義式>の中で使われている変数と
おなじ名前の変数を用います。
この変数名は<関数の定義式>を評価する際にのみ有効なものであり、
プログラム中に同一名の変数があってもかまいません。

<関数の定義式>は、その関数の演算内容を記述する式で、
1行の範囲(255バイト以内)に限られます。
定義した関数は「FN名前(変数リスト)」という形で呼び出して使います。
定義したときの変数は仮のものであるため、呼び出すときにはその時々で
必要な変数に変えて指定することができます。
ただし、変数の型は同一でなければなりません。

DEFINT I-Nの下に、DEF FND#(K)=K*K の場合、FND$(3.14159)と使用しても、
パラメータ(仮引数)Kは整数で、K=3.14159=3として入ります。

注意:DEF FNの<関数の定義式>中で使われている変数が<パラメータリスト>内にない場合は、
その変数がその時点で持っている値が使われます。
DEF FNは、DEFとFNの間に必ずスペースを入れなければなりません。
スペースを省略してDEFFNとすると変数として扱われてしまいます。

注意:パラメータのない場合はサンプル5を見て下さい。


サンプルプログラム [SAMPLE39] 参照。

サンプル1
10 'DEF FN ……define of the user function.
100 DEF FNMENSEKI(R )=3.14159*R*R
110 DEF FNENSHUU(R )=3.14159*2*R
120 INPUT "半径は";HANKEI
130 PRINT "面積:";FNMENSEKI(HANKEI)
140 PRINT "円周:";FNENSHUU(HANKEI)
150 END

サンプル2
10 DEF FNA%(B%, C%)=B%*7+C%*3
20 C%=( 8.9+FNA%(5, 2)/1.2-2.354*FNA%(2, 5))
30 PRINT C%
40 END

サンプル3
10 DEF FNA#(B#)=B#*7.123
20 C#=( 8.9+FNA#(5.3)/1.2-2.354*FNA#(2.5))
30 PRINT C#
40 END

サンプル4
10 DEF FNA$( B$ , C$ )=B$ + C$
20 D$="ABCD" + FNA$("123", "asd")
30 PRINT D$
40 END

サンプル5
10 DEF FNA$==B$ + C$
20 B$="ABCD":C$="123"
30 PRINT FNA$
40 END
この例では、ABCD123 と表示されます。