查看上一个主题 :: 查看下一个主题
|
作者 |
信息 |
第75章
活跃用户
已加入:2014年6月9日 帖子:119 位置:CT
|
|
|
|
嗨,专家们,
我想用rexx批量重命名VSAM和OSAM文件列表。但是我对此有两个问题。
1.如何使用rexx查找系统中的所有VSAM或OSAM数据集?
例如如何获取以#IMSS1开头的所有数据集的列表。**
码: |
#IMSS1
#IMSS1.GC.GCACPCD1
#IMSS1.GC.GCACPCD1.DATA
#IMSS1.GC.GCACPCD3
#IMSS1.GC.GCACPCD3.DATA
#IMSS1.GC.GCACPCD5
#IMSS1.GC.GCACPCD5.DATA
#IMSS1.GC.GCACPCD7
#IMSS1.GC.GCACPCD7.DATA
#IMSS1.GC.GCACPCD9
#IMSS1.GC.GCACPCD9.DATA
#IMSS1.GC.GCACPCX1
#IMSS1.GC.GCACPCX1.DATA
#IMSS1.GC.GCACPCX1.INDEX |
等等
2.步骤1之后,如何重命名,我知道使用重命名的pds,但是VSAM和OSAM的命令是什么?
谢谢 |
|
回到顶部 |
|
 |
尼克·克劳斯顿
全球主持人
加入时间:2007年5月10日 帖子:2455 地点:英国汉普郡
|
|
|
|
您是否参考过AMS手册?你知道LISTCAT吗?您知道如何使用IDCAMS重命名数据集吗? |
|
回到顶部 |
|
 |
第75章
活跃用户
已加入:2014年6月9日 帖子:119 位置:CT
|
|
|
|
你好
谢谢您的回答,我想通了,它有效。
这是代码:
码: |
/ * rexx * /
THEPDS = "' #IMSS1'" / *数据集要更改* /
X = OUTTRAP('ML.')
"LISTCAT LEVEL("THEPDS")"
X = OUTTRAP('OFF')
A=0
MEMBER.=0
DO N = 1 TO ML.0
PARSE VAR ML.N MEMBER.N
IF SUBSTR(MEMBER.N,1,7)='NONVSAM'|,
SUBSTR(MEMBER.N,1,5)='INDEX'|,
SUBSTR(MEMBER.N,1,7)='CLUSTER'|,
SUBSTR(MEMBER.N,1,4)='DATA' THEN DO
OUTPUT.N=SUBSTR(MEMBER.N,17,50)
A=A+1
OUTPUT.A=STRIP(OUTPUT.N)
END
结束
我= 1到A
OLDNAME ='#IMSS1' / *旧数据集名称* /
TMPTXT1 ='#IMSS2' / *新数据集名称 更改为您想要的任何名称* /
新闻 =输出
做POS(oldname,NEWSTR.I) > 0
NEWSTR.I = SUBSTR(NEWSTR.I, 1 , POS(oldname,NEWSTR.I)-1) ||,
TMPTXT1 || SUBSTR(NEWSTR.I, POS(oldname,NEWSTR.I) + LENGTH(oldname))
结束
"ALTER '"OUTPUT.I"'",
"NEWNAME('"NEWSTR.I"')"
结束 |
|
|
回到顶部 |
|
 |
尼克·克劳斯顿
全球主持人
加入时间:2007年5月10日 帖子:2455 地点:英国汉普郡
|
|
|
|
大。现在,您要做的就是修改程序,以使其可以使用THEPDS(需要更好的名称!)作为可在命令行上指定的参数。 |
|
回到顶部 |
|
 |
皮特·威尔逊
活跃用户
已加入:2009年12月31日 帖子:490 地点:伦敦
|
|
|
|
您还需要照顾您要重命名的VSAM文件的任何``关联''。即任何与AlX或PATH相关的文件。如果要确定是否使用掩码,则需要在LISTCAT中包括CDILVL参数(ZOS1.13及更高版本)。或者在执行程序上使用带有SPHERE和PARM ='TYPRUN = NORUN'的DFDSS DUMP之类的东西
对于NONVSAM,您必须处理可能指向要重命名的文件的任何ALIAS(通常是PDS,但严格来说)。
还应考虑通过将数据集重命名为适当的位置,它们可能实际上不在这些名称的预期存储池之外。有时,带有RENAMEU的DFDSS COPY会更好,因为它会基于DFSMS例程将文件重命名并将文件移动到正确的池中。 |
|
回到顶部 |
|
 |
马索
REXX主持人

