Если вы посмотрите на опцию COBOL в строке меню в верхней части экрана, выберите Program type
, вы увидите две опции: Executable
; Module
.
Для программы, которая запускается из ОС, вашей ГЛАВНОЙ, вам нужно установить ее в Исполняемый файл. Для программы CALLed, UTIL, вам нужно установить значение Module.
Вам также следует попробовать установить GnuCOBOL, новое название OpenCOBOL. GnuCOBOL активно поддерживается. Сайт GnuCOBOL в настоящее время находится на SourceForge.Net. В Help getting started
недавно обсуждалось, как именно это сделать (во всяком случае, для Ubuntu, если вы используете что-то более необычное, задайте вопрос, и вы получите помощь).
Раскрытие информации: я там модератор.
Вы должны знать, что понятие «основной» на самом деле не существует в самом COBOL, как и в других языках, которые вы, возможно, знаете. То, как именно работает исходная программа, зависит от реализации и операционной системы.
В Linux/Unix/Windows начальная программа компилируется по-другому, поэтому она больше похожа на "основную". На мейнфрейме IBM он не компилируется по-другому.
Также обратите внимание, что подпрограмма может ВЫЗВАТЬ другую подпрограмму. В вашем случае вам нужно будет скомпилировать оба как модуль. Это диктует не COBOL, а ОС и реализация.
Если вы изучаете COBOL, будьте современны. В PROCEDURE DIVISION не добавляйте точку/точку к строке кода и используйте их только там, где они необходимы, а не там, где они необязательны. В более ранних стандартах COBOL точка/точка была единственным доступным ограничителем области действия, и для обратной совместимости она по-прежнему действует как «ограничитель суперобласти действия», который обычно не является тем, что вам нужно, и если бы это было то, что хотите, это плохая практика, так как любой другой читатель сочтет это ошибкой и задастся вопросом, что вы на самом деле имели в виду.
Точка/точка необходима: для завершения оператора PROCEDURE DIVISION; для завершения абзаца или метки SECTION; для завершения абзаца или самого РАЗДЕЛА; для завершения программы.
Если вы используете директиву компилятора COPY
или REPLACE
, вам также необходимо завершать их с точкой/точкой.
Ваша подпрограмма не содержит ПРОГРАММУ ВОЗВРАТА, ВОЗВРАТА или ВЫХОДА. Даже если бы это сработало, это было бы нестандартно, непереносимо и не было бы хорошим способом изучения COBOL.
В реальном мире программирования COBOL вы никогда не найдете PIC A. Считается, что от этого мало пользы, так как все, что он делает, это мешает вам использовать это поле в качестве источника и числовое поле в качестве цели в одном и том же операторе. Использование PIC X вместо PIC A — это то, что вы обычно видите, поэтому вы можете начать прямо сейчас (несмотря на то, что может быть сказано в любом учебнике).
Это мнение, и вам не нужно следовать этому совету, но на практике так оно и есть.
Использование запятых (или любого другого не относящегося к делу разделителя) в операторах COBOL только затуманивает программу. Они не имеют подлинной ценности. Это действительно:
PROCEDURE DIVISION USING LS-STUDENT-ID, , , , , LS-STUDENT-NAME.
Так в чем смысл?
Нет смысла определять поле как числовое просто потому, что оно содержит число. Вы никогда не будете делать расчеты со студенческим билетом, поэтому гораздо лучше, чтобы это был PIC X, а не PIC 9.
person
Bill Woodger
schedule
29.10.2015