Cobol 2002 de Luxe - d-nb.info

14
Raouf Habib, Uwe Rozanski Cobol 2002 de Luxe i

Transcript of Cobol 2002 de Luxe - d-nb.info

Page 1: Cobol 2002 de Luxe - d-nb.info

Raouf Habib, Uwe Rozanski

Cobol 2002 de Luxe

i

Page 2: Cobol 2002 de Luxe - d-nb.info

Inhaltsverzeichnis

Einleitung 19

Kapi te l l : Die allgemeine COBOL-Programmstruktur 21 1.1 Vorbemerkung 21 1.2 COBOL-Programmstruktur 21 1.3 Die Bedeutung der Programmteile 21 1.4 Das COBOL-Programm im Überblick 22 1.5 Die Hierarchie in einem COBOL-Programm 23 1.6 COBOL-Sprachelemente 24

COBOL-reservierte Wörter 24 Programmiererwörter 24 Literale 25 Figurative Konstanten 27 Trennsymbole 29 Sonderregister 33

1.7 COBOL-Zeichensatz 33 1.8 Interpretation der COBOL-Klausel- und Anweisungsformate 34 1.9 Das Codieren 35

Fixed-form reference format 35 Free-form reference format 37

1.10 Programmbeispiel: DEMOl : Zinsen 39

Kapitel 2: Programmüberblick 41 2.1 Vorbemerkung 41 2.2 IDENTIFICATION DIVISION 41 2.3 ENVIRONMENT DIVISION 43 2.4 DATA DIVISION 52 2.5 PROCEDURE DIVISION 53

COBOL-Anweisungen im Überblick 55 Ein einfaches COBOL-Programm 59

2.6 Programmbeispiel: D E M 0 2 : Schreibmaschine 59

Kapitel 3: Definitionen von Datenfeldern 63 3.1 Vorbemerkung 63 3.2 Stufennummer 77 63 3.3 PICTURE-Klausel 63

5

Page 3: Cobol 2002 de Luxe - d-nb.info

Inhaltsverzeichnis

3.4 VALUE-Kkusel 77

3.5 USAGE-Klausel 78

3.6 BLANK WHEN ZERO-Klausel 84

3.7 JUSTIFIED 85

3.8 SYNCHRONIZED Klausel 85

3.9 SIGN-Klausel 86

3.10 Programmbeispiel: D E M 0 3 : Liste von Zweierpotenzen 87

Kapitel 4: Definitionen von Strukturen und Sätzen 91 4.1 Vorbemerkung 91

4.2 Stufennummern 01 bis 49 91

4.3 REDEFINES-Klausel 94

4.4 Stufennummer 88 96

4.5 Stufennummer 66 98

4.6 Datengruppen mit BIT-Feldern 99

4.7 Konstante 99

4.8 Programmbeispiel: D E M 0 4 : Artikelliste 100

Kapitel 5: Datenübertragungen 107 5.1 MOVE-Anweisung 107

5.2 INITIALIZE-Anweisung 112

5.3 SET-Anweisung 116

5.4 Referenz-Modifikation 119

5.5 Programmbeispiel: D E M 0 5 : Gehaltsstatistik 120

Kapitel 6: Bildschirmsteuerung 125 6.1 DISPLAY-Anweisung 125

6.2 ACCEPT-Anweisung 128

6.3 Programmbeispiel: DEM06: Darlehen 136

Kapitel 7: Systeminformationen, Systembeendigung 141 7.1 ACCEPT Anweisung Format 2 141

7.2 STOP-Anweisung 143

7.3 Programmbeispiel: D E M 0 7 : Degressive Abschreibung 143

Kapitel 8: Arithmetische Operationen 149 8.1 COMPUTE-Anweisung 149

8.2 ADD-Anweisung 153

8.3 SUBTRACT-Anweisung 155

8.4 MULTIPLY-Anweisung 157

8.5 DIVIDE-Anweisung 159

8.6 Programmbeispiel: D E M 0 8 : Fahrkartenautomat 162

6

Page 4: Cobol 2002 de Luxe - d-nb.info

Inhaltsverzeichnis

