【问题标题】:cobol & JCL removing extra spacescobol & JCL 去除多余的空格
【发布时间】:2017-08-02 18:25:51
【问题描述】:

我正在尝试接受来自 jcl 的输入,例如“John Snow”并从我的 cobol 程序运行它我使用 JUSTIFIED RIGHT VALUE SPACES 将字符串移动到右侧但是我需要使用我的 cobol pgm 删除额外的空格.

示例 我的工作存储是:

01 ALPHA-ITEM PIC X(50).                           
01 MOVE-ITEM REDEFINES ALPHA-ITEM PIC X(50).       
01 NUM-ITEM PIC X(50) JUSTIFIED RIGHT VALUE SPACES.

在我的程序部门

ACCEPT ALPHA-ITEM.         
MOVE MOVE-ITEM TO NUM-ITEM.
DISPLAY NUM-ITEM.  

它在屏幕右侧显示“John Snow”,但我不知道如何删除多余的空格。

【问题讨论】:

  • define "delete the extra spaces" 因为 cobol 中的所有图片子句都有固定的长度,你不能真正删除它们。您只想显示没有空格的字段,还是尝试将其写入文件?
  • 如果可能的话,我正在尝试在没有空格的情况下显示它们。
  • @Walee 你的编译器上没有FUNCTION TRIM(你没有指定编译器)吗?笔记。在大多数情况下,大型机 + gnu-cobol 标签都是错误的(我听说有人在大型机上使用 gnucobol 进行 64 位 COBOL,但我想这不是您的用例)。除了清理标签和指定编译器:请接受最适合您的答案。
  • gnucobol 是 sus,带有 JCL,除非您使用 BPXBATCH 在 USS 上执行。

标签: cobol mainframe jcl gnucobol


【解决方案1】:

你需要这样的东西:

01 ALPHA-ITEM PIC X(50).                                 
01 WS-INDEX PIC 99.

ACCEPT ALPHA-ITEM  

PERFORM VARYING WS-INDEX 
    FROM 50 BY -1
   UNTIL ALPHA-ITEM(WS-INDEX:1) NOT EQUAL SPACE
         OR WS-INDEX < 1
END-PERFORM

DISPLAY ALPHA-ITEM(1:WS-INDEX).  

此代码将接受 alpha 项,然后运行一个循环来找出数据的实际长度。然后它将从位置 1 开始显示该字段,直到在循环中设置的计数器。

【讨论】:

  • ACCEPT ALPHA-ITEM. MOVE MOVE-ITEM TO NUM-ITEM. DISPLAY NUM-ITEM. PERFORM VARYING WS-INDEX FROM 50 BY -1 UNTIL NUM-ITEM(WS-INDEX:1) NOT EQUAL SPACE OR WS-INDEX &lt; 1 END-PERFORM DISPLAY NUM-ITEM(1:WS-INDEX). it 仍然显示空格,并且由于某种原因它不是 JUSTIFIED RIGHT VALUE SPACES。
  • 是的,它会因为您在删除空格后用空格正确对齐它。问题是您正在删除空格,然后当您将其移动到右对齐字段时,它正在使用空格来右对齐
  • 基本上你不能用空格正确地证明它,然后期望不是前导空格。没有像我在我的例子中那样的正当理由这样做
  • @Walee:请接受这个答案,因为这似乎最适合你。请编辑您的问题,清理标签并指定您使用的编译器(我仍然觉得它令人困惑,因为FUNCTION TRIM 是您使用的标签的解决方案)。
【解决方案2】:

还有..由于某种原因不受欢迎。 将由空格分隔的 MOVE-ITEM 取消字符串化为 NUM-ITEM。

【讨论】:

  • 这会移动“John”,但不会移动“Snow”。
  • 非常正确,从某个地方开始。然后回到嵌入式 SQL。遗憾的是,我们无法将引用修改扩展为更像 Pythonic 切片。
猜你喜欢
  • 2013-05-14
  • 2011-09-20
  • 1970-01-01
  • 2019-03-03
  • 2022-07-23
  • 2016-05-19
  • 2012-01-24
  • 1970-01-01
相关资源
最近更新 更多