1) USER ※引数なし、返値なし
2) USER X,Y ※引数あり、返値なし
3) A=USER(X) ※引数あり、返値1つ
4) USER X OUT A,B ※引数あり、返値複数
・DEF~ENDまでが定義範囲となる。
・DEF~END範囲で定義された変数やラベルはDEF外から使用できない(ローカル変数)。
・DEF~END範囲をまたがったGOTO,GOSUBはできない。
・COMMON を付けることで定義したプログラムスロット外から使用可能な命令を定義できる。
' 文字表示 DEF FUNC PRINT "SAMPLE" END ' 呼び出し FUNC
関数に渡したい引数があれば必要な分の引数名をカンマで区切って指定する
・ここで指定した引数名はDEF~END内で変数として使用できる。
' 指定位置に文字表示 DEF FUNC2 X,Y LOCATE X,Y PRINT "SAMPLE" END ' 呼び出し FUNC2 10,4
関数に渡したい引数があれば必要な分の引数名をカンマで区切って指定する
・ここで指定した引数名はDEF~END内で変数として使用できる。
結果として呼び出し側に返したい値は、DEF~END内でRETURN命令を使用して設定する(RETURN ANS のような記述)
'足し算 DEF ADD(X,Y) RETURN X+Y END ' 再帰を使った階乗計算 DEF FACTORIAL(N) IF N==1 THEN RETURN N RETURN N*FACTORIAL(N-1) END ' 文字列反転 DEF REVERSE$(T$) VAR A$="" 'ローカル文字列 VAR L=LEN(T$) 'ローカル WHILE L>0 A$=A$+MID$(T$,L-1,1) DEC L WEND RETURN A$ END ' 呼び出し PRINT ADD(10,5) PRINT FACTORIAL(4) PRINT REVERSE$("BASIC")
関数に渡したい引数があれば必要な分の引数名をカンマで区切って指定する
・ここで指定した引数名はDEF~END内で変数として使用できる。
結果として返したい数分の変数名をOUTの後に記述する
・DEF~END内でここで指定した変数に値を代入すると、呼び出し側に値を返す事ができる。
' 足し算と掛け算 DEF CALCPM A,B OUT OP,OM OP=A+B OM=A*B END ' 呼び出し CALCPM 5,10 OUT P,M PRINT P,M
・引数だけ可変長にしたり、返値だけ可変長にしたりする事も可能。
命令名の後ろに*(アスタリスク)を書くと、引数の数が可変である事を宣言できる
・DEFARGC,DEFARG,TYPEOFを使用して引数の数・内容・型を調査できる。
OUTの後ろに*(アスタリスク)を書くと、返値の数が可変である事を宣言できる
・DEFOUTC,DEFOUTを使用して返値の数を調査したり、返値を設定したりできる。
DEF VARFUNC * OUT * FOR I=0 TO DEFOUTC()-1 DEFOUT I, DEFARG(I)*2 NEXT END