Ошибка GNUCobol (OpenCOBOL): libcob: модуль '"' не найден

Я конвертирую набор программ на COBOL, написанных для компилятора Microfocus для использования с GnuCobol. До сих пор я был довольно успешным, мне нужно было только изменить некоторые команды даты, связанные с микрофокусом, вместе с использованием GnuCobol -std=mf аргумент.

Я использую предварительно собранную сборку с http://www.arnoldtrembley.com/GnuCOBOL.htm

У меня проблемы с этой ошибкой при запуске определенного файла после успешной компиляции:

libcob: module '»' not found

После игры в OpenCOBOLIDE я обнаружил, что оскорбительная строка

 CALL X"AF" USING SET-BIT-PAIRS
                               USER-KEY-CONTROL

Что я могу сделать, чтобы это исправить?

1 ответ

Вам нужно будет перекодировать эту часть. GnuCOBOL поддерживает только некоторые нумерованные подпрограммы поддержки системы. х "91", х "E4", х "E5", х "F4" и х "F5". x"AF" еще нет в списке встроенных процедур системной библиотеки. И даже поддерживаемые не включают обработку всех подфункций.

Поскольку x "AF" относится к экрану (по крайней мере, из одной страницы документа, которую я видел), вы, вероятно, можете просто выяснить, какие управляющие коды нужно отправить на терминал, и выполнить эту часть вручную с помощью DISPLAY вместо CALL.

Не зная, как вызывается подфункция x "AF" (что бы ни было в SET-BIT-PAIRS), невозможно предложить конкретную последовательность VT100, чтобы предложить попытку. Если это просто подфункция 18, то, вероятно, будет достаточно отображения одного символа без расширения. Подфункция 22 означает просто звонок на клеммный звонок, что можно сделать, нажав Ctrl-G. И т.п.

Если вам интересно, бегите cobc --list-system (или просто посмотрите в Руководстве по GnuCOBOL, которое входит в состав готового пакета, который вы используете), чтобы узнать, какие вызовы стандартной системной библиотеки поддерживаются GnuCOBOL.

А если вы любите приключения, вы можете заглянуть в дерево исходного кода компилятора и просто изменить libcob для поддержки имеющегося кода, связав номер CALL с функцией C, расширив libcob/system.def новой записью и перестроив GnuCOBOL. из источника.

Другие вопросы по тегам