DEF~END

プチコン3号 プチコンBIG 

ユーザー関数・ユーザー命令を定義する

関数として定義 DEF name([arg[,arg]])    END 命令として定義 DEF name [arg[,arg]] [OUT var[,var]]    END

パラメーター

name関数・命令の名前
argパラメーターを格納する変数

戻り値

var戻り値

解説

ユーザー定義関数もしくは命令を定義します。
GOSUBと違い、パラメータを渡し、戻り値を得る事ができます。
ただし、ユーザー定義命令では複数の戻り値を設定することができますが、ユーザー定義関数で得られる戻り値は1つだけです。

nameで使用できるのは、既に関数・命令・システム予約変数などで使用されていないもののみです。
DEF内で使用する変数について
DEF内で使用する変数は、DEFの外で使用されている変数の値がそのまま使用されます。(グローバル変数)
ただし、以下の場合はDEF内だけの独立した変数として扱われます。(ローカル変数)
  • DEF文でパラメータとして受け取る変数
  • DEF文の「OUT」に記載している戻り値用の変数
  • DEF文内でDIM/VARで宣言した変数
具体例はサンプルコードをご覧下さい。

「OUT」以降に指定した変数には、DEF内で必ず値をセットする必要があります。
セットしなかった場合は、エラー[48]「Uninitialized variable used」となります。

サンプルコード

ユーザー定義関数
PRINT TASHIZAN(2,3) '2と3をパラーメーターとして渡し、結果を画面に表示する
 
DEF TASHIZAN(X,Y) 'パラメーターとしてXとYを受け取る
RETURN X+Y       '渡されたパラメーターを足し算して返す(戻り値)
実行結果
5
ユーザー定義命令
X=2:Y=3
IDOU X,Y OUT NX,NY '2と3をパラーメーターとして渡す
PRINT NX,NY         '結果を画面に表示
 
DEF IDOU X,Y OUT NX,NY 'パラメーターでXとYを受け取り、NX,NYの値を戻り値として返す
NX=X+1 '渡された値から戻り値を算出
NY=Y+2
実行結果
3   5
DEF内の変数についての注意
★DEF内で変数を「DIM」で宣言しなかった場合
A$="AAA"
PRINT TASHIZAN(2,3) '2と3をパラーメーターとして渡し、結果を画面に表示する
 
DEF TASHIZAN(X,Y)
A$="BBB" '最初の「A$」の内容を書き換えている
RETURN X+Y
実行結果
5
BBB
★DEF内で変数を「DIM」で宣言した場合
A$="AAA"
PRINT TASHIZAN(2,3) '2と3をパラーメーターとして渡し、結果を画面に表示する
 
DEF TASHIZAN(X,Y)
DIM A$   '上とは関係のない別の「A$」という一時変数が作られる。このDEFが終わると消える。
A$="BBB" 'これは最初の「A$」とは別物なので影響しない
RETURN X+Y
実行結果
5
AAA
最初の「A$="AAA"」の内容を表示している

参照

DEF~END ユーザー関数・ユーザー命令を定義する
COMMON DEF~END 別SLOTから呼び出せるユーザー定義関数・命令を定義する
CALL 1.ユーザー定義関数/命令を呼び出す 2.コールバック処理をする

Facebookコメント