Определение альтернативного индекса для VSAM KSD

#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