Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Cobol替换所有模式匹配_Cobol - Fatal编程技术网

Cobol替换所有模式匹配

Cobol替换所有模式匹配,cobol,Cobol,我正在转换一些遗留COBOL代码,遇到了如下语句: INSPECT WS-LOCAL-VAR REPLACING ALL X'0D25' BY ' ' 我知道INSPECT…replacement ALL语句将检查WS-LOCAL-VAR,匹配模式X'0D25'并用空格替换它 我不明白的是“0D25”之外的X的用途。我在网上找到的所有替换示例都只使用char文本进行模式匹配 X如何影响被替换的图案 COBOL正在EBCDIC计算机上运行,输入文件来自Windows计算机。是在EBCDIC计算机

我正在转换一些遗留COBOL代码,遇到了如下语句:

INSPECT WS-LOCAL-VAR REPLACING ALL X'0D25' BY ' '
我知道INSPECT…replacement ALL语句将检查WS-LOCAL-VAR,匹配模式X'0D25'并用空格替换它

我不明白的是“0D25”之外的X的用途。我在网上找到的所有替换示例都只使用char文本进行模式匹配

X如何影响被替换的图案


COBOL正在EBCDIC计算机上运行,输入文件来自Windows计算机。

是在EBCDIC计算机(大型机/AS400)上运行的COBOL,是来自Windows计算机的文件

Ebcdic只有一个与ascii中的2(\r\n)对应的行尾字符x'25'X'0D25'窗口的Ebcdic表示形式行尾标记\r\n。在Ebcdic中,0D不是有效字符

问题的可能来源:

  • 将Windows文本文件传输到大型机/AS400时转换不良
  • Windows上的Java(可能还有其他现代语言)。windows上的Java支持使用其标准编写器编写Ebcdic文本文件。但在Windows上,Java坚持写入\r\n,即使\r不是有效的EBCDIC字符,并且您会收到包含x'0D25'的损坏文件
  • 如果您将硬编码的程序移动到大型机并运行,您还将在文件中获得x'0d25'

    • Cobol是否在EBCDIC计算机(大型机/AS400)上运行,文件是否来自Windows计算机

      Ebcdic只有一个与ascii中的2(\r\n)对应的行尾字符x'25'X'0D25'窗口的Ebcdic表示形式行尾标记\r\n。在Ebcdic中,0D不是有效字符

      问题的可能来源:

      • 将Windows文本文件传输到大型机/AS400时转换不良
      • Windows上的Java(可能还有其他现代语言)。windows上的Java支持使用其标准编写器编写Ebcdic文本文件。但在Windows上,Java坚持写入\r\n,即使\r不是有效的EBCDIC字符,并且您会收到包含x'0D25'的损坏文件
      • 如果您将硬编码的程序移动到大型机并运行,您还将在文件中获得x'0d25'

      X表示字符串中的字符是十六进制的。在这种情况下,
      X“0D”
      表示回车符,
      X“25”
      表示%符号(假定为ASCII系统)

      类似的符号用于表示国家字符串(
      N“
      
      こんにちは"
      )和布尔/位字符串(
      B“0101010”
      )及其各自的十六进制等价物(
      NX“01F5A4”
      BX“2A”
      )。

      X>表示字符串中的字符是十六进制的。在这种情况下,
      X“0D”
      表示回车符,
      X“25”
      表示百分号(假设使用ASCII系统)

      类似的符号用于表示国家字符串(
      N“
      
      こんにちは“
      )和布尔/位字符串(
      B“0101010”
      )及其各自的十六进制等价物(
      NX“01F5A4”
      BX“2A”
      )。

      正在告诉您文字被解释为十六进制字符代码。我不知道OP有什么作用。我找到了一位有更多COBOL经验的同事,并确认您是正确的,它基于十六进制代码“0D25”的字符匹配(我在问题中写错了)。我假设“X”正在告诉您文字被解释为十六进制字符代码。我不知道OP有什么作用。我找到了一位有更多COBOL经验的同事,并确认您是正确的,它基于十六进制代码“0D25”的字符匹配(我在问题中写错了)EBCDIC x'0D'仍然是CR字符。听起来文件传输没有正确转换源系统的行尾,但它正在将x'0A'LF字符转换为EBCDIC等效的x'25。EBCDIC x'0D'仍然是CR字符。听起来文件传输没有正确转换源系统的行尾,但它正在将X'0A'LF字符转换为EBCDIC等效的X'25'。