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

Cobol代码Firstnm * MI * Lastname to Lastname Firstname Middle


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

新的用户


已加入:2007年3月8日
帖子:8
所在地:美国

 发布 发表:2007年3月8日,星期四,上午8:36
引用回复

任何人都可以帮助获取将输入名字* MI *姓氏转换为姓氏名中间名的cobolcode。输入为30个字节长(F * M * L),以向L F M输出30个字节长。

输入:Van * Dame * start
输出:启动Van Dame

输入:John ** doe
输出:Doe John
回到顶部
查看用户资料 发送私信
迪克·谢勒

主持人荣誉


已加入:2006年11月23日
帖子:19245
位置:矩阵内部

 发布 发表:2007年3月8日,星期四,上午8:42
引用回复

你好,

名称字段“ *”是否定界?

是否会始终填充所有3个组件(即没有中间名/首字母的人呢?)?请描述贵组织中有关名称的任何“规则”。

您是否担心将名字和姓氏的首字母大写转换为其余的小写字母?我只是因为你的例子而问。
回到顶部
查看用户资料 发送私信
Vishwaroopa

新的用户


已加入:2007年3月8日
帖子:8
所在地:美国

 发布 发表:2007年3月8日星期四上午10:08
引用回复

不,三个组件将不会总是被填充。如果看下面的第二个例子。有时未填充中间名。

输入:John ** doe
输出:Doe John

我不担心大写


谢谢你的帮助
回到顶部
查看用户资料 发送私信
Vishwaroopa

新的用户


已加入:2007年3月8日
帖子:8
所在地:美国

 发布 发表:2007年3月8日星期四上午10:10
引用回复

是的,分隔符为“ *”。

谢谢
回到顶部
查看用户资料 发送私信
阿克希尔萨加尔

活跃成员


已加入:2007年2月27日
帖子:691
地点:地球

 发布 发表:2007年3月8日,星期四,12:26 pm
引用回复

Vishwaroopa,
请参见下面的代码。
我假设名字的最大长度为15个字符。

码:

工作存储部分。
01  WS-NAME PIC X(30).       
01  NAME.                       
 05  L            PIC X(15).     
 05  F            PIC X(15).     
 05  M            PIC X(15).     
*您的格式为L F M 

01  FINAL-NAME PIC X(30). 
程序部门。
主PARA。                                                 
    接受WS-NAME。                                       
   联合国WS-NAME以'*'分隔                 
          F,M,L        
                                 
    串                                                  
        L,'@'                                              
        F,'@'                                              
       M,'@'由空格分隔                         
        进入最终名称。                                   
   检查最终名称替换所有的'@'BY''。           
    DISPLAY FINAL-NAME
                                   

只要存在分隔符“ *”,它将起作用。根据您的要求优化/更改代码。
回到顶部
查看用户资料 发送私信
科博伦尼

活跃用户


加入时间:2006年8月7日
职位:127
位置:印度喀拉拉邦

 发布 发表:2007年3月8日星期四下午1点12分
引用回复

是的,您可以使用第一个unstring中的count-in和pointer子句来优化代码
回到顶部
查看用户资料 发送私信
rajesh_mbt

新的用户


已加入:2006年3月27日
帖子:97
地点:印度

 发布 发表:2007年3月8日,星期四,下午6:15
引用回复

上面的代码可以正常工作。
回到顶部
查看用户资料 发送私信
Vishwaroopa

新的用户


已加入:2007年3月8日
帖子:8
所在地:美国

 发布 发表:2007年3月8日,星期四,9:39 pm
引用回复

感谢每个人的信息。我没有想到“计数”和“指针”子句的想法。任何人都可以给出语法/解释
回到顶部
查看用户资料 发送私信
迪克·谢勒

主持人荣誉


已加入:2006年11月23日
帖子:19245
位置:矩阵内部

 发布 发表:2007年3月8日,星期四,9:40 pm
引用回复

你好,

