【问题标题】:COBOL code to replace characters by html entities用 html 实体替换字符的 COBOL 代码
【发布时间】:2014-09-28 21:06:25
【问题描述】:

我想用 COBOL 将字符 '' 替换为 <>。我想知道 INSPECT 语句,但看起来这个语句只能用来翻译一个字符。我的意图是用它们的 html 实体替换所有 html 字符。

有人能想出办法吗?也许循环遍历字符串并测试每个字符是唯一的方法?

欢迎使用 GnuCOBOL 或 IBM COBOL 示例。

我最好的代码是这样的:(http://ideone.com/MKiAc6)

IDENTIFICATION DIVISION.
PROGRAM-ID. HTMLSECURE.

ENVIRONMENT DIVISION.

DATA DIVISION.
WORKING-STORAGE SECTION.
77 INPTXT PIC X(50).
77 OUTTXT PIC X(500).
77 I PIC 9(4) COMP VALUE 1.
77 P PIC 9(4) COMP VALUE 1.

PROCEDURE DIVISION.
    MOVE 1 TO P
    MOVE '<SCRIPT> TEST TEST </SCRIPT>' TO INPTXT

    PERFORM VARYING I FROM 1 BY 1
            UNTIL I EQUAL LENGTH OF INPTXT

        EVALUATE INPTXT(I:1)
            WHEN '<'
                MOVE "&lt;" TO OUTTXT(P:4)
                ADD 4 TO P
            WHEN '>'
                MOVE "&gt;" TO OUTTXT(P:4)
                ADD 4 TO P
            WHEN OTHER
                MOVE INPTXT(I:1) TO OUTTXT(P:1)
                ADD 1 TO P
        END-EVALUATE
    END-PERFORM

    DISPLAY OUTTXT

    STOP RUN
    .

【问题讨论】:

  • 我认为你需要澄清你想要做什么。目前,您似乎不想做任何事情(将 > 更改为 > 并将
  • 我通过在编辑中查看如何显示您想要的内容来解决问题,我在 < 周围添加了反引号。并共同阻止它们被逐字处理。现在可以看到你在追求什么。
  • 您接受了建议的各种解决方案中的哪一部分? :-)
  • 好的,目前还不清楚您要使用什么。问题和答案的部分重点是帮助将来搜索类似问题。发现此内容的人不会确切知道对您有什么帮助。
  • 是的,你完全正确。

标签: html cobol


【解决方案1】:

GnuCOBOL(是的,另一个名称品牌更改)有一个内在的功能扩展,FUNCTION SUBSTITUTE。

move function substitute(inptxt, ">", "&gt;", "<", "&lt;") to where-ever-including-inptxt

接受一个主题字符串,以及成对的模式和替换。 (这不是正则表达式模式,直接文本匹配)。有关更多详细信息,请参阅http://opencobol.add1tocobol.com/gnucobol/#function-substitute。模式和替换都可以是不同的长度。

由于内部函数返回匿名 COBOL 字段,因此函数的结果可用于覆盖主题字段,而无需担心滑动重叠或其他“边读边更改”问题。

【讨论】:

  • 不错。遗憾的是便携性,但仍然不错。
【解决方案2】:

COBOL 是一种固定长度字段的语言。所以不,INSPECT 不会做你想做的事。

如果您在 IBM 大型机上需要此功能,您的 SORT 产品(假设足够最新)可以使用 FINDREP 完成此操作。

如果您查看 Enterprise COBOL 中的 XML 处理可能性,您会发现它们完全符合您的要求(我猜)。 GnuCOBOL 还可以轻松地与许多其他事物交互。如果您正在编写 GnuCOBOL 以在非大型机上运行,​​我建议您咨询 SourceForge 的 GnuCOBOL 部分。

否则,是的,这将归结为循环遍历数据。一旦你更清楚你想要什么,如果你仍然需要它们,你可能会得到一些例子。

【讨论】:

  • SORT 无济于事,因为它应该在线。最后一个成就是可以在任何 COBOL 编译器下编译的代码。
猜你喜欢
  • 1970-01-01
  • 2019-03-20
  • 2018-10-21
  • 2012-06-14
  • 2023-03-11
  • 1970-01-01
  • 2012-12-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多