查看上一个主题 :: 查看下一个主题
|
作者 |
信息 |
Trilok dewangan
新的用户
已加入:2008年6月19日 帖子:39 地点:美国
|
|
|
|
你好,
我有一些如下所示的数据集...所有都在磁带中迁移。我想删除这些数据集,并且相同的数量超过25,000。
数据集就像
XXX.YYY.ZZZ.ABC
XXX.YYY.ZZZ.ASD
XXX.YYY.ZZZ.AFD
...
...
...
等等。总之,我想删除所有以XXX.YYY.ZZZ。*开头的数据集。并且所有都迁移到磁带中。
谢谢,
Trilok |
|
回到顶部 |
|
 |
克里提卡伊
新的用户
已加入:2008年8月10日 帖子:45 地点:印度
|
|
|
|
尝试使用IDCAMS并删除。
问候,
J |
|
回到顶部 |
|
 |
克里提卡伊
新的用户
已加入:2008年8月10日 帖子:45 地点:印度
|
|
|
|
Use this JCLand check out if it helps out. I could execute it successfully.
// STEP010 EXEC PGM = IEFBR14
// DD1 DD DSN =< 数据集 >,
// DISP =(MOD,DELETE,DELETE),
// UNIT = SYSDA,
//空格=(CYL,(30,10),RLSE)
// SYSOUT DD SYSOUT = *
// SYSPRINT DD SYSOUT = *
// SYSUDUMP DD SYSOUT = *
// SYSABOUT DD SYSOUT = *
问候,
J |
|
回到顶部 |
|
 |
外籍人士
全球主持人

已加入:2007年3月14日 帖子:8794 地点:威尔士威尔士
|
|
|
|
克里提卡伊写道: |
Use this JCLand check out if it helps out. I could execute it successfully.
// STEP010 EXEC PGM = IEFBR14
// DD1 DD DSN =< 数据集 >,
// DISP =(MOD,DELETE,DELETE),
// UNIT = SYSDA,
//空格=(CYL,(30,10),RLSE)
|
使用IEFBR14将导致从磁带上调出数据集 之前 删除它。当您只想删除数据集时,为什么要浪费时间和资源来物理调用数据集。
IDCAMS解决方案可以,但仅限于使用通配符。
CSI是使用REXX的一种更加灵活的方法,我可能在某处有一个。如果我已经有它会发布。 |
|
回到顶部 |
|
 |
外籍人士
全球主持人

已加入:2007年3月14日 帖子:8794 地点:威尔士威尔士
|
|
|
|
The JCL- uses PARM values to select (a) What you want to do and (b) on which types of datasets.
对于您的第一次运行,请使用PARM ='CSIUTIL 扫描 MIGR'获取将被删除的数据集的列表。
对于实际运行,请使用PARM ='CSIUTIL 跑 MIGR'删除迁移的数据集。
通过阅读JCL中的注释,您可能还会看到它还能做什么。
EXCLUDE DD会将数据集排除在处理之外,但是我不记得它是否可以使用*后面的前缀,即ABC.NODEL。*,但是您肯定使用了完全限定的DSN。应该很容易为您工作。
码: |
// STEP0020 EXEC PGM = IKJEFT01,DYNAMNBR = 256,
// PARM='CSIUTIL 扫描 DASD TAPE MIGR'
// * PARM VALUES - 扫描 - LIST ONLY
// * - 跑 -处理请求-删除或HSM
// * - DASD -列出/删除DASD数据集
// * - MIGR -列出/删除迁移的数据集
// * - TAPE -列表/删除磁带数据集
// * - RCALL -列出/调用选定的数据集
// * - ARCH -列出/迁移所选数据集到ML1
// * - ARCH2 -列出/迁移选定的数据集到ML2
// SYSEXEC DD DSN = MY.REXX,DISP = SHR
// SYSOUT DD SYSOUT=*
// SYSTSPRT DD SYSOUT = *
// SYSTSIN DD DUMMY
//数据集DD *
HLQ。**
/*
//排除 DD *
HLQ.DATASET.ONE
HLQ.DATASET.NINE
/*
|
The 雷克斯 code - called CSIUTIL in MY.REXX
码: |
/* 雷克斯 ** INVOKE CSI VIA BATCH 雷克斯 PROCESS
**列出或删除给定DSN模式的所有条目
还可以通过DASD TAPE或MIGR过滤 */
ARG 跑TYP UNIT
如果RUNTYP<> "RUN" 然后 跑TYP = "SCAN"
IF POS('MIGR',UNIT) > 0 & POS('RCALL',UNIT) > 0 然后 DO
SAY " "
SAY "既针对迁移数据集又进行了回调和高清删除"
SAY "退出RURN代码16 ***退出返回代码16"
EXIT(16)
结束
"执行*排除磁盘( STEM EXC. FINIS"
DO A = 1 TO EXC.0
IF POS('*',EXC.A) > 0 然后 DO
EXCLDIT.A = STRIP(SUBSTR(EXC.A,1,POS('*',EXC.A)-1))
GEN.A = "Y"
END
ELSE DO
EXCLDIT.A = STRIP(EXC.A)
GEN.A = "N"
END
END
"执行*磁盘数据集( STEM CAT. FINIS"
DO KCNT = 1 TO CAT.0
KEY = SUBSTR(CAT.KCNT,1,44)
MODRSNRC = SUBSTR(' ',1,4)
CSIFILTK = SUBSTR(KEY,1,44)
CSICATNM = SUBSTR(' ',1,44)
CSIRESNM = SUBSTR(' ',1,44)
CSIDTYPS = SUBSTR(' ',1,16)
CSICLDI = SUBSTR('Y',1,1)
CSIRESUM = SUBSTR(' ',1,1)
CSIS1CAT = SUBSTR(' ',1,1)
CSIRESRV = SUBSTR(' ',1,1)
CSINUMEN ='0002'X
CSIFLD1 = 'VOLSER '
CSIFLD2 = 'DEVTYP '
CSIOPTS = CSICLDI !! CSIRESUM! CSIS1CAT !! CSIRESRV
CSIFIELD = CSIFILTK! CSICATNM !! CSIRESNM !! CSIDTYPS! CSIOPTS
CSIFIELD = CSIFIELD !! CSINUMEN !! CSIFLD1 !! CSIFLD2
沃克伦= 4096
DWORK ='00001000'X !!拷贝数('00'X,WORKLEN-4)
恢复='Y'
类别= SUBSTR(' ',1,44)
DNAMET = SUBSTR(' ',1,44)
恢复时='Y'
地址LINKPGM'IGGCSI00 MODRSNRC CSIFIELD DWORK'
RESUME = SUBSTR(CSIFIELD,150,1)
USEDLEN = C2D(SUBSTR(DWORK,9,4))
POS1=15
DO WHILE POS1 < USEDLEN
IF SUBSTR(DWORK,POS1+1,1) = '0'
然后 DO
CATNAME=SUBSTR(DWORK,POS1+2,44)
IF CATNAME <> CATNAMET 然后
DO
CATNAMET = CATNAME
结束
POS1 = POS1 + 50
END
DNAME = SUBSTR(DWORK,POS1+2,44)
PRO = "Y"
DO ZZ = 1 TO EXC.0
EXCLDLN = LENGTH(EXCLDIT.ZZ)
IF GEN.ZZ = "N" 然后 DO
IF STRIP(DNAME) = STRIP(EXCLDIT.ZZ) 然后 PRO = "N"
END
ELSE DO
IF STRIP(LEFT(DNAME,EXCLDLN)) = STRIP(EXCLDIT.ZZ) 然后 PRO = "N"
END
END
IF SUBSTR(DWORK,POS1+1,1)='C'然后DTYPE ='CLUSTER'
其他
如果SUBSTR(DWORK,POS1+1,1)='D'然后DTYPE ='DATA '
ELSE
如果SUBSTR(DWORK,POS1+1,1)='I'THEN DTYPE ='INDEX '
ELSE
如果SUBSTR(DWORK,POS1+1,1)='A'THEN DTYPE ='NONVSAM'
ELSE
如果SUBSTR(DWORK,POS1+1,1)='H'然后DTYPE ='GDS '
ELSE
如果SUBSTR(DWORK,POS1+1,1)='B'THEN DTYPE ='GDG '
ELSE
如果SUBSTR(DWORK,POS1+1,1)='R'THEN DTYPE ='路径 '
ELSE
如果SUBSTR(DWORK,POS1+1,1)='G'THEN DTYPE ='AIX '
ELSE
如果SUBSTR(DWORK,POS1+1,1)='X'THEN DTYPE ='ALIAS '
ELSE
如果SUBSTR(DWORK,POS1+1,1)='U'THEN DTYPE ='UCAT '
ELSE
DTYPE = ' '
POS1 = POS1 + 46
NUMVOL = C2D(SUBSTR(DWORK,POS1+4,2))/6
POS2 = POS1+8
DO I=1 TO NUMVOL
VOLSER.I = SUBSTR(' ',1,6)
结束
DO I = 1 TO NUMVOL
VOLSER.I = SUBSTR(DWORK,POS2,6)
POS2 = POS2 + 6
结束
IF NUMVOL > 1 然后 MVL = '+'
其他
MVL = ' '
DEVTY1 = SUBSTR(DWORK,POS2,4)
DEVTY2 = C2X(DEVTY1)
如果SUBSTR(DEVTY2,5,2)='20'THEN DELDEV ='DASD'
其他
如果SUBSTR(DEVTY2,5,2)='80'THEN DELDEV ='TAPE'
其他
DELDEV = 'XXXX'
如果DELDEV ='DASD'然后MIGLEV ='ML1'
其他
MIGLEV = ' ML2'
IF DNAMET <> DNAME 然后
DO
DNAMET=DNAME
DNAM2 = STRIP(DNAME)
如果DTYPE ='GDG'! DELDEV ='XXXX'然后PRO ='N'
IF PRO = "Y" 然后 DO
如果VOLSER.1 ='MIGRAT'THEN
DO
IF POS('MIGR',UNIT) > 0 ! POS('RCALL',UNIT) > 0 然后 DO
如果RUNTYP= "RUN" 然后
DO
IF POS('MIGR',UNIT) > 0 然后 DO
说 " HDEL FOR "DNAM2
" HDELETE '"DNAM2"'"
结束
其他 IF POS('RCALL',UNIT) > 0 然后 DO
说 " HRECALL FOR "DNAM2
" HRECALL '"DNAM2"'"
结束
结束
其他
说 COPIES(' ',8)DTYPE DNAME VOLSER.1 MVL MIGLEV
结束
END
ELSE IF VOLSER.1 <> 'MIGRAT' 然后
DO
如果DTYPE ='CLUSTER'& POS('DASD',UNIT) > 0 然后 DO
IF 跑TYP = "RUN" 然后 DO
" DELETE '"DNAM2"'"
END
ELSE
SAY COPIES(' ',8)DTYPE DNAME VOLSER.1 MVL DELDEV
结束
别做
IF DELDEV = 'TAPE' & POS('TAPE',UNIT) > 0
THEN
DO
IF 跑TYP = "RUN" 然后
DO
" DELETE '"DNAM2"' NOSCRATCH "
END
ELSE
SAY COPIES(' ',8)DTYPE DNAME VOLSER.1 MVL DELDEV
结束
IF DELDEV = 'DASD' & POS('DASD',UNIT) > 0 ,
& VOLSER.1 <> 'MIGRAT' 然后
DO
IF 跑TYP = "RUN" 然后
DO
" DELETE '"DNAM2"'"
END
ELSE
SAY COPIES(' ',8)DTYPE DNAME VOLSER.1 MVL DELDEV
结束
IF DELDEV = 'DASD' & POS('ARCH',UNIT) > 0 ,
& VOLSER.1 <> 'MIGRAT' 然后
DO
IF SUBSTR(UNIT,POS('ARCH',UNIT)+4,1) = '2'
THEN ML = "ML2"
ELSE ML = ""
IF 跑TYP = "RUN" 然后
DO
说 COPIES(' ',8)DTYPE DNAME VOLSER.1 MVL DELDEV
" HMIG '"DNAM2"'" ML
END
ELSE
SAY COPIES(' ',8)DTYPE DNAME VOLSER.1 MVL DELDEV
结束
END
END
结束
POS1 = POS1 + C2D(SUBSTR(DWORK,POS1,2))
结束
结束
结束
结束
|
|
|
回到顶部 |
|
 |
萨拉罗古
新的用户
已加入:2008年11月12日 帖子:22 地点:印度
|
|
|
|
我已经复制了您发送的代码。我有一个错误
当exec load DD引用顺序数据集时,不得指定IRX0408E Exec成员名称。
您能告诉我如何给rexx程序吗? |
|
回到顶部 |
|
 |
外籍人士
全球主持人

已加入:2007年3月14日 帖子:8794 地点:威尔士威尔士
|
|
|
|
将代码放入PDS成员 |
|
回到顶部 |
|
 |
萨拉罗古
新的用户
已加入:2008年11月12日 帖子:22 地点:印度
|
|
|
|
我把它放在工作的PDS中给出了同样的错误。 |
|
回到顶部 |
|
 |
外籍人士
全球主持人

已加入:2007年3月14日 帖子:8794 地点:威尔士威尔士
|
|
|
|
发布 the JCLand the 错误信息(s) |
|
回到顶部 |
|
 |
萨拉罗古
新的用户
已加入:2008年11月12日 帖子:22 地点:印度
|
|
|
|
码: |
// H2567AMB作业('DSCACCIA'),MSGCLASS=O,TIME=(,5),NOTIFY=&SYSUID
// STEP0020 EXEC PGM = IKJEFT01,DYNAMNBR = 256,
// PARM='CSIUTIL 扫描 DASD TAPE MIGR'
// * PARM VALUES - 扫描 - LIST ONLY
// * - 跑 -处理请求-删除或HSM
// * - DASD -列出/删除DASD数据集
// * - MIGR -列出/删除迁移的数据集
// * - TAPE -列表/删除磁带数据集
// * - RCALL -列出/调用选定的数据集
// * - ARCH -列出/迁移所选数据集到ML1
// * - ARCH2 -列出/迁移选定的数据集到ML2
// SYSEXEC DD DSN = H2567AM.TEST.PROCS(REXX),DISP=SHR
// SYSOUT DD SYSOUT=*
// SYSTSPRT DD SYSOUT = *
// SYSTSIN DD DUMMY
//数据集DD *
H2567AM。**
/*
//排除 DD *
H2567AM.BACKUP
H2567AM.TEST.BACKUP
/* |
码: |
错误信息
当exec load DD引用顺序数据集时,不得指定IRX0408E Exec成员名称。
READY
END |
这是我在SYSTSPRT中收到的错误消息 |
|
回到顶部 |
|
 |
外籍人士
全球主持人

已加入:2007年3月14日 帖子:8794 地点:威尔士威尔士
|
|
|
|
雷克斯代码必须在成员CSIUTIL(或PARM语句中指定的名称)中,并且不对SYSEXEC语句中的成员名称进行编码 |
|
回到顶部 |
|
 |
萨拉罗古
新的用户
已加入:2008年11月12日 帖子:22 地点:印度
|
|
|
|
非常感谢。我不了解REXX如何从基础上学习它。 |
|
回到顶部 |
|
 |
阿努·达万(Anuj Dhawan)
高级会员

已加入:2006年4月22日 帖子:6250 地点:印度孟买
|
|
回到顶部 |
|
 |
萨拉罗古
新的用户
已加入:2008年11月12日 帖子:22 地点:印度
|
|
|
|
感谢您的建议。我再次感谢您在此方面的帮助。 |
|
回到顶部 |
|
 |
佩德罗
全球主持人

已加入:2006年9月1日 帖子:2214 地点:硅谷
|
|
|
|
目前尚不清楚是否提到了解决方案。
但是这个
码: |
// SYSEXEC DD DSN = H2567AM.TEST.PROCS(REXX),DISP=SHR |
将导致此消息中提到的情况:
码: |
当exec load DD引用顺序数据集时,不得指定IRX0408E Exec成员名称。 |
SYSEXEC DD语句应引用PDS名称,而不是PDS成员。
PDS成员在应用程序中显示为顺序数据集。而在这种情况下,您只想提供包含该成员的PDS。 |
|
回到顶部 |
|
 |
恩里科·索里切蒂
高级主持人

已加入:2007年3月14日 帖子:10715 所在地:意大利
|
|
|
|
佩奎德罗
该主题已在复活后
码: |
... 3 year(s) - (月差/ 12)
... 3 year(s) - (difference )
... 36 months
... 1095 days
... 26289 hours
... 1577361 minutes
... 94641660 seconds |
|
|
回到顶部 |
|
 |
佩德罗
全球主持人

已加入:2006年9月1日 帖子:2214 地点:硅谷
|
|
|
|
抱歉。
它以某种方式出现在最近添加的线程列表中。 (或类似的东西)。我通常不看旧东西。 |
|
回到顶部 |
|
 |
恩里科·索里切蒂
高级主持人

已加入:2007年3月14日 帖子:10715 所在地:意大利
|
|
|
|
为什么要对不起 ?我只是拉你的腿  |
|
回到顶部 |
|
 |
唐·雷西
活跃成员
已加入:2010年7月6日 帖子:696 地点:加拿大安大略省惠特比
|
|
|
|
我不确定此板是否在其他地方提到过(我无法在搜索中找到它),但是IEFBR14不再必须先删除已迁移的数据集,然后再删除它。
显然,新行为是在z / OS中,而不是IEFBR14本身。系统将拦截由IEFBR14产生的HRECALL请求,如果DISP为DELETE,DELETE,则将执行HDELETE。 |
|
回到顶部 |
|
 |
比尔·伍德格
主持人荣誉
加入时间:2011年3月9日 帖子:7311 位置:矩阵内部
|
|
|
|
这是显式的DELETE,DELETE还是与(OLD,DELETE)一起使用?
这将使IEFBR14变得“特别”,就像OS的一部分,而不是什么都不做的程序。有点难以描述。还是他们改变了IEFBR14本身来做到这一点?有趣。 |
|
回到顶部 |
|
 |
唐·雷西
活跃成员
已加入:2010年7月6日 帖子:696 地点:加拿大安大略省惠特比
|
|
|
|
抱歉,我的意思是(MOD,DELETE,DELETE)。 (OLD,DELETE,DELETE)应该也可以工作。我倾向于使用前者,因为即使DSN不存在,它也可以工作。
我了解他们没有更改IEFBR14。现在,操作系统将其视为“特殊”程序。由于引入了不一致,因此在IBM-MAIN上引起了一些争议。另一方面,这是非常有用的不一致。 |
|
回到顶部 |
|
 |
阿努·达万(Anuj Dhawan)
高级会员

已加入:2006年4月22日 帖子:6250 地点:印度孟买
|
|
|
|
z / OS 1.11中的增强功能是批处理分配/取消分配处理将检查程序名称是否恰好是“ IEFBR14”,如果是,则对于DISP为DELETE的已迁移数据集,只需对其进行HDELETE,而无需HRECALLing。 DISP =(*,DELETE)适用。 |
|
回到顶部 |
|
 |
史蒂文·丹尼尔斯
新的用户
加入:2021年1月22日 帖子:1 所在地:美国
|
|
|
|
我使用PARM ='CSIUTIL 扫描 MIGR'运行以获取将被删除且没有输出的数据集的列表。 |
|
回到顶部 |
|
 |
罗希特·乌马尔吉卡(Rohit Umarjikar)
全球主持人

已加入:2010年9月21日 帖子:2575 地点:美国纽约
|
|
|
|
欢迎!
如果有特定问题,请避免拖延任何旧帖子,并开始自己的新帖子,如果需要,可以在新帖子中引用此帖子。 |
|
回到顶部 |
|
 |
|