MOD ざざん
#define ERROR -128*256*256*256
#module step_ar_2 ar,index,max
#modinit int p
dim ar,p
index=0
return
#modfunc local set int p_index,int value
ar.p_index=value
return
#modfunc local set_index int p
index=p
return
#modfunc local step_set int value
ar.index=value
index++
return
#modfunc local set_max
max=index
return
#modfunc local get_max var p
p=max
return
#modcfunc local get
if length(ar)>index{
n=ar.index
index++
return n
}
return ERROR@
#modfunc local get_ar_length var p
p=length(ar)
return
#modcfunc local get_toString var s_p
l=length(ar)+3
sdim s_r,l
ll=length(ar)
repeat ll
poke s_r,cnt,ar.cnt
loop
return s_r
#global
/*TEST CODE コメントアウト
// インスタンスの配列サイズ16でオブジェクト生成
newmod a,step_ar_2,16
// インスタンスのindexを0で初期化
set_index@step_ar_2 a,0
// インスタンス代入
step_set@step_ar_2 a,'a'
step_set@step_ar_2 a,'b'
step_set@step_ar_2 a,'c'
;step_set@step_ar_2 a,1
;step_set@step_ar_2 a,2
// 配列の最大を更新
set_max@step_ar_2 a
// インスタンスのindexを0で初期化
set_index@step_ar_2 a,0
// 配列の最大を取得
n=0
get_max@step_ar_2 a,n
// 配列の中身dump
repeat n
mes get@step_ar_2(a)
loop
// 配列のlength取得
get_ar_length@step_ar_2 a,m
mes m
// 数値配列を文字列化してgetして表示
s=""
mes get_toString@step_ar_2(a,s)
//*/
/*TEST CODE コメントアウト
newmod a,step_ar,16
repeat 16
set@step_ar a,cnt,cnt
loop
repeat 20
mes get@step_ar(a)
loop
//*/ |