#jcl #vsam
Вопрос:
У меня проблема с определением альтернативного индекса для моих VSAM KSD. В нем говорится
IDC3211I KEYWORD 'DATA' IS IMPROPER
Вот мое определение VSAM KSD:
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))
Я не понимаю, почему он говорит, что ДАННЫЕ ключевых слов являются неправильными.
Ответ №1:
Есть несколько проблем. Первая проблема — это проблема с синтаксисом в команде.
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
Это потому, что вам не хватает закрывающей круглой скобки после KEYS
предложения, которое завершает CLUSTER
раздел. Добавление закрывающей круглой скобки, как показано ниже, завершит 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. Используйте приведенное ниже определение, содержащее необходимые параметры для 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))
Завершите ЗАДАНИЕ для создания КЛАСТЕРА, и далее следует ALTERNATEINDEX. Я отформатировал инструкции, чтобы они были более удобочитаемыми:
//IDCAMS JOB CLASS=A,NOTIFY=amp;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) -
)
/*
//
Комментарии:
1. Что касается ТОМОВ: «Этот параметр не требуется, если кластер моделируется или если кластер управляется с помощью SMS. Вы можете указать ТОМА для наборов данных, управляемых SMS; однако указанные тома могут не использоваться и в некоторых случаях могут привести к ошибке. » ibm.com/docs/en/zos/2.5.0?topic=dap-required-parameters-1
2. В моей системе ZDT это было необходимо, поэтому я согласен, что ваш пробег будет отличаться. Я предположил, что OP был в аналогичной системе из-за его ссылки на ZMSHR1