我正在使用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 'ト'
但这些角色还可以,我不知道为什么:
アイウエオカキクケコサシスセソタチ
任何人都可以帮助我吗?请! 抱歉我的英语不好!
答案 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 X
。 PIC X
字段无法识别双字节字符。