【问题标题】:why is this trim text trailing not working?为什么这个修剪文本尾随不起作用?
【发布时间】:2021-10-01 19:21:16
【问题描述】:
       IDENTIFICATION DIVISION.
       PROGRAM-ID. KATA.
       DATA DIVISION.
       WORKING-STORAGE SECTION.
       01 WS-INPUT      PIC A(200).
       01 WS-OUT        PIC A(200).
       01 I             PIC 9(08).
       01 J             PIC 9(08).
       01 INP-LEN       PIC 9(08).
       PROCEDURE DIVISION.
       DISPLAY "INPUT YOUR STRING"
       ACCEPT WS-INPUT
       DISPLAY "REVERSING ......."
       MOVE FUNCTION LENGTH(FUNCTION TRIM(WS-INPUT TRAILING)) TO INP-LEN
       DISPLAY "Just for reference : Your string is "INP-LEN " long"
       MOVE 1 to I.
       PERFORM VARYING J from INP-LEN by -1 UNTIL J =0
       MOVE WS-INPUT(I:1) to WS-OUT(J:1)
       MOVE FUNCTION TRIM(WS-OUT TRAILING) TO WS-OUT
       ADD 1 to I
       END-PERFORM
       MOVE FUNCTION TRIM(WS-OUT TRAILING) TO WS-OUT.
       DISPLAY WS-OUT
       DISPLAY FUNCTION LENGTH(WS-OUT)
       STOP RUN.

运行程序输入ctrl test

如果你运行程序你会看到WS-INPUT的长度是:

Just for reference : Your string is 00000009 long

但是如果你这样做是为了输出它会说字符串的长度是200 我得到的反转字符串也是:

tset lrtc                                                                                                                                                                                               

这是 200,而不是我设置的。

谁能解释我哪里出错了,我能做些什么来解决它?

(注意:我最初尝试使用函数REVERSE,所以很简单

       MOVE FUNCTION REVERSE(WS-INPUT) TO WS-OUTPUT

同样的问题也存在 )

【问题讨论】:

    标签: string cobol


    【解决方案1】:

    FUNCTION LENGTH (source) 从源中获取长度,在您的情况下是 WS-OUT,即 PIC A(200) - 所以答案 200 是正确的。

    FUNCTION TRIM (source TRAILING) 为每个函数创建一个临时/内部项 - 在这种情况下,从 source 中删除尾随 SPACES

    由于您的 MOVE 这个临时项目的长度为 9 到一个长度为 200 的字段,因此它被空格右填充。 只有DYNAMIC LENGTH 项目通过MOVE 获得动态大小,所有其他项目始终保持其大小。 [为简单起见,将“ODO”排除在外...]

    您可能需要一个嵌套函数调用:TRIM + REVERSE / LENGTH

    DISPLAY FUNCTION LENGTH ( FUNCTION TRIM (WS-OUT) )
    DISPLAY "-" FUNCTION REVERSE ( FUNCTION TRIM (WS-IN TRAILING) ) "-"
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-16
      • 2020-08-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-17
      相关资源
      最近更新 更多