cobol&;删除额外空间

cobol&;删除额外空间,cobol,mainframe,jcl,gnucobol,Cobol,Mainframe,Jcl,Gnucobol,我试图接受jcl的输入,例如“John Snow”,并从我的cobol程序运行它,我使用对齐的右值空格将字符串移动到右侧,但是我需要使用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 SPA

我试图接受jcl的输入,例如“John Snow”,并从我的cobol程序运行它,我使用对齐的右值空格将字符串移动到右侧,但是我需要使用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”,但我不知道如何删除多余的空格。

您需要这样的内容:

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

接受ALPHA-ITEM
执行不同的WS-INDEX
从50乘1
直到ALPHA-ITEM(WS-INDEX:1)的空间不相等
或WS-INDEX<1
末端执行
显示ALPHA-ITEM(1:WS-INDEX)。

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

您需要这样的内容:

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

接受ALPHA-ITEM
执行不同的WS-INDEX
从50乘1
直到ALPHA-ITEM(WS-INDEX:1)的空间不相等
或WS-INDEX<1
末端执行
显示ALPHA-ITEM(1:WS-INDEX)。

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

还有。。由于某种原因不受欢迎。
将空格分隔的MOVE-ITEM解压为NUM-ITEM。

还有。。由于某种原因不受欢迎。
将由空格分隔的MOVE-ITEM解压为NUM-ITEM。

定义“删除额外空格”,因为cobol中的所有picture子句都有一个设置的长度,所以不能真正删除它们。您只是想显示不带空格的字段,还是想将其写入文件?如果可能的话,我基本上是在不带空格的情况下显示的。@Walee您的编译器上没有
函数TRIM
(您没有指定编译器)?注意。在大多数情况下,mainframe+gnucobol标记都是错误的(我听说有人在64位cobol的大型机上使用gnucobol,但我想这不是您的用例)。除了清理标记和指定编译器之外:请接受最适合您的答案。gnucobol是sus,带有JCL,除非您使用BPXBATCH在USS上执行。定义“删除额外空格”,因为cobol中的所有picture子句都有一个设置的长度,所以您无法真正删除它们。您只是想显示不带空格的字段,还是想将其写入文件?如果可能的话,我基本上是在不带空格的情况下显示的。@Walee您的编译器上没有
函数TRIM
(您没有指定编译器)?注意。在大多数情况下,mainframe+gnucobol标记都是错误的(我听说有人在64位cobol的大型机上使用gnucobol,但我想这不是您的用例)。除了清理标记和指定编译器之外:请接受最适合您的答案。gnucobol是sus,带有JCL,除非您使用BPXBATCH在USS上执行。
accept ALPHA-ITEM。将MOVE-ITEM移动到NUM-ITEM。显示NUM-ITEM。执行从50乘-1到NUM-ITEM(WS-INDEX:1)不等空间或WS-INDEX<1的可变WS-INDEX结束执行显示NUM-ITEM(1:WS-INDEX)它仍然显示空格,由于某些原因,它的右值空格没有对齐。是的,它会对齐,因为在删除空格后,您刚刚使用空格对其进行了右对齐。问题是,您正在删除空格,然后当您将其移动到右对齐字段时,它正在使用空格对其进行右对齐。基本上,您不能使用空格对其进行右对齐,然后期望不使用前导空格。做这件事没有理由,就像我在我的生活中所做的那样example@Walee当前位置请接受这个答案,因为这似乎最适合你。请编辑您的问题,清理标签并指定您使用的编译器(我仍然觉得它令人困惑,因为
函数TRIM
是您使用的标签的解决方案)。
接受ALPHA-ITEM。将MOVE-ITEM移动到NUM-ITEM。显示NUM-ITEM。执行从50乘-1到NUM-ITEM(WS-INDEX:1)不等空间或WS-INDEX<1的可变WS-INDEX结束执行显示NUM-ITEM(1:WS-INDEX)它仍然显示空格,由于某些原因,它的右值空格没有对齐。是的,它会对齐,因为在删除空格后,您刚刚使用空格对其进行了右对齐。问题是,您正在删除空格,然后当您将其移动到右对齐字段时,它正在使用空格对其进行右对齐。基本上,您不能使用空格对其进行右对齐,然后期望不使用前导空格。做这件事没有理由,就像我在我的生活中所做的那样example@Walee当前位置请接受这个答案,因为这似乎最适合你。请编辑你的问题清理标记并指定你使用的编译器(我仍然觉得它令人困惑,因为
函数TRIM
是你使用的标记的解决方案)。这将移动“John”而不是“Snow”。非常正确,从某个地方开始。然后回到嵌入式SQL。遗憾的是,我们无法将引用修改扩展到更像Pythonic切片。这将移动“John”而不是“Snow”。非常正确,从某个地方开始。然后回到嵌入式SQL。遗憾的是,我们不能将引用修改扩展到更像Pythonic切片。