Не удается скопировать буквы алфавита из физического последовательного файла в кластер KSDS

I have created a sequential file with some records. I have to copy them to a KSDS cluster. So i wrote a JCL for it. When i give numerals in my sequential file it is working but when i give english alphabet letters it is not working.

why is that??


THIS IS MY CODE FOR CREATING KSDS Cluster

 //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

Это не копируется в кластер.

Объясните, пожалуйста, почему?


person VIBHAV PANDEY    schedule 10.10.2014    source источник
comment
Могут быть и другие проблемы. Что нам нужно увидеть, так это вставку в ваш вопрос выходных данных sysout, которые вы получаете на этапе IDCAMS. надо было раньше спросить :-)   -  person Bill Woodger    schedule 10.10.2014


Ответы (1)


Ваш KEYS в определении вашего KSDS укажите 6,1. Вы захотите проверить, хотите ли вы этого.

При загрузке KSDS с REPRO данные должны быть уже в ключевой последовательности. Числовые данные, которые вы показали, совпадают с последовательностью клавиш, а буквенные данные - нет.

Если вы предваряете свой IDCAMS шаг SORT шагом, то вы должны быть чистыми. Однако проверьте, как VSAM хочет получить ключ, и сравните с тем, как SORT хочет получить ключ. Так оно и есть.

Определение KEY для KSDS на IDCAMS DEFINE имеет особый формат. Сначала вы указываете длину, что вы сделали правильно, а затем указываете смещение. Смещение означает «байты от начальной точки записи». Таким образом, смещение ноль — это первый байт (или столбец один), смещение один (которое вы указали) — это второй байт записи, что означает, что ваш числовой пример все еще в порядке (немного случайности), но ваш алфавит — нет, они должны быть в порядке на второй букве с конкретным DEFINE, который вы использовали.

person Bill Woodger    schedule 10.10.2014
comment
извините, я поставил лишнюю букву «г» здесь, в первом ряду. Я там правильно написал и да, я хочу 6,1. Я не написал никакого кода сортировки, но все же он работает только отсортированным образом. - person VIBHAV PANDEY; 10.10.2014
comment
Это будет работать только в том случае, если данные, которые вы передаете для REPRO в KSDS, находятся в последовательности. Неважно, делаете ли вы это вручную (как в примере с номером) или с помощью шага SORT. Ваши числовые данные в порядке, ваши буквенные данные нет. Вы можете вручную переставить свои алфавитные данные, если хотите, но пока это не будет в порядке, это не сработает. Можете ли вы объяснить словами, что, по вашему мнению, означает 6,1 в DEFINE для KSDS? - person Bill Woodger; 10.10.2014
comment
Мне жаль. Я не понимаю, как ставить буквы английского алфавита по порядку. Согласно (6,1) он указывает, что 1 — это смещение, а 6 — длина значения ключа, которое дает u. Это означает, что я начал с столбца 1 и закончил столбцом 6. По крайней мере, я так думаю. - person VIBHAV PANDEY; 10.10.2014
comment
АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЫЭЮЯ. Хорошо, с ключом все так, как я и думал. Смещение нуля начинается в столбце 1. Смещение 1 начинается в столбце 2. - person Bill Woodger; 10.10.2014
comment
я выдал результат как abcdef ghijkl mnopqr stuvwx. Это не работает. - person VIBHAV PANDEY; 10.10.2014
comment
Да, но это пересекалось с моим комментарием о ключе. Я обновлю ответ, но и другие вещи будут полезны. - person Bill Woodger; 10.10.2014
comment
Теперь работает. я дал английскую букву во 2-м столбце, и это сработало. - person VIBHAV PANDEY; 10.10.2014