删除a&&;JCL中的临时数据集
我有以下JCL:删除a&&;JCL中的临时数据集,jcl,Jcl,我有以下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 //*******************************************************
//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清除
删除KAMSP2T.#TEST2.RAPW1RDW清除
删除KAMSP2T.#TEST2.RAPW2RDS清除
删除KAMSP2T.#TEST2.RAXY0RDA清除
删除KAMSP2T.#TEST2.RASV0RDA清除
有什么办法可以删除这些吗
谢谢你的建议
谢谢
MartinIEFBR14是一个不执行任何操作的步骤(它代表分支R14,在大型机汇编程序中,分支R14是标准的程序返回。IEFBR14不执行任何操作 您可以使用IDCAM,如:
//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更灵活。这也可以在SAS中完成。请注意,在z/OS中,该单元通常默认为SYSDA之类的值,因此在当今的大多数商店中是可选的。另一方面,由于MOD参数,SAS不允许在这段特定代码中对单元进行编码。此外对于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访问数据的方式一致-通过页面而不是块。还要注意,sim对于TSO PDS,在空间参数中编码RLSE是不明智的
libname dd1 'myid.x.saslib' disp=(,catlg,delete) space=(cyl,(50,500)) dsntype=large unit=(sysallda,59) blksize=6144;
TEMP01文件仅包含程序的结果集,然后您可以使用IEFBR14立即删除该文件。TEMP01确实包含用于删除SYSIN的输入。您正在调用的程序可能有问题。我尝试使用delete IDCAMS://STEP1 EXEC PGM=IDCAMS//SYSIN DD*delete&&TEMP01 PURGE//SYSPRINT DD SYSOUT=X,但是我也不喜欢这样…你想做什么?Bruce comment回答了。感谢使用IDCAMS删除数据集还有两件好事。如果其中一个数据集不存在,你可以在
删除后使用如果lastc=8
或如果MAXCC=8
作为最后一个ca来抑制CC 8rd.(请注意,除了不在目录中之外,可以出于其他原因返回8。)此外,现在两个当前级别JES都通过SYMBOLS=
关键字支持流内DDs中的符号替换,您可以在控制卡中指定符号。确保相关符号位于EXPORT
JCL语句中。