戻り値のある関数を定義します。戻り値のない関数を定義するにはPROCEDURE-FENDを利用します。
- 構文
- FUNCTION 関数名( 引数, Var 引数, 引数[ ], Var 引数[ ][ ], 引数 = 定数, … )
処理RESULT = 戻値FEND
- 引数
- 引数 省略可
- 値渡し
- Var 引数 省略可
- 参照元の値が変更されます。参照引数。
- 引数[ ] 省略可
- 配列
- Var 引数[ ][ ] 省略可
- 二次元配列。参照引数。
- 引数 = 定数 省略可
- 関数の呼び出し時に省略された場合に使用されるデフォルト値(デフォルト引数)。
- 戻り値
戻り値のあるなしを除いて基本的には同じなので、関数を定義する詳細はPROCEDURE-FENDをご覧ください。
戻り値
値を返す
「変数 = 関数名()」と記述することで戻り値(RESULTで指定した値)を受け取ることができます。
以下は変数sumに11が代入されます。
DIM sum = add(5, 6)
FUNCTION add(x, y)
RESULT = x + y
FEND
一次元配列を返す
複数の値を返したい場合は関数内で配列を宣言・代入し、RESULTにSLICE(配列)と指定します。
DIM array[] = func()
FOR item IN array
PRINT item
NEXT
FUNCTION func()
DIM array[] = 0, 1, 2, 3
RESULT = SLICE(array)
FEND
- 結果
0 1 2 3
二次元配列を返す
二次元配列を戻り値として返す場合は、RESULTをSAFEARRAY関数 (スクリプト関数)でsafearray型で宣言し、要素を代入していきます。戻り値として二次元配列を返すのはスクリプト関数だとXLGETDATA関数 (スクリプト関数)くらいですが、自作関数で行列データを返すときは二次元配列使うと良いと思います。
DIM array = dimention()
FOR i = 0 TO 3
FOR j = 0 TO 5
PRINT i + "-" + j + "<#TAB>" + array[i][j]
NEXT
NEXT
FUNCTION dimention()
RESULT = SAFEARRAY(0, 3, 0, 5) // RESULT[0][0] 〜 RESULT[3][5]の二次元配列を生成
FOR i = 0 TO 3
FOR j = 0 TO 5
RESULT[i][j] = i * j // 各要素に代入
NEXT
PRINT "-----"
NEXT
FEND
- 結果
0-0 0 0-1 0 0-2 0 0-3 0 0-4 0 0-5 0 ----- 1-0 0 1-1 1 1-2 2 1-3 3 1-4 4 1-5 5 ----- 2-0 0 2-1 2 2-2 4 2-3 6 2-4 8 2-5 10 ----- 3-0 0 3-1 3 3-2 6 3-3 9 3-4 12 3-5 15
この記事は役に立ちましたか?
ご協力ありがとうございます。