无法将字母从物理顺序文件复制到KSDS群集

时间:2014-10-10 03:26:05

标签: mainframe jcl ispf vsam

我创建了一个包含一些记录的顺序文件。我必须将它们复制到KSDS集群。所以我为它写了一个JCL。 当我在我的顺序文件中给出数字时,它正在工作,但是当我给出英文字母时它不起作用。

为什么?


这是我创建KSDS群集的代码

 //TRC186H JOB (TRC,TRC,TRC186,D2,DT99X),CLASS=A,   
 //      MSGLEVEL=(1,1),MSGCLASS=C,NOTIFY=&SYSUID   
 //STEP1 EXEC PGM=IDCAMS                            
 //SYSPRINT DD SYSOUT=*                             
 //SYSIN DD *                                       
    DEFINE CLUSTER -                                
    (NAME(TRC186.VSAM.CASE.CLUSTER) -                
    TRACKS(2,2) -                                    
    CONTROLINTERVALSIZE(4096) -                      
    INDEXED -                                        
    KEYS(6,1) -                                      
    FREESPACE(10,10)) -                              
    DATA -                                          
    (NAME(TRC186.CASE.DATA) -                      
     RECORDSIZE(180 180)) -                         
      INDEX -                    
      (NAME(TRC186.CASE.INDEX) - 
       CONTROLINTERVALSIZE(4096)) 
 /*             


这是我从顺序文件复制到KSDS集群的代码

  //TRC186A JOB (TRG),CLASS=A,MSGLEVEL=(1,1),MSGCLASS=A, 
  //          NOTIFY=&SYSUID                             
  //STEP1 EXEC PGM=IDCAMS                                
  //INPUTDD  DD DSN=TRC186.VSAM.INPUTPS,DISP=OLD         
  //SYSPRINT DD SYSOUT=*                                 
  //SYSIN DD *                                           
       REPRO -                                              
       INFILE(INPUTDD) -                                    
       OUTDATASET(TRC186.VSAM.CASE.CLUSTER)                 
  /*    


我给出的输入是

123456个
234567个
345678个
456789个
567891个

他们很容易被复制,但是当我给出像英文字母一样的字母时 ABCDEFG
cdhert
kjsdfg
QWERTY
kjhgfd

这不会被复制到集群。

请解释原因?

1 个答案:

答案 0 :(得分:1)

您的KSDS定义中的KEYS指定6,1。您需要检查这是否是您想要的。

使用KSDS加载REPRO时,数据必须已按键顺序排列。您显示的数字数据恰好是按键顺序,字母数据不是。

如果您的IDCAMS步骤前面有SORT步骤,那么您应该保持干净。但是,请检查VSAM想要密钥的方式,并与SORT想要密钥的方式进行比较。就是这样。

KSDS IDCAMS上的DEFINE的密钥定义具有特定格式。首先指定正确执行的长度,然后指定偏移量。偏移的含义是“从记录的起始点开始的字节”。因此,偏移零是字节一(或第一列),偏移一(你指定)是记录的字节二,这意味着你的数字示例仍然是有序的(有点侥幸)但你的字母表不是,他们需要按照您使用的特定DEFINE第二个字母的顺序排列。