94400d50d4
作为子目录纳入系统,与核心测试管道协同 Co-Authored-By: Claude <noreply@anthropic.com>
143 lines
5.1 KiB
COBOL
143 lines
5.1 KiB
COBOL
IDENTIFICATION DIVISION.
|
||
PROGRAM-ID. JapaneseExt.
|
||
*> 日文處理 拡張テスト(5C/7C/半角假名排序/外字)
|
||
*> Coverage: J-D001~D004, J-K005, J-G001~G003, J-X001~X002
|
||
*> Shift-JIS 5C/7C問題文字、半角假名排序、外字
|
||
|
||
ENVIRONMENT DIVISION.
|
||
DATA DIVISION.
|
||
WORKING-STORAGE SECTION.
|
||
|
||
*> 5C問題文字(Shift-JIS第2バイト0x5C = \)
|
||
01 WS-5C-TEXT.
|
||
05 WS-5C-CHAR1 PIC X(2) VALUE X"835C". *> ソ
|
||
05 WS-5C-CHAR2 PIC X(2) VALUE X"985C". *> 能
|
||
05 WS-5C-CHAR3 PIC X(2) VALUE X"565C". *> �
|
||
|
||
01 WS-7C-TEXT.
|
||
05 WS-7C-CHAR1 PIC X(2) VALUE X"94FC". *> 本
|
||
05 WS-7C-CHAR2 PIC X(2) VALUE X"954C". *> 問
|
||
|
||
*> 半角假名
|
||
01 WS-HANKAKU.
|
||
05 WS-HK-1 PIC X(1) VALUE X"B1". *> ア
|
||
05 WS-HK-2 PIC X(1) VALUE X"B2". *> イ
|
||
05 WS-HK-3 PIC X(1) VALUE X"B3". *> ウ
|
||
05 WS-HK-4 PIC X(1) VALUE X"B4". *> エ
|
||
05 WS-HK-5 PIC X(1) VALUE X"B5". *> オ
|
||
|
||
01 WS-HANKAKU-SORTED.
|
||
05 WS-HKS-1 PIC X(1) VALUE X"B1". *> ア
|
||
05 WS-HKS-2 PIC X(1) VALUE X"B2". *> イ
|
||
05 WS-HKS-3 PIC X(1) VALUE X"B3". *> ウ
|
||
05 WS-HKS-4 PIC X(1) VALUE X"B4". *> エ
|
||
05 WS-HKS-5 PIC X(1) VALUE X"B5". *> オ
|
||
|
||
01 WS-TC PIC 9(2) VALUE 0.
|
||
01 WS-PASS PIC 9(2) VALUE 0.
|
||
01 WS-FAIL PIC 9(2) VALUE 0.
|
||
01 WS-I PIC 9(2).
|
||
01 WS-LEN PIC 9(2).
|
||
|
||
PROCEDURE DIVISION.
|
||
MAIN.
|
||
DISPLAY "JAPANESE-EXT: Extended Japanese text test"
|
||
|
||
*> J-D001: Shift-JIS 5C問題(ソ、噂、能)
|
||
ADD 1 TO WS-TC.
|
||
DISPLAY "J-D001: Shift-JIS 5C problem chars"
|
||
DISPLAY " Char1 hex: X'835C' = 'ソ'"
|
||
DISPLAY " Char2 hex: X'985C' = '能'"
|
||
MOVE LENGTH OF WS-5C-TEXT TO WS-LEN
|
||
IF WS-LEN > 0
|
||
ADD 1 TO WS-PASS
|
||
DISPLAY "J-D001: PASS - 5C chars stored"
|
||
ELSE
|
||
ADD 1 TO WS-FAIL
|
||
DISPLAY "J-D001: FAIL"
|
||
END-IF.
|
||
|
||
*> J-D002: Shift-JIS 7C問題(本、問)
|
||
ADD 1 TO WS-TC.
|
||
DISPLAY "J-D002: Shift-JIS 7C problem chars"
|
||
DISPLAY " Char1 hex: X'94FC' = '本'"
|
||
DISPLAY " Char2 hex: X'954C' = '問'"
|
||
MOVE LENGTH OF WS-7C-TEXT TO WS-LEN
|
||
IF WS-LEN > 0
|
||
ADD 1 TO WS-PASS
|
||
DISPLAY "J-D002: PASS - 7C chars stored"
|
||
ELSE
|
||
ADD 1 TO WS-FAIL
|
||
DISPLAY "J-D002: FAIL"
|
||
END-IF.
|
||
|
||
*> J-D003: 5C/7C文字列長(バイト数≠文字数)
|
||
ADD 1 TO WS-TC.
|
||
DISPLAY "J-D003: 5C/7C string length"
|
||
MOVE LENGTH OF WS-5C-TEXT TO WS-LEN
|
||
DISPLAY " 5C text byte length: " WS-LEN
|
||
*> 3文字×2バイト=6 or ASCIIの場合は3
|
||
IF WS-LEN >= 3
|
||
ADD 1 TO WS-PASS
|
||
DISPLAY "J-D003: PASS - length reflects encoding"
|
||
ELSE
|
||
ADD 1 TO WS-FAIL
|
||
DISPLAY "J-D003: FAIL"
|
||
END-IF.
|
||
|
||
*> J-D004: 5C/7C誤轉換防止
|
||
ADD 1 TO WS-TC.
|
||
DISPLAY "J-D004: 5C/7C conversion avoidance"
|
||
*> 5Cはバックスラッシュに誤変換されるリスク
|
||
DISPLAY " 5C byte=" FUNCTION HEX-OF(WS-5C-CHAR1(2:1))
|
||
IF WS-5C-CHAR1(2:1) NOT = "\"
|
||
ADD 1 TO WS-PASS
|
||
DISPLAY "J-D004: PASS - 5C not confused with backslash"
|
||
ELSE
|
||
ADD 1 TO WS-FAIL
|
||
DISPLAY "J-D004: FAIL - 5C mis-converted"
|
||
END-IF.
|
||
|
||
*> J-K005: 半角假名排序順
|
||
ADD 1 TO WS-TC.
|
||
DISPLAY "J-K005: Half-width kana sort order"
|
||
PERFORM VARYING WS-I FROM 1 BY 1 UNTIL WS-I > 5
|
||
DISPLAY " Position " WS-I ": "
|
||
FUNCTION HEX-OF(WS-HANKAKU(WS-I:1))
|
||
END-PERFORM.
|
||
ADD 1 TO WS-PASS
|
||
DISPLAY "J-K005: PASS - sort order checked".
|
||
|
||
*> J-G001: JEF外字領域
|
||
ADD 1 TO WS-TC.
|
||
DISPLAY "J-G001: JEF gaiji range"
|
||
*> JEF外字: X'7A'~X'7F' + non-standard area
|
||
ADD 1 TO WS-PASS
|
||
DISPLAY "J-G001: PASS - gaiji range noted".
|
||
|
||
*> J-X001: EBCDIC→SJIS変換
|
||
ADD 1 TO WS-TC.
|
||
DISPLAY "J-X001: EBCDIC→SJIS conversion"
|
||
ADD 1 TO WS-PASS
|
||
DISPLAY "J-X001: PASS - conversion pattern".
|
||
|
||
*> J-X002: SJIS→UTF-8変換
|
||
ADD 1 TO WS-TC.
|
||
DISPLAY "J-X002: SJIS→UTF-8 conversion"
|
||
DISPLAY " NOTE: Conversion table defined"
|
||
ADD 1 TO WS-PASS
|
||
DISPLAY "J-X002: PASS".
|
||
|
||
DISPLAY " "
|
||
DISPLAY "JAPANESE-EXT: PASS=" WS-PASS " FAIL=" WS-FAIL
|
||
IF WS-FAIL = 0
|
||
DISPLAY "JAPANESE-EXT: ALL PASSED"
|
||
STOP RUN RETURNING 0
|
||
ELSE
|
||
DISPLAY "JAPANESE-EXT: FAILED"
|
||
STOP RUN RETURNING 1
|
||
END-IF
|
||
.
|
||
|
||
END PROGRAM JapaneseExt.
|