JCL Utility 之 IDCAMS删除Data Set(Deleting Cataloged Data Sets)

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’所覆盖。

JCL Utility 之 IDCAMS重命名Data Set(Renaming Data Sets)

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’。

JCL Utility 之 IDCAMS输出Data Set

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)

JCL Utility 之 IDCAMS复制数据集

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中。