1) USER ※引数なし、戻り値なし
2) USER X,Y ※引数あり、戻り値なし
3) A=USER(X) ※引数あり、戻り値1つ
4) USER(X) OUT A,B ※引数あり、戻り値複数
・DEF~ENDまでが定義範囲となる
・DEF~END範囲で定義された変数やラベルはローカル扱い
・DEF~END範囲を越えるGOTOはできない
・DEF~END範囲内でGOSUBやON GOSUBは使用できない
・GOSUB 0:@SUBのようにSLOT指定があれば利用可能
・COMMON 命令を付けることでSLOTを超えて利用可能
・DEFで受け取る引数に関して厳密な型チェックは行わない
・必要な数だけカンマ(,)で区切り受け取る変数名を記述可能
・文字列変数には変数名の終わりに$を付けることも可能
・DEFの戻り値に関しての厳密な型チェックは行わない
・出力用変数に最初に書いた値で型が確定
・数値変数に整数値を代入すると整数型として扱う
・実数型として扱う場合は、A=100.0のように記述
・DEFからの戻り値を受け取った側の型と異なる場合エラー
なし
なし
' 文字表示 DEF FUNC PRINT "SAMPLE" END ' 呼び出し FUNC
関数に渡したい引数があれば必要な分の変数名を記述
なし
' 指定位置に文字表示 DEF FUNC2 X,Y LOCATE X,Y PRINT "SAMPLE" END ' 呼び出し FUNC2 10,4
関数に渡したい引数があれば必要な分の変数名を記述
結果として返したい値を、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)
関数に渡したい引数があれば必要な分の変数名を記述
結果として返したい数分の変数名をOUTの後に記述
' 足し算と掛け算 DEF CALCPM A,B OUT OP,OM OP=A+B OM=A*B END ' 呼び出し CALCPM 5,10 OUT P,M PRINT P,M
・異なるSLOT間でプログラムを使う場合はUSEで先に実行しておくこと
1) COMMON DEF USER
2) COMMON DEF USER(X)
3) COMMON DEF USER(X) OUT A,B
COMMON DEF FOO(X, Y, Z)
・呼び出すユーザー定義命令名の文字列
・文字列なので""でくくるか文字列変数を使用
指定した命令に必要な引数
結果として返したい数分の変数名をOUTの後に記述
CALL "USERCD",X,Y OUT A,B ' DEF USERCD X,Y OUT A,B A=X+Y:B=X*Y END
・呼び出すユーザー定義関数名の文字列
・文字列なので""でくくるか文字列変数を使用
指定した関数に必要な引数を列挙
A=CALL("USERFC",X,Y) ' DEF USERFC(X,Y) RETURN X*Y END
・SPFUNCで設定されたSPRITE毎の処理を一斉呼び出し
CALL SPRITE