本ページには広告が含まれています。
配列の下限値(最小インデックス)を返します。arraynameに配列の名前、dimensionに下限値を求める配列の次元を指定します。
- 構文
- Double = LBound( arrayname, dimension )
- 引数
- array (Array)必須
- 下限値を求める配列の名前
- dimension (Integer = 1)省略可
- 返す次元を示す整数
- 戻り値
- 配列の下限値
プログラム
//////////////////////////////////////////////////
// 【引数】
// array : 下限値を求める配列の名前
// dimension : 返す次元を示す整数
// 【戻り値】
// 配列の下限値
//////////////////////////////////////////////////
FUNCTION LBound(arrayname[], dimension = 1)
RESULT = UBound(arrayname, dimension) - EVAL("LENGTH(arrayname" + strRepeat("[0]", dimension-1) + ")") + 1
FEND
//////////////////////////////////////////////////
// 【引数】
// inputs : 繰り返す文字列
// multiplier : inputsを繰り返す回数
// 【戻り値】
// inputsをmultiplier回を繰り返した文字列を返します
//////////////////////////////////////////////////
FUNCTION strRepeat(inputs, multiplier)
DIM res = ""
FOR n = 1 TO multiplier
res = res + inputs
NEXT
RESULT = res
FEND
//////////////////////////////////////////////////
// 【引数】
// arrayname : 上限値を求める配列の名前
// dimension : 返す次元を示す整数
// 【戻り値】
// 配列の上限値
//////////////////////////////////////////////////
FUNCTION UBound(arrayname[], dimension = 1)
RESULT = EVAL("RESIZE(arrayname" + strRepeat("[0]", dimension - 1) + ")")
FEND
解説
- 2行目
- UBound関数 (自作関数)で指定された次元の配列の上限値を求めます。配列の上限値から配列のサイズ(要素数)を引いて1を加えた値で下限値を求め、戻り値として返します。arraynameの右側にdimensionの数値から1を引いた数だけ[0]を繰り返した文字列を結合し、LENGTH関数 (スクリプト関数)の引数として渡します。一次元目の要素数はLENGTH(arrayname)、二次元目の要素数はLENGTH(arrayname[0])、三次元目の要素数はLENGTH(arrayname[0][0])で求められます。EVAL関数 (スクリプト関数)で文字列で書かれた式を実行することができます。
RESULT = UBound(arrayname, dimension) - EVAL("LENGTH(arrayname" + strRepeat("[0]", dimension-1) + ")") + 1
LBound関数とは
LBound関数とは引数に指定した配列で使用できる最小のインデックス番号を返す関数です。
LBoundはLower(下の)とBound(限界)で下限値を意味しています。
配列の下限値は以下の式から求めることができます。
要素数 = 配列の上限値 - 配列の下限値 + 1
配列の下限値 = 配列の上限値 - 要素数 + 1
配列の下限値 = 配列の上限値 - 要素数 + 1
使い方
一次元目の下限値を求める
一次元配列arrayの下限値を求めます。DIM 配列名[値]で宣言した場合LBound関数が返す値は、常に0になります。
DIM array[5]
PRINT LBound(array)
- 結果
0
宣言した配列より一つ大きい次元は0を返しますが、それ以降の次元はエラーを返します。
DIM array[5]
PRINT LBound(array)
PRINT LBound(array, 2)
PRINT LBound(array, 3) // エラー
- 結果
0 0
多次元配列の下限値を求める
二次元配列の一次元目と二次元目の下限値を求めます。一次元配列のときと同様DIM 配列名[値1][値2]で宣言した場合、LBound関数が返す値は次元に関係なく常に0です。
DIM array[5][8]
PRINT LBound(array)
PRINT LBound(array, 2)
- 結果
0 0
SAFEARRAY関数 (スクリプト関数)で二次元配列を生成し、その配列の一次元目と二次元目の下限値を求めます。第一引数が一次元目の下限値、第三引数が二次元目の下限値なのでその値が返ります。
DIM array = SAFEARRAY(2, 5, 4, 9)
PRINT LBound(array, 1)
PRINT LBound(array, 2)
- 結果
2 4