Kapitel 9: Programmverzweigungen 165 9.1 GO TO-Anweisung 165 9.2 GO T O ... DEPENDING ON 168 9.3 Programmbeispiel: D E M 0 9 : Einstufiger Gruppenwechsel 170

Kapitel 10: Interne Unterprogramme 179 10.1 Vorbemerkung 179 10.2 PERFORM-Anweisung 179 10.3 EXIT-Anweisung 193 10.4 EXIT PERFORM-Anweisung 194

10.5 EXIT SECTION-Anweisung 195 10.6 Programmbeispiel: DEMOIO: Zweistufiger Gruppenwechsel 196

Kapitel 11 : Bedingungen 205 11.1 Vorbemerkung 205 11.2 IF-Anweisung 205

Vergleichsbedingung 210 Vorzeichenbedingung 214 Klassenbedingung 215 Bedingungsnamen-Bedingung 216

Abfragen eines Pointers 218 Zusammengesetzte Bedingungen 218

11.3 CONTINUE-Anweisung 221 11.4 EVALUATE-Anweisung 222 11.5 Programmbeispiel: DEMOl 1: Kontostand 229

Kapitel 12: COPY-Bibliothek 235 12.1 COPY-Anweisung 235

12.2 COPY-Bibliotheken 237 12.3 REPLACE-Anweisung 239 12.4 Programmbeispiel: DEMO 12: Vertriebs-soll-ist-Vergleich 239

Kapitel 13: Sequenzielle Dateiorganisation 245 13.1 Vorbemerkung 245 13.2 Eintragungen in der ENVIRONMENT DIVISION 246

SELECT-Klausel 246 ASSIGN-Klausel 246 ORGANIZATION-Klausel 248

ACCESS MODE-Klausel 248 FILE STATUS-Klausel 248 RESERVE-Klausel 251 LOCK MODE-Klausel 251 PADDING CHARACTER-Klausel 251 RECORD DELIMITER-Klausel 251

7

Page 5: Cobol 2002 de Luxe - d-nb.info

Inhaltsverzeichnis

13.3 Eintragungen in der DATA DIVISION 252 RECORD CONTAINS-Klausel 252 BLOCK CONTAINS-Klausel 253 LINAGE-Klausel 254 CODE-SET-Klausel 255 Datensatzbeschreibung 255

13.4 Anweisungen in der PROCEDURE DIVISION 256 OPEN-Anweisung 256 READ-Anweisung 258 WRITE-Anweisung 260 REWRITE-Anweisung 263 CLOSE-Anweisung 264 USE-Anweisung 265

13.5 Programmbeispiel: D E M 0 1 3 : Überweisungen 268

Kapitel 14: Externe Unterprogramme 275 14.1 Vorbemerkung 275 14.2 Sprachelemente für Unterprogramm-Technik 275 14.3 Die Programmverbindung 276 14.4 CALL-Anweisung 276 14.5 LINKAGE SECTION 279 14.6 USING-Zusatz der PROCEDURE DIVISION 280 14.7 EXIT PROGRAM-Anweisung 285 14.8 Rekursive COBOL-Programme 287 14.9 CANCEL-Anweisung 289 14.10 GOBACK-Anweisung 290 14.11 Weitere Angaben zur Programmkommunikation 290 14.12 EXTERNAL-Klausel 291 14.13 Schachtelung von Programmen 293 14.14 GLOBAL-Klausel 295 14.15 INITIAL-Klausel 296 14.16 Programmbeispiel: DEM014 : Wurzelziehen 296

Kapitel 15: Eigene Funktionen 301 15.1 Vorbemerkung 301 15.2 FUNCTION-ID 301 15.3 EXIT FUNCTION-Anweisung 302 15.4 Funktionsaufruf 303 15.5 Funktionsbibliothek 307 15.6 Rekursive Funktionsaufrufe 309 15.7 Programmbeispiel: Falschgeld 311

Kapitel 16: Tabellenverarbeitung 317 16.1 Vorbemerkung 317 16.2 OCCURS-Klausel 317 16.3 Normalindizierang (Subskribierung) 323

8

Page 6: Cobol 2002 de Luxe - d-nb.info

Inhaltsverzeichnis

16.4 Spezialindizierung 325

16.5 SET-Anweisung 327

