JRecord - Обработка повторяющихся столбцов в cobol copybook

Я использую CopybookInputFormat на git https://github.com/tmalaska/CopybookInputFormat/ чтобы сгенерировать определение таблицы улья из тетради COBOL. В моей тетради много заполнителей (дубликаты столбцов), но, похоже, JRecord неправильно обрабатывает дубликаты имен столбцов. Для приведенной ниже тетради, когда я перебираю столбцы, JRecord печатает только второй заполнитель и игнорирует первый заполнитель.

  05 Birth-day              PIC X(002)
  05 Filler                 PIC X(008)
  05 Birth-Month            PIC X(002)
  05 Filler                 PIC X(008)
  05 Birth-year             PIC X(004)

У кого-нибудь есть какое-то решение для этого? Я знаю, что JRecord 0.80.6 и выше обрабатывает дублирующиеся столбцы, но метод getUniqueField("FIRST-NAME", "PRESIDENT") нужно имя группы.. но что если в группе есть повторяющиеся столбцы?

1 ответ

Решение

Вам не нужно импортировать заполнитель. В Cobol доступ к Наполнителю невозможен. В Коболе Наполнитель говорит " Игнорировать это поле" (или получить к нему доступ другим способом).

Cobol-тетрадь похожа на маску над блоком памяти; Наполнитель используется для пропуска некоторой памяти.

  Data         !##........##........##   (# - accessible bytes; . - inaccessible bytes)
                ^         ^         ^                               
                !         !         !
Birth-day    ---+         !         ! 
Filler                    !         ! 
Birth-Month  -------------+         !  
Filler                              !
Birth-year   -----------------------+   

Наполнитель может быть использован для:

  • Маскировать поля, которые больше не используются.
  • Используется маска данных в переопределении
  • Создайте упрощенную версию тетради, когда вам не нужны все поля
  • Инициализация поля вывода, т.е.
     05 отчет-Дата рождения
        10 дд фото 99.
        10 заполнитель рис '/'.
        10 мм рис 99.  
        10 заполнитель рис '/'.
        10 гггг рис 9999.
  • настройка данных таблицы
     05 кодов.
        Код 10 встречается 5 рис 99.
     05 наполнитель переопределяет коды рис х (10)
        значение "0204050612".

Я бы спросил у специалистов Cobol, где вы работаете, что происходит??? Возможные ответы могут быть:

  • Данные заполнителя могут не понадобиться.
  • Вы должны использовать другую, более сложную тетрадь.
  • Тетрадь должна быть обновлена ​​с заполнителями с настоящими именами.
Другие вопросы по тегам