LINUX.ORG.RU

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

 ,


1

4

Вышел компилятор языка программирования 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 символов в строке - служебные. Если их не отступить, то компилятор будет ругаться.

>>> Скачать

★★★★

Проверено: Shaman007 ()
Ответ на: комментарий от hobbit

Немного не так. В Фортране

Так, 1-я колонка служила для маркировки текста как комментария (символом C), с 1-й по 5-ю
   располагалась область меток, а с 7-й по 72-ю располагался собственно текст оператора или комментария.
В COBOL'е же первые 6 символов могут использоваться для нумерации строк, 7-й символ - пробел, а с 8-го символа начинается текст программы. Но, это необязательно. Первые 7 символов могут содержать что угодно, в т.ч. одни пробелы. Метки для GO TO задаются иначе. Например, зацикленная программа из примеров может иметь и такой вид:
000001 IDENTIFICATION DIVISION.
000002 PROGRAM-ID. HELLO-MAYOR.
000003 ENVIRONMENT DIVISION.
000004 DATA DIVISION.
000005 PROCEDURE DIVISION.
000006    WIA.
000007    DISPLAY "Hello, Mayor!".
000008    GO TO WIA
000009    STOP RUN.

saahriktu ★★★★ ()
Ответ на: комментарий от pronvit

В мире полторы сотни серверов gopher'а: http://saahriktu.org/gopherserverslist2017.html . Софт для них (gofish, geomyidae, gophernicus, bucktooth, pygopherd,... и т.д.) активно разрабатывают и включают в дистрибутивы.

Так что, если Вы не видите чтобы чем-то пользовались, то это ещё не значит, что этим не пользуются. Тоже самое касается и однобайтных кодировок.

saahriktu ★★★★ ()
Ответ на: комментарий от upcFrost

Некрофилия?

Интересная мнение, но язык который имеет в стандарт 2014 года, как-то не удобно так называть, и при этом кодовая база которого из года в год растет, да и Джабка не может его вытеснить ну никак не получается.

Smetchik ()
Ответ на: Некрофилия? от Smetchik

при этом кодовая база которого из года в год растет

ты хотел сказать «костыльная база»? на нем кроме затыкающих дырки костылями банков больше никто уже давно ничего не пишет

upcFrost ★★★★★ ()

Новость многословная, как программа на коболе. По сути, гнукобол нафиг не нужен, так как им вряд ли будет кто-то пользоваться серьезно.

ivlu ()
Ответ на: комментарий от upcFrost

Некрофилия?

Это вы так думаете, что никто ничего не пишет, так как у нас вместо Cobol 1С. Micro Focus конторка главный продвигатель и разработчик альтернатив по компилятору Cobol`a, оборот за 2016 год 1,2 млрд. Ничего так для написания костылей? Да и следуя вашей логике Lisp вообще не существует.

Smetchik ()

добротно! А то боялся, что гну его закопает

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

Решалось ключиком, для модных молодежных

nerfur ★★★ ()
Ответ на: комментарий от upcFrost

Некрофилия?

То есть вы утверждаете, что для костылей нужен новый стандарт и новые компиляторы? То есть вы хотите сказать, что для изделия написанной по стандарт COBOL 85, выпустили с начала стандарт 2002, а потом 2014? Зачем? Ведь достаточно костылить на COBOL 85. Потом компиляторы переписывать под стандарты и все такое.

Smetchik ()

При беглом взгляде язык кажется чудовищно примитивным - что и неудивительно учитывая возраст. Интересно, есть автоматические трансляторы этой археологии во что-то современное?

zabbal ()
Ответ на: комментарий от zabbal

?

Зачем вам транслировать в что-то современное? Попыток было уже 100 тыс. миллон, только они заканчивались либо провалом либо стоили несколько лярдов зелени, при этом профит от этого никто не получил, как по скорости таки по стоимости сопровождения, так как оказалось, что современные поделия, не могут делать такие примитивные вещи столь же эффективно и дешево.

Smetchik ()
Ответ на: комментарий от clover

На это небезопасном, написано столько, что растафари даже не смогут объять это своим сознанием, при этом то что написано работает десятилетеями, да еще и проработает столько же, причем не на домашнем десктопе, а там где цена ошибки может стоить несколько миллионов вполне реальных денег.

Smetchik ()
Ответ на: комментарий от saahriktu

Софт для них (gofish, geomyidae, gophernicus, bucktooth, pygopherd,... и т.д.) активно разрабатывают и включают в дистрибутивы.

какой сервер наиболее нормально поддерживает Gopher+, с формами, +ASK и метаданными? хочется тут с GopherVR поэкспериментировать

anonymous ()