Состоялся релиз GnuCOBOL 2.2

1 месяц ago admin 0

Вышел компилятор языка программирования COBOL GnuCOBOL 2.2. Это первый релиз со значительными изменениями после того как компилятор вошёл в число проектов GNU и перестал быть OpenCOBOL’ом.

Изменения:

  • Теперь под лицензиями GPL/LGPL 3
  • Определяемые юзером функции, FUNCTION-ID.
  • Новые внутренние функции
      ABSOLUTE-VALUE                   алиас для ABS
      CURRENCY-SYMBOL                  CURRENCY-SYMBOL текущей программы
      FORMATTED-CURRENT-DATE           ISO 8601 функция даты и времени
      FORMATTED-DATE                   ISO 8601 функция даты и времени
      FORMATTED-DATETIME               ISO 8601 функция даты и времени
      FORMATTED-TIME                   ISO 8601 функция даты и времени
      TEST-FORMATTED-DATETIME          ISO 8601 функция даты и времени
      INTEGER-OF-FORMATTED-DATE        дата в целое
      HIGHEST-ALGEBRAIC                теперь реализована
      LOWEST-ALGEBRAIC                 теперь реализована
      LOCALE-COMPARE                   теперь реализована
      NUMVAL-F                         теперь реализована
      TEST-NUMVAL                      теперь реализована
      TEST-NUMVAL-C                    теперь реализована
      TEST-NUMVAL-F                    теперь реализована
      LENGTH-AN                        алиас для BYTE-LENGTH
      MODULE-CALLER-ID                 возвращает имя caller'а
      MODULE-DATE                      текущий модуль: дата компиляции
      MODULE-TIME                      текущий модуль: время компиляции
      MODULE-FORMATTED-DATE            текущий модуль: отформатированные дата и время
      MODULE-ID                        текущий модуль: PROGRAM-ID
      MODULE-PATH                      текущий модуль: путь во время компиляции
      MODULE-SOURCE                    текущий модуль: имя во время компиляции
      MONETARY-DECIMAL-POINT           основанная на локали фискальная десятичная точка
      MONETARY-THOUSANDS-SEPARATOR     основанный на локали финансовый разделитель визуальной группировки
    

    Замечание:
    Функции, которые фактически доступны как внутренние функции, зависят
    от используемого -std. Названия функций, которые не отмечены как внутренние функции
    по текущему -std могут использоваться свободно как определённые пользователем слова или
    даже как определенные пользователем функции.

  • Новые системные функции
      C$CALLEDBY                       возвращает имя caller'а
      CBL_GC_FORK                      форкает текущий процесс (не на Windows)
      CBL_GC_WAITPID                   ожидает окончания процесса
      CBL_GC_GETOPT  (CBL_OC_GETOPT)   парсер опций командной строки для COBOL'а
      CBL_GC_PRINTABLE (C$PRINTABLE)   проверяет печатаемый ли символ
      CBL_GC_HOSTED (CBL_OC_HOSTED)    обеспечивает доступ к внешним переменным C,
                                       таким как stdin, errno
      CBL_GC_NANOSLEEP                 CBL_OC_NANOSLEEP
      CBL_GET_SCR_SIZE                 возвращает размер текущего терминала (если он есть)
      CBL_READ_KBD_CHAR                берёт символ из терминала
      CBL_SET_CSR_POS                  устанавливает текущую позицию на терминале
      x'E4'                            очищает окно терминала
      x'E5'                            звенит в звонок
    
  • множество новых/расширенных операторов из COBOL2002/2014 и расширений из разных диалектов COBOL’а
  • больше SWITCH’ей: от SWITCH-01 до SWITCH-36 и их вариантов от многих диалектов COBOL’а
  • добавлено больше числовых типов IEEE, FLOAT-DECIMAL-16, FLOAT-DECIMAL-34 и т. д.
  • добавлены литеральные типы, двоичные числа и т. д.
  • наибольшая часть спецификации COBOL 2014 реализована в Compiler Directive Facility
  • опционально: более строгая проверка синтаксиса
  • переработаны и расширеные сообщения компилятора и рантайма с доступными переводами (в настоящее время на испанский, португальский и голландский, частично — немецкий)
  • ввод-вывод экрана: много расширенных ACCEPT DISPLAY и SCREEN SECTION изменений
  • интерфейс прямого вызова для C:
      CALL-CONVENTIONS для CALL'ов и PROCEDURE DIVISION
      SIZE параметров указанных для CALL ... BY VALUE
      RETURN NOTHING для вызова void функций
      RETURN ADDRESS OF VAR для вызова функций, которые возвращают указатель
      PROCEDURE DIVISION RETURNING OMITTED -> вызываема как void функция
    
  • Гораздо, гораздо больше!

