检查COBOL中的半宽片假名字符

时间:2017-03-08 04:26:06

标签: character cobol kana

我正在使用RedHat6并使用COBOL。我想检查变量的每个数字,如果它的半宽 - > CONTINUE,Else - >显示错误。基本上,我在EVALUATE语句的WHEN子句中列出了所有半宽字符。像这样:

PERFORM VARYING WK-IX FROM 1 BY 1 UNTIL WK-IX > WK-LENGTH
    EVALUATE WK-FORMAT-CHK-VALUE(WK-IX:1)
        WHEN 'A'
        WHEN 'B'
        WHEN 'C'
            CONTINUE
        WHEN OTHER
            DISPLAY 'ERROR'
    END-EVALUATE
END-PERFORM.

一切都很好但是在编译时我有半角片假名字符的问题。它说:"文字的结尾引号丢失了。区域B末尾的字符被假定为文字"所有行检查这些字符:

ツテトナニニネノハヒフヘホマミムメモヤユヨラリルレロワヲン

虽然我确定没有任何代码行错过结束引号。像这样:

WHEN 'ツ'
WHEN 'テ'
WHEN 'ト'

但这些角色还可以,我不知道为什么:

アイウエオカキクケコサシスセソタチ

任何人都可以帮助我吗?请! 抱歉我的英语不好!

1 个答案:

答案 0 :(得分:1)

因为片假名字符集被认为是多字节字符集(如Bill Woodger所述),所以您需要确保启用NSYMBOL和DBCS编译选项。之后,您应该能够像这样定义文字:

EVALUATE WK-FORMAT-CHK-VALUE(WK-IX:1)    
   WHEN N'ツ'
   WHEN N'テ'
   WHEN N'ト'
      do something
   WHEN OTHER
      do something else
END-EVALUATE

N将告诉程序这是一个国家字符,因此是多字节的。

您对evaluate子句的输入也需要定义为PIC N而不是PIC XPIC X字段无法识别双字节字符。