16.6 USAGE INDEX-Klausel 329

16.7 SEARCH-Anweisung 333

16.8 SEARCH ALL-Anweisung 337

16.9 Programmbeispiel: DEMO 15: Aufzinsungsfaktor 339

16.10 Programmbeispiel: DEM016: Rechnung 343

16.11 Programmbeispiel: DEMO 17: Balkendiagramm 350

16.12 Programmbeispiel: DEM018 : Altersstatistik 357

16.13 Programmbeispiel: DEM019: Tabelle sortieren 362

Kapitel 17: Zeichenkettenverarbeitung 367 17.1 Vorbemerkung 367

17.2 INSPECT-Anweisung 367

17.3 STRING-Anweisung 374

17.4 UNSTRING-Anweisung 377

17.5 Programmbeispiel: DEMO20: Variable Satzlänge 381

Kapitel 18: Bit-Manipulationen 385 18.1 Vorbemerkung 385

18.2 Bitweise Negation 386

18.3 Bitweises Und 387

18.4 Bitweises Exklusiv-Oder 388

18.5 Bitweises Oder 390

18.6 Programmbeispiel: Speicherdump 391

Kapitel 19: Index-sequenzielle Dateiorganisation 397 19.1 Vorbemerkung 397

19.2 Eintragungen in der ENVIRONMENT DIVISION 397

19.3 Eintragungen in der DATA DIVISION 403

19.4 Anweisungen in der PROCEDURE DIVISION 403

OPEN-Anweisung 403

READ-Anweisung 405

WRITE-Anweisung 408

REWRITE-Anweisung 409

DELETE-Anweisung 411

START-Anweisung 412

CLOSE-Anweisung 413

USE-Anweisung 414

19.5 Alternative Schlüssel für Index-sequenzielle Dateien 415

19.6 Programmbeispiel: D E M 0 2 1 : Adressen verwalten 417

19.7 Programmbeispiel: DEM022: Telefonliste 428

19.8 Programmbeispiel: D E M 0 2 3 : Auskunftssystem 432

9

Page 7: Cobol 2002 de Luxe - d-nb.info

Inhaltsverzeichnis

Kapitel 20: Konkurrierende Dateizugriffe 439 20.1 Vorbemerkung 439 20.2 File connector 439 20.3 Verarbeitung ohne Satzsperren 440

Beispiel: Counter 440 20.4 Pessimistische Satzsperren 445

Manuelle Einzelsatzsperre 446 Manuelle Mehrfachsatzsperre 449 Automatische Einzelsatzsperre 449 Automatische Mehrfachsatzsperre 449 Beispiel: Counter 450

20.5 Optimistische Satzsperren 452 Beispiel: Counter 454

20.6 Konkurrierende Zugriffe in rekursiven Programmen 457 20.7 Konkurrierende Zugriffe in objektorientierten Programmen 457

Kapitel 2 1 : Grundlagen objektorientierter Programmierung 463 21.1 Vorbemerkung 463 21.2 O O P 463

Objektorientierte Analyse (OOA) 464 Objektorientiertes Design (OOD) 465 Objektorientierte Implementierung (OOI) 465

21.3 Klassen 466 21.4 Objekte 468 21.5 Attribute 469 21.6 Methoden 470 21.7 Instanzen 471

Garbage Collection 472 21.8 Methodenaufruf 473

Signatur einer Methode 474 Methoden sind keine Module 474 Klassenmethoden 475

21.9 Beziehungen 476 Assoziation 476 Assoziative Klasse 477 Aggregat 478 Generalisierung 478

21.10 Klassenbibliotheken 482 21.11 Methoden überladen 484

Anwendung der Methodenpolymorphie 486 21.12 Basisklassenreferenz 487 21.13 Mehrfachvererbung 488

SUPER 489 21.14 Zuweisungskompatibilität 490 21.15 Interfaces 491

10

Page 8: Cobol 2002 de Luxe - d-nb.info

Inhaltsverzeichnis

Kapitel 22: Definition von Klassen, Objekten und Attributen, Properties 497

22.1 CLASS-ID 497 Finale Klassen 498 Vererbungen ausdrücken 498 Parametrisierte Klassen 500

