Замена строки в наборе данных мэйнфреймов - PullRequest
2 голосов
/ 24 ноября 2011

Можем ли мы заменить часть данных другой строкой в ​​мэйнфрейме?Например, предположим, что у меня PS длиной 80. От столбца 72 до 80 присутствуют некоторые номера строк.Я хочу изменить эти номера строк по конкретной строке, скажем, TEST.Можем ли мы использовать любую форму «C ALL» для достижения этой цели ???Файл ABC ---

=COLS> -1----+----2----+----3----+----4----+----5----+----6----+----7----+----8
000004    text123                                                      12360002
000005    textabc                                                      12370002

С уважением, Сайша

Ответы [ 4 ]

7 голосов
/ 24 ноября 2011

Вы можете легко сделать это в редакторе ISPF (что ясно из вашего примера): C p‘#’ ‘TEST’ 72-80 заменит любую числовую строку в столбцах с 72 по 80 на "TEST".

0 голосов
/ 09 марта 2017

Я лично считаю порядковые номера в исходном коде бесполезными и неприятными. (Это также cols 73-80, а не 72-80 кстати). Когда исходный код хранился на карточках, они были полезны для повторного упорядочения исходной «колоды», которая была случайно сброшена с разбросанными повсюду карточками. В настоящее время, когда исходный текст хранится на диске и редактируется онлайн, он абсолютно бесполезен, и никто его больше не использует. Всякий раз, когда я нахожу их, я меняю их на пробелы. Это также позволяет хранить исходные тексты в формате переменной длины, экономя значительное дисковое пространство ;-) Порядковые номера COBOL в столбцах с 1 по 7 также бесполезны. Изменение их на пробелы улучшает читабельность и делает любые законные комментарии в этих столбцах лучше выделенными.

0 голосов
/ 24 ноября 2011

У вас есть несколько опций, ни одна из которых не выполняет изменение данных на месте.То есть они будут читать входные данные и записывать новый файл в качестве выходных.

  • Какой бы продукт сортировки у вас не был ( DFSORT , SYNCSORT (который необъяснимоне будут публиковать их руководства в Интернете) и т. д.), вероятно, сможет сделать это.Доступ к таким утилитам через CALL возможен, но они обычно выполняются как отдельные шаги в потоке работ.Хотя эти продукты не поставляются бесплатно с z / OS, было бы крайне редко найти магазин мэйнфреймов без него.
  • awk , который вряд ли будет ВЫЗВАН в любомЛегкая мода.Это бесплатно предоставляется с z / OS.
  • sed , которая вряд ли будет ВЫЗВАНА любым легким способом.Это бесплатно предоставляется с z / OS.
  • File-Aid , о возможности которого я не могу говорить.Это сторонний продукт и не бесплатный.Вы можете иметь или не иметь его в своем магазине.
  • Пишите свое.Если он должен быть CALLable, вы можете написать его на своем языке.Если это не обязательно CALLable, тогда у вас есть еще больше вариантов, Easytrieve , SAS , SPSS (все из которых являются платными третьсторонние продукты) и Perl , Java и т. д., которые можно бесплатно загрузить.Вы также можете написать либо автономный Rexx , либо использовать Rexx или Clist , чтобы создать ISPF макрос редактирования , который затем можно будет выполнить в пакет .

Нет сомнений в других вариантах.

0 голосов
/ 24 ноября 2011

У вас есть как минимум два варианта:

a) Использовать DFSORT с операторами INREC IF или;

b) Использовать FILE-AID.

Вот примерс FILE-AID Пакетная обработка:

//STEPNAME EXEC PGM=FILEAID,PARM=TSO
//DD01     DD DSN=INPUT.FILE,DISP=SHR
//DD01O    DD DSN=OUTPUT.FILE1,DISP=OLD
//SYSOUT   DD SYSOUT=*
//SYSPRINT DD SYSOUT=*
//SYSLIST  DD SYSOUT=*
//SYSTOTAL DD SYSOUT=*
//SYSIN    DD *
$$DD01 COPY  EDITALL=(72,6,C'AAAA',C'BBBBBBBB') 
...