IBM大型机论坛索引
 
登录
 
IBM大型机论坛索引 大型机:搜索 IBM Mainframe论坛:常见问题解答 寄存器
 

获取最后4个非空白字符


IBM大型机论坛 -> COBOL程式设计
发表新话题   回复主题
查看上一个主题 :: 查看下一个主题  
作者 信息
vinu78

活跃用户


已加入:2008年10月2日
帖子:179
地点:印度

发布发表:2012年12月6日,星期四,今天双色球开奖结果9:02
引用回复

你好

我有一个图片X(8)。

01 TIER-ID 图十(8).

我的要求是获取最后4个非空白字符并将其存储在其他字段中。

TIER-ID字段值
GBZ123
A B C D
ZEDACCD
美国广播公司

输出量
Z123
A B C D
CCD
BCDE

你能帮忙吗?

谢谢
维努
回到顶部
查看用户资料 发送私信
潘多拉魔盒

主持人


已加入:2006年9月7日
职位:1565
地点:仙女座星系

发布发表:2012年12月6日,星期四,今天双色球开奖结果9:22
引用回复

当变量包含时您需要什么

AB
A
交流电

您的变量是否包含较低的值?
回到顶部
查看用户资料 发送私信
vinu78

活跃用户


已加入:2008年10月2日
帖子:179
地点:印度

发布发表:2012年12月6日,星期四,今天双色球开奖结果9:29
引用回复

我们确保变量将始终包含至少4个字节或更大的值(直到8个字节),并且不包含低值。

谢谢
维努
回到顶部
查看用户资料 发送私信
潘多拉魔盒

主持人


已加入:2006年9月7日
职位:1565
地点:仙女座星系

发布发表:2012年12月6日,星期四,今天双色球开奖结果9:36
引用回复

您的变量也将包含

bbbABCDb

b在哪里代表空格?
回到顶部
查看用户资料 发送私信
vinu78

活跃用户


已加入:2008年10月2日
帖子:179
地点:印度

发布发表:2012年12月6日,星期四,今天双色球开奖结果9:39
引用回复

该变量可以在末尾而不是开头包含空格。
该变量之间也将不包含空格。

谢谢
维努
回到顶部
查看用户资料 发送私信
潘多拉魔盒

主持人


已加入:2006年9月7日
职位:1565
地点:仙女座星系

发布发表:2012年12月6日,星期四,今天双色球开奖结果9:47
引用回复

您可以尝试的是

码:
检查所有空间

在WSCOUNT-1中获取计数

在WSLENGTH-1中找到变量的长度

WS-START =(WSLENGTH-1-WSCOUNT-1) - WSCOUNT-1+1

移动TIERID(WS-START:4) TO


如果您确定长度没有变化,则WSLENGTH-1中的值可以为8

应该管用
回到顶部
查看用户资料 发送私信
vinu78

活跃用户


已加入:2008年10月2日
帖子:179
地点:印度

发布发表:2012年12月6日,星期四,今天双色球开奖结果9:57
引用回复

感谢您的代码。
只是为了确保我正确理解它。

假设如果pic x(8)变量值为ABCDE,那么按照您的逻辑,

WS-COUNT将包含3(末尾有3个空格)
WS-LENGTH1将包含5
WS-START =(5-3) - 3 + 1 = 0

等级(0:4)==>

请让我知道WS-START背后的逻辑

谢谢
维努
回到顶部
查看用户资料 发送私信
潘多拉魔盒

主持人


已加入:2006年9月7日
职位:1565
地点:仙女座星系

发布发表:2012年12月6日,星期四,今天双色球开奖结果10:20
引用回复

道歉 icon_redface.gif

我错了,应该是

码:
检查所有空间

在WSCOUNT-1中获取计数

在WSLENGTH-1中找到变量的长度

WS-START =(WSLENGTH-1 - 4) - WSCOUNT-1+1

移动TIERID(WS-START:4) TO



假设pic x(8)变量的值为ABCDE,那么按照我的逻辑,

WS-COUNT将包含3(末尾有3个空格)
WS-LENGTH1将包含8
WS-START =(8-4) - 3 + 1 = 2


假设pic x(8)变量值是否为ABCDEFGH

