VSAM - 命令

VSAM 命令用于对 VSAM 数据集执行某些操作。以下是最有用的 VSAM 命令 −

  • Alter
  • Repro
  • Listcat
  • Examine
  • Verify

Alter

ALTER 命令用于修改 VSAM 文件属性。我们可以更改我们在 VSAM 集群定义中提到的 VSAM 文件的属性。以下是更改属性的语法 −

ALTER  file-cluster-name [password] 
   [ADDVOLUMES(volume-serial)] 
   [BUFFERSPACE(size)] 
   [EMPTY / NOEMPTY] 
   [ERASE / NOERASE] 
   [FREESPACE(CI-percentage CA-percentage)] 
   [KEYS(length offset)] 
   [NEWNAME(new-name)] 
   [RECORDSIZE(average maximum)] 
   [REMOVEVOLUMES(volume-serial)] 
   [SCRATCH / NOSCRATCH] 
   [TO(date) / FOR(days)] 
   [UPGRADE / NOUPGRADE] 
   [CATALOG(catalog-name [password]]

以上语法显示了我们可以在现有 VSAM 集群中更改哪些参数。参数描述与 VSAM - 集群模块中提到的相同。

示例

以下示例显示如何使用 ALTER 命令增加可用空间、添加更多卷和更改密钥 −

//SAMPLE JOB(TESTJCL,XXXXXX),CLASS = A,MSGCLASS = C
//STEP1  EXEC PGM = IDCAMS
//SYSPRINT DD  SYSOUT = *
//SYSIN DD  *
   ALTER  MY.VSAM.KSDSFILE 
   [ADDVOLUMES(2)] 
   [FREESPACE(6 6)] 
   [KEYS(10 2)] 
/*

如果您要在大型机服务器上执行上述 JCL。它应以 MAXCC = 0 执行,并且将更改可用空间、卷和密钥。

Repro

REPRO 命令用于将数据加载到 VSAM 数据集中。它还用于将数据从一个 VSAM 数据集复制到另一个 VSAM 数据集。我们可以使用此命令将数据从顺序文件复制到 VSAM 文件。IDCAMS 实用程序使用 REPRO 命令加载数据集。

REPRO INFILE(in-ddname) 
   OUTFILE(out-ddname) 

在上述语法中,in-ddname 是包含记录的输入数据集的 DD 名称。out-ddname 是输出数据集的 DD 名称,输入数据集的记录将被复制到该数据集。

示例

以下示例显示如何将记录从一个数据集复制到另一个 VSAM 数据集−

//SAMPLE JOB(TESTJCL,XXXXXX),CLASS = A,MSGCLASS = C
//STEP1  EXEC PGM = IDCAMS
//IN  DD DSN = MY.VSAM.KSDSFILE,DISP = SHR
//OUT DD DSN = MY.VSAM1.KSDSFILE,DISP = SHR
//SYSPRINT DD  SYSOUT = *
//SYSIN DD  *
   REPRO INFILE(IN) 
      OUTFILE(OUT)
/*

如果您要在 Mainframes 服务器上执行上述 JCL。它应使用 MAXCC = 0 执行,并将所有记录从 MY.VSAM.KSDSFILE 复制到 MY.VSAM1.KSDSFILE VSAM 文件。

Listcat

LISTCAT 命令用于获取 VSAM 数据集的目录详细信息。 Listcat 命令提供有关 VSAM 数据集的以下信息 −

  • SMS 信息
  • RLS 信息
  • Volume 信息
  • Sphere 信息
  • Allocation 信息
  • Dataset 属性
LISTCAT ENTRY(vsam-file-name) ALL

在上述语法中,vsam-file-name 是我们需要其所有信息的 VSAM 数据集名称。指定 ALL 关键字以获取所有目录详细信息。

示例

以下示例显示如何使用 Listcat 命令获取 VSAM 数据集的所有详细信息 −

//SAMPLE JOB(TESTJCL,XXXXXX),CLASS = A,MSGCLASS = C
//STEP1  EXEC PGM = IDCAMS
//SYSPRINT DD  SYSOUT = *
//SYSIN DD  *
   LISTCAT ENTRY(MY.VSAM.KSDSFILE) 
   ALL 
/*

如果您要在大型机服务器上执行上述 JCL。它应使用 MAXCC = 0 执行,并且将显示有关 MY.VSAM.KSDSFILE 数据集的所有目录详细信息。

检查

检查命令用于检查键序列数据集集群的结构完整性。它检查索引和数据组件,如果发现任何问题,则将发送错误消息。您可以检查任何 IDCxxxxx 消息。

EXAMINE NAME(vsam-ksds-name) -                                    
   INDEXTEST DATATEST -                  
   ERRORLIMIT(50)

在上述语法中,vsam-ksds-name 是我们需要检查 VSAM 集群的索引和数据部分的 VSAM 数据集名称。

示例

以下示例显示如何检查 KSDS 数据集的索引和数据部分是否同步−

//SAMPLE JOB(TESTJCL,XXXXXX),CLASS = A,MSGCLASS = C
//STEP1  EXEC PGM = IDCAMS
//SYSPRINT DD  SYSOUT = *
//SYSIN DD  *
   EXAMINE NAME(MY.VSAM.KSDSFILE) -                                    
   INDEXTEST DATATEST -                  
   ERRORLIMIT(50)
/*

如果您要在 Mainframes 服务器上执行上述 JCL。它应使用 MAXCC = 0 执行,并且它将在 spool 中的 IDCxxxxx 消息之一中显示 VSAM 数据集的所有问题。

验证

验证命令用于检查和修复在发生错误后未正确关闭的 VSAM 文件。该命令将正确的数据结束记录添加到文件中。

VERIFY DS(vsam-file-name)

在上述语法中,vsam-file-name 是我们需要检查错误的 VSAM 数据集名称。

示例

以下示例显示如何检查和修复 VSAM 数据集中的错误 −

//SAMPLE JOB(TESTJCL,XXXXXX),CLASS = A,MSGCLASS = C
//STEP1  EXEC PGM = IDCAMS
//SYSPRINT DD  SYSOUT = *
//SYSIN DD  *
   VERIFY DS(MY.VSAM.KSDSFILE)                                  
/*

如果您要在大型机服务器上执行上述 JCL。它应该以 MAXCC = 0 执行,并且它将修复 VSAM 数据集中的错误。