Новые опции cobc’а:

  • Новые -std опции:

      cobol2014       стандарт COBOL 2014
      xopen           стандарт X/Open COBOL
      mf-strict       совместимость с Micro Focus COBOL   - строго
      ibm-strict      совместимость с IBM COBOL           - строго
      ibm-strict      совместимость с MVS/VM COBOL        - строго
      acu             совместимость с ACUCOBOL-GT
      acu-strict      совместимость с ACUCOBOL-GT         - строго
      bs2000          совместимость с BS2000 COBOL (снова вернулась)
      bs2000-strict   совместимость с BS2000 COBOL        - строго
      rm              совместимость с RM-COBOL
      rm-strict       совместимость с RM-COBOL            - строго
    

    Замечание:
    Компилятор GnuCOBOL’а пытается ограничить как набор функций так и зарезервированных слов
    в соответствии с выбранным компилятором когда выбраны «строгие» диалекты.
    Если исходники компилируются с выбранным диалектом, то они должны компилироваться и выбранным
    компилятором, и, наоборот, если исходники компилировались выбранным компилятором, то они должны
    без ошибок компилироваться GnuCOBOL’ом.

    В случае диалектов, которые не являются «строгими», GnuCOBOL включает весь имеющийся функционал,
    который прямо не конфликтует с выбранным диалектом, включая зарезервированные слова и специфические
    расширения GnuCOBOL’а.
    Скомпилированные с этими диалектами исходники могут компилироваться только GnuCOBOL’ом. Исходники
    могут требовать модификаций как следствие богатых возможностей и зарезервированных слов GnuCOBOL’а,
    в противном случае лишние слова могут быть удалены при помощи `-fno-reserved=word`.

    COBOL-85, X/Open COBOL, COBOL 2002 и COBOL 2014 всегда «строгие».

  • Новые опции листинга
      -t листинг, -T широкий листинг, --tlines=строк, строк на каждую страницу листинга
      -Xref
    

    Замечание: -P, генерирующая препроцессорный листинг, всё ещё доступна (и улучшена)

  • Все конфигурационные флаги компилятора могут быть заданы в командной строке для переопределения специфических параметров текущего -std, смотрите cobc —help
  • Все предупреждения могут быть явно включены/выключены или даже помечены как ошибки, смотрите cobc —help
    -Wunreachable сообщает о возможных недостижимых операторах
  • Опции для компилятора/линковщика языка C:
      -K <вход>, компилировать точку входа как статическую (разрешить во время линковки)
      -A, добавить опции к фазе компиляции языка C
      -Q, добавить опции к фазе линковки языка C
    
  • Разное
      -i -info, отобразить сборку/среду
      -D определить символ для Compiler Directive Facility
      -j -job=аргументы, запустить задание после компиляции
      При указанном имени исходного файла '-' будет прочитан stdin.
      Больше подробностей в cobc --help
    

Новые опции cobcrun:

  -i -info,  отобразить сборку/среду
  -r -runtime-env, отобразить конфигурацию рантайма
  -c -config, прочитать конфиг рантайма из файла
  -M -module, установить имя пути/модуля при поиске точки входа

Новый сборочный функционал

  make test      скачивает тестировочную среду NIST при необходимости
                 теперь юзабельно при параллельной сборке (make -j4 test)
  make checkall  запустить как внутреннюю так и NIST тестировочные среды

Ещё изменения:

  • дефолтом тестировочной среды теперь является цветной вывод
  • Добавлена поддержка сборочной среды Windows(tm) Visual Studio, тестовые опции для проверки обоими тестовыми средами сгенерированы
  • удалён режим маинтейнера — если файлы надо пересобрать из за изменений они всегда пересобираются
  • help2man, bison и flex проверяются при конфигурировании, если они нужны, но отсутствуют, об этом подскажет сообщение об ошибке
  • у всех файлов, которые созданы рантаймом GnuCOBOL’а, теже самые права доступа
    новое: COB_FILE_MODE изменён в 0666
  • изменено имя unix’ового пакета из «gnu-cobol» в «gnucobol»

Скачать примеры исходников на COBOL’е можно командой

curl gopher://sdf.org/9/users/saahriktu/filez/notbyme/cobol_examples.tar.lzma > cobol_examples.tar.lzma

!!! ВНИМАНИЕ !!! Важная информация для тех, кто не знает COBOL’а!!! Максимальная ширина строки в программе на COBOL’е может быть не больше 80-ти символов — превышение этого лимита может не учитываться. При этом первые 7 символов в строке — служебные. Если их не отступить, то компилятор будет ругаться.

>>> Скачать


Source: linux.org.ru