22.2 OPTIONS 501 22.3 REPOSITORY 502 22.4 FACTORY 502

OPTIONS 504 ENVIRONMENT DIVISION 504 DATA DIVISION 504 PROCEDURE DIVISION 504 END FACTORY 505

22.5 OBJECT 505 OPTIONS 505 ENVIRONMENT DIVISION 506 DATA DIVISION 506 PROCEDURE DIVISION 506 END OBJECT 506

22.6 Definition von Attributen und Properties 506 Klassenattribute 506 Objektattribute 507 Properties 508

22.7 Ende einer Klassendefinition 510 22.8 Programmbeispiel: Dynamischer Vektor 511

Kapitel 23: Definition und Aufruf von Methoden, Instanzenbildung 521 23.1 Vorbemerkung 521 23.2 Methoden, Module und Funktionen 521

Module 521 Funktionen 523 Methoden 525

23.3 Unterschied zwischen Klassen- und Objektmethoden 528 23.4 Syntax der Methodendefinition 529

OPTIONS-Paragraph 530 23.5 Was eine Methode nicht enthalten darf 531

Einschränkungen in der ENVIRONMENT DIVISION 531 Einschränkungen in der DATA DIVISION 531

23.6 Datenfelder in Methoden 531 23.7 Syntax des Methodenaufrufs 532

Inline method invocation 534 23.8 Konstruktoren, Erzeugen von Instanzen 537

Singleton Patterns 539 23.9 Gegenseitige Methodenaufrufe 540 23.10 Programmbeispiel: Simple Tree Map 544 23.11 Programmbeispiel: Gruppenwechsel durch Instanzenbildung 548

11

Page 9: Cobol 2002 de Luxe - d-nb.info

Inhaltsverzeichnis

Kapitel 24: Beziehungen zwischen Klassen (Assoziation, Aggregation) 555

24.1 Vorbemerkung 555

24.2 Assoziation 555 Assoziative Klasse 558 Auflösen von gegenseitigen oder gleichzeitigen Beziehungen 559

24.3 Aggregation 562 Auflösen von Aggregatbeziehungen 562

24.4 Programmbeispiel: Assoziation und Fachklassenpool 562

Kapitel 25: Einfach- und Mehrfachvererbung (Messagerouting) 609 25.1 Vorbemerkung 609 25.2 Vererbungsbeziehungen 609 25.3 Vererben von Konstruktoren und Klassenmethoden 614 25.4 Vererben von Attributen 617 25.5 Vererben von Objektmethoden 618 25.6 Aspekte der Mehrfachvererbung, Messagerouting 619 25.7 Wiederholte Vererbung 621 25.8 Konstruktoraufrufe bei Mehrfachvererbung 626 25.9 Programmbeispiel: Schrauben und Nägel 626

Kapitel 26: Methoden überladen (SELF, SUPER) 639 26.1 Vorbemerkung 639 26.2 Aufruf einer Objektmethode über SELF 641 26.3 Aufruf einer Klassenmethode über SELF 643 26.4 Aufruf einer Objektmethode über SUPER 644 26.5 Aufruf einer Klassenmethode über SUPER 646 26.6 Programmbeispiel: Einheitliche Listen drucken 646

Kapitel 27: Prototypdefinition 665 Vorbemerkung 665 Programmprototypen 666 Funktionsprototypen 668 Methodenprototypen 669

Interfaces 671 Vorbemerkung 671 Interfaces kontra Mehrfachvererbung 671 Aufbau eines Interfaces 674

OPTIONS 675 OBJECT-Interfaces 678 FACTORY-Interfaces 680 Parametrisierbare Interfaces 680 Programmbeispiel: Iterator 683 Programmbeispiel: Durchlaufen einer Menge mit einem Iterator 695

27.1 27.2 27.3 27.4

Kapitel 28: 28.1 28.2 28.3

28.4 28.5 28.6 28.7 28.8

12

Page 10: Cobol 2002 de Luxe - d-nb.info

Inhaltsverzeichnis

