COBOL in der Praxis
COBOL-Programme laufen meist auf Großrechnern (IBM z/OS), eingebettet in ein Ökosystem aus:
| Baustein | Aufgabe |
|---|---|
| JCL (Job Control Language) | Stapeljobs beschreiben und starten |
| CICS | Online-Transaktionen (z. B. Geldautomat, Buchungssystem) |
| DB2 / IMS | Datenbanken, in COBOL per eingebettetem SQL (EXEC SQL ... END-EXEC) |
| VSAM | indexierte Dateien |
| JES | Job-Verwaltung |
IDENTIFICATION DIVISION.
PROGRAM-ID. KONTOSTAND.
DATA DIVISION.
WORKING-STORAGE SECTION.
EXEC SQL INCLUDE SQLCA END-EXEC.
01 WS-KONTO PIC X(10).
01 WS-SALDO PIC S9(9)V99 COMP-3.
PROCEDURE DIVISION.
MOVE "DE12345678" TO WS-KONTO.
EXEC SQL
SELECT SALDO INTO :WS-SALDO
FROM KONTEN WHERE KONTO_NR = :WS-KONTO
END-EXEC.
IF SQLCODE = 0
DISPLAY "Saldo: " WS-SALDO
END-IF.
STOP RUN.Beachte: Echter Mainframe-Code beginnt in Spalte 8 (Spalten 1 bis 6 Zeilennummern, Spalte 7 Kommentar-/Fortsetzungsmarkierung, Code Spalte 8 bis 72). Die Beispiele dieses Kurses verwenden das freie Format von GnuCOBOL.
Typische Aufgaben moderner COBOL-Entwickler: Altsysteme warten, Programme analysieren und dokumentieren, Schnittstellen zu Webdiensten (REST, MQ) bauen, schrittweise Migration in die Cloud. Werkzeuge: IBM Developer for z/OS, VS Code mit Zowe Explorer, GnuCOBOL zum Üben, Micro Focus / Rocket COBOL.
Datentypen auf einen Blick
| Klausel | Bedeutung |
|---|---|
PIC 9(5) | 5 Ziffern (Zeichenformat) |
PIC S9(5)V99 | mit Vorzeichen, 2 Nachkommastellen |
PIC X(20) | 20 Zeichen |
PIC Z(4)9.99 | Ausgabeformat mit unterdrückten Nullen |
COMP / BINARY | binär (schnell, kompakt) |
COMP-3 / PACKED-DECIMAL | gepackte Dezimalzahl (2 Ziffern pro Byte), Standard für Geldbeträge |
COMP-1 / COMP-2 | Gleitkomma (selten) |
Wichtige Anweisungen
| Aufgabe | Anweisung |
|---|---|
| Ausgabe / Eingabe | DISPLAY, ACCEPT |
| Zuweisen | MOVE a TO b |
| Rechnen | ADD, SUBTRACT, MULTIPLY, DIVIDE, COMPUTE |
| Entscheiden | IF ... END-IF, EVALUATE ... END-EVALUATE |
| Wiederholen | PERFORM ... END-PERFORM, PERFORM VARYING, PERFORM n TIMES |
| Tabellen | OCCURS, SEARCH, SEARCH ALL (binär) |
| Text | STRING, UNSTRING, INSPECT, FUNCTION ... |
| Dateien | OPEN, READ, WRITE, REWRITE, DELETE, CLOSE |
| Programme | CALL, EXIT PROGRAM, STOP RUN, GOBACK |
IDENTIFICATION DIVISION.
PROGRAM-ID. FUNKTIONEN.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 ZAHL PIC S9(3) VALUE -17.
PROCEDURE DIVISION.
DISPLAY FUNCTION ABS(ZAHL).
DISPLAY FUNCTION MAX(3 9 4).
DISPLAY FUNCTION MOD(17 5).
DISPLAY FUNCTION SQRT(144).
DISPLAY FUNCTION INTEGER(3.7).
DISPLAY FUNCTION LENGTH("Hallo").
DISPLAY FUNCTION UPPER-CASE("abc") FUNCTION LOWER-CASE("DEF").
DISPLAY FUNCTION FACTORIAL(5).
DISPLAY FUNCTION INTEGER-OF-DATE(20250315).
DISPLAY FUNCTION DATE-OF-INTEGER(FUNCTION INTEGER-OF-DATE(20250315) + 20).
DISPLAY FUNCTION MEAN(2 4 6 8).
STOP RUN.Ausgabe
+017 9 000000002 000000012 000000003 5 ABCdef 000000120 000154937 20250404 000000005
Häufige Fehler
| Meldung / Problem | Ursache |
|---|---|
syntax error, unexpected ... | Wort ist reserviert (ALTER, DATE, NAME in manchen Dialekten): anderen Namen wählen |
| Programm läuft in den nächsten Absatz | STOP RUN/GOBACK fehlt oder Absatz fällt durch |
Punkt zu früh: IF bricht ab | Punkt beendet alle offenen Blöcke; END-IF nutzen |
| Zahl falsch abgeschnitten | PIC zu klein (MOVE schneidet links ab) |
| Nullen/Leerzeichen in Rechnung | Feld nicht initialisiert (VALUE, INITIALIZE) |
Ausgabe 00042 statt 42 | Editierfeld PIC Z(4)9 verwenden |
line not terminated by a newline | Dateiende ohne Zeilenumbruch (nur Warnung) |
| Datei lässt sich nicht öffnen | FILE STATUS prüfen (35 = fehlt, 37 = Zugriff) |
Weiterlernen
- GnuCOBOL-Handbuch (gnucobol.sourceforge.io), COBOL Programming Course der Open Mainframe Project (kostenlos, mit Zugang zu einem echten z/OS)
- Bücher: Murach's Mainframe COBOL, Beginning COBOL for Programmers
- Wiki dieser Seite: Artikel zu Altsystemen und Großrechnern
Merke
- COBOL = Divisions, Dezimalarithmetik,
PERFORMstatt Schleifen,PICstatt Typnamen - Auf dem Mainframe: JCL, CICS, DB2, VSAM; Spalte 8 bis 72
- Geld gehört in Dezimal-/Packed-Felder (
COMP-3), nie in Gleitkomma - Immer
END-IF/END-PERFORMund sorgfältig gewähltePIC-Größen