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 |