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

使用JCL批量替换文件


IBM大型机论坛 -> JCL& VSAM
发表新话题   回复主题
查看上一个主题 :: 查看下一个主题  
作者 信息
MainB

新的用户


加入:2005年11月3日
帖子:17

发布发表:2005年11月17日,星期四,上午2:10
引用回复

我需要在数据集中将一个字符串替换为另一个字符串。想要使用JCL做到这一点。

该文件具有如下所示的字段分隔符-> "," <-我希望将带有dblqt逗号dblqt的字符串替换为一个| (管道)字符。今天双色球开奖结果长度是400+。该字符串作为分隔符出现在今天双色球开奖结果中的每个字段之后。

我计划使用Fileaid,但一次只能处理255个字符。为了克服该问题,OI可以将今天双色球开奖结果拆分为多个语句。但是,实际上我可能会将其拆分为“,”之间的某个位置,从而无法替换它。
回到顶部
查看用户资料 发送私信
拉米亚

活跃用户


已加入:2004年7月26日
帖子:104

发布发表:2005年11月17日,星期四,凌晨3:12
引用回复

您是否尝试过使用SORT实用程序?使用OUTREC语句的CHANGE和NOMATCH参数,只要知道字符串的确切位置,就应该可以将一个字符串更改为另一字符串。

如果输入字段等于搜索常量,则CHANGE子参数会将输入字段更改为重新格式化的输出今天双色球开奖结果中的替换常量。输入字段在输入侧保持不变。

NOMATCH指示如果输入字段,SyncSort应该如何响应
与搜索常量不匹配。如果未指定NOMATCH并且没有搜索常量与输入字段匹配,则排序处理将终止并显示一条错误消息。

例如:

OUTREC FIELDS =(16,2,
CHANGE =(13,C'NJ',C'NEW JERSEY',
C'NY',C'NEW YORK',
C'PA',C'PENNSYLVANIA')
NOMATCH =(C'不支持'))

有关语法和其他选项,请参考大型机中的QW。
回到顶部
查看用户资料 发送私信
MainB

新的用户


加入:2005年11月3日
帖子:17

发布发表:2005年11月17日,星期四,凌晨3:15
引用回复

实际上,此“,”是字段终止符-因此它的位置不是固定的-根据字段的长度,它可以在任何地方。这是一个VB数据集。使用名称地址等字段-根据大小,“,”可以在任何地方
回到顶部
查看用户资料 发送私信
凯文

活跃用户


已加入:2005年8月25日
职位:234

发布发表:2005年11月17日,星期四,上午6:01
引用回复

数据格式似乎是SAS程序或您自己内部编写的程序或以批处理模式运行的ISPF EDIT会话的理想选择。

当您说“使用JCL”时,您认为什么是有效的编程语言和/或实用程序?
回到顶部
查看用户资料 发送私信
MainB

新的用户


加入:2005年11月3日
帖子:17

发布发表:2005年11月17日,星期四,9:19 pm
引用回复

感谢您的所有帮助-我确实找到了一种在JCL中使用fileaid来解决此问题的方法。我想避免编写SAS,COBOL,EASYTRIEVE等...

以防万一有人需要将其张贴在这里。

// STEP01 EXEC PGM = FILEAID
// SYSPRINT DD SYSOUT = *
// SYSLIST DD SYSOUT = *
// DD01 DD DISP = SHR,DSN = A.B.C.D
// DD01O DD DSN = X.Y,Z,
// DISP =(NEW,CATLG,DELETE),
// UNIT = DISK,SPACE =(CYL,(800,800),RLSE)
// *(TO,LENGTH,FROM)
// SYSIN DD *
$$ DD01 COPYALL EDIT =(1,5,X'7F',C''),<-将第一个“替换为null
EDITALL =(6,0,X'7F6B7F',C'|'),<-用|代替“,”
EDITALL =(400,0,X'7F',C''),<-用空值替换最后一个“
OUT=0
/ *
x'7F'为“
x'6B'为的十六进制,