WS-COUNT将包含0
WS-LENGTH1将包含8
WS-START =(8-4) - 0 + 1 = 5
回到顶部
查看用户资料 发送私信
vinu78

活跃用户


已加入:2008年10月2日
帖子:179
地点:印度

发布发表:2012年12月6日,星期四,今天双色球开奖结果10:47
引用回复

谢谢潘多拉。
这似乎工作正常。
回到顶部
查看用户资料 发送私信
比尔·伍德格

主持人荣誉


加入时间:2011年3月9日
帖子:7311
位置:矩阵内部

发布发表:2012年12月6日,星期四,下午1:37
引用回复

vinu78,

您没有回答潘多拉盒子的所有问题。

有很多方法可以做到这一点。如果要这样做,请确保测试您的全部能力。

码:
       识别部门。
       PROGRAM-ID. STUB20.
                                                                     
       DATA DIVISION.
       工作存储部分。
       01  W-WHEN-COMPILED                      图十(8)BX(8).
       01 W-FIELD-TO-GET-LAST-4-OF-8           PIC X(8).
       01  W-LAST-4-OF-8                        图十(4)
                                                  JUSTIFIED RIGHT.
       PROCEDURE DIVISION.
                                                                     
           MOVE WHEN-COMPILED           TO W-WHEN-COMPILED
           DISPLAY "STUB20 " W-WHEN-COMPILED
           MOVE "ABCDE"                 W-FIELD-TO-GET-LAST-4-OF-8
           PERFORM                      10-DO-BUSINESS
           MOVE "ABCDEFGH"             W-FIELD-TO-GET-LAST-4-OF-8
           PERFORM                      10-DO-BUSINESS
           MOVE "AB      "             W-FIELD-TO-GET-LAST-4-OF-8
           PERFORM                      10-DO-BUSINESS
           MOVE SPACE                   W-FIELD-TO-GET-LAST-4-OF-8
           PERFORM                      10-DO-BUSINESS
                                                                     
           GOBACK
           .
       10-DO-BUSINESS.
           放开W-FIELD-TO-GET-LAST-4-OF-8
             DELIMITED BY SPACE
             INTO W-LAST-4-OF-8
           DISPLAY
                   ">"
                   W-FIELD-TO-GET-LAST-4-OF-8
                   "<"
           DISPLAY
                   ">"
                   W-LAST-4-OF-8
                   "<"
           .


输出为:

码:
>ABCDE   <
>BCDE<   
>ABCDEFGH<
>EFGH<   
>AB      <
>  AB<   
>        <
>    <   


编辑:对于我自己使用,我永远无法抗拒“正义权利”的“戈尔德洛克定义”,但是对于不了解的人,最好将其完整写成“正义权利”,因此我在这里进行了更改。
回到顶部
查看用户资料 发送私信
vinu78

活跃用户


已加入:2008年10月2日
帖子:179
地点:印度

发布发表:2012年12月6日,星期四,晚上8:03
引用回复

感谢比尔的建议。
您的方法似乎也不错。
但是,如果用户ID为3位数(我之前提到过,因为它不会出现,但只是想知道方法是否为3字节),在您的方法中,用户ID将提取为-例如:'AB提取为“ AB”,而我需要将其提取为“ AB”。
因此,在这种情况下,我们需要对UNSTRING进行哪些更改。


Pandora Box-我想您可能还有其他方法。当前方法不会处理少于4位数字的用户ID。所以好奇地想知道我们是否只需要放入下面提到的支票
码:
如果WS-START< 0
   将TIERID移至输出变量
其他
   您上面提到的方法
万一。
回到顶部
查看用户资料 发送私信
潘多拉魔盒

主持人


已加入:2006年9月7日
职位:1565
地点:仙女座星系

发布发表:2012年12月6日,星期四,下午8:52
引用回复

引用:
我们确保变量将始终包含至少4个字节或更大的值(直到8个字节),并且不包含低值。


这是当我问该值是否包含更多空格时引用的内容

同样,当您拥有最佳选择时,为什么还要再次回顾所需的内容呢?



当你的变量有

码:
AB       


你需要

码:
AB 
作为输出

要么
码:
   AB