该信息可以在您可以从该论坛链接到的精细手册中轻松找到(在页面顶部,单击“手册”链接。
回到顶部
查看用户资料 发送私信
Vishwaroopa

新的用户


已加入:2007年3月8日
帖子:8
所在地:美国

 发布 发表:2007年3月8日,星期四,10:12 pm
引用回复

谢谢(你的)信息。

我在这里面临两个问题
1.如果我将L,F,M的大小增加到30,则会在最后显示一些其他字符。如下面

输入:BRETT * M * COX *
输出:COX BRETT M EGLINDE ZA

2.如果姓氏中有一个空格,如下所示,它不会在空格之后提取数据。

e.g 1
输入:VALERIE * J * WENDEL FILKINS *
输出:WENDEL VALERIE J E NZA
e.g 2
输入:DON * L * ROBERTS SR *
输出:ROBERTS DON L
谁能让我知道为什么会这样以及需要什么解决方法?
回到顶部
查看用户资料 发送私信
迪克·谢勒

主持人荣誉


已加入:2006年11月23日
帖子:19245
位置:矩阵内部

 发布 发表:2007年3月8日,星期四,10:25 pm
引用回复

你好,

在处理每个新名称之前,您需要将接收区域初始化为空格。

如果您发布代码,我们可以告诉您嵌入式空间未正确处理。
回到顶部
查看用户资料 发送私信
科博伦尼

活跃用户


加入时间:2006年8月7日
职位:127
位置:印度喀拉拉邦

 发布 发表:2007年3月8日,星期四10:59 pm
引用回复

正如迪克所说,您必须初始化标识符以避免这种情况

对于agkshirsagar提供的代码中的第二个问题,最后一个字符串语句使用空格来分隔标识符FM和L中的数据,以避免您需要在所有FM和L中放置一些数据,例如VALUE ALL'#'并替换希望将STRING语句中的行作为DELIMITED BY'#'来解决您的问题
回到顶部
查看用户资料 发送私信
迪克·谢勒

主持人荣誉


已加入:2006年11月23日
帖子:19245
位置:矩阵内部

 发布 发表:2007年3月8日,星期四,11:22 pm
引用回复

你好,

您也可以将COUNT与“ unstring”一起使用,并将引用修改与“ string”一起使用。

正如我前面提到的,发布您正在使用的实际代码将为您提供更好的答案。
回到顶部
查看用户资料 发送私信
科博伦尼

活跃用户


加入时间:2006年8月7日
职位:127
位置:印度喀拉拉邦

 发布 发表:2007年3月8日,星期四,11:27 pm
引用回复

迪克,我想他是在回忆上面agkshirsagar给出的代码
回到顶部
查看用户资料 发送私信
迪克·谢勒

主持人荣誉


已加入:2006年11月23日
帖子:19245
位置:矩阵内部

 发布 发表:2007年3月8日,星期四,11:40 pm
引用回复

你好,

是的,我相信他以此为榜样。

我不确定那是 精确 正在编译的代码。而不是假设,我的偏好是查看实际代码。
回到顶部
查看用户资料 发送私信
科博伦尼

活跃用户


加入时间:2006年8月7日
职位:127
位置:印度喀拉拉邦

 发布 发表:2007年3月8日,星期四,11:47 pm
引用回复

好的,我只是让您指出这一点,我认为您没有看到代码 icon_cool.gif
回到顶部
查看用户资料 发送私信
迪克·谢勒

主持人荣誉


已加入:2006年11月23日
帖子:19245
位置:矩阵内部

 发布 发表:2007年3月9日星期五,上午12:32
引用回复

我看到了发布的代码。

通常,正在编译的程序中出现的是发布代码的修改版本。

有时这种修改不是故意的 icon_smile.gif
回到顶部
查看用户资料 发送私信
Vishwaroopa

新的用户


已加入:2007年3月8日
帖子:8
所在地:美国

 发布 发表:2007年3月9日,星期五,上午1:41
引用回复

我摆脱了第一个问题。其次仍在尝试。
这是带有输出的实际代码。

01名。
05 L图X(30)VALUE ALL'#'。
05 F PIC X(30)VALUE ALL'#'。
05 M PIC X(30)VALUE ALL'#'。
*您的格式为L F M
01 FINAL-NAME PIC X(30)。
程序部门。

主PARA。

将“ 约翰 * ED * 凯西·萨特伯格 *”移动到WS-NAME。
联合国WS-NAME以'*'分隔
F,M,L

显示'F:' F.
显示'M:' M.
显示'L:' L.


L,'@'
F,'@'
M,'@'由'#'分隔
进入最终名称。
检查最终名称替换所有的'@'BY''。
显示最终名称。

O / p:

女:约翰
M:ED
L:卡西·萨特伯格
凯西·萨特伯格
回到顶部
查看用户资料 发送私信
科博伦尼

活跃用户


加入时间:2006年8月7日
职位:127
位置:印度喀拉拉邦

 发布 发表:2007年3月9日星期五,凌晨2:22
引用回复

很好,因此我们得到了一个实用的模型 icon_wink.gif
回到顶部
查看用户资料 发送私信
Vishwaroopa

新的用户


已加入:2007年3月8日
帖子:8
所在地:美国

 发布 发表:2007年3月9日星期五4:01上午
引用回复

我认为,这不能通过“字符串和检查”动词来实现。 bcoz的姓氏长度是动态的,并且soem乘以时间间隔-这可以通过编写例程来实现。
回到顶部
查看用户资料 发送私信
威廉·汤普森

全球主持人


已加入:2006年11月18日
帖子:3156
所在地:亚利桑那州图森

 发布 发表:2007年3月9日星期五,上午4:28
引用回复

FM指出:“一个UNSTRING语句可以代替一系列MOVE语句”
移动字母数字基本项目的规则与MOVE语句的规则相同。”
您可能会发现此方法更好。
码:

01  NAME.                       
05  L            PIC X(30).
05  F            PIC X(30).
05  M            PIC X(30).
*您的格式为L F M 
01  FINAL-NAME PIC X(30). 
程序部门。

主PARA。                                       
   移动名称空间。     
   将“ 约翰 * ED * 凯西·萨特伯格 *”移动到WS-NAME。
   联合国WS-NAME以'*'分隔       
          F,M,L                                  
                                                 
    DISPLAY 'F:' F.                             
    DISPLAY 'M:' M.                             
    DISPLAY 'L:' L.                             
                                                 
    串                                        
        L     由X'4040'分隔
        ', '   DELIMITED BY SIZE 
        F     由X'4040'分隔
        SPACE  由大小定界     
        M     由X'4040'分隔             
        进入最终名称。                         
    显示最终名称。 

O / p :

F:JOHN                       
M:ED                         
L:CAUSEY SATTELBERG         
凯西·萨特伯格,约翰·埃德
这么多
科博伦尼写道:
很好,因此我们得到了一个实用的模型 icon_wink.gif
icon_rolleyes.gif
回到顶部
查看用户资料 发送私信
迪克·谢勒

主持人荣誉


已加入:2006年11月23日
帖子:19245
位置:矩阵内部

 发布 发表:2007年3月9日星期五8:06上午
引用回复

乔夫,我想他知道了!icon_wink.gif
回到顶部
查看用户资料 发送私信
Vishwaroopa

新的用户


已加入:2007年3月8日
帖子:8
所在地:美国

 发布 发表:2007年3月9日,星期五,上午9:18
引用回复

多亏每个人的宝贵意见,这项工作才能奏效。
回到顶部
查看用户资料 发送私信
迪克·谢勒

主持人荣誉


已加入:2006年11月23日
帖子:19245
位置:矩阵内部

 发布 发表:2007年3月9日星期五,上午10:30
引用回复

icon_cool.gif
回到顶部
查看用户资料 发送私信
阿克希尔萨加尔

活跃成员


已加入:2007年2月27日
帖子:691
地点:地球

 发布 发表:2007年3月9日星期五,下午12:27
引用回复

科博伦尼写道:
对于agkshirsagar提供的代码中的第二个问题,最后一个字符串语句使用空格来分隔标识符FM和L中的数据,以避免您需要在所有FM和L中放置一些数据,例如VALUE ALL'#'并替换希望将STRING语句中的行作为DELIMITED BY'#'来解决您的问题


这不会工作。
因为在解串之后,您将在F,M,L中得到尾随空格。
我建议一种改变。
码:

 ACCEPT WS-NAME.                                   
 检查WS-NAME用'@'替换所有空格   
 联合国WS-NAME以'*'分隔           
       F,M,L.                                     

即在您获取变量中的值后立即用@替换空格。 (我确定您没有使用ACCEPT)

完全获得所需的代码后,优化代码 icon_biggrin.gif
回到顶部
查看用户资料 发送私信
查看上一个主题 :: :: 查看下一个主题  
发表新话题   回复主题 查看书签
所有时间均为格林尼治标准时间+ 6小时
论坛索引 -> COBOL程式设计 转到页面 1, 2   下一个

 


类似主题
话题 论坛 回覆
没有新帖 无论先前的步骤如何,都执行步骤... JCL和VSAM 2
没有新帖 错误0C1原因代码1与分支i ... PL / I和组装商 3
该主题已锁定:您无法编辑帖子或回复。 将字段名称传递给COBOL程序 COBOL程式设计 10
没有新帖 COBOL性能调整 COBOL程式设计 6
没有新帖 JCL用于替换Cobol中的代码 JCL和VSAM 7
搜索我们的论坛:

回到顶部