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中。
用IDCAMS程序定义VSAM数据集
1、用于建立和维护VSAM数据集和世代数据集。
2、当使用VSAM数据集或维护系统目录时,必须使用AMS命令。 3、AMS命令分两类:
功能命令,如定义数据集,列表目录等; 辅助命令,作用是设置条件执行功能。 4、AMS实用程序的调用模式
使用AMS主要有TSO环境下通过AMS命令及利用JCL调用方法。JCL调用模式: //JOB1 JOB //JOBCAT DD
// DSNAME=DB.DATA,DISP=SHR //STEP EXEC PGM=IDCAMS //SYSPRINT DD SYSOUT=* //SYSIN DD *
COMMAND parameters… /* 注:
JOBCAT DD语句定义一个目录名; EXEC 语句指出AMS程序名为IDCAMS;
SYSPRINT DD语句指定系统的输出信息; SYSIN DD 语句为IDCAMS提供各种AMS命令;
5、AMS命令及功能
ALTER:修改数据集和目录属性; BLDINDEX:建立辅助索引;
DEFINE ALIAS:为目录或数据集建立别名; DEFINE ALTERNATEINDEX:定义辅助索引; DEFINE CLUSTER:为VSAM数据集定义簇;
DEFINE GENERATION DATA GROUP:为世代数据集定义编目入口; DEFINE NONVSAM:为非VSAM数据集定义编目入口; DEFINE PAGE SPACE:定义系统页空间数据集; DEFINE PATH:定义连接辅助索引与主数据集的路径; DEFINE USER CATALOG:定义用户目录; DELETE:删除目录、VSAM及非VSAM数据集; EXPORT:中断用户目录与主目录的联系; IMPORT:接通用户目录与主目录的联系; LISTCAT:列表编目内容;
PRINT:打印VSAM、非VSAM数据集及目录内容;
REPR:拷贝VSAM、非VSAM数据集及目录,分类及综合编目功能
新手入门之如何创建和使用GDG(IDCAMS)
本版都是作者原创,转载请注明出处 FROM:http://www.kokwind.com/bbs/
AUTHOR:Aven guo
世代数据集组GDG(GENERATION DATA GROUP)是一组编目的数据集,其组内的每一个数据集称为世代数据集或一代数据集,它们具有相同的名字且在时间序列上是相关的。如要求保留以年内的工资发放数据,每月的工资数据集就是一个世代数据集,全年12个月的工资数据
集便构成了一个世代数据集组。
世代数据集可以是顺序数据集或分区数据集,它可以写在磁盘或磁带上,但一个GDG的所有数据集应驻留在相同介质上。由于一个GDG中的所有数据集都使用相同的名字,所以要区分各个世代数据集,就要使用世代编号。世代编号可以是相对编号或绝对编号。系统在维
护GDG时使用绝对编号,而应用程序员通常则使用相对编
号。
相对编号:假设由一个3代的GDG,PAYROLL.DATA(其中这3代数据集分别为8、9、10三个月份的数据,10月份数据为当前代数据集),则当前一代数据集(10月份的数据集)表示为:DSN=PAYROLL.DATA(0),上一代数据集(9月份的数据集)则表示为 SN=PAYROLL.DATA(-1),更早一代的数据集(8月份的数据集)则表示为:DSN=PAYROLL.DATA(-2). 如果在该GDG中要产生新一代(11月)数据集,则可写为DSN=PAYROLL.DATA(+1),由此可见这些相对编号时相对于当前一代数据集而言,当前一代数据集用零表示,在当前一代前存入的世代数据集
用负数表示,在其之后存入的世代数据集用正数表示。
绝对编号:在每一个GDG名后加一个后缀GxxxxVyy,其中xxxx为绝对世代编号,yy是版本
号(00-99),如果DSN=PAYROLL.DATA(0),对应的实际名字
为:
PAYROLL.DATA.G0004V00, 而DSN=PAYROLL.DATA(-1),则对应的实际名字为:PAYROLL.DATA.G0003V00。
参
数:
NAME: 确定了GDG名(STJI.MJA.VE025.TESTGDG),它表示这个GDG 的每一代具有的名
为:STJI.MJA.VE025.TESTGDG.GxxxxVyy ,这里“xxxx”是世代编号, “yy”是版本
号;
LIMIT: 指定在GDG中可以有几个世代数据
集;
EMPTY或NOEMPTY: 指出当GDG中的世代数据集达到LIMIT给定的最大数,而又要加入新的世代数据集时,是否将所有世代数据集移出GDG,用EMPTY参数表示全部移出,NOEMPTY
表示在GDG01中保留最新的三个世代数据
集; SCRATCH或NOSCRATCH: 指出移出GDG的世代数据集是否删除,SCRATCH参数表示删除,
NOSCRATCH参数表示不删
除。
GDG的定义及建立参考JCL4, 存入和读取都可以通过IEBGENER来实

