LBound

本ページには広告が含まれています。

配列の下限値(最小インデックス)を返します。arraynameに配列の名前、dimensionに下限値を求める配列の次元を指定します。

構文
  1. Double = LBound( arrayname, dimension )
引数
array (Array必須
下限値を求める配列の名前
dimension (Integer = 1)省略可
返す次元を示す整数
戻り値
配列の下限値

プログラム

UWSC
//////////////////////////////////////////////////
// 【引数】
//   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

解説

  1. 2行目
    UWSC
    	RESULT = UBound(arrayname, dimension) - EVAL("LENGTH(arrayname" + strRepeat("[0]", dimension-1) + ")") + 1
    UBound (自作関数)で指定された次元の配列の上限値を求めます。配列の上限値から配列のサイズ(要素数)を引いて1を加えた値で下限値を求め、戻り値として返します。arraynameの右側にdimensionの数値から1を引いた数だけ[0]を繰り返した文字列を結合し、LENGTH関数 (スクリプト関数)の引数として渡します。一次元目の要素数はLENGTH(arrayname)、二次元目の要素数はLENGTH(arrayname[0])、三次元目の要素数はLENGTH(arrayname[0][0])で求められます。EVAL関数 (スクリプト関数)で文字列で書かれた式を実行することができます。

使い方

一次元配列の下限値を求めます。

UWSC
DIM array[5]

PRINT LBound(array)
結果
プレーンテキスト
0

二次元配列の一次元目と二次元目の下限値を求めます。

UWSC
DIM array[5][8]

PRINT LBound(array)
PRINT LBound(array, 2)
結果
プレーンテキスト
0
0

SAFEARRAY関数 (スクリプト関数)で二次元配列を生成し、その配列の一次元目と二次元目の下限値を求めます。SAFEARRAY関数の第一引数と第三引数が下限値になります。

UWSC
DIM array = SAFEARRAY(2, 5, 4, 9)

PRINT LBound(array, 1)
PRINT LBound(array, 2)
結果
プレーンテキスト
2
4