COBOL代码以取代HTML实体字符(COBOL code to replace character

2019-11-03 08:10发布

我想更换用字符“<”和“>” &lt;&gt; 用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
    .

Answer 1:

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

如果您需要这为IBM大型机,您SORT产品(假设足够了最新的),使用可以做到这一点FINDREP

如果你看一下在企业COBOL XML处理的可能性,你会看到他们做你想要什么(我猜)。 GnuCOBOL也可以很容易地与许多其他的东西接口。 如果您是在非主机上运行写GnuCOBOL,我建议你问SourceForge上的GnuCOBOL一部分。

否则,是的,它会回落到通过数据循环。 一旦你明确你想要的东西多一点,你可能会得到这样的例子,如果你仍然需要它们。



Answer 2:

GnuCOBOL(是的,另一名品牌的变化)的特性功能扩展,功能替代品。

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

拍摄对象的字符串,以及对模式和替换。 (这不是正则表达式模式,直线上升文本匹配)。 见http://opencobol.add1tocobol.com/gnucobol/#function-substitute一些更多的细节。 这些模式和替换可以全部是不同长度。

作为内部函数返回匿名COBOL领域,函数的结果可以用来改写的主题领域,没有滑动的重叠或其他“改变,而读”问题的担忧。



文章来源: COBOL code to replace characters by html entities
标签: html cobol