Cobol 替换所有模式匹配
Cobol REPLACING ALL pattern matching
我正在转换一些遗留的 COBOL 代码,遇到了这样的语句:
INSPECT WS-LOCAL-VAR REPLACING ALL X'0D25' BY ' '
我知道 INSPECT...REPLACING ALL 语句将查看 WS-LOCAL-VAR,匹配模式 X'0D25' 并将其替换为 space。
我不明白'0D25'之外的X的用途。我在网上找到的所有 REPLACING ALL 示例都只使用 char 文字进行模式匹配。
X 如何影响被替换的模式?
COBOL 在 EBCDIC 机器上 运行,输入文件来自 Windows 机器。
Cobol 运行 是否在 EBCDIC 机器(大型机/AS400)上并且文件来自 Windows机器 ???。
Ebcdic 只有一个行尾字符 x'25' 与 ascii 中的 2 (\r, \n) 相对。 X'0D25' 是 Windows End-of-Line Marker 的 Ebcdic 表示\r\n。在 Ebcdic 中,0D 不是有效字符。
问题的可能来源:
- 传输到大型机/AS400 时 Windows 文本文件的转换不佳。
- Java(可能还有其他现代语言)Windows。 Java on windows 支持使用其标准编写器编写 Ebcdic 文本文件。但是在 Windows 上,Java 坚持写 \r\n 即使 \r 是 不是有效的 EBCDIC 字符,您会得到包含 x'0D25' 的损坏文件。
- 如果您将硬编码 \r\n 的程序移动到大型机并 运行 它,您也会在文件中得到 x'0d25'。
X表示字符串中的字符是十六进制的。在这种情况下,X"0D"
表示 return 回车符,X"25"
表示 % 符号(假设是 ASCII 系统)。
类似的符号用于指示国家字符串 (N"
こんにちは"
) 和 boolean/bit 字符串 (B"0101010"
) 及其各自的十六进制等效项(NX"01F5A4"
和 BX"2A"
).
我正在转换一些遗留的 COBOL 代码,遇到了这样的语句:
INSPECT WS-LOCAL-VAR REPLACING ALL X'0D25' BY ' '
我知道 INSPECT...REPLACING ALL 语句将查看 WS-LOCAL-VAR,匹配模式 X'0D25' 并将其替换为 space。
我不明白'0D25'之外的X的用途。我在网上找到的所有 REPLACING ALL 示例都只使用 char 文字进行模式匹配。
X 如何影响被替换的模式?
COBOL 在 EBCDIC 机器上 运行,输入文件来自 Windows 机器。
Cobol 运行 是否在 EBCDIC 机器(大型机/AS400)上并且文件来自 Windows机器 ???。
Ebcdic 只有一个行尾字符 x'25' 与 ascii 中的 2 (\r, \n) 相对。 X'0D25' 是 Windows End-of-Line Marker 的 Ebcdic 表示\r\n。在 Ebcdic 中,0D 不是有效字符。
问题的可能来源:
- 传输到大型机/AS400 时 Windows 文本文件的转换不佳。
- Java(可能还有其他现代语言)Windows。 Java on windows 支持使用其标准编写器编写 Ebcdic 文本文件。但是在 Windows 上,Java 坚持写 \r\n 即使 \r 是 不是有效的 EBCDIC 字符,您会得到包含 x'0D25' 的损坏文件。
- 如果您将硬编码 \r\n 的程序移动到大型机并 运行 它,您也会在文件中得到 x'0d25'。
X表示字符串中的字符是十六进制的。在这种情况下,X"0D"
表示 return 回车符,X"25"
表示 % 符号(假设是 ASCII 系统)。
类似的符号用于指示国家字符串 (N"
こんにちは"
) 和 boolean/bit 字符串 (B"0101010"
) 及其各自的十六进制等效项(NX"01F5A4"
和 BX"2A"
).