Ubuntu 16.04 Xenial Xerus
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 1.1 implementiert große Teile des COBOL 85- und COBOL 2002-Standards sowie Teile von IBM COBOL, Micro Focus COBOL, MVS COBOL, BS2000 COBOL 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!
Möchte man GnuCOBOL unter Ubuntu einrichten, muss man folgendes Paket installieren [1]:
open-cobol (universe)
mit apturl
Paketliste zum Kopieren:
sudo apt-get install open-cobol
sudo aptitude install open-cobol
Um die Funktionsfähigkeit von GnuCOBOL zu testen, sollte 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
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: cobol2002, cobol85, ibm, mvs, bs2000, mf (Micro Focus), default |
-h | Zeigt die Hilfe an. Hier sind weitere Parameter aufgezählt, die Code-Optimierungen oder zusätzliche Warnungen bieten |
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
Standardmäßig werden keinerlei Warnungen, sondern nur Fehler angezeigt!
Folgende Parameter können weiterhin übergeben werden, um die Anzahl der Warnungen zu beeinflussen:
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. |
Der Parameter -h
zeigt zusätzliche Möglichkeiten für Warnungen an.
Diese Revision wurde am 8. Februar 2017 17:00 von Germrolf erstellt.