あんまりFILE分割せずに3つまとめてみました
LIGHT GREPの結果

FILE_step_String_else.hsp
LINE:3#module step_s_can_2byte sar,index
LINE:8#modfunc local set str value
LINE:11#modfunc local set_index int p
LINE:15#modcfunc local one_get
LINE:33#modcfunc local multi_get str type
LINE:46#module m_tb_char2int
LINE:48#defcfunc tb_char2int str p1,int p2
LINE:67#defcfunc tb_char2int16 str p
LINE:73#defcfunc tb_char2int10 str p
LINE:80#module m_int2one_or_two_str
LINE:81#define global ctype get_int2one_or_two_str(%1,%2=16) int2one_or_two_str(%1,%2)
LINE:82#defcfunc int2one_or_two_str int p1,int p2
LINE:91#defcfunc int2one_str int p
LINE:96#defcfunc int2two_str_16 int p
LINE:108#defcfunc int2two_str_10 int p
引っ張ってきたのは

文字列配列step操作

int→1byte or 2byte文字変換モジュール


#module step_s_can_2byte sar,index
#modinit int p
sdim sar,p
index=0
return
#modfunc local set str value
sar=value
return
#modfunc local set_index int p
index=p
return
//	数値を一文字返す
#modcfunc local one_get
if strlen(sar)>index{
n=peek(sar,index)
if ((n>=129)&(n<=159) )|( (n>=224)&(n<=252)){
index++
n2=peek(sar,index)
index++
num=n*256+n2
return num
}else{
index++
return n
}
}
return -1
//	文字列からtypeによって数値か文字列を返す
//	返すのは2byte文字(1文字目が2byte文字の時)か1byte文字
//	type:"int":数値を返す:"str":文字列を返す
#modcfunc local multi_get str type
if type=="int"{
return one_get@step_s_can_2byte(thismod)
}
if type=="str"{
return int2one_or_two_str(one_get@step_s_can_2byte(thismod),16)
}
logmes "multi_get内のerror"
logmes "p1の値はintかstrにして下さい"
logmes "p1:"+p1
stop
#global

#module m_tb_char2int
//	2byte文字を数字に変換して返す
#defcfunc tb_char2int str p1,int p2
if strlen(p1)!=2{
logmes "tb_char2int内のerror"
logmes "tb_char2intに渡す文字列の長さは2にして下さい"
logmes "p1:"+p1
return -1
}
if (p2==10|p2==16)==0{
logmes "tb_char2int内のerror"
logmes "tb_char2intに渡すp2の値は10か16にして下さい"
logmes "p2:"+p2
return -2
}
//	p2の値が10ならtb_char2int10
if p2==10{	return tb_char2int10(p1)	}
//	p2の値が16ならtb_char2int16
if p2==16{	return tb_char2int16(p1)	}
return 1
//	2byte文字を数字に変換して返す 1byte目*256+2byte目
#defcfunc tb_char2int16 str p
t=p
n=peek(t,0)*256
n+=peek(t,1)
return n
//	2byte文字を数字に変換して返す 1byte目*1000+2byte目
#defcfunc tb_char2int10 str p
t=p
n=peek(t,0)*1000
n+=peek(t,1)
return n
#global
//	数字の文字を返す
#module m_int2one_or_two_str
#define global ctype get_int2one_or_two_str(%1,%2=16) int2one_or_two_str(%1,%2)
#defcfunc int2one_or_two_str int p1,int p2
if 256 > p1:return int2one_str(p1)
if p2==10:return int2two_str_10(p1)
if p2==16:return int2two_str_16(p1)
logmes "int2one_or_two_str内のerror"
logmes "int2one_or_two_strに渡すp2の値は16か10にして下さい"
logmes "p2:"+p2
return "false"
//	pの値の数字の文字を返す
#defcfunc int2one_str int p
sdim s,16
poke s,0,p
//	pの値の数字の2byte文字を返す
return s
#defcfunc int2two_str_16 int p
if 256>p{
logmes "int2two_str_16内のerror"
logmes "tb_char2intに渡すpの値は256以上にして下さい"
logmes "p:"+p
return "false"
}
sdim s,16
poke s,0,(p/256)
poke s,1,(p\256)
return s
//	pの値の数字の2byte文字を返す。値は1byte目*1000+byte目
#defcfunc int2two_str_10 int p
if 1000>p{
logmes "int2two_str_10内のerror"
logmes "tb_char2intに渡すpの値は1000以上にして下さい"
logmes "p:"+p
return "false"
}
sdim s,16
poke s,0,(p/1000)
poke s,1,(p\1000)
return s
#global

logmes int2two_str_16(tb_char2int("あ",16))+":"+str(tb_char2int("あ",16))
logmes int2two_str_16(tb_char2int("い",16))+":"+str(tb_char2int("い",16))
logmes int2two_str_16(tb_char2int("う",16))+":"+str(tb_char2int("う",16))
logmes int2two_str_16(tb_char2int("ア",16))+":"+str(tb_char2int("ア",16))
logmes int2two_str_16(tb_char2int("イ",16))+":"+str(tb_char2int("イ",16))
logmes int2two_str_16(tb_char2int("ウ",16))+":"+str(tb_char2int("ウ",16))
logmes int2two_str_16(tb_char2int("一",16))+":"+str(tb_char2int("一",16))
logmes int2two_str_16(tb_char2int("二",16))+":"+str(tb_char2int("ニ",16))
logmes int2two_str_16(tb_char2int("三",16))+":"+str(tb_char2int("三",16))