作为输出
回到顶部
查看用户资料 发送私信
恩里科·索里切蒂

高级主持人


已加入:2007年3月14日
帖子:10715
所在地:意大利

发布发表:2012年12月6日,星期四,下午8:52
引用回复

引用:
但是,如果用户ID为3位数(我之前提到过,因为它不会出现,但只是想知道方法是否为3字节),在您的方法中,用户ID将提取为-例如:'AB提取为“ AB”,而我需要将其提取为“ AB”。


如果您从一开始就发布所有需求,那就太好了。
您根本没有理由抱怨发布的解决方案
你从来没有告诉过要做什么<shorter> string ...
ALIGN-JUSTIFY LEFT或RIGHT ???
回到顶部
查看用户资料 发送私信
vinu78

活跃用户


已加入:2008年10月2日
帖子:179
地点:印度

发布发表:2012年12月6日,星期四,晚上10:13
引用回复

对不起潘朵拉。
我的要求是,您可以使用良好的解决方案。
只是想知道如果包含3个字节的TIERID,应该采用哪种方法。输出的TIERID应该保持左对齐。

谢谢
维努
回到顶部
查看用户资料 发送私信
潘多拉魔盒

主持人


已加入:2006年9月7日
职位:1565
地点:仙女座星系

发布发表:2012年12月6日,星期四10:23 pm
引用回复

我的解决方案对包含值的变量很可悲> 4 space

如果计数大于4时输入始终保持对齐,则可以移动(1:4)进行输出

在比尔给出解决方案之前,我的解决方案一直很好 icon_smile.gif

请尝试充分利用更好的代码
回到顶部
查看用户资料 发送私信
vinu78

活跃用户


已加入:2008年10月2日
帖子:179
地点:印度

发布发表:2012年12月6日,星期四,晚上10:34
引用回复

Pandora-您的解决方案很好,因为它是通用的。即,即使值是浮动的,它也可以使用4字节到8字节之间的任何值。即,它从第二个字节开始。

Bill的解决方案既简单又好,对于1到8个字节之间的TIERID值,它的工作效果很好。但是,如果值是浮动的,则此解决方案可能会出现左高程问题。即,如果输入的是3位数字“ ABC”,则输出为
'ABC',因为它是正确的

因此,对我来说,这两种解决方案都不错。

〜Vinu〜
回到顶部
查看用户资料 发送私信
比尔·伍德格

主持人荣誉


加入时间:2011年3月9日
帖子:7311
位置:矩阵内部

发布发表:2012年12月6日,星期四,11:06 pm
引用回复

请记住,还有其他方法。

您可以使用REDEFINEs来完成整个工作。

您可以将REDEFINEs方法的概念与UNSTRING结合使用。

码:
01 W-FIELD-TO-GET-LAST-4-OF-8 图十(8).
01 填充程序重新定义W-FIELD-TO-GET-LAST-OF-8。
    05 W-FIELD-TO-GET-FIRST-4-OF-8 图十(4).
    05  FILLER 图十.
       88 W-字节-空间-左对齐值空间。
    05  FILLER 图十XX.


码:
如果W-字节-空间是左对齐
    移动W-FIELD-TO-GET-FIRST-4-OF-8 TO wherever
其他
   像以前一样解压缩
回到顶部
查看用户资料 发送私信
vinu78

活跃用户


已加入:2008年10月2日
帖子:179
地点:印度

发布发表:2012年12月6日,星期四,晚上11:15
引用回复

谢谢比尔。 Thatz很好的解决方案。
回到顶部
查看用户资料 发送私信
查看上一个主题 :: :: 查看下一个主题  
发表新话题   回复主题 查看书签
所有时间均为格林尼治标准时间+ 6小时
论坛索引 -> COBOL程式设计

 


类似主题
话题 论坛 回覆
没有新帖 特殊字符管道"|"... COBOL程式设计 1
没有新帖 汉字变得越来越... CICS 2
没有新帖 消除XML解析中的空白... COBOL程式设计 0
没有新帖 文件传输问题与行尾... TSO / ISPF 4
没有新帖 FTP-转换特殊字符... TSO / ISPF 3
搜索我们的论坛:


回到顶部