Как скопировать только выбранный столбец входного файла в выходной файл в сортировке jcl

Я пытаюсь скопировать данные в позиции (50,10) моего входного файла в выходной файл, но у меня возникают проблемы. Размер моего входного файла 100; необходимые данные находятся с 50-й позиции для следующих 10 байтов.

Я использовал следующие варианты, но каждый из них вызывает отказ. Я взял выходной файл только длиной 10, так как мне нужно всего 10 байт. Но абенд говорит. OUTREC RECORD LENGTH = 10

SORTIN   : RECFM=VB   ; LRECL=   100; BLKSIZE=  1000 
SORTIN   : DSNAME=MNV.TESTS.DF.CPR810S1.EZ2OP        
OUTREC RECORD LENGTH =     10                         
SORTOUT  RECFM INCOMPATIBLE                          
SORTOUT  : RECFM=FB   ; LRECL=      ; BLKSIZE=    

Я использовал следующие варианты:

OUTREC FIELDS(50,10)              
SORT FIELDS(1,4,CH,A)    
--------didn't work------------

SORT FIELDS=COPY            
OUTREC FIELDS=(115,9,125,10) 
--------didn't work------------

SORT  FIELDS=COPY                        
BUILD=(50,10)                  
--------didn't work------------

INREC FIELDS=(50,10)        
SORT FIELDS=(1,3,CH,A) 
--------didn't work------------

person Agent Mahone    schedule 30.08.2014    source источник


Ответы (1)


Я знаю, что бессмысленно упоминать, что вы редко принимаете или даете отзывы, а также не являетесь избирателем.

По какой-то причине вы их обрезали, но все те сообщения, которые вы разместили, идут с префиксом WER и номером сообщения. Если вы обратитесь к руководству по SyncSORT, вы найдете все задокументированные сообщения.

Забудьте об этом на мгновение. Вы опубликовали SORTOUT RECFM INCOMPATIBLE. Зачем говорить о рекордной длине? РЕЦФМ. РЕЦФМ. Вы включили текст сообщения, который показывает RECFM для SORTIN, а также тот, который показывает RECFM для SORTOUT. Это VB и FB соответственно. Если вы посмотрите на сообщение в руководстве, вы обнаружите, что не сделали ничего явного, чтобы сделать их разными.

У вас есть два варианта. VTOF или ПРЕОБРАЗОВАТЬ. Вы можете использовать их на OUTREC (я думаю) и OUTFIL (наверняка).

 OPTION COPY
 OUTFIL VTOF,
        BUILD=(50,10)

Почему вы хотите попробовать СОРТИРОВАТЬ файл, я не знаю, и вы должны знать, что просто создание синтаксиса не работает.

Для SORT по умолчанию выходной файл — это тот же файл RECFM, что и входной. Запись переменной длины всегда должна содержать RDW, 1,4, а сами данные начинаются с позиции 5.

Если вам нужен выходной файл другого RECFM, вы должны указать это явно (с помощью CONVERT, FTOV или VTOF).

При создании F-записи нет RDW, поэтому ваш BUILD=(50,10) является правильным форматом (если у вас четыре байта, помните, что для V-записи данные начинаются с позиции пять, поэтому вам нужно добавить четыре к все начальные позиции, которые не учитывают RDW (например, макет записи COBOL).

При создании V из F, без RDW, его создаст FTOV/CONVERT.

С вводом V и выводом V всегда указывайте (1,4) в начале вашего оператора BUILD.

person Bill Woodger    schedule 30.08.2014
comment
извините за долгое отсутствие, сэр. Я захожу в интернет всего несколько раз. Обязательно будем посещать и участвовать чаще. Я пытался использовать FTOV, но получил OUTREC RDW NOT INCLUDED, что опять-таки из-за другого типа файла. Я создал оба как фиксированный файл, и он хорошо работал с очень простой OPTION COPY OUTREC BUILD=(50,9), но я до сих пор не понимаю, почему возникают проблемы с получением столбца файлов VB в фиксированном файле. это просто возмутительно. - person Agent Mahone; 31.08.2014
comment
@AgentMahone, моя ошибка: FTOV привязан к переменной; VTOF является переменно-фиксированным. Обновление. - person Bill Woodger; 31.08.2014