Kapitel 29: SORT-MERGE-Modul 701 29.1 Vorbemerkung 701 29.2 Die SELECT-Klausel für Sortierdateien 701 29.3 Die SD-Stufenbezeichnung 702 29.4 SORT-Anweisung 703 29.5 RELEASE-Anweisung 705 29.6 RETURN-Anweisung 706 29.7 MERGE-Anweisung 706 29.8 Programmbeispiel: DEM024: Sortierprogramm 707 29.9 Programmbeispiel: DEM025 : Stichwortverzeichnis 709 29.10 Programmbeispiel: DEM024 : Mischprogramm 712

Kapitel 30: Intrinsic-Funktionen 717 30.1 Vorbemerkung 717 30.2 Liste aller Funktionen 717 30.3 Zeichen- und Zeichenkettenfunktionen 718

CHAR-Funktion 718 LENGTH-Funktion 718 LOWER-CASE-Funktion 719 NUMVAL-Funktion 720 NUMVAL-C-Funktion 720 ORD-Funktion 721 REVERSE-Funktion 722 UPPER-CASE-Funktion 723

30.4 Arithmetische Funktionen 723 FACTORIAL-Funktion 723 INTEGER-Funktion 724 INTEGER-PART-Funktion 725 MAX-Funktion 726 MIN-Funktion 726 MOD-Funktion 727 ORD-MAX-Funktion 728 ORD-MIN-Funktion 729 RANDOM-Funktion 730 RANGE-Funktion 731 REM-Funktion 731 SQRT-Funktion 732 SUM-Funktion 733

30.5 Datumsfunktionen 733 CURRENT-DATE-Funktion 734 DATE-OF-INTEGER-Funktion 735 DAY-OF-INTEGER-Funktion 735 INTEGER-OF-DATE-Funktion 736 INTEGER-OF-DAY-Funktion 737 WHEN-COMPILED-Funktion 738

13

Page 11: Cobol 2002 de Luxe - d-nb.info

Inhaltsverzeichnis

30.6 Statistische Funktionen 739 MEAN-Funktion 739 MEDIAN-Funktion 739 MIDRANGE-Funktion 741 STAND ARD-DEVIATION-Funktion 742 VARIANCE-Funktion 743

30.7 Trigonometrische Funktionen 743 ACOS-Funktion 743 ASIN-Funktion 744 ATAN-Funktion 745 COS-Funktion 745 LOG-Funktion 746 LOGIO-Funktion 746 SIN-Funktion 747 TAN-Funktion 747

Kapitel 31: COBOL ruft JAVA 749 31.1 Vorbemerkung 749 31.2 JAVA-Kkssen definieren 750

JAVA-Packages 750 31.3 Instanzen vonJAVA-Klassen erzeugen 751 31.4 JAVA-Methoden aufrufen 752 31.5 JA VA-Klassenmethoden aufrufen 754 31.6 Zugriff auf öffentliche Attribute 756 31.7 Garbage Collector 759 31.8 JAVA-Exceptions behandeln 761 31.9 Programmbeispiel DATUM-BERECHNEN 765

Kapitel 32: JAVA ruft COBOL 775 32.1 Vorbemerkung 775 32.2 Entwicklung eines einfachen JAVA-Programms 776

CALL BY VALUE 776 32.3 JAVA-Wrapper-Klassen für COBOL 776

CALL BY REFERENCE 783

Kapitel 33: XML 785 33.1 Vorbemerkung 785 33.2 Aufbau einer XML-Datei 785 33.3 DTD 789

Die Elementdeklaration 790 Inhaltsmodelle 790 Attributdeklarationen 791 Interne und externe DTDs 791

33.4 DOM- und SAX-Parser 793 33.5 SAX-Parser selbst programmieren 794 33.6 IBM-Erweiterung XML PARSE 809

14

Page 12: Cobol 2002 de Luxe - d-nb.info

Inhaltsverzeichnis

33.7 MicroFocus-Erweiterung XML-enabled COBOL 815 SELECT-Klausel 815 XD-Klausel 815 OPEN-Anweisung 817 READ-Anweisung 817 WRITE-Anweisung 818 REWRITE-Anweisung 818 DELETE-Anweisung 819 CLOSE-Anweisung 819

33.8 Programmbeispiel: XML-Datei mit MicroFocus-Erweiterungen lesen 819

