Введение
Несмотря на то, что COBOL — язык с историей, он по-прежнему жив и востребован в финансовой и правительственной сферах. Многие до сих пор поддерживают большие кодовые базы и пишут новые программы. Но работать с COBOL хочется удобнее, особенно если хочется простого и понятного инструмента для написания, компиляции и запуска кода.
В этой статье я расскажу о простом IDE для COBOL, который написал на Delphi. Он умеет подсвечивать синтаксис, открывать и сохранять файлы, компилировать через GnuCOBOL, запускать программы с выводом результата и даже отлаживать их с помощью интеграции с GDB.
О проекте
Проект — это простой редактор кода с подсветкой синтаксиса COBOL, поддержкой файлов .cbl и .cob, кнопками открытия, сохранения, компиляции и запуска.
Основные возможности:
Подсветка синтаксиса COBOL (собственный хелайтер для
TRichEdit)Работа с файлами (открытие, сохранение, plain text)
Поиск текста в редакторе с поддержкой
Ctrl+F3и переходом к следующему вхождению поF3Компиляция с помощью GnuCOBOL (
cobc) через вызов консоли из приложенияЗапуск скомпилированного
.exeв отдельном консольном окнеОтображение лога компиляции в отдельной области редактора
Отладка через интеграцию с GDB: запуск программы под управлением отладчика с возможностью ставить точки останова и пошагово выполнять программу
Техническая реализация
Подсветка синтаксиса
Для подсветки используется класс TCobolHighlighter, который анализирует текст и меняет цвет и стиль ключевых слов, разделителей и строк. Используется стандартный компонент TRichEdit с RTF форматом.
Открытие и сохранение файлов
Чтобы избежать проблем с RTF, сохраняется plain text, а открытие происходит с очисткой текущего текста перед загрузкой. Используются стандартные диалоги TOpenDialog и TSaveDialog с фильтрами на COBOL-файлы.
Поиск текста
Реализован простой поиск с возможностью поиска выделенного текста через Ctrl+F и переходом к следующему вхождению по F3. Это позволяет быстро находить нужные места в коде и комфортно работать с большими файлами.
Компиляция и запуск
Компиляция запускается через CreateProcess, вызывая cobc с параметром -x для компиляции и создания исполняемого файла. Временные файлы .cbl и .exe создаются в папке tmp, расположенной рядом с exe IDE.
После успешной компиляции запускается консоль cmd.exe с командой открытия скомпилированного .exe и флагом /K — чтобы окно не закрывалось автоматически и был виден вывод программы.
Отладка с GDB
Чтобы запускать программу под отладчиком, я добавил кнопку «Отладка», которая:
Компилирует программу с флагом
-gдля генерации отладочной информацииЗапускает GDB в консоли с указанием скомпилированного
.exe
В консоли GDB можно ставить точки останова (break), запускать программу (run), пошагово выполнять команды (step, next) и просматривать переменные.
Для запуска GDB в графическом окне из Delphi используется вызов через ShellExecute или CreateProcess, который открывает консольное окно с интерфейсом отладчика.
Пример работы
Пример минимальной COBOL программы:
IDENTIFICATION DIVISION.
PROGRAM-ID. HelloWorld.
PROCEDURE DIVISION.
DISPLAY "Hello, world!".
STOP RUN.
Этот код можно вставить в редактор, нажать «Скомпилировать» и дождаться запуска программы. В открывшемся консольном окне будет выведена строка "Hello, world!".
Итоги
Получился простой, но вполне рабочий IDE для COBOL с подсветкой, поиском, компиляцией, запуском и базовой отладкой. Это удобный инструмент для изучения языка, быстрого прототипирования и отладки небольших программ.
Где посмотреть и попробовать
Исходники и бинарники проекта доступны на GitHub:
https://github.com/VohminV/COBOL_IDE
Комментарии (2)

olku
22.07.2025 03:41Подкину вам код дебаггера для GnuCOBOL. 25к установок, вдруг пригодится. Реализует точки остановки, подсветку переменных, запуск в Докере. Тесты помогал писать мейнтейнер диалекта. https://github.com/OlegKunitsyn/gnucobol-debug
PerroSalchicha
Брр, может, вы хотя бы свою IDE научите компилировать тот файл, который в ней открыт, не пересохраняя его перед компиляцией под временным именем?
Да и не IDE это на самом деле никакая, просто форма с RichEdit и сторонней тулзой для подсветки синтаксиса.