Стартовые позиции поля тетради
У кого-нибудь есть быстрый способ найти стартовые позиции тетради COBOL для полей? Например:
000100 01 BGG-FILE-REC.
000200 03 BGG-RCD-KEY.
000300 05 BGG-DUDENAME PIC XXXX.
000400 05 BGG-DUDEADDR PIC XX.
000500 05 BGG-HAIRCOLOR PIC X(71).
000600 05 BGG-EYECOLOR PIC X(8).
Столбец BGG-HAIRCOLOR начинается в столбце 7. Однако в самом файле, который я обрабатываю, содержится около 250 переменных общим объемом до 3400 байт. Перебирать и добавлять значения PIC с помощью ручного калькулятора отвратительно и не случалось в моей жизни. Число было бы неплохо иметь в vi, когда я проверяю вывод из системы; т. е. попадает ли значение BGG-EYECOLOR в правильный столбец?
Я мог бы написать Perl-скрипт для аннотирования такой тетради, но прежде чем я это сделал, я подумал, есть ли у кого-нибудь более плавный способ получить такое же значение?
5 ответов
Если это для мэйнфрейма, вы можете использовать cb2xml для преобразования тетради в xml (с полем Start).
В качестве альтернативы вы можете использовать RecordEditor. Импортируйте тетрадь Кобола в RecordEditor (см. Примечания RecordEditor-Cobol). RecordEditor рассчитает позиции поля. Вы можете скопировать и вставить поля из RecordEditor-Layout в Excell или в текстовый редактор. В качестве альтернативы вы можете экспортировать макет записи в формате Xml.
RecordEdityor будет работать для нескольких диалектов кобола (мейнфрейм, OpenCobol).
Если вы читаете файлы в Java, вы должны посмотреть на JRecord. JRecord позволит вам прочитать файл Cobol Data на Java с помощью Cobol Copybook.
Также Legstar может стоить посмотреть. Изначально Legstar начинал с сделки с онлайн-передачей данных, но они постепенно расширялись.
Отказ от ответственности: я поддерживаю nilchoud.pythonanywhere.com
Привет, проверьте сайт https://nilchoud.pythonanywhere.com/, Этот сайт разработан специально для анализа тетрадей COBOL.
Например, Ваша входная тетрадь (как упоминалось в вопросе):
000100 01 BGG-FILE-REC.
000200 03 BGG-RCD-KEY.
000300 05 BGG-DUDENAME PIC XXXX.
000400 05 BGG-DUDEADDR PIC XX.
000500 05 BGG-HAIRCOLOR PIC X(71).
000600 05 BGG-EYECOLOR PIC X(8).
Тогда вывод будет:
SR# LEVEL FIELD NAME PICTURE TYPE START END LENGTH
0 1 BGG-FILE-REC. @ AN 1 85 85
1 3 BGG-RCD-KEY. @ AN 1 85 85
2 5 BGG-DUDENAME XXXX. AN 1 4 4
3 5 BGG-DUDEADDR XX. AN 5 6 2
4 5 BGG-HAIRCOLOR X(71). AN 7 77 71
5 5 BGG-EYECOLOR X(8). AN 78 85 8
Я надеюсь, что это решит вашу проблему.
Если вы используете мэйнфреймы, вы можете использовать "File aid - view". Из основного меню ISPF перейдите
G ==> General Utility
F ==> File-Aid Products
1 ==> File-AID
8 ==> VIEW
На экране появятся следующие параметры:
Specify Record Layout Dataset to View:
Dataset name ===> 'XXXXXX.XXX.XXXX'
Member name ===> COPYZXY (Blank or pattern for member list)
Укажите "Имя набора данных" и "Имя участника" (Имя набора данных: ваш PDS и Имя участника: имя вашей копии книги)
После нажатия кнопки ввода вы получите экран VIEW LAYOUT, в котором описаны имя переменной, предложение, номер, начало, конец и длина каждой переменной, присутствующей в этой книге копий.
Если вы находитесь на мэйнфрейме, используйте опцию 8 FileAid.
Вы беспокоитесь о том, как сложно выстроить предложения PIC в одном столбце?
Откройте его в одном из множества вариантов Eclipse и control-shift-F или в любом другом месте.
Вы знаете, что он хорошо компилируется независимо от столбцов, и вот уже почти 30 лет они действительно больше не имеют значения.
Низкая стоимость аренды будет состоять в том, чтобы скомпилировать ее и вырезать и вставить список перекрестных ссылок в вашу тетрадь.