Ubuntu 12.04 „Precise Pangolin“
Ubuntu 10.04 „Lucid Lynx“
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 OpenCOBOL. Er übersetzt COBOL-Quellcode in C-Quellcode und kompiliert diesen generierten Code mittels dem GCC.
Die aktuelle Version 1.0 implementiert große Teile des COBOL 85- und COBOL 2002-Standards sowie Teile von IBM COBOL, Micro Focus COBOL, MVS COBOL und BS2000 COBOL. Das Pre-Release 1.1 enthält erweiterte Unterstützung für den COBOL 2002-Standard und ermöglicht grafische Bildschirmausgaben im Terminal durch Benutzung von Ncurses. Weiterhin ist es möglich, auf Datenbanken zuzugreifen sowie Webservices zu erstellen. Eine ungefähre Übersicht über alle Funktionen findet man auf der Projekseite . Entgegen allem Anschein befindet sich OpenCOBOL in aktiver Entwicklung!
Möchte man OpenCOBOL 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 OpenCOBOL 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. |
Dann 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 gleichen 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. |
-Wend-if | Warnt, wenn auf ein IF kein abschließendes END-IF folgt. |
-Wend-evaluate | Warnt, wenn auf ein EVALUATE kein abschließendes END-EVALUATE folgt. |
-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.