COBOL Strukturierte Programmierung mit COBOL 85 Von Daniel D. McCracken und Donald G. Golden 7., korrigierte Auflage Oldenbourg Verlag München Wien
5 Inhaltsverzeichnis Vorwort zur zweiten amerikanischen Ausgabe 19 Vorwort zur deutschen Ausgabe 25 Vorbemerkungen 29 1. Grundlagen der COBOL-Programmierung 31 1.1 Einführung 31 1.2 Die Lernfolge 31 1.3 Ein einfaches Programm 33 1.4 Die vier Teile (DIVISIONS) eines COBOL-Programmes 34 1.5 Ablauf eines Programmes 40 1.6 Das Codierformat von COBOL 41 1.7 Regeln für die Bildung von Namen 44 Kontrollfragen 45 Antworten auf die Kontrollfragen 46 Übungsaufgaben 46 2. Die grundlegende Programmstruktur 49 2.1 Einführung 49 2.2 Das Programm 50 2.3 Der Datenteil (DATA DIVISION) 51 2.4 Das Arbeitsspeicherkapitel (WORKING-STORAGE SECTION)... 51 2.5 Der Prozeduranteil (PROCEDURE DIVISION) 51 2.6 Das Verb READ 52 2.7 Das Verb PERFORM 54 2.8 Der COBOL-Paragraph 54 2.9 Das Kennzeichen für das Dateiende (Datenendschalter) 56 2.10 Bedingte Ausführung 56
6 Inhaltsverzeichnis 2.11 Ein anderer Blick auf die grundlegende Programmstruktur 57 2.12 Beispiele von Ausgaben verschiedener Programmabläufe 59 2.13 Erneute Betrachtung der Grundstruktur 60 2.14 Ein Hinweis 61 Kontrollfragen 62 Antworten auf die Kontrollfragen 62 Übungsaufgaben 64 3. Elemente des Datenteil (DATA DIVISION) und die arithmetischen Verben im Prozedurteil (PROCEDURE DIVISION) 65 3.1 Einführung 65 3.2 Die Idee des Stufenaufbaus 68 3.3 Neue Beschreibungselemente bei PICTURE-Klauseln 71 3.4 Die Stellung des angenommenen Dezimalpunktes (Dezimalpunkt bei Rechenoperationen) 72 3.5 Die Stellung des tatsächlichen Dezimalpunktes (Dezimalpunkt bei EA-Operationen) 73 3.6 Daten mit führenden Leerzeichen 74 3.7 Das Datenelement FILLER 74 3.8 Die Hauptsteuerungsroutine 76 3.9 Der Verarbeitungsparagraph 76 3.10 Die Verarbeitung 77 3.11 Die Anweisung ADD 77 3.12 Die Anweisung MULTIPLY 78 3.13 Die Ausgabe 79 3.14 Allgemeine Formate von COBOL-Anweisungen 80 3.15 Fortsetzung der Besprechung der ADD-An Weisung 83 3.16 Die Angabe (Option) ROUNDED 84 3.17 Die Angabe (Option) ON SIZE ERROR 84 3.18 Die ADD-Anweisung des Formates 1 85 3.19 Die ADD-Anweisung des Formates 2 bei COBOL-85 86 3.20 Die allgemeinen Formate der SUBTRACT-Anweisung 87 3.21 Die allgemeinen Formate der MULTIPLY-Anweisung 89
Inhaltsverzeichnis 7 3.22 Die allgemeinen Formate der DI VIDE-Anweisung 90 3.23 Die Behandlung von Vorzeichen 93 3.24 Übertragung numerischer Werte 93 3.25 Die Handhabung von Dezimalzahlen bei arithmetischen Operationen. 94 3.26 Dezimalstellen bei Addition und Subtraktion 96 3.27 Dezimalstellen bei Multiplikation 96 3.28 Dezimalstellen bei der Division 97 Kontrollfragen 98 Antworten auf die Kontrollfragen 102 Übungsaufgaben 104 4. Entwurf von Programmen 115 4.1 Einführung 115 4.2 Die Funktion von Programmen 115 4.3 Über die hierarchische Struktur von Programmen 116 4.4 Hierarchische Darstellung eines einfachen Programmes 119 4.5 Steuerung der Ausführung von Programmen 122 4.6 Steuerungstrukturen im Pseudocode 124 4.7 Entwurf des Programmes zur Erstellung einer Inventurliste 127 4.8 Standards bei der Programmierung 129 4.9 Zusammenfassung 131 Kontrollfragen 132 Antworten auf die Kontrollfragen 134 Übungsaufgaben 135 5. Anweisungen für die Ablaufstruktur von COBOL- Programmen 139 5.1 Einführung 139 5.2 Die IF-Anweisung 139 5.3 Die IF-Anweisung ohne ELSE 142 5.4 Vollständiges allgemeines Format der IF-Anweisung 143
8 Inhaltsverzeichnis 5.5 Die Bedeutung des Punktes in einer IF-Anweisung 144 5.6 Vergleichsbedingungen 146 5.7 Vergleichsoperationen 147 5.8 Die Sortierfolge 148 5.9 Klassenbedingungen 151 5.10 Zusammengesetzte Bedingungen 153 5.11 Der logische Operator OR 153 5.12 Der logische Operator AND 154 5.13 Die Anweisung PERFORM mit der Angabe UNTIL 154 5.14 Die Steuerungsstruktur für die Unterscheidung von Fällen (Case-Struktur) 156 5.15 END-Anweisungen in COBOL-85 158 5.16 Die READ-Anweisung mit der Angabe END-READ 159 5.17 Die arithmetischen Verben mit END-Angaben 160 5.18 Die IF-Anweisung mit der Angabe END-IF 161 5.19 Die PERFORM-Anweisung mit der Angabe END-PERFORM 162 5.20 Die Anweisung EVALUATE 163 Kontrollfragen 166 Antworten auf die Kontrollfragen 168 Übungsaufgaben 172 6. Ein einfaches Programm für die Lohnabrechnung 179 6.1 Einführung 179 6.2 Anforderungen an das Programm 179 6.3 Programmentwurf 180 6.4 Das Programm für die Lohnabrechnung im COBOL-Code 183 6.5 Die VALUE-Klausel im Arbeitsspeicherkapitel (WORKING- STORAGE SECTION) 183 6.6 Der Prozedurteil 187 6.7 Ausgabe der ersten Programmversion 189 6.8 Zweite Version des Programmes für die Lohnabrechnung (mit Überstunden) 191 6.9 Überarbeitung der Programmspezifikationen 192 6.10 Die WRITE-Anweisung mit der Option FROM beim überarbeiteten Programm 194
Inhaltsverzeichnis 9 6.11 Zum Datenteil dieser Programmversion 198 6.12 Zum Prozedurteil dieser Programmversion 198 6.13 Die Ausgabe der zweiten Programmversion 199 Kontrollfragen 201 Antworten auf die Kontrollfragen 201 flu * u om Übungsaufgaben 202 7. Die PICTURE-Klausel und verwandte Themenkreise 205 7.1 Einführung 205 7.2 Die PICTURE-Klausel 205 7.3 Das Symbol S in einer PICTURE-Zeichenfolge 206 7.4 Die zulässige Länge von PICTURE-ZEICHENFOLGEN 207 7.5 Die PICTURE-Zeichenfolge für das Aufbereiten von Daten 208 7.6 Das Symbol Z in PICTURE-Zeichenfolgen 209 7.7 Das Symbol $ in PICTURE-Zeichenfolgen 210 7.8 Kommas in PICTURE-Zeichenfolgen 211 7.9 Der Dezimalpunkt in PICTURE-Zeichenfolgen 212 7.10 Das Symbol - (Minuszeichen) in PICTURE-Zeichenfolgen 213 7.11 Das Symbol + (Pluszeichen) in PICTURE-Zeichenfolgen 215 7.12 Die Symbolfolgen CR und DB in PICTURE-Zeichenfolgen 216 7.13 Das Symbol * (Sternzeichen) in PICTURE-Zeichenfolgen 217 7.14 Das Symbol 0 (Null) in PICTURE-Zeichenfolgen 218 7.15 Das Symbol В in PICTURE-Zeichenfolgen 219 7.16 Das Symbol / (Schrägstrich) in PICTURE-Zeichenfolgen 220 7.17 Das Symbol P in PICTURE-Zeichenfolgen 220 7.18 Zusammenfassung der Regeln für PICTURE-Klauseln 222 7.19 Kombination von Aufbereitungsoperationen 225 7.20 Dritte Version des Programmes für die Lohnabrechnung (mit Überstunden) 225 7.21 Der Aufbau des Programmes für die Lohnabrechnung (dritte Version) 228 7.22 Eintragungen mit der Stufennummer 88 im Datenteil 232 7.23 Die Programmausgabe 235 7.24 Lesen von Daten mit Vorzeichen 238
10 Inhaltsverzeichnis Kontrollfragen 240 Antworten auf die Kontrollfragen 244 Übungsaufgaben 248 8. Fehlersuche in COBOL-Programmen 259 8.1 Einführung 259 8.2 Die Auswirkung des Programmentwurfs auf die Fehlersuche 260 8.3 Einige Hinweise zum Programmierstil 261 8.4 Ineinandergeschachtelte IF-Anweisungen 264 8.5 Andere alltägliche Codierungsprobleme 274 8.6 Fehler während des Kompilierens (Kompilierzeit-Fehler) 279 8.7 Ein Beispiel mit Kompilierzeit-Fehlern 280 8.8 Fehler zur Ausführungszeit (Ausführungszeit-Fehler) 290 8.9 Testen von Programmen 290 8.10 Testhilfen 293 8.11 Die Angabe ON SIZE ERROR 294 8.12 Überarbeitete Version des Programmes für die Lohnabrechnung 296 8.13 Die Anweisung DISPLAY 301 8.14 Die Anweisung EXHIBIT 305 8.15 Die Anweisung TRACE mit READY und RESET 306 Kontrollfragen 309 Antworten auf die Kontrollfragen 313 Übungsaufgaben 316 9. Gruppenwechsel 319 9.1 Einführung 319 9.2 Vorstellung der Anwendung Verkaufsstatistik" 319 9.3 Sequentielle Verarbeitung von Dateien 321 9.4 Ein Entwurf des Programmes fr den einstufigen Gruppenwechsel... 323 9.5 Der Erkennungsteil (IDENTIFICATION DIVISION) 329 9.6 Kommentare 331 9.7 Die Steuerung des Zeilentransportes (Erzeugung von leeren Zeilen).. 331 9.8 Die komplette WRITE-Anweisung 332
Inhaltsverzeichnis 11 9.9 Das Konfigurationskapitel im Maschinenteil (ENVIRONMENT DIVISION) 334 9.10 Das Zeichen für die Vorschubsteuerung (Carriage Control) 334 9.11 Das Drucken von Überschriften 336 9.12 Entwurf des Programmes für den dreistufigen Gruppenwechsel 336 9.13 Durchführung von Programmänderungen gemäß Vorgaben 343 9.14 Antworten auf die aufgeworfenen Fragen hinsichtlich der Programmänderungen 345 9.15 Ausführung des überarbeiteten Programmes 346 Kontrollfragen 353 Antworten auf die Kontrollfragen 355 Übungsaufgaben 356 10. Die Datendarstellung und verwandte Themenkreise...361 10.1 Einführung 361 10.2 Die Datendarstellung 361 10.3 Bytes 363 10.4 Formen der Datendarstellung bei IBM-Großcomputern 365 10.5 Der Gebrauch von DISPLAY 365 10.6 Der Gebrauch von COMPUTATIONAL-3 369 10.7 Der Gebrauch von COMPUTATIONAL 371 10.8 Der Gebrauch von COMPUTATIONAL-1 und COMPUTATIONAL-2 372 10.9 Formen der Datendarstellung in COBOL-85 und ihre Beschreibung... 373 10.10 Die Klausel SYNCHRONIZED 373 10.11 DIE KLAUSEL JUSTIFIED 375 10.12 Die Klausel REDEFINES 376 10.13 Regeln für den Gebrauch der Klausel REDEFINES 377 10.14 Beispiele für die Nützlichkeit der Klausel REDEFINES 379 10.15 Kennzeichner bei Datennamen 382 10.16 Die Anweisung MOVE mit CORRESPONDING 385 Kontrollfragen 387 Antworten auf die Kontrollfragen 391 Übungsaufgaben 394
12 Inhaltsverzeichnis 11. Verbundbedingungen und das Programm für den Gartenkatalog 397 11.1 Einführung 397 11.2 Ergänzende Betrachtungen über die Verbundbedingungen 399 11.3 Abgekürzte verbundene Vergleichsbedingungen 404 11.4 Implizite Subjekte 404 11.5 Implizite Subjekte und Vergleichsoperatoren 405 11.6 Entwurf des Programmes für den Gartenkatalog 406 11.7 Das Programm zur Prüfung von Bestellungen aus dem Gartenkatalog 407 11.8 Die Resultate eines Programmablaufes 417 Kontrollfragen 420 Antworten auf die Kontrollfragen 421 Übungsaufgaben 422 12. Aufdatierung sequentiell organisierter Dateien 425 12.1 Einführung 425 12.2 Ein einfaches Mischprogramm 428 12.3 Ein Mischprogramm mit Reihenfolgeprüfungen 432 12.4 Die einfachste Aufdatierungslogik (Fortschreibungslogik) 435 12.5 Programmentwicklung nach der Top-Down-Methode und Programmstummel 436 12.6 Die Programmausgabe 439 12.7 Verarbeitung von Hinzufügungen (Neuzugängen) und Löschungen von Stammsätzen 439 12.8 Vorkehrungen zur Behandlung von Fehlern 445 12.9 Aufdatierung (Fortschreibung) von Stammsätzen bei Schlüsselgleichheit 454 12.10 Das komplette Aufdatierungsprogramm 461 Kontrollfragen 474 Antworten auf die Kontrollfragen 475 Übungsaufgaben 478
Inhaltsverzeichnis 13 13. Handhabung von Tabellen 485 13.1 Einführung 485 13.2 Die Grundlagen der Normalindizierung 485 13.3 Ein einfaches Programm mit Normalindizierung 488 13.4 Das Füllen einer Tabelle mit Werten unter Benutzung von REDEFINES 491 13.5 Einlesen von Tabellenwerten aus einer Datei 493 13.6 Initialisierung einer Tabelle mittels der Klausel VALUE 496 13.7 Indizierte Variablen mit zwei oder mehr Normalindexen 497 13.8 Die Option VARYING bei der Anweisung PERFORM 502 13.9 Spezialindizierung 508 13.10 Die Anweisung SET im Zusammenhang mit Bedingungsnamen 511 13.11 Das Verb SEARCH 512 13.12 Das Verb SEARCH mit der Option ALL 521 13.13 Die Initialisierung von Tabellen und die SEARCH-Anweisungen... 524 13.14 Ein Programm zur Verarbeitung einer zweidimensionalen Tabelle unter Benutzung von Spezialindizes 526 13.15 Ausgerichtete (SYNCHRONIZED) Daten in Tabellen 535 13.16 Zusammenfassung 537 Kontrollfragen 537 Antworten auf die Kontrollfragen 542 Übungsaufgaben 544 14. Speichergeräte für Dateien und ihre Programmierung 549 14.1 Einführung 549 14.2 Magnetbandspeicher 550 14.3 Die Festlegung der Blockujng von Datensätzen in COBOL 554 14.4 Verarbeitung von Dateien auf Magnetbändern 557 14.5 Magnetplattenspeicher 558 14.6 Programme mit sequentieller Verarbeitung unter Benutzung von Plattenspeichern 561 14.7 Indizierte Dateien 566 14.8 Ein Programm zur Erstellung einer indiziert organisierten Datei 567
14 Inhaltsverzeichnis 14.9 Ein Programm zum Drucken einer indizierten Datei 573 14.10 Ein Programm zur Überprüfung von Bestellungen 574 14.11 Definition mehrer Satzarten 579 14.12 Der Prozedurteil des Programmes zur Überprüfung von Bestellungen 580 14.13 Programm zur Aufdatierung (Aktualisierung) einer indizierten Datei 585 14.14 Dateien mit relativen Satznummern (Relativdateien) 591 14.15 Programm zur Erstellung einer Datei mit relativen Satznummern 592 14.16 Programm zur Aufdatierung einer Relativdatei 595 14.17 Methoden zur Bestimmung relativer Satznummern 599 14.18 Benutzung eines Hash-Codes bei der Erstellung einer Relativdatei 600 14.19 Aufdatierung einer Relativdatei unter Benutzung eines Hash-Codes 605 Kontrollfragen 609 Antworten auf die Kontrollfragen 611 Übungsaufgaben 614 15. Handhabung von Zeichen 619 15.1 Einführung 619 15.2 Die Anweisung INSPECT 619 15.3 Die Anweisung STRING 624 15.4 Die Anweisung UNSTRING 627 Kontrollfragen 632 Antworten auf die Kontrollfragen 633 Übungsaufgaben 634 16. Der Listenschreiber (Report Writer) 637 16.1 Einführung 637 16.2 Zusätzliche Möglichkeiten bei Druckdateien 637 16.3 Konzepte des Listenschreibers 645
Inhaltsverzeichnis 15 16.4 Programm für die dreistufige Gruppenkontrolle 646 16.5 Das Listenkapitel (REPORT SECTION) 652 16.6 Erstellung einer Liste ohne Einzelzeilen 659 16.7 Zusätzliche Einrichtungen beim Listenschreiber (Report Writer) 661 16.8 Ein umfassendes Beispielprogramm für den Listenschreiber 662 16.9 Zusammenfassung 669 Kontrollfragen 669 Antworten auf die Kontrollfragen 671.. Übungsaufgaben 676 17. Sortieren mit COBOL-Programmen 679 17.1 Einführung 679 17.2 Ein fundamentales Sortierbeispiel 679 17.3 Die Ausgabeprozedur beim Sortierprozeß 684 17.4 Die Eingabeprozedur 689 17.5 Das Spezialregister SORT-MESSAGE 695 Kontrollfragen 698 Antworten auf die Kontrollfragen 699 Übungsaufgaben 701 18. Unterprogramme 703 18.1 Einführung 703 18.2 Verwendung von Unterprogrammen 705 18.3 Programm für die sequentielle Aufdatierung mit Unterprogrammen... 707 18.4 Unterprogramm zur Durchführung der Aufdatierung 713 18.5 Ergebnisse der Programmausführung 717 18.6 Unterprogramme mit den Sprachelementen von COBOL-85 718 18.7 Schlußfolgerung 720 Kontrollfragen 720 Antworten auf die Kontrollfragen 722 Übungsaufgaben 723
16 Inhaltsverzeichnis 19. Zusätzliche COBOL-Themen 727 19.1 Einführung 727 19.2 Die Anweisung GO TO 727 19.3 Die Anweisung COPY 733 19.4 Die Anweisung COMPUTE 739 19.5 Arithmetische Ausdrücke 740 19.6 Beispiele für den Gebrauch der COMPUTE-An Weisung 743 19.7 Dem Gebrauch der COMPUTE-An Weisung auferlegte Beschränkungen 744 19.8 Arithmetische Ausdrücke bei Vergleichsbedingungen 745 19.9 Die Klausel RENAMES 746 19.10 Die Anweisung ALTER und die mit ihr zusammenhängenden Probleme 749 20. COBOL für die interaktive Betriebsweise 753 20.1 Einführung 753 20.2 Version des Gartenkatalogprogrammes für den Dialogbetrieb 754 20.3 Ergebnisse des Programmablaufes 763 20.4 Vervollkommnung des Programmes für den Dialogbetrieb 764 20.5 Programme mit Menüs 775 20.6 Zusammenfassung 785 Anhang A Reservierte Wörter der Programmiersprache COBOL 787 Anhang В Übersicht über den Sprachrahmen von COBOL 790 1. Vorbemerkungen 790 2.1 Allgemeines Format des Erkennungsteils (IDENTIFICATION DIVISION) 792 2.2 Allgemeines Format des Maschinenteils (ENVIRONMENT DIVISION) 792
Inhaltsverzeichnis 17 2.3 Allgemeines Format des Datenteils (DATA DIVISION) 796 2.4 Allgemeines Format des Prozedurteils (PROCEDURE DIVISION) 802 3. COBOL-85 815 3.1 Allgemeines Format des Erkennungsteils (IDENTIFICATION DIVISION) 815 3.2 Allgemeines Format des Maschinenteils (ENVIRIONMENT DIVISION) 815 3.3 Allgemeines Format des Datenteils (DATA DIVISION) 820 3.4 Allgemeines Format des Prozedurteils (PROCEDURE DIVISION) 829 3.5 Allgemeines Format für geschachtelte Quellenprogramme 848 3.6 Allgemeines Format für ein inneres (innenliegendes) Quellenprogramm 849 3.7 Allgemeines Format für eine Folge von Quellenprogrammen 849 Anhang С Standards bei der Programmierung 850 1. IDENTIFICATION DIVISION 850 2. ENVIRONMENT DIVISION 850 3. DATA DIVISION 850 4. PROCEDURE DIVISION 851 5. Allgemeine Hinweise 853 Anhang D Lösungen ausgewählter Übungsaufgaben 858 1. Kapitel 3: Die grundlegende Programmstruktur 858 2. Kapitel 4: Entwurf von Programmen 861 3. Kapitel 5: Anweisungen für die Ablaufstruktur von COBOL- Programmen 864 4. Kapitel 6: Ein einfaches Programm für die Lohnabrechnung 869 5. Kapitel 7: Die PICTURE-Klausel und verwandte Themenkreise 873 6. Kapitel 8: Fehlersuche in COBOL-Programmen 883 7. Kapitel 9: Gruppenwechsel 886
18 Inhaltsverzeichnis 8. Kapitel 10: Die Datendarstellung und verwandte Themenkreise 888 9. Kapitel 11: Verbundbedingungen und das Programm für den Gartenkatalog 889 10. Kapitel 12: Aufdatierung sequentiell organisierter Dateien 890 11. Kapitel 13: Handhabung von Tabellen 898 12. Kapitel 15: Handhabung von Zeichen 901 13. Kapitel 16: Der Listenschreiber (Report Writer) 903 Anhang E Hinweise auf deutsche Literatur 906 Sachregister 907