Upload
elfriede-kass
View
105
Download
0
Embed Size (px)
Citation preview
COmmonBusinessOrientedLanguage
GLIEDERUNG Historisches
Allgemein Grace Hopper
Entwicklung / Standardisierung
CODASYL X/Open ANSI
Syntax (C-80)
Allgemeines Besonderheiten
COBOL heute
HISTORISCHES [1/5]
Motivation:
hardware-unabhängige Sprache zur Erstellung von Programmen für den betriebswirtschaftlichen Bereich
Handhabung bzw. Ein-/Ausgabe großer Datenmengen statt der Ausführung umfangreicher Berechnungen
Arbeitsgruppe vom amerikanischen Verteidigungs- ministerium eingesetzt, um einen Standard zu entwickeln
Verschmelzung von FLOW-MATIC, COMTRAN und FACT
1960: COBOL-60 von CODASYL verabschiedet
HISTORISCHES [2/5]
Grace Hopper:
„Grandma COBOL“
Eckdaten:
1930: Studium der Mathematik und Physik an Yale University 1934: an Yale promoviert 1944: in den Dienst der US-Navy arbeitete dort mit Mark I und leitete Aufbau von Mark II bis 1949: Forscherin an Harvard University 1966: Ruhestand (Reserve) 1967: von US-Navy in aktiven Dienst versetzt um Abhilfe bei
verschiedensten Computerproblemen zu schaffen
HISTORISCHES [3/5]
Grace Hopper:
weitere Eckdaten:
1986: in den Rang eines Konteradmirals erhoben im Alter von 80 Jahren in den Ruhestand entlassen noch bis 1991 als Beraterin tätig
maßgeblich an Mark I, Mark II und UNIVAC I beteiligt
1952 den ersten Compiler entwickelt (A-0)
auf sie geht der Begriff debugging zurück
HISTORISCHES [4/5]
First Computer Bug:
HISTORISCHES [5/5]
Grace Hopper:
wurde für ihre Leistungen mit über 90 Auszeichnungen geehrt
u.a. mit mehr als 40 Ehrendoktorwürden
1969: Man of the Year Award der Datenverarbeitungsindustrie
1991: als erste Frau die National Medal of Technology
1996: Kriegsschiff USS Hopper vom Stapel gelassen
ihr zu Ehren wird der Grace Murray Hopper Award verliehen
ENTWICKLUNG / STANDARDIS. [1/4]
Entwicklung durch CODASYL
COBOL-60 zeigte Potential und Nutzen der angestrebten gemeinsamen Programmiersprache
COBOL-61 war nur teilweise kompatibel mit Vorgänger
daraufhin: evolutionäre Weiterentwicklung(statt revolutionären Änderungen)
COBOL-61 Extended:
SORT REPORT WRITER
(Zeilen, Seiten oder div. Layouts zur Laufzeit ausgeben)
ENTWICKLUNG / STANDARDIS. [2/4]
Entwicklung durch CODASYL [Ergänzung]
COBOL - EDITION 1965:
interne Tabellen Dateiverarbeitung
Erweiterungen durch X/Open
Während der Bemühungen bzgl. eines Standards für UNIX wurden hierbei auch Spezifikationen für COBOL vereinbart
Grundlage hierfür war COBOL-85
ohne Report Writer, Segmentierung, debugging mit Sperren auf Dateien, Interaktion über DISPLAY/ACCEPT
ENTWICKLUNG / STANDARDIS. [3/4]
Standardisierung durch ANSI
1960: „Committee on Computers and Information Processing”mit Namen X3 geschaffen
weiterhin wurde ein Unterausschuß X3.4 für Programmier- sprachen eingerichtet
dieser richtete wiederum einen Unterausschuß X3.4.4 ein,der sich mit COBOL befassen sollte
23.10.1968: erster Standard „USA Standard COBOL 1968“(veröffentlicht als Dokument X3.23-1968)
nachfolgend wurde der Ausschuß X3.4.4 zum heute noch vorhandenen Technischen Komitee X3J4 gebildet
ENTWICKLUNG / STANDARDIS. [4/4]
Standardisierung durch ANSI [Ergänzung]
Mai 1974: „American National Standard COBOL 1974“
April 1985: „COBOL-85“ von dem inzwischen ANSI heißendenEntscheidungsgremium als ANS X3.23-1985 veröffentlicht
erstmals beliebig geschachtelte Entscheidungs- (IF/EVALUATE) und Wiederholungsanweisungen (PERFORM) möglich
somit Einführung der strukturierten Programmierung
aktueller Standard von 2002
internationale Zeichensätze, einschließlich UNICODE objektorientierte Programmierung, bedingte Compilierung, u.a.
nächster Standard wird für 2008 vorbereitet
SYNTAX (C-80) [1/20]
Aufbau eines COBOL-Programms
Programmzeile entspricht Format einer Lochkarte
Buchstaben sind festgelegte Positionen die ersten 6 und letzten 8 Positionen wurden auf Lochkarten
für interne Informationen genutzt (z.B. fortlaufende Nummern)
Struktur
1 2 3 4 5 6 7 8 9 10 11 12 13 14 … 80
C A B
DIVISION SECTION
Paragraph Satz Anweisung
SYNTAX (C-80) [2/20]
die DIVISIONs
4 Pflichtbestandteile eines jeden Programms
IDENTIFICATION DIVISION ENVIRONMENT DIVISION DATA DIVISION PROCEDURE DIVISION
IDENTIFICATION DIVISION
dient der Programm-Erkennung enthält Schlüsselwort „PROGRAM-ID“
IDENTIFICATION DIVISION.PROGRAM-ID. MEINPROGGI.
SYNTAX (C-80) [3/20]
die DIVISIONs [Ergänzung]
ENVIRONMENT DIVISION
Informationen über die „Umwelt“ des Programms enthält zwei SECTIONS:
CONFIGURATION SECTIONbeschreibt den Computer selbst
INPUT-OUTPUT SECTIONstellt Verbindung zur „Außenwelt“ dar
CONFIGURATION SECTION.SOURCE-COMPUTER. WINDOWS.OBJECT-COMPUTER. WINDOWS.
SYNTAX (C-80) [4/20]
die DIVISIONs [Ergänzung]
DATA DIVISION
Informationen zu Daten und Variablen enthält die WORKING-STORAGE SECTION
PROCEDURE DIVISION
enthält das eigentliche Programm abgeschlossene Arbeitsanweisung mittels Punktierung DIALOG SECTION für Interaktion mit Nutzer
DATA DIVISION.WORKING-STORAGE SECTION.01 MEINEVARI PIC X(25).
SYNTAX (C-80) [5/20]
Variablen in COBOL
müssen außnahmslos vor Beginn der eigentlichenBefehlszeilen bekannt gemacht werden
in der WORKING-STORAGE SECTION definiert dient der Reservierung des nötigen Speichers dürfen nicht gleichen Namen wie Befehlsworte haben max. Länge beträgt 30 Zeichen dürfen keine Leerzeichen enthalten Bindestrich nicht am Anfang oder am Ende müssen mindestens einen Buchstaben enthalten
Art und Länge einer Variable müssen festgelegt werden (PIC)
SYNTAX (C-80) [6/20]
Variablen in COBOL [Ergänzung 1]
PICTURE IS (kurz: PIC)
Datenhaltung: A … alphanumerische Zeichen X … alphanumerische Zeichen / nummerische
Werte
Rechnen: 9 … numerische Werte V … gedachter Dezimalpunkt für Nachkommastellen
Ausgabe: S … Zulassen von negativen Werten Z … unterdrückt führende Nullen . … Dezimalpunkt
SYNTAX (C-80) [7/20]
Variablen in COBOL [Ergänzung 2]
Bsp. 1:
3-stellige Zahl (MEINEZAHL) 5-stelliger String (MEINSATZ)
Bsp. 2:
„nr 51“ kann gespeichert werden
WORKING-STORAGE SECTION.01 MEINEZAHL PIC 999.01 MEINSATZ PIC AAAAA.
WORKING-STORAGE SECTION.01 MEINSATZ PIC XXXXX.
SYNTAX (C-80) [8/20]
Variablen in COBOL [Ergänzung 3]
Bsp. 3:
999 ist äquivalent zu 9(3) A(80) wäre ein String, für den 80 Byte reserviert werden
Bsp. 4:
Verschieben von DMARK in DMOUT mittels MOVE
WORKING-STORAGE SECTION.01 MEINEZAHL PIC 9(3).01 MEINSATZ PIC A(5).
01 DMARK PIC 99999V99.01 DMOUT PIC 99999.99.
SYNTAX (C-80) [9/20]
einfache Befehle
ACCEPT <Variable>
Eingabeaufforderung an Nutzer es gilt: LängeEINGABEWERT ≤ LängeSPEICHERPLATZ
DISPLAY <Variable>
Ausgabe auf Bildschirm „DISPLAY SPACES.“ druckt eine Zeile Leerzeichen
VALUE IS <Konstante>
01 DMARK PIC 999 VALUE IS 325.01 NUMMER PIC 999 VALUE IS ZEROES.
SYNTAX (C-80) [10/20]
einfache Befehle [Ergänzung 1]
MOVE <Quelle> TO <Ziel>
WORKING-STORAGE SECTION.01 DM PIC 999V99.01 DMOUT PIC ZZ9.99.PROCEDURE DIVISION.ANFANG. DISPLAY “ZAHL EINGEBEN“. ACCEPT DM. DISPLAY DM. MOVE DM TO DMOUT. DISPLAY SPACES. DISPLAY DMOUT.ENDE. STOP RUN.
ZAHL EINGEBEN15.2201522
15.22
SYNTAX (C-80) [11/20]
einfache Befehle [Ergänzung 2]
MOVE ALL <Var/Konst> TO <Variable>
füllt <Variable> mit <Var> oder <Konst>
erzeugt einen String der 40x das Zeichen „=“ enthält
GO TO <Paragraph>
unbedingter Sprung innerhalb eines Programms kann zur Endlosschleife führen
01 ZEILE PIC A(40).PROCEDURE DIVISION. MOVE ALL “=“ TO ZEILE.
SYNTAX (C-80) [12/20]
einfache Befehle [Ergänzung 3]
ADD <Zahl1[ Zahl2 Zahl3 … ZahlN]> TO <Zahl>
SUBSTRACT <Zahl1> FROM <Zahl2>
Umgang mit negativen Zahlen:
PIC bei Ausgabevariablen: —ZZ9 … zeigt nur Minus, falls es autaucht +ZZ9 … zeigt das jeweils vorhandene Vorzeichen
PIC bei Rechenvariablen: S999 … vorzeichenbehaftete Variable
SYNTAX (C-80) [13/20]
einfache Befehle [Ergänzung 4]
MULTIPLY <Zahl1> BY <Zahl2>
DIVIDE <Zahl1> INTO <Zahl2>
COMPUTE <Ergebnis> = <…Formel…>
COBOL nicht für mathem. Probleme konzipiert <…Formel…> muss nun { + — * / } enthalten
ROUNDED
ADD ZAHL1 TO ZAHL2 ROUNDED.COMPUTE ERGEBNIS ROUNDED = ZAHL1 + ZAHL2.
SYNTAX (C-80) [14/20]
einfache Befehle [Ergänzung 5]
GIVING
Ergebnis halten vergleichbar mit MOVE TO
ON SIZE ERROR <Anweisung>
ruft eine <Anweisung> bei Variablenüberlauf
SUBSTRACT ZAHL1 FROM ZAHL2 GIVING ZAHL3.
ADD 1 TO ZAHL ON SIZE ERROR GO TO ANFANG.
SYNTAX (C-80) [15/20]
spezielle Befehle
PERFORM
Aufruf eines Unterprogramms
PERFORM <Paragraph> arbeite alle Anweisungen ab <Paragraph>
PERFORM <Para1> THRU <Para2> arbeite alle Anweisungen von <Para1> bis <Para2> ab
PERFORM <Section> arbeite alle Anweisungen innerhalb <Section> ab
PERFORM <Para./Sec.> <Anzahl> TIMES
SYNTAX (C-80) [16/20]
spezielle Befehle [Ergänzung 1]
PERFORM UNTIL
Abarbeiten von endgeprüften Schleifen
Vergleichsoperatoren:
(NOT) = (NOT) > (NOT) <
mehrfach Bedingungen durch AND bzw. OR
PERFORM <UP> UNTIL <Bedingung(en)>.
SYNTAX (C-80) [17/20]
spezielle Befehle [Ergänzung 2]
PERFORM VARYING
Abarbeiten von FOR - Schleifen
<Variable> wird auf <Startwert> gesetzt undsolange um <Inc> erhöht bis <Bedingung> erfüllt ist
Unterprogramme sind auch verschachtelbar (AFTER)
PERFORM <UP> VARYING <Variable> FROM <Startwert> BY <Inc> UNTIL <Bedingung>.
PERFORM AUSSEN VARYING COUNT FROM 1 BY 1 UNTIL AUSSEN = 4 AFTER INNEN FROM 1 BY 1 UNTIL INNEN = 2.
SYNTAX (C-80) [18/20]
spezielle Befehle [Ergänzung 3]
IF ELSE
IF <Bedingung(en)> <Anweisung>.
IF <Bedingung(en)> <Anweisung1>
<Anweisung2>…<AnweisungN>.
IF <Bedingung(en)> <Anweisung(en)> ELSE <Anweisung(en)>.
SYNTAX (C-80) [19/20]
Besonderheiten
SPECIAL–NAMES
Ersetzung reservierter Wörter mit eigenen oderanderen reservierten Wörtern
Ersetzung von $ durch DM Ersetzung von . durch ,
CONFIGURATION SECTION.SOURCE-COMPUTER.
WINDOWS.OBJECT-COMPUTER.
WINDOWS.SPECIAL-NAMES. CURRENCY SIGN IS “DM“.SPECIAL-NAMES. DECIMAL-POINT IS COMMA.
SYNTAX (C-80) [20/20]
Besonderheiten [Ergänzung]
COPY <Dateiname>
zusätzlicher Quelltext aus einer externen Datei wird vom Compiler geladen und mit übersetzt
CALL “<Name>“
aufrufen eines externen Programms aufgerufenes Programm muss eine LINKAGE SECTION
enthalten, in der alle Datenbereiche der Übergabe undRückgabe definiert sind
COBOL heute [1/3]
eine der am weitesten verbreitete Programmiersprache (besonders für kommerzielle Zwecke)
Haupteinsatzgebiet: betriebliche Datenverarbeitung
an Stapelverarbeitung orientiert Schwerpunkt im Verarbeitungsteil von Programmen
(bzgl. Aufteilung in GUI, Datenhaltung, Verarbeitung)
spezifische und unabhängige GUI-Lösungen möglich
Browser-Schnittstellen mit JAVA Visual Basic unter Windows
COBOL heute [2/3]
hilfreich bei Erstellung von Online-Systemen (CICS, IMS)
Transaktionsmonitore mit COBOL-tauglicher API IMS: reines CALL-Interface CICS: als EXEC-Sprache
(Umsetzung in COBOL-Code durch Präprozessor)
spezifische und unabhängige GUI-Lösungen möglich
Browser-Schnittstellen mit JAVA Visual Basic unter Windows
embedded SQL, stored Procedures
COBOL heute [3/3]
nested program(Prozeduren mit lokalen Variablen)
instrinsic functions(u.a. mathematische Funktionen)
Rekursion bei externen Calls
Objektorientierte Programmierung
integrierter XML-Parser (XML PARSE)
COBOL .Net (Integration in ASP)
QUELLEN
WIKIPEDIA
http://de.wikipedia.org/wiki/COBOL und weiterführende LINKs
Buch: „COBOL-80“
VORTRAG
Christian Theil, 02IN gehalten am: 12.01.2006 Oberseminar: Geschichte der Informatik (WS2005/06)