logmes int2two_str_10(tb_char2int("あ",10))+":"+str(tb_char2int("あ",10))
logmes int2two_str_10(tb_char2int("い",10))+":"+str(tb_char2int("い",10))
logmes int2two_str_10(tb_char2int("う",10))+":"+str(tb_char2int("う",10))
logmes int2two_str_10(tb_char2int("ア",10))+":"+str(tb_char2int("ア",10))
logmes int2two_str_10(tb_char2int("イ",10))+":"+str(tb_char2int("イ",10))
logmes int2two_str_10(tb_char2int("ウ",10))+":"+str(tb_char2int("ウ",10))
logmes int2two_str_10(tb_char2int("一",10))+":"+str(tb_char2int("一",10))
logmes int2two_str_10(tb_char2int("二",10))+":"+str(tb_char2int("ニ",10))
logmes int2two_str_10(tb_char2int("三",10))+":"+str(tb_char2int("三",10))

logmes str(tb_char2int("aa",10))
logmes str(tb_char2int("あ",10))
logmes str(tb_char2int("abc",10))
logmes str(tb_char2int("いい",10))
logmes str(tb_char2int("あ",10))
logmes str(tb_char2int("あ",16))
logmes str(tb_char2int("あ",9))

logmes "あ:"+str(tb_char2int("あ",16))
logmes "あ:"+str(tb_char2int("あ",10))
logmes "い:"+str(tb_char2int("い",16))
logmes "い:"+str(tb_char2int("い",10))
logmes "う:"+str(tb_char2int("う",16))
logmes "う:"+str(tb_char2int("う",10))

logmes "ア:"+str(tb_char2int("ア",16))
logmes "ア:"+str(tb_char2int("ア",10))
logmes "イ:"+str(tb_char2int("イ",16))
logmes "イ:"+str(tb_char2int("イ",10))
logmes "ウ:"+str(tb_char2int("ウ",16))
logmes "ウ:"+str(tb_char2int("ウ",10))

logmes "一:"+str(tb_char2int("一",16))
logmes "一:"+str(tb_char2int("一",10))
logmes "二:"+str(tb_char2int("二",16))
logmes "二:"+str(tb_char2int("二",10))
logmes "三:"+str(tb_char2int("三",16))
logmes "三:"+str(tb_char2int("三",10))

logmes "あ:"+str(tb_char2int16("あ"))
logmes "あ:"+str(tb_char2int10("あ"))
logmes "い:"+str(tb_char2int16("い"))
logmes "い:"+str(tb_char2int10("い"))
logmes "う:"+str(tb_char2int16("う"))
logmes "う:"+str(tb_char2int10("う"))

logmes "ア:"+str(tb_char2int16("ア"))
logmes "ア:"+str(tb_char2int10("ア"))
logmes "イ:"+str(tb_char2int16("イ"))
logmes "イ:"+str(tb_char2int10("イ"))
logmes "ウ:"+str(tb_char2int16("ウ"))
logmes "ウ:"+str(tb_char2int10("ウ"))

logmes "一:"+str(tb_char2int16("一"))
logmes "一:"+str(tb_char2int10("一"))
logmes "二:"+str(tb_char2int16("二"))
logmes "二:"+str(tb_char2int10("二"))
logmes "三:"+str(tb_char2int16("三"))
logmes "三:"+str(tb_char2int10("三"))

logmes int2one_str('A')+":"+'A'
logmes int2one_str('B')+":"+'B'
logmes int2one_str('C')+":"+'C'
logmes int2one_str('a')+":"+'a'
logmes int2one_str('b')+":"+'b'
logmes int2one_str('c')+":"+'c'
logmes int2one_str('0')+":"+'0'
logmes int2one_str('1')+":"+'1'
logmes int2one_str('2')+":"+'2'
logmes int2one_str('\\')+":"+'\\'
logmes int2one_str('\"')+":"+'\"'
logmes int2one_str(' ')+":"+' '
logmes get_int2one_or_two_str('a')+":"+'a'
logmes get_int2one_or_two_str('A')+":"+'A'
logmes get_int2one_or_two_str('1')+":"+'1'
logmes get_int2one_or_two_str(' ')+":"+' '
logmes get_int2one_or_two_str(tb_char2int("あ",16))+":"+str(tb_char2int("あ",16))
logmes get_int2one_or_two_str(tb_char2int("ア",16))+":"+str(tb_char2int("ア",16))
logmes get_int2one_or_two_str(tb_char2int("一",16))+":"+str(tb_char2int("一",16))

//logmes "あ:"+str(tb_char2int("あ",16))
//logmes int2one_str_16(tb_char2int("あ",16))+":"+str(tb_char2int("あ",16))
logmes int2one_str('B')+":"+'B'
logmes int2one_str('C')+":"+'C'
logmes int2one_str('a')+":"+'a'
logmes int2one_str('b')+":"+'b'

newmod sa,step_s_can_2byte,64
set@step_s_can_2byte sa,"abcあいうdefアイウ"

repeat 48
logmes multi_get@step_s_can_2byte(sa,"str")
loop
set_index@step_s_can_2byte sa,0
repeat 48
logmes str(multi_get@step_s_can_2byte(sa,"int"))
loop