【问题标题】:Defining Alternate Index for VSAM KSDS为 VSAM KSDS 定义备用索引
【发布时间】:2021-11-01 10:55:50
【问题描述】:

我在为我的 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 不正确。

【问题讨论】:

    标签: jcl vsam


    【解决方案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         
    

    这是因为您在完成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 的空间和卷规范。使用下面具有 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)  -
                  )         
    /*                                                  
    //                                                  
    

    【讨论】:

    • 关于 VOLUMES:“如果集群是建模的或集群是 SMS 管理的,则不需要此参数。您可以为 SMS 管理的数据集指定 VOLUMES;但是,指定的卷可能不是使用,在某些情况下,可能会导致错误。” ibm.com/docs/en/zos/2.5.0?topic=dap-required-parameters-1
    • 在我的 ZDT 系统上需要它,所以我同意您的里程会有所不同。由于他提到了 ZMSHR1,我推测 OP 使用了类似的系统
    猜你喜欢
    • 2022-03-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-08
    • 2017-05-06
    • 2014-11-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多