#module
#deffunc lomainit
sdim tbl, 4, 86
tbl.0 = "LA", "A", "LI", "I", "LU", "U", "LE", "E", "LO", "O" // ァ ア ィ イ ゥ ウ ェ エ ォ オ
tbl.10 = "KA", "GA", "KI", "GI", "KU", "GU", "KE", "GE", "KO", "GO" // カ ガ キ ギ ク グ ケ ゲ コ ゴ
tbl.20 = "SA", "ZA", "SI", "ZI", "SU", "ZU", "SE", "ZE", "SO", "ZO" // サ ザ シ ジ ス ズ セ ゼ ソ ゾ
tbl.30 = "TA", "DA", "TI", "DI", "LTU","TU", "DU", "TE", "DE", "TO" // タ ダ チ ヂ ッ ツ ヅ テ デ ト
tbl.40 = "DO", "NA", "NI", "NU", "NE", "NO", "HA", "BA", "PA", "HI" // ド ナ ニ ヌ ネ ノ ハ バ パ ヒ
tbl.50 = "BI", "PI", "FU", "BU", "PU", "HE", "BE", "PE", "HO", "BO" // ビ ピ フ ブ プ ヘ ベ ペ ホ ボ
tbl.60 = "PO", "MA", "MI", "", "MU", "ME", "MO", "LYA","YA", "LYU" // ポ マ ミ ・ ム メ モ ャ ヤ ュ
tbl.70 = "YU", "LYO","YO", "RA", "RI", "RU", "RE", "RO", "LWA","WA" // ユ ョ ヨ ラ リ ル レ ロ ヮ ワ
tbl.80 = "WI", "WE", "WO", "NN", "VU", "LKA","LKE" // ヰ ヱ ヲ ン ヴ ヵ ヶ
return
#deffunc lomachg val, val
mref rstr, 24 : mref string, 25
p = 0
repeat
wpeek chk, string, cnt
// 終了
if chk = 0 : break
// 対象が全角の場合
if (chk & $FF > 128) && (chk & $FF < 160) || (chk & $FF > 223) {
// 対象が全角カナの場合
if (chk & $FF = 131) && (chk >> 8 >= 64) && (chk >> 8 <= 150) {
chk = (chk >> 8) - 64 // 変換テーブルの要素番号(「ァ(=64)」を0)にする
rstr += tbl.chk
strlen chk, tbl.chk
p += chk
// それ以外
} else {
wpoke rstr, p, chk
p += 2
}
continue cnt + 2
// 半角の場合
} else {
poke rstr, p, chk & $FF
p+
}
loop
return
#global
sdim string, 64, 2
string = "アィグセド123ナヒプヘボあいうマミュヨラリルabcワヲンHSP"
lomainit
lomachg string.1, string.0
mes "変換前:" + string.0
mes "変換後:" + string.1
stop
|