COBOL – Geschäftslogik im Mainframe

COBOL (Common Business Oriented Language, 1959) ist die Sprache der Banken, Versicherungen und Behörden. Noch heute laufen Milliarden Zeilen COBOL in Produktionssystemen – von Kontoführung über Gehaltsabrechnung bis zur Steuerverwaltung. Der freie Compiler GnuCOBOL (Kommando cobc) macht die Sprache auch auf Linux nutzbar.

Compiler

  • cobc --version – Version prüfen
  • cobc -x -o prog prog.cbl – ausführbares Programm bauen
  • cobc -m modul.cbl – Modul/Bibliothek kompilieren
  • cobc -x -Wall prog.cbl – mit Warnungen kompilieren
  • Typische Dateiendungen: .cbl, .cob

Struktur: Die vier Divisionen

Jedes COBOL-Programm besteht aus vier Pflicht-Teilen:

       IDENTIFICATION DIVISION.
       PROGRAM-ID. hallo.

       DATA DIVISION.
       WORKING-STORAGE SECTION.
       01 NAME PIC X(20).

       PROCEDURE DIVISION.
       MAIN.
           DISPLAY "Wie heisst du?".
           ACCEPT NAME.
           DISPLAY "Hallo, " NAME "!".
           STOP RUN.
  • IDENTIFICATION DIVISION: Name und Metadaten (PROGRAM-ID)
  • ENVIRONMENT DIVISION: Dateien und Umgebung (optional in modernem COBOL)
  • DATA DIVISION: Datendefinitionen, WORKING-STORAGE SECTION für Variablen
  • PROCEDURE DIVISION: die ausführbare Logik

Daten: PIC-Klauseln

  • 01 Name PIC X(20). – alphanumerisch (Text), 20 Zeichen
  • 01 Alter PIC 9(3). – Zahl mit 3 Stellen
  • 01 Betrag PIC 9(6)V99. – 6 Stellen vor, 2 Nachkommastellen (implizites Dezimalkomma)
  • 01 Wahr PIC 9 VALUE 0. – Schalter (0/1)

Wichtige Befehle

  • MOVE wert TO ziel – Wert zuweisen (auch MOVE a TO b)
  • DISPLAY ... – Ausgabe, ACCEPT var – Eingabe
  • ADD a TO b, SUBTRACT a FROM b, MULTIPLY a BY b, DIVIDE a INTO b – Arithmetik
  • COMPUTE erg = a * (b + c) – formelbasierte Berechnung
  • IF bedingung THEN ... ELSE ... END-IF.
  • EVALUATE var WHEN 1 ... WHEN OTHER ... END-EVALUATE. – Mehrfachverzweigung
  • PERFORM para. – Absatz ausführen, PERFORM UNTIL bedingung ... END-PERFORM – Schleife
  • GO TO para. – Sprung (verpönt, aber in Legacy-Code allgegenwärtig)
  • STOP RUN. – Programm beenden

Beispiel: Schleife und Bedingung

       PROCEDURE DIVISION.
       MAIN.
           MOVE 1 TO I.
           PERFORM UNTIL I > 5
               IF FUNCTION MOD(I, 2) = 0
                   DISPLAY I " ist gerade"
               ELSE
                   DISPLAY I " ist ungerade"
               END-IF
               ADD 1 TO I
           END-PERFORM.
           STOP RUN.

COBOL bleibt relevant, weil Kernbankensysteme darauf laufen – oft kombiniert mit SQL für Datenbankzugriffe. Verwandte Begriffe: Datenbank, Compiler und Stack.