Wirtschaftsinformatik: Datenverarbeitung Klaus Arzdorf Programmieren mit COBOL 4., völlig neu bearbeitete Auflage Vogel Buchverlag
Inhaltsverzeichnis Vorwort 5 Urhebernachweis 7 Vom Problem zum Programm 15 1.1 Grundlagen 15 1.1.1 Umwelt des Programmierers 15 1.2 Grundlagen der Sprache COBOL 17 1.2.1 Struktur eines Programms 21 1.2.2 Definitionen 26 1.2.3 Eigentliches Programm 26 1.2.4 Zeichenvorrat der COBOL-Sprache 27 1.2.5 Aufgliederung der Wörter in der COBOL-Sprache 30 1.2.5.1 Schlüsselwörter,..-rf.T. 30 1.2.5.2 Wahlwörter 32 1.2.5.3 Paragraphennamen 33 1.2.5.4 Kapitelnamen (SECTION) 34 1.2.5.5 Datennamen 34 1.2.5.6 Datensatznamen 35 1.2.5.7 Dateinamen 35 1.2.5.8 Bedingungsnamen 36 1.2.6 Konstante 37 1.2.6.1 Alphanumerische Konstante 37 1.2.6.2 Numerische Konstante 38 1.2.6.3 Hexadezimale Konstante 39 1.2.6.4 Figurative Konstante 40 1.2.7 Interpunktion 42 1.3 Aufbau eines COBOL-Programms 44 1.3.1 Die vier Hauptteile (DIVISION) eines COBOL-Programms44 1.3.2 Aufbau des Befehlsteils 46 1.3.2.1 Befehlsaufbau Beispiel 46 1.3.2.2 Beispielprogramm Aufgabenstellung 47 1.3.2.3 Beispielprogramm Struktogramm 49 1.3.2.4 Beispielprogramm Codierung 50 1.3.2.5 Übung zum Befehlsteil 52 1.4 Benötigte Befehle in Kapitel 1 54 1.4.1 Format der COBOL-Befehle 54 1.4.2 OPEN-Befehl 56
1.4.3 READ-Befehl 58 1.4.4 WRITE-Befehl 60 1.4.5 CLOSE-Befehl 62 1.4.6 DISPLAY-Befehl 63 1.4.7 ACCEPT-Befehl 64 1.4.8 MOVE-Befehl 65 1.4.9 PERFORM-Befehl (Inline-PERFORM) 66 1.4.9.1 Bedingungen 68 1.4.9.2 Beispiele für PERFORM UNTIL-Befehle 69 1.4.10 STOP-Befehl 71 1.5 Schreiben des Programms 72 1.5.1 COBOL-Formular 72 1.5.2 Programmvorbereitung 74 1.5.3 Übersichtliche Programmierung 79 1.6 Aufgaben zu Kapitel 1 82 1.6.1 Aufgabe la: Eingeben und Drucken von Daten 82 1.6.2 Aufgabe lb: Eingeben und Speichern von Daten 83 1.6.3 Aufgabe lc: Lesen und Drucken von Daten 84 1.7 Lösungen zu Kapitel 1 86 2 Das Stufenkonzept t... 91 2.1 Aufbau der DATA DIVISION 91 2.2 Definition von Daten 92 2.2.1 Stufennummern (01 bsi 49 und 77) 92 2.2.2 Beschreibung der Daten 95 2.2.2.1 PICTURE-Klausel (für nicht druckaufbereitete Felder) 95 2.2.2.2 Alphanumerische und alphabetische Daten 97 2.2.2.3 Numerische Daten 98 2.2.2.4 VALUE-Klausel 99 2.2.2.5 JUSTIFIED-Klausel 102 2.3 FILE SECTION 104 2.3.1 Wichtige Parameter der FD-Beschreibung 105 2.4 Aufgaben zu Kapitel 2 107 2.4.1 Aufgabe 2a: Erstellen einer strukturierten Datei 107 2.4.2 Aufgabe 2b: Drucken einer Adreßliste 108 2.5 Lösungen zu Kapitel 2 110 3 Drucken, Rechnen, Vergleichen 119 3.1 Aufbereitung von Daten zum Drucken 119 3.1.1 Alphabetische/alphanumerische Druckaufbereitung 120 3.1.2 Numerische Druckaufbereitung 120 3.1.2.1 Spezielle Einfügung 121 3.1.2.2 Einfache Einfügung 122 10
3.1.2.3 Unterdrücken und Ersetzen 123 3.1.2.4 Feste Einfügung 125 3.1.2.5 Gleitende Einfügung 127 3.1.3 Regeln für PIC-Klauseln 130 3.2 USAGE-Klausel 130 3.2.1 Darstellungsform bei USAGE IS DISPLAY 131 3.2.2 Darstellungsform bei USAGE IS BINARY 133 3.2.3 Darstellungsform bei USAGE IS PACKED-DECIMAL... 135 3.3 Rechenbefehle für die vier Grundrechenarten 137 3.3.1 ADD-Befehl 137 3.3.2 Zusatz ROUNDED in Rechenbefehlen 139 3.3.3 Zusatz ON SIZE ERROR in Rechenbefehlen 140 3.3.4 Zusatz NOT ON SIZE ERROR in Rechenbefehlen 141 3.3.5 SUBTRACT-Befehl 142 3.3.6 MULTIPLY-Befehl 144 3.3.7 DIVIDE-Befehl 146 3.3.8 Allgemeine Regeln für Rechenbefehle 149 3.4 Vergleichsbefehl IF 151 3.4.1 Einseitige Selektion 155 3.4.2 Zweiseitige Selektion.- 156 3.4.3 Weitere Beispiele für den IF-Befehl S.. 157 3.5 Stufennummer 88 159 3.5.1 Verwendung der Stufennummer 88 160 3.6 ENVIRONMENT DIVISION 164 3.6.1 CONFIGURATION SECTION 165 3.6.2 INPUT-OUTPUT SECTION 166 3.6.3 Zusammenhang von Dateinamen im Programm 168 3.7 Aufgabe zu Kapitel 3 170 3.7.1 Aufgabe 3: Drucken einer Umsatzliste 170 3.8 Lösungen zu Kapitel 3 172 4 Unterprogramme und Tabellen 179 4.1 Definitions-Erweiterungen 179 4.1.1 «BLANK WHEN ZERO«-Klausel 179 4.1.2 REDEFINES-Klausel 181 4.2 Tabellenverarbeitung 184 4.2.1 OCCURS-Klausel 186 4.2.2 Ansprechen von Tabellenfeldern 187 4.2.3 Verarbeiten von Tabellen 190 4.2.3.1 Tabellenfüllen bei vorgegebenem Index 190 4.2.3.2 Tabellenfüllen bei sortierter Eingabe 192 4.2.3.3 Tabellenfüllen bei unsortierter Eingabe 194 4.2.3.4 Programmschleife bei der Tabellenverarbeitung 197 4.2.3.5 Füllen und Verarbeiten von alphanumerischen Tabellen 199 11
4.3 Befehlserweiterungen 200 4.3.1 ACCEPT-Befehl für Datum, Wochentag und/oder Uhrzeit 200 4.3.2 Ergänzungen zum IF-Befehl 203 4.3.2.1 IF-Befehl (Klassentest) 203 4.3.2.2 IF-Befehl (Vorzeichentest) 204 4.3.2.3 Arithmetische Ausdrücke 205 4.3.2.4 Mehrfachbedingungen 206 4.3.2.5 Verschachtelte IF-Befehle 209 4.3.3 Erweiterungen des PERFORM-Befehls 210 4.3.3.1 Einfacher PERFORM-Befehl und die Ergänzung TIMES 210 4.3.3.2 PERFORM-UNTIL-Befehl 214 4.3.3.3 Vorzeitiges Verlassen von Unterprogrammen.. 215 4.3.3.4 PERFORM-VARYING-Befehl 217 4.4 COMPUTE-Befehl 220 4.5 Qualifizieren von Namen 221 4.6 «MOVE CORRESPONDING»-Befehl 223 4.7 Aufgabe zu Kapitel 4...,.-: 226 4.7.1 Aufgabe 4: Verarbeitung einer eindimensionalen Tabelle 226 4.8 Lösungen zu Kapiel 4.'. 227 Mehrdimensionale Tabellen und Datenmanipulationen 235 5.1 Mehrdimensionale Tabellen 235 5.1.1 Definition mehrdimensionaler Tabellen 236 5.1.2 Erstellen einer ldimensionalen Tabellen 237 5.1.3 Definieren und Ansprechen einer 2dimensionalen Tabelle 239 5.1.4 Definieren und Ansprechen einer 3dimensionalen Tabelle 241 5.1.5 Arbeiten mit 2dimensionalen Tabellen 242 5.2 Erweiterung des «PERFORM VARYING»-Befehls 247 5.2.1 Arbeitsweise bei 2stufiger Tabelle 248 5.2.2 Arbeitsweise bei 3stufiger Tabelle 248 5.2.3 Anwendung des mehrdimensionalen «PERFORM VARYING»-Befehls 250 5.3 Datenmanipulationsbefehle 250 5.3.1 EXAMINE-Befehl 250 5.3.2 INSPECT-Befehl 253 5.4 Zusammenfassen und Trennen von Daten 257 5.4.1 STRING-Befehl 257 5.4.2 UNSTRING-Befehl 259 5.5 Aufgabe zu Kapitel 5 262 5.5.1 Aufgabe 5: Zweidimensionale Tabellenverarbeitung 262 5.6 Lösungen zu Kapitel 5 263 12
Direktzugriff zu Dateien 271 6.1 Allgemeine Betrachtungen 272 6.1.1 Sequentielle Dateien 272 6.1.2 Dateien mit direktem Zugriff 273 6.1.2.1 Relative Dateien 273 6.1.2.2 Indizierte Dateien 273 6.2 Befehle und Anweisungen für Direkte Dateien 274 6.2.1 SELECT-Anweisung für direkte Dateien 274 6.2.1.1 SELECT-Anweisung für relative Dateien 274 6.2.1.2 SELECT-Anweisung für indizierte Dateien 276 6.2.2 OPEN-Anweisung für direkte Dateien 278 6.2.3 START-Befehl 279 6.2.4 READ-Befehl für direkte Dateien 280 6.2.5 WRITE-Befehl für direkte Dateien 282 6.2.6 REWRITE-Befehl 283 6.2.7 DELETE-Befehl 285 6.2.8 Beispiele für die Verarbeitung von indizierten Dateien.. 286 6.2.8.1 Laden einer indizierten Datei 286 6.2.8.2 Sequentielles Lesen einer indizierten Datei 288 6.2.8.3 Sequentielles Lesen einer Indizierten Datei mit START-Anweisung S. 290 6.2.8.4 Wahlfreies Lesen einer indizierten Datei 292 6.2.8.5 Wahlfreier und sequentieller Zugriff auf eine indizierte Datei 294 6.3 «GO TO... DEPENDING ON»-Befehl 301 6.4 Gruppenverarbeitung 302 6.5 Aufgabe zu Kapitel 6 305 6.5.1 Aufgabe 6: Verarbeiten von Gruppen mit einer indizierten Datei 305 6.6 Lösungen zu Kapitel 6 307 Externe Unterprogramme/Sortdateien 313 7.1 Externe Unterprogramme 313 7.1.1 CALL-Anweisung 314 7.1.2 LINKAGE SECTION 314 7.1.2 CALL-Aufruf: Beispiel 315 7.1.4 PROCEDURE DIVISION im Unterprogramm 316 7.1.5 Rücksprung in das Hauptprogramm 317 7.1.6 Unterprogramm: Beispiel 317 7.2 Sortdateien 318 7.2.1 SD-Eintragung 319 7.2.2 SORT-Befehl 319 7.2.3 RELEASE-Befehl 321 7.2.4 RETURN-Befehl 321 13
7.2.5 Verarbeitungsweise des SORT-Befehls 322 7.2.5.1 Sortieren mit USING/GIVING 322 7.2.5.2 Sortieren mit INPUT/OUTPUT PROCEDURE.. 324 7.2.6 COBOL-Sort: Beispiel 325 7.3 Aufgabe zu Kapitel 7 327 7.3.1 Aufgabe 7: Sortieren einer Datei mit Unterprogramm... 327 7.4 Lösungen zu Kapitel 7 328 8 Fehlerbehandlung und Ergänzungen 335 8.1 Ergänzende Anweisungen und Befehle 335 8.1.1 COPY-Anweisung 335 8.1.2 SIGN-Klausel 337 8.2 Allgemeine Fehlerbehandlung von Dateien 337 8.2.1 «FILE STATUS«-Klausel 338 8.2.2 Fehlerbehandlung mit der USE-Anweisung 339 8.3 Tabellenverarbeitung mit Indexnamen 341 8.3.1 Zusatz INDEXED BY in Tabellen 341 8.3.2 Definition von weiteren Indexfeldern 342 8.3.3 SET-Anweisung,.-. 343 8.3.4 SEARCH-Befehl..,.-.{.. 344 8.4 Fehlersuche mit Hilfe der DEBUG-Zeilen ' 345 8.5 Beispiele für Bildschirmprogrammierung 348 8.5.1 Programm zur Erstellung von Testdaten auf einem PC.. 348 8.5.2 Programm zur Bildschirmverarbeitung 351 Anhang Reservierte COBOL-Wörter 363 Literaturhinweise 367 Stichwortverzeichnis 369 14