//////////////////////////////////////////////////
// 【引数】
// array
// offset
// len
// 【戻値】
//
//////////////////////////////////////////////////
FUNCTION arraySplice(Var array[], offset, len = NULL)
DIM tmp[-1]
IF len = NULL THEN len = UBound(array)
IF len < 0 THEN len = len + UBound(array)
FOR i = offset - 1 TO len - 1
arrayPush(tmp, array[i])
NEXT
DIM tmp1[-1]
FOR i = 0 TO offset - 1
arrayPush(tmp1, array[i])
NEXT
DIM tmp2[-1]
FOR i = offset + len TO UBound(array)
arrayPush(tmp2, array[i])
NEXT
arrayMerge(tmp1, tmp2)
SETCLEAR(array)
RESIZE(array, UBound(tmp1))
FOR i = 0 TO UBound(tmp1)
array[i] = tmp1[i]
NEXT
RESULT = SLICE(tmp)
FEND
//////////////////////////////////////////////////
// 【引数】
// 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
//////////////////////////////////////////////////
// 【引数】
// array : 上限値を求める配列
// 【戻値】
// 配列の上限値
//////////////////////////////////////////////////
FUNCTION UBound(array[])
RESULT = RESIZE(array)
FEND