为 VSAM KSDS 定义备用索引
Defining Alternate Index for VSAM KSDS
我在为我的 VSAM KSDS 定义备用索引时遇到问题。它说
IDC3211I KEYWORD 'DATA' IS IMPROPER
这是我的 VSAM KSDS 定义:
DEFINE CLUSTER -
(NAME(IBMUSER.TEST.SAMPLE.KSDS) -
VOLUMES(ZASYS1) -
TRACKS(15 15) -
INDEXED -
SHAREOPTIONS(1 3) UNIQUE -
RECORDSIZE(100 100) -
KEYS(18 0) -
DATA(NAME(IBMUSER.TEST.SAMPLE.KSDS.DATA))-
INDEX(NAME(IBMUSER.TEST.SAMPLE.KSDS.INDEX))
这是我的备用索引定义:
DEFINE AIX (NAME(IBMUSER.TEST.SAMPLE.AIX)-
RELATE(IBMUSER.TEST.SAMPLE.KSDS) -
CISZ(4096) -
FREESPACE(20,20) -
KEYS(20,19) -
NONUNIQUEKEY -
UPGRADE -
RECORDSIZE(61,61) -
DATA(NAME(IBMUSER.TEST.SAMPLE.AIX.DATA))-
INDEX(NAME(IBMUSER.TEST.SAMPLE.AIX.INDEX))
我不明白为什么它说关键字 DATA 不正确。
有几个问题。第一个是命令中的语法问题。
DEFINE CLUSTER -
( -
NAME(IBMUSER.TEST.SAMPLE.KSDS) -
TRACKS(15 15) -
INDEXED -
VOLUMES(ZMSHR1) -
SHAREOPTIONS(1 3) UNIQUE -
RECORDSIZE(100 100) -
KEYS(18 0) -
DATA(NAME(IBMUSER.TEST.SAMPLE.KSDS.DATA)) -
IDC3211I KEYWORD 'DATA' IS IMPROPER
INDEX(NAME(IBMUSER.TEST.SAMPLE.KSDS.INDEX))
IDC3202I ABOVE TEXT BYPASSED UNTIL NEXT COMMAND. CONDITION CODE IS 12
这是因为在完成 CLUSTER
部分的 KEYS
子句后缺少右括号。添加如下所示的右括号将完成 DEFINE CLUSTER
部分。
DEFINE CLUSTER -
( -
NAME(IBMUSER.TEST.SAMPLE.KSDS) -
TRACKS(15 15) -
INDEXED -
VOLUMES(ZMSHR1) -
SHAREOPTIONS(1 3) UNIQUE -
RECORDSIZE(100 100) -
KEYS(18 0) -
) -
DATA(NAME(IBMUSER.TEST.SAMPLE.KSDS.DATA)) -
INDEX(NAME(IBMUSER.TEST.SAMPLE.KSDS.INDEX))
IDC0508I DATA ALLOCATION STATUS FOR VOLUME ZMSHR1 IS 0
IDC0509I INDEX ALLOCATION STATUS FOR VOLUME ZMSHR1 IS 0
IDC0001I FUNCTION COMPLETED, HIGHEST CONDITION CODE WAS 0
更正该错误后,您将收到另一个错误,因为您需要 AIX 的 space 和卷规范。使用下面具有 AIX 所需参数的定义。
DEFINE AIX -
( -
NAME(IBMUSER.TEST.SAMPLE.AIX) -
TRACKS(15 15) -
VOLUMES(ZMSHR1) -
RELATE(IBMUSER.TEST.SAMPLE.KSDS) -
CISZ(4096) -
FREESPACE(20,20) -
KEYS(20,19) -
NONUNIQUEKEY -
UPGRADE -
RECORDSIZE(61,61) -
) -
DATA(NAME(IBMUSER.TEST.SAMPLE.AIX.DATA)) -
INDEX(NAME(IBMUSER.TEST.SAMPLE.AIX.INDEX))
完成 JOB 以完成 CLUSTER 和 ALTERNATEINDEX 的创建。我将语句格式化为更具可读性:
//IDCAMS JOB CLASS=A,NOTIFY=&SYSUID
//STEP0010 EXEC PGM=IDCAMS
//SYSPRINT DD SYSOUT=*
//SYSIN DD *
DELETE IBMUSER.TEST.SAMPLE.KSDS
DELETE IBMUSER.TEST.SAMPLE.AIX
SET MAXCC = 0
DEFINE CLUSTER( -
NAME(IBMUSER.TEST.SAMPLE.KSDS) -
TRACKS(15 15) -
INDEXED -
VOLUMES(ZMSHR1) -
SHAREOPTIONS(1 3) UNIQUE -
RECORDSIZE(100 100) -
KEYS(18 0) -
) -
DATA( -
NAME(IBMUSER.TEST.SAMPLE.KSDS.DATA) -
) -
INDEX( -
NAME(IBMUSER.TEST.SAMPLE.KSDS.INDEX) -
)
DEFINE AIX( -
NAME(IBMUSER.TEST.SAMPLE.AIX) -
TRACKS(15 15) -
VOLUMES(ZMSHR1) -
RELATE(IBMUSER.TEST.SAMPLE.KSDS) -
CISZ(4096) -
FREESPACE(20,20) -
KEYS(20,19) -
NONUNIQUEKEY -
UPGRADE -
RECORDSIZE(61,61) -
) -
DATA( -
NAME(IBMUSER.TEST.SAMPLE.AIX.DATA)) -
) -
INDEX( -
NAME(IBMUSER.TEST.SAMPLE.AIX.INDEX) -
)
/*
//
我在为我的 VSAM KSDS 定义备用索引时遇到问题。它说
IDC3211I KEYWORD 'DATA' IS IMPROPER
这是我的 VSAM KSDS 定义:
DEFINE CLUSTER -
(NAME(IBMUSER.TEST.SAMPLE.KSDS) -
VOLUMES(ZASYS1) -
TRACKS(15 15) -
INDEXED -
SHAREOPTIONS(1 3) UNIQUE -
RECORDSIZE(100 100) -
KEYS(18 0) -
DATA(NAME(IBMUSER.TEST.SAMPLE.KSDS.DATA))-
INDEX(NAME(IBMUSER.TEST.SAMPLE.KSDS.INDEX))
这是我的备用索引定义:
DEFINE AIX (NAME(IBMUSER.TEST.SAMPLE.AIX)-
RELATE(IBMUSER.TEST.SAMPLE.KSDS) -
CISZ(4096) -
FREESPACE(20,20) -
KEYS(20,19) -
NONUNIQUEKEY -
UPGRADE -
RECORDSIZE(61,61) -
DATA(NAME(IBMUSER.TEST.SAMPLE.AIX.DATA))-
INDEX(NAME(IBMUSER.TEST.SAMPLE.AIX.INDEX))
我不明白为什么它说关键字 DATA 不正确。
有几个问题。第一个是命令中的语法问题。
DEFINE CLUSTER -
( -
NAME(IBMUSER.TEST.SAMPLE.KSDS) -
TRACKS(15 15) -
INDEXED -
VOLUMES(ZMSHR1) -
SHAREOPTIONS(1 3) UNIQUE -
RECORDSIZE(100 100) -
KEYS(18 0) -
DATA(NAME(IBMUSER.TEST.SAMPLE.KSDS.DATA)) -
IDC3211I KEYWORD 'DATA' IS IMPROPER
INDEX(NAME(IBMUSER.TEST.SAMPLE.KSDS.INDEX))
IDC3202I ABOVE TEXT BYPASSED UNTIL NEXT COMMAND. CONDITION CODE IS 12
这是因为在完成 CLUSTER
部分的 KEYS
子句后缺少右括号。添加如下所示的右括号将完成 DEFINE CLUSTER
部分。
DEFINE CLUSTER -
( -
NAME(IBMUSER.TEST.SAMPLE.KSDS) -
TRACKS(15 15) -
INDEXED -
VOLUMES(ZMSHR1) -
SHAREOPTIONS(1 3) UNIQUE -
RECORDSIZE(100 100) -
KEYS(18 0) -
) -
DATA(NAME(IBMUSER.TEST.SAMPLE.KSDS.DATA)) -
INDEX(NAME(IBMUSER.TEST.SAMPLE.KSDS.INDEX))
IDC0508I DATA ALLOCATION STATUS FOR VOLUME ZMSHR1 IS 0
IDC0509I INDEX ALLOCATION STATUS FOR VOLUME ZMSHR1 IS 0
IDC0001I FUNCTION COMPLETED, HIGHEST CONDITION CODE WAS 0
更正该错误后,您将收到另一个错误,因为您需要 AIX 的 space 和卷规范。使用下面具有 AIX 所需参数的定义。
DEFINE AIX -
( -
NAME(IBMUSER.TEST.SAMPLE.AIX) -
TRACKS(15 15) -
VOLUMES(ZMSHR1) -
RELATE(IBMUSER.TEST.SAMPLE.KSDS) -
CISZ(4096) -
FREESPACE(20,20) -
KEYS(20,19) -
NONUNIQUEKEY -
UPGRADE -
RECORDSIZE(61,61) -
) -
DATA(NAME(IBMUSER.TEST.SAMPLE.AIX.DATA)) -
INDEX(NAME(IBMUSER.TEST.SAMPLE.AIX.INDEX))
完成 JOB 以完成 CLUSTER 和 ALTERNATEINDEX 的创建。我将语句格式化为更具可读性:
//IDCAMS JOB CLASS=A,NOTIFY=&SYSUID
//STEP0010 EXEC PGM=IDCAMS
//SYSPRINT DD SYSOUT=*
//SYSIN DD *
DELETE IBMUSER.TEST.SAMPLE.KSDS
DELETE IBMUSER.TEST.SAMPLE.AIX
SET MAXCC = 0
DEFINE CLUSTER( -
NAME(IBMUSER.TEST.SAMPLE.KSDS) -
TRACKS(15 15) -
INDEXED -
VOLUMES(ZMSHR1) -
SHAREOPTIONS(1 3) UNIQUE -
RECORDSIZE(100 100) -
KEYS(18 0) -
) -
DATA( -
NAME(IBMUSER.TEST.SAMPLE.KSDS.DATA) -
) -
INDEX( -
NAME(IBMUSER.TEST.SAMPLE.KSDS.INDEX) -
)
DEFINE AIX( -
NAME(IBMUSER.TEST.SAMPLE.AIX) -
TRACKS(15 15) -
VOLUMES(ZMSHR1) -
RELATE(IBMUSER.TEST.SAMPLE.KSDS) -
CISZ(4096) -
FREESPACE(20,20) -
KEYS(20,19) -
NONUNIQUEKEY -
UPGRADE -
RECORDSIZE(61,61) -
) -
DATA( -
NAME(IBMUSER.TEST.SAMPLE.AIX.DATA)) -
) -
INDEX( -
NAME(IBMUSER.TEST.SAMPLE.AIX.INDEX) -
)
/*
//