Filed Under (JCL Utility) by Raymond on 04-12-2008
IDCAMS Utility中,还提供了一个’DELETE’命令,用于删除Cataloged Data Set。在删除Data Set的同时,对Data Set进行uncatalog操作。’DELETE’可以操作的包括:
1. Sequential Data Set 2. Partitioned Data Set 3. Partitioned Data Set中的member
‘DELETE’命令的语法:
//STEP1 EXEC PGM=IDCAMS
//SYSPRINT DD SYSOUT=A
//SYSIN DD *
DELETE data-set-name
DELETE data-set-name(member)
/* |
删除Data Set的例子:
DELETE MIB.TEMP.DATA
删除member的例子:
DELETE MIB.PGM.LOAD(COMPIT)
PURGE:
在使用’DELETE’命令时,还可以使用’PURGE’参数。使用’DELETE’时,默认情况是’NOPURGE’。添加’PURGE’参数后,即不管现在Data Set的状态是什么,都进行删除操作。
使用’PURGE’参数删除的一个例子:
//SYSIN DD *
DELETE data-set-name -
PURGE
ERASE:
在使用’DELETE’命令时,还可以添加’ERASE’参数,即在删除Date Set之后,使用二进制的’0’来覆盖 Data Set所占用的磁盘空间。也就是所谓的完全删除。
使用’ ERASE’参数删除的一个例子:
//SYSIN DD *
DELETE data-set-name -
ERASE
即在删除’ data-set-name’后,’ data-set-name’所占用的DASD空间,会被二进制的’0’所覆盖。
Filed Under (JCL Utility) by Raymond on 04-12-2008
IDCAMS的另一个常用功能就是Data Set的重命名。Data Set的重命名使用’ALTER’命令来完成。’ALTER’可以重命名操作的Data Set,除了Sequential Data Set外,还可以操作Partitioned Data Set,以及对Partitioned Data Set中member的重命名。
使用’ALTER’命令重命名Data Set的语法:
ALTER old-data-set-name NEWNAME(new-data-set-name)
其中’ old-data-set-name’和’ new-data-set-name’既可以是’ Partitioned Data Set’,也可以是’ Sequential Data Set’。
使用’ALTER’命令重命名member的语法:
ALTER data-set-name(old-member) NEWNAME(data-set-name(new-member))
以下是一个在JCL中使用’ALTER’命令的例子:
//STEP1 EXEC PGM=IDCAMS
//SYSPRINT DD SYSOUT=A
//SYSIN DD *
ALTER MIB.TEMP.DATA NEWNAME(MIB.TEST.DATA)
ALTER MIB.PGM.LOAD(COMP) NEWNAME(MIB.PGM.LOAD(COMPIT))
/* |
在以上的JCL中,分别将名为’MIB.TEMP.DATA’的Data Set重命名为了名为’ MIB.TEST.DATA’的Data Set。
在第二个’ALTER’命令中,将名为’ COMP’的member,重命名为了’ COMPIT’。
Filed Under (JCL Utility) by Raymond on 03-12-2008
IDCAMS的另一个实用功能就是输出Data Set中的记录。具体的JCL如下所示:
//STEP1 EXEC PGM=IDCAMS
//SYSPRINT DD SYSOUT=A
//ddname DD DSN=…
//*在DD段中定义要输出的Data Set
//SYSIN DD *
PRINT -
INFILE(ddname) -
CHAR
/*
在以上的JCL的命令控制部分,除了INFILE的定义外,还添加了一个’CHAR’参数。’CHAR’参数用来控制输出记录的形式,’CHAR’表示以字符形式输出Data Set中的记录。除了’CHAR’之外,还有其他参数,如下表所示:
| 参数名称 |
参数功能 |
| CHAR |
此参数控制Data Set以字符形式输出 |
| hexadecimal |
此参数控制Data Set以16进制形式输出 |
| DUMP |
此参数控制Data Set同时以字符和16进制形式输出 |
下面是一个以16进制输出Data Set的语句:
PRINT INFILE(DDIN) HEX
COUNT和SKIP参数在输出Data Set中,依然可以使用,用于控制输出Data Set的记录。如下面的JCL例子,输出
’DDIN’ Data Set的前100行记录,并且跳过前10行记录不输出:
PRINT INFILE(DDIN) HEX COUNT(100) SKIP(10)
Filed Under (JCL Utility) by Raymond on 03-12-2008
IDCAMS这个utility主要功能是通过JCL来操作Data Set和VSAM文件的。以下JCL的一个STEP,就是IDCAMS常用的使用方法:
//stepname EXEC PGM=IDCAMS
//SYSPRINT DD SYSOUT=A
//*以上的SYSPRINT会把IDCAMS的信息都输出,输出到JOB LOG中
//ddname DD DSN=…
//*在以上的DD段中,有些JCL需要定义一个DD段,来定义输入Data Set。有些JCL需要定义两个DD段,在定义了
//*输入Data Set的同时,定义输出Data Set。
//SYSIN DD *
//*命令语句
/*
功能一:复制一个Sequential Data Set
使用REPRO命令来完成复制功能,该命令可以用于复制Sequential Data Set,或者复制Partitioned Data Set的member。具体复制方法如下面的JCL所示:
//STEP1 EXEC PGM=IDCAMS
//SYSPRINT DD SYSOUT=A
//in-ddname DD DSN=…
//out-ddname DD DSN=…
//SYSIN DD *
REPRO -
INFILE(in-ddname) -
OUTFILE(out-ddname)
/*
如上的JCL所示,上面的JCL用于复制两个Sequential Data Set。
另外,IDCAMS还提供了两个有趣的参数,使用这两个参数,可以有选择地复制Data Set中的记录。这两个参数分别是COUNT和 SKIP,可以在复制的时候添加。
COUNT参数的使用方法如下所示:
REPRO -
INFILE(in-ddname)-
OUTFILE(out-ddname) -
COUNT(n)
以上JCL添加了COUNT参数,在复制的过程中,会只复制 ‘in-ddname’的前n行记录。
SKIP参数的使用方法如下所示:
REPRO -
INFILE(in-ddname)-
OUTFILE(out-ddname) -
SKIP(n)
以上JCL添加了SKIP参数,在复制的过程中,在复制‘in-ddname’的时候,会跳过前n行记录,即不复制‘in-ddname’的前n行记录。
下面是一个COUNT和SKIP参数共同使用,来控制复制记录的例子:
REPRO INFILE(INDD) OUTFILE(OUTDD) COUNT(100) SKIP(4)
上面的JCL会复制INDD的前100行记录,并且略过前4行记录进行复制。复制后的结果会保存在OUTDD中。