#module
#deffunc katatohira val
mref string, 24
mref rstr, 65
repeat
wpeek chk, string, cnt
// 終了
if chk = 0 : chk = cnt : break
// 全角の場合
if (chk & $FF > 128) & (chk & $FF < 160) | (chk & $FF > 223) {
// カタカナの場合
if (chk & $FF = 131) & (chk >> 8 >= 64) & (chk >> 8 <= 147) {
// ひらがな1バイト目
chk--
// ひらがなとカタカナの差95だけずらし、「ム」以降は1増やす
chk += (95 - (chk >> 8 >= 128)) << 8
}
wpoke rstr, cnt, chk
continue cnt + 2
// 半角の場合
} else {
poke rstr, cnt, chk & $FF
}
loop
poke rstr, chk // ゴミ表示を防ぐ
return
#global
sdim data, 128
data = "12345あガさダナパマヤらゎワゐヲゑンヴヵヶーーAbCdEfG"
font "MS 明朝", 16
mes "元の文字列 " + data
katatohira data
mes "平仮名へ変換 " + refstr
stop
|