Files
cobol-java-v3/benchmark-programs/cross-cutting/japanese/main-japanese-ext.cbl
NB-076 94400d50d4 feat: add benchmark-programs — 58 telecom COBOL test programs
作为子目录纳入系统,与核心测试管道协同

Co-Authored-By: Claude <noreply@anthropic.com>
2026-06-25 09:53:21 +08:00

143 lines
5.1 KiB
COBOL
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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.