
COBOL: Beispiele und Erklärung
Reifegrad und Grenzen: experimentell
Umgesetzter Umfang: Numerische Verarbeitung, CALL/LINKAGE, sequenzielle Dateien sowie ausgewählte JSON/XML-, Speicherverwaltungs- und NATIONAL-Funktionen sind gezeigt.
Grenzen: Kein vollständiges ISO-COBOL: SQL/CICS/MQ fehlen, dynamische CALL-Ziele sind nur modulbekannt und JSON/XML-Formen bleiben begrenzt.
COBOL unterstützte Befehle und Umfang
Die sprachspezifische Referenz der unterstützten Befehle und des Umfangs mit durchsuchbaren Kategorien und klaren Grenzen öffnen.
Umfangsreferenz öffnenCOBOL trennt Identifikation, Datenbeschreibung und Ablauf. PIC beschreibt das Datenformat; DISPLAY erzeugt Ausgabe, STOP RUN beendet das Programm.
Zwölf Kurzbeispiele und ein größeres Programm. Wählen Sie ein Thema oder arbeiten Sie die Beispiele der Reihe nach durch.
1. 1 + 2 + 3 + 4 + 5 = 15
Die Zahlen 1 bis 5 werden zu 15 addiert. Das Programm gibt 15 aus und endet mit Exitcode 0.
IDENTIFICATION DIVISION.
PROGRAM-ID. QuickSum.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 TOTAL PIC 9(2).
PROCEDURE DIVISION.
COMPUTE TOTAL = 1 + 2 + 3 + 4 + 5
DISPLAY TOTAL
STOP RUN.Erwarteter Exitcode: 0; Ausgabe-Prüfmuster (Regex): '15'
PBXB64.exe sum15-cobol.cbl -O2 -o example.exe .\example.exe $LASTEXITCODE
Nativ geprüft mit dem V22-Kandidaten vom 30.09.2026; Prüfung mit dem finalen Compiler noch ausstehend.
2. DISPLAY und STOP RUN
PROGRAM-ID benennt das Programm. In der PROCEDURE DIVISION schreibt DISPLAY Hello from COBOL auf die Konsole. STOP RUN beendet; der erwartete Exitcode ist 0.
IDENTIFICATION DIVISION.
PROGRAM-ID. hello.
PROCEDURE DIVISION.
DISPLAY "Hello from COBOL".
STOP RUN.
Erwarteter Exitcode: 0; Ausgabe-Prüfmuster (Regex): 'Hello from COBOL\n'
PBXB64.exe test_hello.cbl -O2 -o example.exe .\example.exe $LASTEXITCODE
Kanonischer Testfall mit erwartetem Ergebnis; hier keine neue native V22-Prüfung. Finale Ausführung noch ausstehend.
3. Ein langes Dezimalliteral ausgeben
DISPLAY verwendet hier ein Literal mit 19 Nachkommastellen. Der Testvertrag erwartet 1.1234567890123456789. Das ist ein gezielter Genauigkeitsfall; seine finale Prüfung bleibt an den endgültigen Compiler gebunden.
IDENTIFICATION DIVISION.
PROGRAM-ID. DECIMAL-WIDE-DISPLAY.
PROCEDURE DIVISION.
DISPLAY 1.1234567890123456789.
STOP RUN.
Erwarteter Exitcode: 0; Ausgabe-Prüfmuster (Regex): '1\\.1234567890123456789\\n'
PBXB64.exe regress_decimal_literal_wide_display.cbl -O2 -o example.exe .\example.exe $LASTEXITCODE
Kanonischer Testfall mit erwartetem Ergebnis; hier keine neue native V22-Prüfung. Finale Ausführung noch ausstehend.
4. COMPUTE und ein Dezimalfeld
Ablauf Schritt für Schritt
- A ist 10 und B ist 3; die Klammer bildet zunächst 13.
- (13 × 2) - (5 / 5) ergibt 25.
- PIC 9(2)V99 legt zwei Nachkommastellen fest; DISPLAY zeigt im Test 25.00.
IDENTIFICATION DIVISION.
PROGRAM-ID. ComputeTest.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 A PIC 9(4) VALUE 10.
01 B PIC 9(4) VALUE 3.
01 C PIC 9(2)V99.
PROCEDURE DIVISION.
COMPUTE C = (A + B) * 2 - 5 / 5
DISPLAY C
STOP RUN.
Erwarteter Exitcode: 0
Kanonisches Ausgabe-Prüfmuster (Regex)
25.00
PBXB64.exe cobol-test_compute.cbl -O2 -o example.exe .\example.exe $LASTEXITCODE
Ergebnisvertrag aus tests/validate.toml. Keine neue native Compilerprüfung in dieser Website-Erweiterung. Finale Ausführung mit dem freigegebenen Compiler steht aus.
5. DIVIDE INTO GIVING: Reihenfolge beachten
Ablauf Schritt für Schritt
- A enthält 0.5 und B enthält 2.3.
- DIVIDE A INTO B bedeutet B / A, nicht A / B.
- GIVING schreibt 4.6 nach Q; die ursprünglichen Werte bleiben als Operanden erhalten.
IDENTIFICATION DIVISION.
PROGRAM-ID. DivIntoGiving.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 A PIC 9V9 VALUE 0.5.
01 B PIC 9V9 VALUE 2.3.
01 Q PIC 9V9.
PROCEDURE DIVISION.
DIVIDE A INTO B GIVING Q
DISPLAY Q
STOP RUN.
Erwarteter Exitcode: 0
Kanonisches Ausgabe-Prüfmuster (Regex)
4.6
PBXB64.exe cobol-test_divide_into_giving.cbl -O2 -o example.exe .\example.exe $LASTEXITCODE
Ergebnisvertrag aus tests/validate.toml. Keine neue native Compilerprüfung in dieser Website-Erweiterung. Finale Ausführung mit dem freigegebenen Compiler steht aus.
6. ROUNDED bei einem ganzzahligen Zielfeld
Ablauf Schritt für Schritt
- Die beiden Operanden 1.4 und 1.4 ergeben 2.8.
- Das Zielfeld C besitzt mit PIC 9 keine Nachkommastelle.
- ROUNDED führt hier zur Ausgabe 3 statt einer abgeschnittenen 2.
IDENTIFICATION DIVISION.
PROGRAM-ID. RoundedTest.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 A PIC 9V9 VALUE 1.4.
01 B PIC 9V9 VALUE 1.4.
01 C PIC 9.
PROCEDURE DIVISION.
ADD A TO B GIVING C ROUNDED
DISPLAY C
STOP RUN.
Erwarteter Exitcode: 0
Kanonisches Ausgabe-Prüfmuster (Regex)
3
PBXB64.exe cobol-test_rounded.cbl -O2 -o example.exe .\example.exe $LASTEXITCODE
Ergebnisvertrag aus tests/validate.toml. Keine neue native Compilerprüfung in dieser Website-Erweiterung. Finale Ausführung mit dem freigegebenen Compiler steht aus.
7. Quotient und Rest eines Integerwerts
Ablauf Schritt für Schritt
- DIVIDE B INTO A berechnet 23 / 5.
- GIVING Q nimmt den ganzzahligen Quotienten 4 auf; REMAINDER R speichert 3.
- 4 × 5 + 3 ergibt wieder 23 und erklärt die beiden Ausgaben.
IDENTIFICATION DIVISION.
PROGRAM-ID. RemainderTest.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 A PIC 9(4) VALUE 23.
01 B PIC 9(4) VALUE 5.
01 Q PIC 9(4).
01 R PIC 9(4).
PROCEDURE DIVISION.
DIVIDE B INTO A GIVING Q REMAINDER R
DISPLAY Q
DISPLAY R
STOP RUN.
Erwarteter Exitcode: 0
Kanonisches Ausgabe-Prüfmuster (Regex)
4 3
PBXB64.exe cobol-test_remainder.cbl -O2 -o example.exe .\example.exe $LASTEXITCODE
Ergebnisvertrag aus tests/validate.toml. Keine neue native Compilerprüfung in dieser Website-Erweiterung. Finale Ausführung mit dem freigegebenen Compiler steht aus.
8. Ein skaliertes Restfeld
Ablauf Schritt für Schritt
- A ist 2.3 und B ist 0.5; Q hat PIC 9 und speichert den Quotienten 4.
- R besitzt PIC 9V9 und erhält den verbleibenden Wert 0.3.
- 4 × 0.5 + 0.3 ergibt 2.3. Das Format des Restfelds entscheidet über darstellbare Nachkommastellen.
IDENTIFICATION DIVISION.
PROGRAM-ID. RemScaled.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 A PIC 9V9 VALUE 2.3.
01 B PIC 9V9 VALUE 0.5.
01 Q PIC 9.
01 R PIC 9V9.
PROCEDURE DIVISION.
DIVIDE B INTO A GIVING Q REMAINDER R
DISPLAY Q
DISPLAY R
STOP RUN.
Erwarteter Exitcode: 0
Kanonisches Ausgabe-Prüfmuster (Regex)
4 0.3
PBXB64.exe cobol-test_remainder_scaled.cbl -O2 -o example.exe .\example.exe $LASTEXITCODE
Ergebnisvertrag aus tests/validate.toml. Keine neue native Compilerprüfung in dieser Website-Erweiterung. Finale Ausführung mit dem freigegebenen Compiler steht aus.
9. INSPECT zählt Zeichen im Datenfeld
Ablauf Schritt für Schritt
- WS-STR enthält BANANA in einem 20 Zeichen breiten Feld.
- TALLYING erhöht den bei 0 beginnenden WS-COUNT für jedes A.
- BANANA enthält drei A; die Ausgabe ist 3.
IDENTIFICATION DIVISION.
PROGRAM-ID. InspectTallyingTest.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 WS-STR PIC X(20) VALUE "BANANA".
01 WS-COUNT PIC 9(4) VALUE 0.
PROCEDURE DIVISION.
INSPECT WS-STR TALLYING WS-COUNT FOR ALL "A"
DISPLAY WS-COUNT
STOP RUN.
Erwarteter Exitcode: 0
Kanonisches Ausgabe-Prüfmuster (Regex)
3
PBXB64.exe cobol-test_inspect_tallying.cbl -O2 -o example.exe .\example.exe $LASTEXITCODE
Ergebnisvertrag aus tests/validate.toml. Keine neue native Compilerprüfung in dieser Website-Erweiterung. Finale Ausführung mit dem freigegebenen Compiler steht aus.
10. String-Intrinsics und feste Feldbreite
Ablauf Schritt für Schritt
- UPPER-CASE, LOWER-CASE und REVERSE ergeben ABC, abc und cba; LENGTH liefert 5 für hello.
- TRIM entfernt zunächst die rechten Leerzeichen. Die Zuweisung in PIC X(8) füllt anschließend wieder bis zur festen Feldbreite auf.
- ORD und CHAR verwenden hier die einsbasierte Zeichenordnung: ORD(A) ist 66 und CHAR(66) liefert A.
IDENTIFICATION DIVISION.
PROGRAM-ID. w1str.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 WS-T PIC X(8).
PROCEDURE DIVISION.
DISPLAY "[" FUNCTION UPPER-CASE("abc") "]".
DISPLAY "[" FUNCTION LOWER-CASE("ABC") "]".
DISPLAY "[" FUNCTION REVERSE("abc") "]".
DISPLAY FUNCTION LENGTH("hello").
MOVE FUNCTION TRIM("xy ") TO WS-T.
DISPLAY "[" WS-T "]".
DISPLAY FUNCTION ORD("A").
DISPLAY FUNCTION CHAR(66).
STOP RUN.
Erwarteter Exitcode: 0
Kanonisches Ausgabe-Prüfmuster (Regex)
\[ABC\]\n\[abc\]\n\[cba\]\n5\n\[xy \]\n66\nA\n
PBXB64.exe cobol-cobol_w1_intrinsics_string.cbl -O2 -o example.exe .\example.exe $LASTEXITCODE
Ergebnisvertrag aus tests/validate.toml. Keine neue native Compilerprüfung in dieser Website-Erweiterung. Finale Ausführung mit dem freigegebenen Compiler steht aus.
11. 88er-Bedingungsnamen setzen und prüfen
Ablauf Schritt für Schritt
- Die Bedingungsnamen SMALL, MID und BIG beschreiben Wertebereiche desselben Datenfelds A.
- A = 5 erfüllt BIG. SET SMALL TO TRUE setzt danach einen passenden Wert für SMALL.
- Der folgende SET-FALSE-Fall wird vom konkreten PBXB64-Vertrag mit NOTSMALL geprüft; die Ausgaben lauten BIG, SMALL, NOTSMALL.
IDENTIFICATION DIVISION.
PROGRAM-ID. L88.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 A PIC 9 VALUE 5.
88 SMALL VALUES 1 THRU 4.
88 MID VALUES 1, 3 THRU 5.
88 BIG VALUES 5 THRU 9.
PROCEDURE DIVISION.
IF BIG DISPLAY "BIG" ELSE DISPLAY "SMALL" END-IF
SET SMALL TO TRUE
IF SMALL DISPLAY "SMALL" ELSE DISPLAY "BIG" END-IF
SET SMALL TO FALSE
IF SMALL DISPLAY "BAD" ELSE DISPLAY "NOTSMALL" END-IF
STOP RUN.
Erwarteter Exitcode: 0
Kanonisches Ausgabe-Prüfmuster (Regex)
BIG SMALL NOTSMALL
PBXB64.exe cobol-test_88level.cbl -O2 -o example.exe .\example.exe $LASTEXITCODE
Ergebnisvertrag aus tests/validate.toml. Keine neue native Compilerprüfung in dieser Website-Erweiterung. Finale Ausführung mit dem freigegebenen Compiler steht aus.
12. UNSTRING zerlegt ein kommagetrenntes Feld
Ablauf Schritt für Schritt
- WS-SRC enthält ONE,TWO,THREE.
- DELIMITED BY trennt an den Kommata und schreibt die Teile nach WS-A, WS-B und WS-C.
- Jedes Zielfeld ist fünf Zeichen breit. Die Ausgaben ONE und TWO besitzen deshalb nachfolgende Leerzeichen; THREE füllt sein Feld vollständig.
IDENTIFICATION DIVISION.
PROGRAM-ID. UnstringDelimitedTest.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 WS-SRC PIC X(30) VALUE "ONE,TWO,THREE".
01 WS-A PIC X(5).
01 WS-B PIC X(5).
01 WS-C PIC X(5).
PROCEDURE DIVISION.
UNSTRING WS-SRC DELIMITED BY "," INTO WS-A WS-B WS-C
DISPLAY WS-A
DISPLAY WS-B
DISPLAY WS-C
STOP RUN.
Erwarteter Exitcode: 0
Kanonisches Ausgabe-Prüfmuster (Regex)
ONE TWO THREE
PBXB64.exe cobol-test_unstring_delimited.cbl -O2 -o example.exe .\example.exe $LASTEXITCODE
Ergebnisvertrag aus tests/validate.toml. Keine neue native Compilerprüfung in dieser Website-Erweiterung. Finale Ausführung mit dem freigegebenen Compiler steht aus.
Großes Beispiel: Entscheidungstabellen mit ALSO, THRU und NOT
Ablauf Schritt für Schritt
- EVALUATE A ALSO B betrachtet zwei Werte gemeinsam; der erste Fall (1, 2) trifft, (1, 9) verwendet den anderen Pfad.
- THRU umfasst die Bereichsgrenzen: 5 liegt zwischen 3 und 7, 8 liegt außerhalb. NOT kehrt Bereichs- oder Listenprüfungen um.
- Spätere Blöcke kombinieren Bereich und ausgeschlossene Liste über ALSO. Der vollständige Ausgabevertrag dokumentiert alle Entscheidungen einschließlich des abschließenden ANY-Falls.
IDENTIFICATION DIVISION.
PROGRAM-ID. evalfull.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 A PIC 9 VALUE 1.
01 B PIC 9 VALUE 2.
PROCEDURE DIVISION.
EVALUATE A ALSO B
WHEN 1 ALSO 2
DISPLAY "BOTH"
WHEN OTHER
DISPLAY "MISS"
END-EVALUATE
MOVE 9 TO B
EVALUATE A ALSO B
WHEN 1 ALSO 2
DISPLAY "BOTH"
WHEN OTHER
DISPLAY "MISS"
END-EVALUATE
MOVE 5 TO A
EVALUATE A
WHEN 10
DISPLAY "TEN"
WHEN 3 THRU 7
DISPLAY "RANGE"
WHEN OTHER
DISPLAY "OTHER"
END-EVALUATE
MOVE 8 TO A
EVALUATE A
WHEN 3 THRU 7
DISPLAY "RANGE"
WHEN OTHER
DISPLAY "OTHER"
END-EVALUATE
MOVE 9 TO A
EVALUATE A
WHEN NOT 1 THRU 8
DISPLAY "NOTRANGE"
WHEN OTHER
DISPLAY "OTHER"
END-EVALUATE
MOVE 5 TO A
EVALUATE A
WHEN NOT 1 THRU 8
DISPLAY "NOTRANGE"
WHEN OTHER
DISPLAY "OTHER"
END-EVALUATE
MOVE 4 TO A
EVALUATE A
WHEN NOT 1, 2
DISPLAY "NOTLIST"
WHEN OTHER
DISPLAY "OTHER"
END-EVALUATE
MOVE 2 TO A
EVALUATE A
WHEN NOT 1, 2
DISPLAY "NOTLIST"
WHEN OTHER
DISPLAY "OTHER"
END-EVALUATE
MOVE 5 TO A
MOVE 9 TO B
EVALUATE A ALSO B
WHEN 3 THRU 7 ALSO NOT 1, 2
DISPLAY "COMBO"
WHEN OTHER
DISPLAY "MISS"
END-EVALUATE
MOVE 1 TO B
EVALUATE A ALSO B
WHEN 3 THRU 7 ALSO NOT 1, 2
DISPLAY "COMBO"
WHEN OTHER
DISPLAY "MISS"
END-EVALUATE
MOVE 1 TO A
MOVE 2 TO B
EVALUATE A ALSO B
WHEN 1 ALSO 2
DISPLAY "BOTH"
WHEN ANY
DISPLAY "MATCHED"
WHEN OTHER
DISPLAY "MISS"
END-EVALUATE
STOP RUN.
Erwarteter Exitcode: 0
Kanonisches Ausgabe-Prüfmuster (Regex)
BOTH MISS RANGE OTHER NOTRANGE OTHER NOTLIST OTHER COMBO MISS BOTH MATCHED
PBXB64.exe cobol-test_evaluate_also_thru_not.cbl -O2 -o example.exe .\example.exe $LASTEXITCODE
Ergebnisvertrag aus tests/validate.toml. Keine neue native Compilerprüfung in dieser Website-Erweiterung. Finale Ausführung mit dem freigegebenen Compiler steht aus.
Alle Quellen dieser Lernseite
Jedes Beispiel hat einen eigenen Ordner; die README nennt die jeweiligen Compileraufrufe. Enthaltene Includes behalten ihre passenden Pfade.
Alle 13 Beispiele als ZIPBridging
Das numerische Beispiel bindet SHARED-COUNT aus COBOL in BASIC ein. Ein PIC-Feld ist kein allgemeiner Ersatz für einen nativen Maschinentyp; der konkrete Bridge-Vertrag übernimmt die passende Abbildung. PIC-X-Brücken sind separat zu qualifizieren.
Vollständige Quellenpaare ansehen