EMZETT.
Login

Kurz: COBOL-Programme laufen meist auf Großrechnern (IBM z/OS), eingebettet in ein Ökosystem aus:

Teil des Kurses COBOL

Kapitel 8 von 8 im Kurs COBOL (Abschnitt „Nachschlagen“). Mit Fortschritt, Quiz und Zertifikat auf der Lernseite.

COBOL in der Praxis

COBOL-Programme laufen meist auf Großrechnern (IBM z/OS), eingebettet in ein Ökosystem aus:

BausteinAufgabe
JCL (Job Control Language)Stapeljobs beschreiben und starten
CICSOnline-Transaktionen (z. B. Geldautomat, Buchungssystem)
DB2 / IMSDatenbanken, in COBOL per eingebettetem SQL (EXEC SQL ... END-EXEC)
VSAMindexierte Dateien
JESJob-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

KlauselBedeutung
PIC 9(5)5 Ziffern (Zeichenformat)
PIC S9(5)V99mit Vorzeichen, 2 Nachkommastellen
PIC X(20)20 Zeichen
PIC Z(4)9.99Ausgabeformat mit unterdrückten Nullen
COMP / BINARYbinär (schnell, kompakt)
COMP-3 / PACKED-DECIMALgepackte Dezimalzahl (2 Ziffern pro Byte), Standard für Geldbeträge
COMP-1 / COMP-2Gleitkomma (selten)

Wichtige Anweisungen

AufgabeAnweisung
Ausgabe / EingabeDISPLAY, ACCEPT
ZuweisenMOVE a TO b
RechnenADD, SUBTRACT, MULTIPLY, DIVIDE, COMPUTE
EntscheidenIF ... END-IF, EVALUATE ... END-EVALUATE
WiederholenPERFORM ... END-PERFORM, PERFORM VARYING, PERFORM n TIMES
TabellenOCCURS, SEARCH, SEARCH ALL (binär)
TextSTRING, UNSTRING, INSPECT, FUNCTION ...
DateienOPEN, READ, WRITE, REWRITE, DELETE, CLOSE
ProgrammeCALL, 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 / ProblemUrsache
syntax error, unexpected ...Wort ist reserviert (ALTER, DATE, NAME in manchen Dialekten): anderen Namen wählen
Programm läuft in den nächsten AbsatzSTOP RUN/GOBACK fehlt oder Absatz fällt durch
Punkt zu früh: IF bricht abPunkt beendet alle offenen Blöcke; END-IF nutzen
Zahl falsch abgeschnittenPIC zu klein (MOVE schneidet links ab)
Nullen/Leerzeichen in RechnungFeld nicht initialisiert (VALUE, INITIALIZE)
Ausgabe 00042 statt 42Editierfeld PIC Z(4)9 verwenden
line not terminated by a newlineDateiende ohne Zeilenumbruch (nur Warnung)
Datei lässt sich nicht öffnenFILE 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, PERFORM statt Schleifen, PIC statt 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-PERFORM und sorgfältig gewählte PIC-Größen

Quiz zur Selbstkontrolle

Weiter im Kurs

Zurück: Dateien, Unterprogramme und Berichte

Alle Kapitel: COBOL im Überblick