NO.1002:0を加えて指定の桁に揃えた文字列を返すモジュール

FILE名:FILE_int2str_plus.hsp
#module
//	数字に0を加えてp文字の数字にする
#defcfunc int2str_plus int p,int value
sdim s,16
sdim neg,16
s=""
neg=""
if value>=0{s+="+"}
else{s+="-"}
if p==0{logmes "int2str_plus内のerror。第一引数は1以上にしてください"}
if p>=1{//10
mm=10
m=1
n=(value\mm)/m
neg+=abs(n)	}
if p>=2{//100
gosub *on_div}
if p>=3{//1000
gosub *on_div}
if p>=4{//1 0000
gosub *on_div}
if p>=5{//10 0000
gosub *on_div}
if p>=6{//100 0000
gosub *on_div}
if p>=7{//1000 0000
gosub *on_div}
if p>=8{//1 0000 0000
gosub *on_div}
if p>=9{//10 0000 0000
gosub *on_div}
if p>=10{//100 0000 0000
m*=10
n=(value)/m
neg+=abs(n)}
if p>=11{logmes "int2str_plus内のerror。第一引数は10以下にしてください"}

l=strlen(neg)
repeat l
poke s,(cnt+1),peek(neg,(l-1-cnt))
loop
return s
*on_div
mm*=10
m*=10
n=(value\mm)/m
neg+=abs(n)
return
//	数字に0を加えてp文字の数字の絶対値にする
#defcfunc int2str_plus_abs int p,int value
sdim ss,16
sdim neg,16
s=""
neg=""
if p==0{logmes "int2str_plus内のerror。第一引数は1以上にしてください"}
if p>=1{//10
mm=10
m=1
n=(value\mm)/m
neg+=abs(n)	}
if p>=2{//100
gosub *on_div}
if p>=3{//1000
gosub *on_div}
if p>=4{//1 0000
gosub *on_div}
if p>=5{//10 0000
gosub *on_div}
if p>=6{//100 0000
gosub *on_div}
if p>=7{//1000 0000
gosub *on_div}
if p>=8{//1 0000 0000
gosub *on_div}
if p>=9{//10 0000 0000
gosub *on_div}
if p>=10{//100 0000 0000
m*=10
n=(value)/m
neg+=abs(n)}
if p>=11{logmes "int2str_plus内のerror。第一引数は10以下にしてください"}

l=strlen(neg)
repeat l
poke ss,cnt,peek(neg,(l-1-cnt))
loop
logmes ss
return ss
#global

・以下テストコード
#include"FILE_int2str_plus.hsp"
s="-000123"
mes str(int(s))
s="+000123"
mes str(int(s))
a=-10
mes int2str_plus(0,a)
mes int2str_plus(1,a)
mes int2str_plus(2,a)
mes int2str_plus(3,a)
mes int2str_plus(4,a)
mes int2str_plus(5,a)
mes int2str_plus(6,a)
mes int2str_plus(7,a)
mes int2str_plus(8,a)
mes int2str_plus(9,a)
mes int2str_plus(10,a)
b=123
mes int2str_plus(0,b)
mes int2str_plus(1,b)
mes int2str_plus(2,b)
mes int2str_plus(3,b)
mes int2str_plus(4,b)
mes int2str_plus(5,b)
mes int2str_plus(6,b)
mes int2str_plus(7,b)
mes int2str_plus(8,b)
mes int2str_plus(9,b)
mes int2str_plus(10,b)
mes ""
c=-1000000000
mes int2str_plus(10,c)

a=-100
pos 320,0
mes int2str_plus_abs(0,a)
mes int2str_plus_abs(1,a)
mes int2str_plus_abs(2,a)
mes int2str_plus_abs(3,a)
mes int2str_plus_abs(4,a)
mes int2str_plus_abs(5,a)
mes int2str_plus_abs(6,a)
mes int2str_plus_abs(7,a)
mes int2str_plus_abs(8,a)
mes int2str_plus_abs(9,a)
mes int2str_plus_abs(10,a)
b=1234
mes int2str_plus_abs(0,b)
mes int2str_plus_abs(1,b)
mes int2str_plus_abs(2,b)
mes int2str_plus_abs(3,b)
mes int2str_plus_abs(4,b)
mes int2str_plus_abs(5,b)
mes int2str_plus_abs(6,b)
mes int2str_plus_abs(7,b)
mes int2str_plus_abs(8,b)
mes int2str_plus_abs(9,b)
mes int2str_plus_abs(10,b)
mes ""
c=-1000000000
mes int2str_plus_abs(10,c)
stop