320 likes | 618 Views
COBOL. Präsentation im Rahmen des Seminars „Programmiersprachen“ am 2. Juni 2004 Stephan Dümmer. Gliederung. Einführung COBOL Grundlagen Ausgewählte Aspekte der COBOL Programmierung Quicksort in COBOL Zusammenfassung. Einführung. COBOL: CO mmon B usiness O riented L anguage
E N D
COBOL Präsentation im Rahmen des Seminars „Programmiersprachen“ am 2. Juni 2004 Stephan Dümmer
Gliederung • Einführung • COBOL Grundlagen • Ausgewählte Aspekte der COBOL Programmierung • Quicksort in COBOL • Zusammenfassung
Einführung • COBOL: COmmon Business Oriented Language • Haupteinsatzzweck: kaufmännischer Geschäftsbereich(z. B. Buchführung in Banken und Versicherungen) • Verarbeitung großer und strukturierter Datenmengen • (Batch-)Betrieb auf Großrechnern (Mainframe) • Eine der ältesten prozeduralen Programmiersprachen • Auf Grund der Erweiterungs- und Anpassungsfähigkeitauch heute noch weit verbreitet
Gliederung • Einführung • COBOL Grundlagen • Ausgewählte Aspekte der COBOL Programmierung • Quicksort in COBOL • Zusammenfassung
COBOL Grundlagen • 1959 entwickelt und 1960 veröffentlicht von der Conference on Data Systems Languages (CODASYL) • Standardisierung der Sprache durch ISO, ANSI Gewährleistung der Kompatibilität und Portabilität COBOL-68, COBOL-74, COBOL-85, COBOL-2002 • Großer Sprachumfang mit Anlehnung an natürliche Sprache (+) Quelltext ist gut lesbar und schnell zu erlernen (+) Gute Lesbarkeit erleichtert Pflege von Programmen (-) Wortreicher Sprachumfang macht Quelltext „geschwätzig“
COBOL Grundlagen SECTION PARAGRAPH SENTENCE : : : : : : • Formale Struktur: Jedes Programm hat 4 Divisions • IDENTIFICATION DIVISION • Programmbeschreibung: Name, Autor, Kompilierdatum etc. • Mindestens Programmname erforderlich • ENVIRONMENT DIVISION • Angaben über verwendete Hardware, externe Ressourcen(z. B. Quell- und Zielrechner, Drucker, Dateien) • Alle Angaben optional • DATA DIVISION • Deklaration von Struktur und Typ der Datei-Datensätze • Variablendeklaration • PROCEDURE DIVISION • Anwendungslogik • Anweisungen DIVISION
COBOL Grundlagen Zeilennummerierung Divisions Sentences Paragraphs
COBOL Grundlagen • Programme bestehen aus Zeilen mit jeweils 80 Spalten(Fixed reference format) Indikatorbereich
Gliederung • Einführung • COBOL Grundlagen • Ausgewählte Aspekte der COBOL Programmierung 3.1 Datentypen 3.2 Tabellenverarbeitung 3.3 Modularisierung • Quicksort in COBOL • Zusammenfassung
Datentypen äquivalent: 01 MATRIKELNUMMER PIC 9(6). 01 VORNAME PIC X(10). • Schwaches Typisierungskonzept (keine vorgegebenen Datentypen wie Integer, Double, Float etc.) • Datentypen • Numerisch: Ziffern 0...9, Vorzeichen, Dezimalpunkt • Alphanumerisch: Groß-/Kleinbuchstaben, Sonderzeichen • Variablendeklaration in der DATA DIVISION Numerisch 01 MATRIKELNUMMER PIC 999999. 01 VORNAME PIC XXXXXXXXXX. Alphanumerisch
Datentypen • Numerischer Datentyp • Mit Vorzeichen: • Mit Dezimalpunkt: • Mit Vorzeichenund Dezimalpunkt: • Interne Darstellung (für Berechnungen) 01 TEMPERATUR PIC S9(4). 01 GEWICHT PIC 9(4)V99. 01 KONTOSTAND PIC S9(4)V99.
Datentypen • Externe Darstellung (Druckaufbereitung) • Für Ausgabe auf Bildschirm, Drucker etc. • Festlegung des Ausgabeformates durch Angabe von Maskenzeichen in der Deklaration (+,-,Z,...)
Datentypen Datenelemente Datengruppen • Datensatz-Hierarchie durch Stufennummern • Stufennummern 01 bis 49 stehen zur Verfügung • Frei wählbare Schrittweite • Gleiche Stufennummer für jede Hierarchieebene 01 STUDENTENDATEN. 05 NAME PIC X(20). 05 MATRIKELNUMMER PIC 9(6). 05 ANSCHRIFT. 10 STRASSE PIC X(20). 10 PLZ PIC 9(5). 10 WOHNORT PIC X(15).
Tabellenverarbeitung • Datentyp Array in COBOL nicht vorhanden • Tabellendefinition durch Wiederholung gleicher Datenfelder • Zugriff über Index DISPLAY NAME (20). • 1. Datenfeld hat Index 1 (nicht 0!) • Speicher für Datenfelder bei Kompilierung statisch alloziiert 01 STUDENT-TABELLE. 05 NAME PIC X(20) OCCURS 50 TIMES.
Tabellenverarbeitung • Mehrdimensionale Tabellen • Zugriff über 2 Indizes: DISPLAY KLAUSUR (4,2). • In COBOL-85 bis zu 7 Dimensionen möglich 01 STUDENT-NOTEN-TABELLE. 05 NAME OCCURS 5 TIMES. 10 KLAUSUR PIC 9 OCCURS 3 TIMES. Name 1 2 3 4 5 1 2 3 Klausur
Tabellenverarbeitung • Tabellen variabler Größe • Speicher muss bei Kompilierung immer statisch alloziiert werden • Flexibilität durch Vorgabe minimaler/maximaler Anzahl Elemente • (logische) Größe der Tabelle wird erst zur Laufzeit bestimmt • Im Bsp. muss gelten: 1 ≤ LAENGE ≤ 50 • Wertzuweisung an LAENGEvor Zugriff auf Tabelle 01 STUDENT-TABELLE. 05 NAME PIC X(20) OCCURS 1 TO 50 DEPENDING ON LAENGE.
Modularisierung Aufrufendes Programm IDENTIFICATION DIVISION. PROGRAM-ID. HAUPTPROGRAMM. : PROCEDURE DIVISION. : CALL „UNTERPROGRAMM“. : : STOP RUN. Aufgerufenes Programm IDENTIFICATION DIVISION. PROGRAM-ID. UNTERPROGRAMM. : PROCEDURE DIVISION. : ANWEISUNG1. ANWEISUNG2. : EXIT PROGRAM. • Zerlegen eines Programms in überschaubare Teile • Unterstützt Programmierung im Großen • Erleichtert Fehlersuche • Wiederverwendbarkeit der Module
Modularisierung • Parameterübergabe an Unterprogramm Aufrufendes Programm IDENTIFICATION DIVISION. PROGRAM-ID. HAUPTPROGRAMM. : DATA DIVISION. 01 VORNAME PIC X(10). 01 MATNR PIC 9(6). PROCEDURE DIVISION. : CALL „UNTERPROGRAMM“ USING VORNAME, MATNR. : : STOP RUN. Aufgerufenes Programm IDENTIFICATION DIVISION. PROGRAM-ID. UNTERPROGRAMM. : DATA DIVISION. LINKAGE SECTION. 01 NAME PIC X(10). 01 MNUMMER PIC 9(6). PROCEDURE DIVISION USING NAME, MNUMMER. : ANWEISUNG1. ANWEISUNG2. : EXIT PROGRAM.
Gliederung • Einführung • COBOL Grundlagen • Ausgewählte Aspekte der COBOL Programmierung • Quicksort in COBOL • Zusammenfassung
Quicksort in COBOL • Quicksort basiert auf dem Prinzip der Rekursion • Rekursion wird von COBOL nicht unterstützt • Iterative Variante des Quicksort-Algorithmus erforderlich • Vorgehensweise • Speicherung der zu sortierenden Zahlen in Tabelle • Speicherung des zu sortierenden Tabellenbereiches für jeden Quicksort-Aufruf Stack erforderlich • Bearbeite Stack-Einträge bis Stack leer
Quicksort in COBOL Links (L1) Rechts (R1) 1 L1 / R1 Stack-Pointer Stack-Pointer 27 1 0 Stack
Quicksort in COBOL Links (L2) Links (L3) Stack-Pointer 27 1 Rechts (R2) Rechts (R3) 2 L3 / R3 1 L2 / R2 0 Stack
Quicksort in COBOL L5 Links (L2) L4 Stack-Pointer 27 1 Rechts (R2) R4 R5 3 L5 / R5 2 L4 / R4 1 L2 / R2 0 Stack
Quicksort in COBOL L7 L6 Links (L2) L4 Stack-Pointer 27 1 Rechts (R2) R4 R6 R7 4 L7 / R7 3 L6 / R6 2 L4 / R4 1 L2 / R2 0 Stack
Quicksort in COBOL Links (L2) Stack-Pointer 27 1 Rechts (R2) 1 L2 / R2 0 Stack
Quicksort in COBOL Quicksort-Laufzeit: COBOL vs. Java
Gliederung • Einführung • COBOL Grundlagen • Ausgewählte Aspekte der COBOL Programmierung • Quicksort in COBOL • Zusammenfassung
Zusammenfassung • Wortreicher Sprachumfang Quelltext gut lesbar • Schwache Typisierung hohe Fehleranfälligkeit • COBOL ist nach wie vor die dominierende Sprache bei kaufmännischen Mainframe-Anwendungen • Hohe Erweiterungs- und Anpassungsfähigkeit • Einsatz sowohl in Alt-Anwendungen als auch bei Neuentwicklungen
Tabellenverarbeitung • Tabellendefinition mit Zugriff durch Spezialindex • Spezialindex XYZ beinhaltet relative Adresse eines Datenfeldes • Zugriff auf Datenfeld DISPLAY NAME (XYZ). • Index darf nicht durch arithmetische Operationen verändert werden 01 STUDENT-TABELLE. 05 NAME PIC X(20) OCCURS 50 TIMES INDEXED BY XYZ. SET XYZ TO 1. Setzt XYZauf 1 SET XYZ DOWNBY 3. Erniedrigt XYZum 3 SET XYZ UPBY 5. Erhöht XYZum 5