已加入:2006年3月13日 帖子:1348 地点:以色列
|
|
|
|
因为您努力编写自己的代码并将其发布在此处,所以我也将付出努力。
关于您的代码的几点评论:
1.在两个循环中,在不必要时都使用主变量,这只会使代码更复杂。
2.在第二个循环中,OLDNAME以空格开头,但是您使用STRIP存储了该名称,因此不会有任何匹配。
3.您应该在循环之前而不是内部分配OLDNAME和TMPTXT1。
4.使用缩进。
5.添加文档。
码: |
/ * ---------------------------------------列出文件* /
PDS = '#IMSS1'
X =外出('ML.')
"LISTCAT LEVEL('"ThePDS"')"
X =外出('OFF')
/ * -----------------------------仅保留相关文件名* /
A = 0
旧列表。 =''
N = 1到ML.0
解析Var ML.N类型。名称 。
If WordPos(类型,“ NONVSAM INDEX DATA CLUSTER”) > 0 Then Do
A = A + 1
OldList.A = Name
End
结束
/ * ---------------------------------------------重命名文件* /
奥德斯特 = '#IMSS1'
NewStr ='#IMSS2'
我= 1对A
NewFile = OldList.I
Do Forever
S = Pos(OldStr,NewFile)
If S = 0 Then Leave
NewFile = SubStr(NewFile,1,S-1) || NewStr || ,
SubStr(NewFile,S+Length(OldStr))
End
对'OldFile.I'说'ALTER
结束 |
当然,您不必这样写,这就是我喜欢这样做的方式 |
|
回到顶部 |
|
 |
第75章
活跃用户
已加入:2014年6月9日 帖子:119 位置:CT
|
|
|
|
嗨,马索,
感谢您的代码。我喜欢。
一件事是我认为您错过了执行重命名的实际代码。
我在您的代码中添加了它。
码: |
/ * REXX ----------------------------------列出文件* /
主题 ='TTAT.TSP.TU14.CHANGED'
X =外出('ML.')
"LISTCAT LEVEL('"THEPDS"')"
X =外出('OFF')
/ * -----------------------------仅保留相关文件名* /
A = 0
旧列表。 =''
DO N = 1到ML.0
解析VAR ML.N TYPE。名称 。
IF WORDPOS(类型,“ NONVSAM索引数据集群”) > 0 THEN DO
A = A + 1
OLDLIST.A = NAME
END
结束
/ * ---------------------------------------------重命名文件* /
OLDSTR ='CHANGED'
NEWSTR ='HAO'
我= 1对A
NEWFILE = OLDLIST.I
DO FOREVER
S = POS(OLDSTR,NEWFILE)
IF S = 0 THEN LEAVE
NEWFILE = SUBSTR(NEWFILE,1,S-1) || NEWSTR || ,
SUBSTR(NEWFILE,S+LENGTH(OLDSTR))
END
[b] "ALTER '"OLDLIST.I"'",
"NEWNAME('"NEWFILE"')" [/b]
从'OLDLIST.I'到'NEWFILE说'ALTER'
结束 |
|
|
回到顶部 |
|
 |
恩里科·索里切蒂
高级主持人

已加入:2007年3月14日 帖子:10715 所在地:意大利
|
|
|
|
不,他没有错过
它说了<将要执行的命令>
测试时这是很正常的事情...
在执行测试之前,先说出要做什么,直到测试表明一切正确为止 |
|
回到顶部 |
|
 |
恩里科·索里切蒂
高级主持人

已加入:2007年3月14日 帖子:10715 所在地:意大利
|
|
|
|
带有一些横向思考的编码选择
码: |
老高管 = "#IMSS1"
NewHLQ ="#IMSS2"
lst.1 ="#IMSS1.DS1"
lst.2 ="#IMSS1.DS1.DATA"
lst.3 ="#IMSS1.DS2"
lst.4 ="#IMSS1.DS2.DATA"
lst.5 ="#IMSS1.DS3"
lst.0 = 5
do l = 1 to lst.0
interpret "parse var lst."l "with '"OldHLQ".' tail"
NewNAME = NewHLQ"."tail
say left("OldNAME("lst.l")",44) "NewNAME("NewNAME")"
结束
|
|
|
回到顶部 |
|
 |
第75章
活跃用户
已加入:2014年6月9日 帖子:119 位置:CT
|
|
|
|
嗨,恩里科,
我对“解释”指令不是很熟悉,它有什么作用?
谢谢 |
|
回到顶部 |
|
 |
佩德罗
全球主持人

已加入:2006年9月1日 帖子:2214 地点:硅谷
|
|
回到顶部 |
|
 |
|