Eingabe lesen
ACCEPT liest von der Konsole oder holt Systemwerte wie das Datum:
IDENTIFICATION DIVISION.
PROGRAM-ID. EINGABE.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 NAME PIC X(20).
01 ZAHL PIC 9(3).
01 DATUM PIC 9(8).
PROCEDURE DIVISION.
*> Interaktiv wäre: ACCEPT NAME FROM CONSOLE.
*> Hier die Alternative ohne Tastatur:
ACCEPT DATUM FROM DATE YYYYMMDD.
IF DATUM > 20200101
DISPLAY "Datum liegt nach 2020"
END-IF.
ACCEPT ZAHL FROM ENVIRONMENT "GIBT_ES_NICHT".
DISPLAY "Zahl ohne Wert: " ZAHL.
MOVE "Mia Beispiel" TO NAME.
DISPLAY "Willkommen, " NAME.
STOP RUN.Datum liegt nach 2020 Zahl ohne Wert: 000 Willkommen, Mia Beispiel
Mit ACCEPT feld FROM CONSOLE liest du eine Zeile, ACCEPT ... FROM ARGUMENT-VALUE die Kommandozeilenargumente, FROM TIME die Uhrzeit.
Ein tabellarischer Bericht
Berichte sind der Klassiker: Kopfzeile, Detailzeilen, Summen.
IDENTIFICATION DIVISION.
PROGRAM-ID. BERICHT.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 BESTELLUNGEN.
05 POSTEN OCCURS 4 TIMES.
10 P-ARTIKEL PIC X(10).
10 P-MENGE PIC 9(3).
10 P-PREIS PIC 9(4)V99.
01 I PIC 9.
01 ZEILE-SUMME PIC 9(6)V99.
01 GESAMT PIC 9(7)V99 VALUE 0.
01 ZEILE.
05 Z-ARTIKEL PIC X(10).
05 FILLER PIC X(2) VALUE SPACES.
05 Z-MENGE PIC ZZ9.
05 FILLER PIC X(2) VALUE SPACES.
05 Z-PREIS PIC ZZ,ZZ9.99.
05 FILLER PIC X(2) VALUE SPACES.
05 Z-SUMME PIC Z,ZZZ,ZZ9.99.
01 TRENNER PIC X(40) VALUE ALL "=".
01 GESAMT-AUS PIC Z,ZZZ,ZZ9.99.
PROCEDURE DIVISION.
MOVE "Schrauben" TO P-ARTIKEL(1). MOVE 500 TO P-MENGE(1). MOVE 0.12 TO P-PREIS(1).
MOVE "Muttern" TO P-ARTIKEL(2). MOVE 480 TO P-MENGE(2). MOVE 0.08 TO P-PREIS(2).
MOVE "Bohrer" TO P-ARTIKEL(3). MOVE 12 TO P-MENGE(3). MOVE 14.90 TO P-PREIS(3).
MOVE "Werkzeug" TO P-ARTIKEL(4). MOVE 3 TO P-MENGE(4). MOVE 249.00 TO P-PREIS(4).
DISPLAY "BESTELLÜBERSICHT".
DISPLAY TRENNER.
DISPLAY "Artikel Menge Preis Summe".
DISPLAY TRENNER.
PERFORM VARYING I FROM 1 BY 1 UNTIL I > 4
COMPUTE ZEILE-SUMME = P-MENGE(I) * P-PREIS(I)
ADD ZEILE-SUMME TO GESAMT
MOVE P-ARTIKEL(I) TO Z-ARTIKEL
MOVE P-MENGE(I) TO Z-MENGE
MOVE P-PREIS(I) TO Z-PREIS
MOVE ZEILE-SUMME TO Z-SUMME
DISPLAY ZEILE
END-PERFORM.
DISPLAY TRENNER.
MOVE GESAMT TO GESAMT-AUS.
DISPLAY "Gesamt: " GESAMT-AUS.
STOP RUN.BESTELLÜBERSICHT ======================================== Artikel Menge Preis Summe ======================================== Schrauben 500 0.12 60.00 Muttern 480 0.08 38.40 Bohrer 12 14.90 178.80 Werkzeug 3 249.00 747.00 ======================================== Gesamt: 1,024.20
Ausgabe in Dateien: der Bericht als Druckdatei
IDENTIFICATION DIVISION.
PROGRAM-ID. DRUCK.
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT BERICHT-DATEI ASSIGN TO "bericht.txt"
ORGANIZATION IS LINE SEQUENTIAL.
SELECT LESE-DATEI ASSIGN TO "bericht.txt"
ORGANIZATION IS LINE SEQUENTIAL.
DATA DIVISION.
FILE SECTION.
FD BERICHT-DATEI.
01 BERICHT-ZEILE PIC X(40).
FD LESE-DATEI.
01 LESE-ZEILE PIC X(40).
WORKING-STORAGE SECTION.
01 SEITE PIC 99 VALUE 1.
01 EOF PIC X VALUE "N".
01 ZEILEN PIC 99 VALUE 0.
PROCEDURE DIVISION.
OPEN OUTPUT BERICHT-DATEI.
MOVE "MONATSBERICHT" TO BERICHT-ZEILE.
WRITE BERICHT-ZEILE.
MOVE ALL "-" TO BERICHT-ZEILE.
WRITE BERICHT-ZEILE.
MOVE "Umsatz Januar: 12.400,00" TO BERICHT-ZEILE.
WRITE BERICHT-ZEILE.
MOVE "Umsatz Februar: 13.250,50" TO BERICHT-ZEILE.
WRITE BERICHT-ZEILE.
CLOSE BERICHT-DATEI.
OPEN INPUT LESE-DATEI.
PERFORM UNTIL EOF = "J"
READ LESE-DATEI
AT END MOVE "J" TO EOF
NOT AT END
ADD 1 TO ZEILEN
DISPLAY ZEILEN ": " LESE-ZEILE
END-READ
END-PERFORM.
CLOSE LESE-DATEI.
STOP RUN.01: MONATSBERICHT 02: ---------------------------------------- 03: Umsatz Januar: 12.400,00 04: Umsatz Februar: 13.250,50
Für umfangreiche Berichte gibt es in COBOL den Report Writer (REPORT SECTION, GENERATE), der Seitenköpfe, Gruppenwechsel und Summen automatisiert. GnuCOBOL unterstützt ihn teilweise; in Mainframe-Projekten wird er verwendet, aber oft durch eigene Berichtslogik ersetzt.
Merke
ACCEPTliest Konsole, Datum (FROM DATE YYYYMMDD), Zeit und Umgebung- Berichte: Editierfelder (
Z,,,.) in Zeilenstrukturen,DISPLAYoderWRITE - Kopf-, Detail- und Summenzeilen sind das Grundmuster der Berichtsprogrammierung
- Report Writer automatisiert große Berichte
Aufgabe
Erweitere den Bericht um eine Mehrwertsteuer-Zeile (19 %) und den Bruttobetrag.