例1:整数値として計算
桁上限=9
指定数=0
objmode 2,0
input 指定数,80,20,桁上限
button gosub "計算開始",*label
stop
*label
objsel 0:color 255,255,255:boxf:color:pos 8,70
mes "指定数="+str(指定数)
計算用指定数 = 指定数
repeat
桁取用=10
計算結果=0
repeat 桁上限
余 = 計算用指定数\桁取用
一桁 = 余/(桁取用/10)
計算結果 + 一桁
mes str(計算用指定数)+"/"+str(桁取用)+" [余り="+str(余)+"] ["+str(cnt+1)+"桁="+str(一桁)+"]"
計算用指定数 - 余
if 桁取用>計算用指定数 {break}
桁取用*10
loop
if 計算結果<10 {break}
計算用指定数 = 計算結果
mes "途中結果="+str(計算用指定数)
loop
pos 8,50:pos 8,50:color 255:mes " [結果="+str(計算結果)+"]"
return
整数値の場合扱える桁数が限られる
例2:数字文字列にして計算
桁上限=20
sdim 指定数,桁上限
objmode 2,0
input 指定数,170,20,桁上限
button gosub "計算開始",*label
stop
*label
objsel 0:color 255,255,255:boxf:color:pos 8,80
mes "指定数="+指定数
計算用指定数 = 指定数
repeat
計算結果=0
桁数 = strlen(計算用指定数)
repeat 桁数
一桁 = int(strmid(計算用指定数,cnt,1)) ;数字文字を整数値に
計算結果 + 一桁
mes "["+str(桁数-cnt)+"桁="+str(一桁)+"]"
loop
if 計算結果<10 {break}
計算用指定数 = str(計算結果) ;結果の数値データを文字列に
pos 8+(cnt+1)*100,80+(cnt+1)*20 :mes "途中結果="+計算用指定数
loop
pos 8,50:color 255:mes " [結果="+str(計算結果)+"]"
return
最初から文字列としての数字なら桁数を気にしなくてもいい
途中結果が整数値になるので、そこに限界は有る(まず限界を超える事はないだろうけど・・・)