我正致力于转换一些旧版COBOL代码并遇到如下声明:
INSPECT WS-LOCAL-VAR REPLACING ALL X'0D25' BY ' '
据我所知,INSPECT ... REPLACING ALL语句将通过WS-LOCAL-VAR查看,匹配模式X' 0D25'并用空格替换它。
我不明白的是' 0D25'以外的X的目的。我在网上找到的所有替换所有例子都不会使用除字母之外的任何内容进行模式匹配。
X如何影响替换哪些模式?
COBOL正在EBCDIC计算机上运行,输入文件来自Windows计算机。
答案 0 :(得分:4)
X表示字符串中的字符是十六进制的。在这种情况下,X"0D"
表示返回托架字符,X"25"
表示%符号(假设为ASCII系统)。
类似的表示法用于表示国家字符串(N"
こんにちは"
)和布尔/位字符串(B"0101010"
)及其各自的十六进制等值(NX"01F5A4"
和BX"2A"
)。
答案 1 :(得分:2)
Cobol是否在 EBCDIC 计算机(Mainframe / AS400)上运行,并且该文件来自 Windows计算机 ???。
Ebcdic只有一个行尾字符 x'25'与ascii中的2(\ r,\ n)相对应。 X'0D25'是 Windows 行尾标记 \ r \ n 的Ebcdic表示形式。在Ebcdic中,0D不是有效字符。
可能是问题的根源: