我有以下JCL:
//REGTEST3 JOB 00000000,'REG COPY CDB ',MSGLEVEL=(1,1),
// NOTIFY=&SYSUID,CLASS=I,MSGCLASS=X,REGION=1200M
/*JOBPARM S=ESYS
//PROCLIB JCLLIB ORDER=PWSX.KAMSP2T.PROCLIB
//****************************************************************
//***** SETUP TEST RAPW, RAP2, RAXY, RASV IMS DATABASES
//****************************************************************
//RENAME EXEC FINDREP,FIND=KAMSP2T,REPLACE=&SYSUID,
// OUTFILE=&&TEMP01
//SORTUSER.SORTIN DD *
DELETE KAMSP2T.#TEST2.RAPW0RDS PURGE
DELETE KAMSP2T.#TEST2.RAPW1RDW PURGE
DELETE KAMSP2T.#TEST2.RAPW2RDS PURGE
DELETE KAMSP2T.#TEST2.RAXY0RDA PURGE
DELETE KAMSP2T.#TEST2.RASV0RDA PURGE
/*
//DEL01 EXEC PGM=IEFBR14
//DELDD DD DSN=&&TEMP01,
// DISP=(MOD,DELETE,DELETE),
// SPACE=(TRK,0)
//SYSPRINT DD SYSOUT=X
The PROC does this:
//FINDREP PROC FIND=,
// REPLACE=,
// INPFILE=,
// OUTFILE=
//**********************************************************************
//C1PARM01 EXEC PGM=PARMCOPY,
// PARM=' SORT FIELDS=COPY'
//PARMFILE DD DSN=&&PARM,DISP=(NEW,PASS,DELETE),UNIT=DISK,
// SPACE=(6233,(3),RLSE),DCB=(LRECL=80,BLKSIZE=1680,RECFM=FB)
//SYSPRINT DD DUMMY
//**********************************************************************
//C1PARM02 EXEC PGM=PARMCOPY,
// PARM=' OUTREC FINDREP=(INOUT=(JP1,JP2))'
//PARMFILE DD DSN=&&PARM,DISP=(MOD,PASS,DELETE),UNIT=DISK,
// SPACE=(6233,(3),RLSE),DCB=(LRECL=80,BLKSIZE=1680,RECFM=FB)
//SYSPRINT DD DUMMY
//**********************************************************************
//SORTUSER EXEC PGM=SORT,PARM='JP1"&FIND",JP2"&REPLACE"'
//SORTLIB DD DSN=SYS1.SORTLIB,DISP=SHR
//SYSOUT DD SYSOUT=*
//SORTIN DD DISP=SHR,DSN=&INPFILE
//SORTOUT DD DSN=&OUTFILE,
// DISP=(NEW,PASS),
// DCB=(RECFM=FB,BLKSIZE=6240,LRECL=80),
// UNIT=DISK,SPACE=(TRK,(1,1),RLSE)
//SORTWK01 DD UNIT=SYSDA,SPACE=(32016,(428,1600))
//SORTWK02 DD UNIT=SYSDA,SPACE=(32016,(428,1600))
//SORTWK03 DD UNIT=SYSDA,SPACE=(32016,(428,1600))
//SORTWK04 DD UNIT=SYSDA,SPACE=(32016,(428,1600))
//SORTWK05 DD UNIT=SYSDA,SPACE=(32016,(428,1600))
//SYSIN DD DISP=(OLD,DELETE),DSN=&&PARM
// PEND
但是我的问题是&& TEMP01数据集并没有删除列出的所有文件:
删除KAMSP2T。#TEST2.RAPW0RDS PURGE 删除KAMSP2T。#TEST2.RAPW1RDW PURGE 删除KAMSP2T。#TEST2.RAPW2RDS PURGE 删除KAMSP2T。#TEST2.RAXY0RDA PURGE 删除KAMSP2T。#TEST2.RASV0RDA PURGE
有什么方法可以删除这些吗?
感谢任何建议。
由于 马丁
答案 0 :(得分:2)
IEFBR14是一个无所作为的步骤(它代表分支R14,它在大型机汇编程序中是标准程序返回.IEFBR14不做anthing
您可以使用IDCAMS:
//DELETE EXEC PGM=IDCAMS
//SYSPRINT DD SYSOUT=*
//SYSIN DD *
DELETE KAMSP2T.#TEST2.RAPW0RDS PURGE
DELETE KAMSP2T.#TEST2.RAPW1RDW PURGE
DELETE KAMSP2T.#TEST2.RAPW2RDS PURGE
DELETE KAMSP2T.#TEST2.RAXY0RDA PURGE
DELETE KAMSP2T.#TEST2.RASV0RDA PURGE
/*
在你的情况下,你可以做
//DELETE EXEC PGM=IDCAMS
//SYSPRINT DD SYSOUT=*
//SYSIN DD DSN=&&TEMP01,DISP=SHR
IEFBR14删除编码如
//DELETE EXEC PGM=IRFBR14
//DEL01 DD DSN=KAMSP2T.#TEST2.RAPW0RDS,DISP=(MOD,DELETE),
// SPACE=(TRK,(1,1))
//DEL02 DD DSN=KAMSP2T.#TEST2.RAPW1RDW,DISP=(MOD,DELETE),
// SPACE=(TRK,(1,1))
//DEL04 DD DSN=KAMSP2T.#TEST2.RAXY0RDA,DISP=(MOD,DELETE),
// SPACE=(TRK,(1,1))
//DEL05 DD DSN=KAMSP2T.#TEST2.RASV0RDA,DISP=(MOD,DELETE),
// SPACE=(TRK,(1,1))
传统上,IDCAMS比IEFBR14删除更灵活
答案 1 :(得分:0)
这也可以在SAS中完成。意识到在z / OS中,UNIT通常默认为SYSDA,因此在大多数商店中都是可选的。另一方面,由于MOD参数,SAS不允许在这段特定代码中编码UNIT。同样对于SAS程序员来说,这意味着这对于SAS库本身也是有效的,因为SAS正在改变访问方法 - 从SAS定制设计的EXCP到BSAM - 就像IEFBR14那样做什么"没有"因为它只是开始并分支到注册14 - 完成 - 处理中要求的任何内容 - 在这种情况下"删除" - 无论构建该文件的访问方法如何,都将发生。
filename dd1 'myid.x.saslib' disp=(mod,delete) space=(trk,0);
filename dd1 clear;
SAS程序员 - 还意识到这种删除SAS库的方法 - 而不是SAS库中的SAS数据集 - 不在任何SAS文档中。这就是!!
然后当然要将其内联分配,然后再对其进行编码。请注意,对于辅助节点,任何大于300的内容都需要具有dsntype = large。最后,由于这不是使用QSAM或BSAM而是使用EXCP,因此阻塞因子应该与SAS访问数据的方式一致 - 通过页面而不是块。另请注意,与TSO PDS类似,在SPACE参数中编写RLSE是不明智的。
libname dd1 'myid.x.saslib' disp=(,catlg,delete) space=(cyl,(50,500)) dsntype=large unit=(sysallda,59) blksize=6144;