OpenCOBOL
Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:
Ubuntu 22.04 Jammy Jellyfish
Du möchtest den Artikel für eine weitere Ubuntu-Version testen? Mitarbeit im Wiki ist immer willkommen! Dazu sind die Hinweise zum Testen von Artikeln zu beachten.
Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:
Wenn man Programme, die in COBOL geschrieben sind bzw. selber Programme in COBOL schreiben möchte, unter Linux kompilieren möchte, benötigt man einen Compiler wie GnuCOBOL 🇬🇧 (ehemals OpenCOBOL). Dieser übersetzt COBOL-Quellcode in C-Quellcode und kompiliert diesen generierten Code mittels dem GCC.
Die aktuelle Version 3.2 implementiert große Teile des COBOL 85-Standards, des ISO COBOL Standards (2002, 2014, 2023) sowie viele Spracherweiterungen anderer Compiler und ermöglicht grafische Bildschirmausgaben im Terminal durch Benutzung von Ncurses. Weiterhin ist es möglich, auf Datenbanken zuzugreifen sowie Webservices zu erstellen. Entgegen allem Anschein befindet sich GnuCOBOL in aktiver Entwicklung!
Installation¶
Möchte man GnuCOBOL unter Ubuntu einrichten, muss man folgendes Paket installieren [1]:
gnucobol (universe)
Befehl zum Installieren der Pakete:
sudo apt-get install gnucobol
Oder mit apturl installieren, Link: apt://gnucobol
Es sind momentan zwei Versionen verfügbar, die man auch explizit über die Pakete gnucobol3 (aktuelles Release 3.x) und gnucobol4 (Beta-Version Version 4) auswählen kann.
Programmbeispiel¶
Um die Funktionsfähigkeit von GnuCOBOL zu testen, kann man das unten stehende "Hallo-Welt"-Programm in einem Editor [2] erstellen:
1 2 3 4 5 | IDENTIFICATION DIVISION. PROGRAM-ID. HALLO-WELT. PROCEDURE DIVISION. DISPLAY "Hallo Welt!". STOP RUN. |
Anschließend speichert man die Datei als HalloWelt.cbl und öffnet ein Terminal [3], in welches man folgenden Befehl zum Übersetzen des Quellcodes eingibt:
cobc -x -free HalloWelt.cbl
Sofern man keine Fehler gemacht hat, erscheint im selben Verzeichnis eine ausführbare Datei namens HalloWelt. Diese Datei kann man mit dem folgenden Befehl ausführen:
./HalloWelt
Wichtige Parameter¶
Kompilierungsmöglichkeiten¶
Folgende Parameter können den Übersetzungs- und Kompilierungsprozess beeinflussen. Ohne Angabe von Parametern versucht der Compiler ein dynamisch-gelinktes Modul zu bauen. Dies entspricht dem Kommandozeilenparameter -m
.
Kompilierungsmöglichkeiten | |
Parameter | Erläuterung |
-E | Nur Präprozessor. Compiler-Richtlinien ausgeführt werden. Kommentarzeilen werden entfernt. COPY-Anweisungen werden erweitert. Die Ausgabe des Ergebnisses erfolgt im Terminal |
-C | Der Quellcode wird in C übersetzt. Das Ergebnis wird als *.c gespeichert. Außerdem wird die dazugehörige Header-Datei erzeugt (*.h) |
-S | COBOL-Quelltext wird übersetzt, kompiliert und die Header- und der C-Quelltext werden zusammengefasst. Das Ergebnis wird als *.s gespeichert |
-c | Der Quellcode wird nur übersetzt und kompiliert, aber noch nicht gelinkt. Das Ergebnis wird als *.o gespeichert |
-m | Der Quellcode wird übersetzt, kompiliert und ein dynamisch-gelinktes Modul (z.B. ein Unterprogramm) wird erzeugt. Das Ergebnis wird als *.so gespeichert. Dies ist der Standard. |
-x | Der Quellcode wird übersetzt, kompiliert und ausführbar gemacht |
-std=<dialect> | Kompiliert Quellcode, der für einen spezifischen Dialekt geschrieben wurde. Verfügbare Dialekte: siehe Dokumentation |
-h | Zeigt die Hilfe an. Hier sind weitere Parameter aufgezählt, die Code-Optimierungen oder zusätzliche Warnungen bieten |
Quellcodeformate¶
OpenCOBOL unterstützt sowohl fixe als auch freie Formatierungen des Quellcodes:
Quellcodeformate | |
Parameter | Erläuterung |
-fixed | Fixes Format, d.h. die ersten 6 Spalten in jeder Zeile müssen entweder frei oder durchnummeriert
(z.B. 000100 , 000200 , ...) sein. Weiterhin dürfen keine Zeichen nach der 72. Spalte stehen. Dies ist der Standard. |
-free | Freies Format, d.h. die ersten 6 Spalten in jeder Zeile müssen nicht frei gelassen bzw. nummeriert werden. Keine Spaltenbegrenzung vorhanden. Muss beim Übersetzungs-/Kompilierungsbefehl mitgegeben werden, sofern dieses Format genutzt wird, um Fehler zu vermeiden. (s. obenstehendes Programmbeispiel) |
Die fixe Schreibweise ohne Zahlen ist die gebräuchlichste unter COBOL-Programmierern, da man die Quelltexte somit auch unter anderen Compilern problemlos kompilieren kann, die den Parameter -free
nicht kennen. Allerdings sollte man darauf achten, keine Compiler-spezifischen Quelltexte zu schreiben, wenn man verschiedene Compiler bedienen soll.
Das "Hallo-Welt"-Programm im fixen Format ohne Nummerierung:
1 2 3 4 5 | IDENTIFICATION DIVISION. PROGRAM-ID. HALLO-WELT. PROCEDURE DIVISION. DISPLAY "Hallo Welt!". STOP RUN. |
Und mit Nummerierung:
1 2 3 4 5 | 000100 IDENTIFICATION DIVISION. 000200 PROGRAM-ID. HALLO-WELT. 000300 PROCEDURE DIVISION. 000400 DISPLAY "Hallo Welt!". 000500 STOP RUN. |
Möchte man das fixe Format kompilieren und ausführbar machen, kann man das -free
aus dem obigen Beispiel weglassen:
cobc -x HalloWelt.cbl
Warnungen beim Kompilieren¶
Hinweis:
Standardmäßig werden keinerlei Warnungen, sondern nur Fehler angezeigt!
Warnungen kann man über verschiedene Parameter aktivieren, z.B.:
Warnungen beim Kompilieren | |
Parameter | Warnungen |
-Wall | Alle Warnungen werden angezeigt. |
-Wcolumn-overflow | Warnt, wenn im Quellcode Zeichen nach der 72. Spalte stehen. |
-Wparentheses | Warnt, wenn Klammern um eine AND-Verknüpfung in einer OR-Verknüpfung vergessen wurden. |
Die Dokumentation enthält eine ausführliche Beschreibung der vorhandenen Parameter.
Links¶