SJISToJIS

シフトJISコードをJISコードに変換します。

構文
SJISToJIS( SJIS )
引数
SJIS
シフトJIS(16進数)
戻値
JIS(16進数)

プログラム

////////////////////////////////////////////////// // 【引数】 // SJIS : シフトJIS(16進数) // 【戻値】 // JIS(16進数) ////////////////////////////////////////////////// FUNCTION SJISToJIS(SJIS) DIM arr[1] DIM res[1] arr[0] = hexToDec(COPY(SJIS, 1, 2)) arr[1] = hexToDec(COPY(SJIS, 3, 2)) IFB arr[0] <= $9F THEN arr[0] = arr[0] - $71 ELSE arr[0] = arr[0] - $B1 ENDIF arr[0] = arr[0] * 2 + 1 IF arr[1] >= $7F THEN arr[1] = arr[1] - 1 IFB arr[1] >= $9E THEN arr[1] = arr[1] - $7D arr[0] = arr[0] + 1 ELSE arr[1] = arr[1] - $1F ENDIF res[0] = COPY("0" + decToHex(arr[0]), LENGTH("0" + decToHex(arr[0])) - 1) res[1] = COPY("0" + decToHex(arr[1]), LENGTH("0" + decToHex(arr[1])) - 1) RESULT = JOIN(res, "") FEND ////////////////////////////////////////////////// // 【引数】 // dec : 10進数 // 【戻値】 // 16進数に変換した値 ////////////////////////////////////////////////// FUNCTION decToHex(dec) RESULT = FORMAT(VAL(dec), 0, -1) FEND ////////////////////////////////////////////////// // 【引数】 // hex : 16進数 // 【戻値】 // 10進数に変換した値 ////////////////////////////////////////////////// FUNCTION hexToDec(hex) dec = 0 hex = STRCONV(hex, SC_LOWERCASE) FOR n = 1 TO LENGTH(hex) str = COPY(hex, n, 1) IFB CHKNUM(str) THEN num = str ELSE num = ASC(str) - 87 ENDIF dec = dec + (num * POWER(16, LENGTH(hex) - n)) NEXT RESULT = dec FEND