1,5-表示从1开始-接下来的5个字节
6,0-表示从1开始到今天双色球开奖结果结束
400,0-表示从400开始直到今天双色球开奖结果结束
在每个字段的开头和结尾都有一个“”,在每个字段后都有一个“。”,并且必须删除第一个和最后一个双引号并将“,”替换为|。
回到顶部
查看用户资料 发送私信
妻子

超级版主


加入:2003年5月30日
帖子:1592

发布发表:2005年11月19日星期六5:36 am
引用回复

嗨MainB,

感谢您与我们分享您的问题的解决方案。

我只是希望那里的每个人都能效法您的榜样,或者就所提供的解决方案提供反馈,或者在论坛中与其他人分享自己的解决方案。

再次感谢
回到顶部
查看用户资料 发送私信
Sagar_mainframe

新的用户


已加入:2008年6月7日
帖子:34
地点:宾夕法尼亚州哈里斯堡

发布发表:2008年7月10日,星期四,凌晨1:15
引用回复

是否可以不使用“ FILEAID”?
回到顶部
查看用户资料 发送私信
超级

全球主持人


已加入:2004年4月26日
帖子:4650
地点:美国北卡罗来纳州罗利

发布发表:2008年7月10日,星期四,上午1:39
引用回复

您是否考虑过使用SYNCSORT或DFSORT的解决方案?
回到顶部
查看用户资料 发送私信
Sagar_mainframe

新的用户


已加入:2008年6月7日
帖子:34
地点:宾夕法尼亚州哈里斯堡

发布发表:2008年7月10日,星期四,凌晨1:46
引用回复

是的,但由于我的要求也与上述要求类似。

我想用给定今天双色球开奖结果的某些字段的空格替换)(。,/ \ + * @等特殊字符。

由于特殊字符的位置不固定,因此我们无法使用JCL在OUTREC语句中提及该位置。

最后,我正在考虑使用INSPECT动词编写一个COBOL批处理pgm。
回到顶部
查看用户资料 发送私信
弗兰克·雅格

DFSORT开发人员


已加入:2005年2月15日
帖子:7129
地点:加利福尼亚州圣何塞

发布发表:2008年9月4日,星期四,11:28 pm
引用回复

DFSORT现在具有查找和替换功能(FINDREP)。它与z / OS DFSORT V1R5 PTF UK90013一起提供(2008年7月)。

对于Mainb帖子中的示例,我们可以使用DFSORT控制语句,如下所示:

码:
 
   OPTION COPY
   INREC FINDREP=(IN=C'","',OUT=C'|')


对于Sagar帖子中的示例,我们可以使用DFSORT控制语句,如下所示:

码:
 
   OPTION COPY
   INREC FINDREP=(IN=(C')',C'(',C'。',C',',C'/',C'\',C'+',C'*',C'@'),
    OUT=C' ')


有关新的FINDREP功能和PTF UK90013可用的其他新功能的完整详细信息,请参见:

使用[URL] BBCode进行外部链接
回到顶部
查看用户资料 发送私信
查看上一个主题 :: :: 查看下一个主题  
发表新话题   回复主题 查看书签
所有时间均为格林尼治标准时间+ 6小时
论坛索引 -> JCL& VSAM

 


类似主题
话题 论坛 回覆
没有新帖 将匹配的今天双色球开奖结果写入输出文件 DFSORT / ICETOOL 5
没有新帖 比较文件今天双色球开奖结果计数百分比... DFSORT / ICETOOL 4
没有新帖 比较两个文件以查找位置/日期... 同步排序 2
没有新帖 将文件从PD转换为显示... 同步排序 4
没有新帖 RECFM = U磁带文件的今天双色球开奖结果数 DFSORT / ICETOOL 17
搜索我们的论坛:

回到顶部