Kapitel 34: Web Services 825 34.1 Vorbemerkung 825 34.2 Technische Grundlagen 825 34.3 SOAP 827 34.4 WSDL 827 34.5 UDDI 827 34.6 Benutzen eines Web Service 828 34.7 Einen Web Service anbieten 839

Kapitel 35: COBOL und Application Server (EJB) 845 35.1 Vorbemerkung 845 35.2 J2EE 845 35.3 Enterprise JAVA Beans 846 35.4 Application Server 846 35.5 Stateless Session Beans 848

Eigenschaften 848 Einsatzgebiete 849 Methoden der Bean-Klasse 849 Methoden des Home-Interfaces 850 Methoden des Remote-Interfaces 850 Local-Home-Interface 851 Local-Interface 851 Programmbeispiel: Addierer 851

35.6 Stateful Session Beans 861 Eigenschaften 861 Einsatzgebiete 862 Methoden der Bean-Klasse 862 Methoden des Home-Interfaces 864 Methoden des Remote-Interfaces 864 Local-Home-Interface 864 Local-Interface 864 Programmbeispiel: Summierer 865

35.7 Message Driven Beans 875 Eigenschaften 875 Einsatzgebiete 875

15

Page 13: Cobol 2002 de Luxe - d-nb.info

Inhaltsverzeichnis

Methoden der Bean-Klasse 876 Methoden des Home-Interfaces 877 Methoden des Remote-Interfaces 877 Local-Home-Interface 877 Local-Interface 877 Programmbeispiel: Nachricht 877

35.8 Entity Beans 886 Eigenschaften 886 Einsatzgebiete 887 Methoden der Bean-Klasse 887 Methoden des Home-Interfaces 890 Methoden des Remote-Interfaces 891 Local-Home-Interface 891 Local-Interface 891 Programmbeispiel: Datei 891

Anhang A: A.l A.2 A.3 A.4 A.5 A.6 A.7 A.8 A.9 АЛО A. l l A.12 A.13 A.14 A.15 A.16 A.17 A.18

Übungen Übungen zu Kapite Übungen zu Kapite Übungen zu Kapite Übungen zu Kapite Übungen zu Kapite Übungen zu Kapite Übungen zu Kapite Übungen zu Kapite Übungen zu Kapite Übungen zu Kapite Übungen zu Kapite Übungen zu Kapitel Übungen zu Kapite Übungen zu Kapite Übungen zu Kapite Übungen zu Kapite Übungen zu Kapite Übungen zu Kapite

1 . 2. 3. 4. 5 . 6. 7. 8. 9. 10 11 12 13 14 15 16 17 18

909 909 910 910 911 912 912 913 913 913 914 915 916 916 917 917 917 918 919

Anhang B: Lösungen B.l B.2 B.3 B.4 B.5 B.6 B.7 B.8 B.9

921 Lösungen zu Kapitel 1 921 Lösungen zu Kapitel 2 922 Lösungen zu Kapitel 3 922 Lösungen zu Kapitel 4 923 Lösungen zu Kapitel 5 923 Lösungen zu Kapitel 6 924 Lösungen zu Kapitel 7 925 Lösungen zu Kapitel 8 925 Lösungen zu Kapitel 9 925

16

Page 14: Cobol 2002 de Luxe - d-nb.info

Inhaltsverzeichnis

В. 10 Lösungen zu Kapitel 10 926 B. 11 Lösungen zu Kapitel 11 926 B.12 Lösungen zu Kapitel 12 927 B. 13 Lösungen zu Kapitel 13 928 B.14 Lösungen zu Kapitel 14 929 B. 15 Lösungen zu Kapitel 15 929 B.16 Lösungen zu Kapitel 16 929 B.17 Lösungen zu Kapitel 17 930 B. 18 Lösungen zu Kapitel 18 931

Anhang C: Testhilfe 933 C.l Vorbemerkung 933 C.2 Schalter zur Umwandlungszeit 933

Anhang D: Einführung in NetExpress 935 D.l Vorbemerkung 935 D.2 Funktionsumfang 935 D.3 Projektverwaltung 936 D.4 Der Editor 937 D.5 Der Compiler 938 D.6 Der Debugger 938

Stichwortverzeichnis 941

17