arrayPad

構文
arrayPad( Var array[], size, value )
引数
array
size
value
戻値

プログラム

//////////////////////////////////////////////////
// 【引数】
//   array 
//   size 
//   value 
// 【戻値】
// 
//////////////////////////////////////////////////
PROCEDURE arrayPad(Var array[], size, value)
	DIM tmp[ABS(size) - (UBound(array) + 2)]
	SETCLEAR(tmp, value)
	IFB size > 0 THEN
		arrayMerge(array, tmp)
	ELSE
		arrayMerge(tmp, array)
		RESIZE(array, UBound(tmp))
		SETCLEAR(array, EMPTY)
		FOR i = 0 TO UBound(tmp)
			array[i] = tmp[i]
		NEXT
	ENDIF
FEND

//////////////////////////////////////////////////
// 【引数】
//   var arr[] : 追加される配列(参照引数) 
//   tmp[] : 追加する配列 
// 【戻値】
//   追加した後の配列の要素数 
//////////////////////////////////////////////////
FUNCTION arrayMerge(var arr[], tmp[])
	FOR n = 0 TO UBound(tmp)
		arrayPush(arr, tmp[n])
	NEXT
	RESULT = UBound(arr)
FEND

//////////////////////////////////////////////////
// 【引数】
//   array : 要素を追加する配列(参照引数) 
//   str : 追加する要素 
// 【戻値】
//   処理後の配列の中の要素の数 
//////////////////////////////////////////////////
FUNCTION arrayPush(var arr[], str)
	DIM res = RESIZE(arr, UBound(arr) + 1)
	arr[res] = str
	RESULT = res + 1
FEND

//////////////////////////////////////////////////
// 【引数】
//   配列 : 上限値を求める配列 
// 【戻値】
//   配列の上限値 
//////////////////////////////////////////////////
FUNCTION UBound(array[])
	RESULT = RESIZE(array)
FEND