teil 1: grundlagen - cps4it · inhalt • einführung • programmaufbau oder „das erste...

169
cps4it consulting, projektmanagement und seminare für die informationstechnologie Ralf Seidler, Stromberger Straße 36A, 55411 Bingen Fon: +49-6721-992611, Fax: +49-6721-992613, Mail: [email protected] Internet: http://www.cps4it.de COBOL Teil 1: Grundlagen

Upload: nguyenngoc

Post on 21-Aug-2019

226 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Teil 1: Grundlagen - cps4it · Inhalt • Einführung • Programmaufbau oder „Das erste Programm!“ • Arbeiten mit einfachen nummerischen Daten • Schleifen mit Zähler •

cps4itconsulting, projektmanagement und seminare für die informationstechnologie

Ralf Seidler, Stromberger Straße 36A, 55411 Bingen

Fon: +49-6721-992611, Fax: +49-6721-992613, Mail: [email protected]

Internet: http://www.cps4it.de

COBOL

Teil 1: Grundlagen

Page 2: Teil 1: Grundlagen - cps4it · Inhalt • Einführung • Programmaufbau oder „Das erste Programm!“ • Arbeiten mit einfachen nummerischen Daten • Schleifen mit Zähler •

Inhaltsverzeichnis

• Seite 5: Einführung

• Seite 29: Programmaufbau

• Seite 61: Nummerische Daten

• Seite 93: Schleifen mit Zähler

• Seite 105: Entscheidungen

• Seite 133: Schleifen mit Bedingungen

• Seite 141: Sections

• Seite 157: Tabellenverarbeitung

• Seite 165: sequentielle Dateien

14. August 2019 Seite 3COBOL Grundlagen 1

Page 3: Teil 1: Grundlagen - cps4it · Inhalt • Einführung • Programmaufbau oder „Das erste Programm!“ • Arbeiten mit einfachen nummerischen Daten • Schleifen mit Zähler •

Ziele des Seminars

• Sprache COBOL kennen lernen

• Syntax von COBOL beherrschen – Grundlagen

• Praxisbeispiele kennen lernen

• üben … üben … üben

• Besonderheiten

14. August 2019 Seite 4COBOL Grundlagen 1

Page 4: Teil 1: Grundlagen - cps4it · Inhalt • Einführung • Programmaufbau oder „Das erste Programm!“ • Arbeiten mit einfachen nummerischen Daten • Schleifen mit Zähler •

Inhalt

• Einführung

• Programmaufbau oder „Das erste Programm!“

• Arbeiten mit einfachen nummerischen Daten

• Schleifen mit Zähler

• Entscheidungen

• Schleifen mit Bedingungen

• Sections

• Tabellenverarbeitung

• sequentielle Dateien

14. August 2019 Seite 5COBOL Grundlagen 1

Page 5: Teil 1: Grundlagen - cps4it · Inhalt • Einführung • Programmaufbau oder „Das erste Programm!“ • Arbeiten mit einfachen nummerischen Daten • Schleifen mit Zähler •

Einführung

Begriffe

14. August 2019 Seite 6COBOL Grundlagen 1

COBOL

ANSI

HistorieStandard IBM

CODASYL

Page 6: Teil 1: Grundlagen - cps4it · Inhalt • Einführung • Programmaufbau oder „Das erste Programm!“ • Arbeiten mit einfachen nummerischen Daten • Schleifen mit Zähler •

Einführung

Entstehung

• Common Business Oriented Language

• überwiegend kaufmännischer Bereich

• leicht lesbar

• gut für das Bearbeiten von Daten

• Entwicklung auf Anregung von US-

Verteidigungsministerium -> CODASYL

• Vorstellung Standard: 29. Mai 1959

• erster Standard April 1960 -> COBOL 60

14. August 2019 Seite: 7COBOL Grundlagen 1

Page 7: Teil 1: Grundlagen - cps4it · Inhalt • Einführung • Programmaufbau oder „Das erste Programm!“ • Arbeiten mit einfachen nummerischen Daten • Schleifen mit Zähler •

Einführung

Standards und Compiler

• COBOL 60

• OS/VS COBOL (COBOL 68)

• VS COBOL II (ANS-85)

• COBOL/370

• COBOL for MVS and VM

• Enterprise COBOL for z/OS and OS/390

• zur Zeit:

– Version 4 Release 2

– Version 6 Release 1

– Version 6 Release 2

14. August 2019 Seite: 8COBOL Grundlagen 1

Page 8: Teil 1: Grundlagen - cps4it · Inhalt • Einführung • Programmaufbau oder „Das erste Programm!“ • Arbeiten mit einfachen nummerischen Daten • Schleifen mit Zähler •

Einführung

Literatur – 1

• Bookmanager

– Programming Guide

– Language Reference

– local im Intranet oder im Internet bei IBM

• Internetseiten

– siehe Suchmaschinen

– www.cobol-workshop.de

– COBOL-Caféhttps://www.ibm.com/developerworks/community/groups/service/html/com

munitystart?communityUuid=31c890c6-ace1-4eeb-af6b-5950f3a1a5d1

– etc.

14. August 2019 Seite: 9COBOL Grundlagen 1

Page 9: Teil 1: Grundlagen - cps4it · Inhalt • Einführung • Programmaufbau oder „Das erste Programm!“ • Arbeiten mit einfachen nummerischen Daten • Schleifen mit Zähler •

Einführung

Literatur – 2

• Oldenbourg Verlag

– COBOL € 54,80

• Spektrum Akademie Verlag

– Einführung in die Progr.sprache COBOL € 29,95

• siehe Suchmaschinen

• IBM Dokumentationhttps://www-01.ibm.com/support/docview.wss?uid=swg27036733

• Firmeninterne Unterlagen

– Richtlinien

14. August 2019 Seite: 10COBOL Grundlagen 1

Page 10: Teil 1: Grundlagen - cps4it · Inhalt • Einführung • Programmaufbau oder „Das erste Programm!“ • Arbeiten mit einfachen nummerischen Daten • Schleifen mit Zähler •

Einführung

Sätze

• COBOL ist eine extrem alte Programmiersprache.

COBOL unterstützt kaum moderne Programmierkonzepte. COBOL-

Programme sind extrem schlecht verständlich und sehr aufwändig zu

warten. (www.aboutIT.de – Adresse existiert nicht mehr )

• Auf Cobol basierende Mission-critical-Anwendungen lassen sich

dreimal schneller webfähig machen als mit Java - und das zu einem

Drittel der Kosten. Dies ist das Ergebnis einer Studie, die das DePaul

University's Laboratory in Chicago durchgeführt hat.

• COBOL ist etwas für drittklassige Entwickler und altbackene

Firmenstrukturen.

• Ein Projekt, dessen Anwendung Plattform übergreifend lauffähig sein

soll, muss alle Umgebungen und damit alle Sprachen mit ihren

jeweiligen Vorteilen nutzen dürfen.

14. August 2019 Seite: 11COBOL Grundlagen 1

Page 11: Teil 1: Grundlagen - cps4it · Inhalt • Einführung • Programmaufbau oder „Das erste Programm!“ • Arbeiten mit einfachen nummerischen Daten • Schleifen mit Zähler •

Einführung

Computerworld Umfrage 2006 – 1

14. August 2019 Seite: 12COBOL Grundlagen 1

Quelle: 28.07.2010 08:45 Uhr http://www.computerworld.com/s/article/266156/Cobol_Not_Dead_Yet

Page 12: Teil 1: Grundlagen - cps4it · Inhalt • Einführung • Programmaufbau oder „Das erste Programm!“ • Arbeiten mit einfachen nummerischen Daten • Schleifen mit Zähler •

Einführung

Computerworld Umfrage 2006 – 2

14. August 2019 Seite: 13COBOL Grundlagen 1

Quelle: 28.07.2010 08:45 Uhr http://www.computerworld.com/s/article/266156/Cobol_Not_Dead_Yet

Page 13: Teil 1: Grundlagen - cps4it · Inhalt • Einführung • Programmaufbau oder „Das erste Programm!“ • Arbeiten mit einfachen nummerischen Daten • Schleifen mit Zähler •

Einführung

Computerworld Umfrage 2006 – 3

14. August 2019 Seite: 14COBOL Grundlagen 1

Quelle: 28.07.2010 08:45 Uhr http://www.computerworld.com/s/article/266156/Cobol_Not_Dead_Yet

Page 14: Teil 1: Grundlagen - cps4it · Inhalt • Einführung • Programmaufbau oder „Das erste Programm!“ • Arbeiten mit einfachen nummerischen Daten • Schleifen mit Zähler •

Einführung

Ermittlung auf Basis GitHub (Repository)

14. August 2019 Seite: 15COBOL Grundlagen 1

Quelle: 14.08.2019 11:30 Uhr https://jaxenter.de/programmiersprachen-rankings-49399

Page 15: Teil 1: Grundlagen - cps4it · Inhalt • Einführung • Programmaufbau oder „Das erste Programm!“ • Arbeiten mit einfachen nummerischen Daten • Schleifen mit Zähler •

Einführung

Ermittlung RedMonk Ranking (GitHub und StackOverflow)

14. August 2019 Seite: 16COBOL Grundlagen 1

Quelle: 14.08.2019 11:30 Uhr https://jaxenter.de/programmiersprachen-rankings-49399

Page 16: Teil 1: Grundlagen - cps4it · Inhalt • Einführung • Programmaufbau oder „Das erste Programm!“ • Arbeiten mit einfachen nummerischen Daten • Schleifen mit Zähler •

Einführung

PYPL Index (Popularity of Progr. Lang. basiert auf Google Trends)

14. August 2019 Seite: 17COBOL Grundlagen 1

Quelle: 14.08.2019 11:30 Uhr https://jaxenter.de/programmiersprachen-rankings-49399

Page 17: Teil 1: Grundlagen - cps4it · Inhalt • Einführung • Programmaufbau oder „Das erste Programm!“ • Arbeiten mit einfachen nummerischen Daten • Schleifen mit Zähler •

Einführung

New Relic (basiert auf Stellenausschreibungen)

14. August 2019 Seite: 18COBOL Grundlagen 1

Quelle: 14.08.2019 11:30 Uhr https://jaxenter.de/programmiersprachen-rankings-49399

Page 18: Teil 1: Grundlagen - cps4it · Inhalt • Einführung • Programmaufbau oder „Das erste Programm!“ • Arbeiten mit einfachen nummerischen Daten • Schleifen mit Zähler •

Einführung

Blog aus 2016 (Zitate) – 1

• COBOL still accounts for more than 70 percent

of the business transactions that take place in

the world today.

• Researchers at Lero claim that there are more

than 200 times more COBOL transactions than

Google searches worldwide.

14. August 2019 Seite: 19COBOL Grundlagen 1

Quelle: 14.08.2019 12:40 Uhrhttps://freedomafterthesharks.com/2016/06/27/exactly-what-is-cobol-and-why-is-cobol-still-a-widely-used-language-in-it/

Page 19: Teil 1: Grundlagen - cps4it · Inhalt • Einführung • Programmaufbau oder „Das erste Programm!“ • Arbeiten mit einfachen nummerischen Daten • Schleifen mit Zähler •

Einführung

Blog aus 2016 (Zitate) – 2

• There are over 220 billion lines of COBOL in

existence, a figure which equates to around 80%

of the world’s actively used code.

• There are estimated to be over a million COBOL

programmers in the world today.

14. August 2019 Seite: 20COBOL Grundlagen 1

Quelle: 14.08.2019 12:40 Uhrhttps://freedomafterthesharks.com/2016/06/27/exactly-what-is-cobol-and-why-is-cobol-still-a-widely-used-language-in-it/

Page 20: Teil 1: Grundlagen - cps4it · Inhalt • Einführung • Programmaufbau oder „Das erste Programm!“ • Arbeiten mit einfachen nummerischen Daten • Schleifen mit Zähler •

Einführung

Blog aus 2016 (Zitate) – 3

• Today COBOL is everywhere, yet is largely

unheard of among the millions of people who

interact with it on a daily basis. Its reach is so

pervasive that it is almost unthinkable that the

average person could go a day without it.

Whether using an ATM, stopping at traffic lights

or purchasing a product online, the vast majority

of us will use COBOL in one form or another as

part of our daily existence.

14. August 2019 Seite: 21COBOL Grundlagen 1

Quelle: 14.08.2019 12:40 Uhrhttps://freedomafterthesharks.com/2016/06/27/exactly-what-is-cobol-and-why-is-cobol-still-a-widely-used-language-in-it/

Page 21: Teil 1: Grundlagen - cps4it · Inhalt • Einführung • Programmaufbau oder „Das erste Programm!“ • Arbeiten mit einfachen nummerischen Daten • Schleifen mit Zähler •

Einführung

Blog aus 2016 (Zitate) – 4

• Every year, COBOL systems are responsible for

transporting up to 72,000 shipping containers,

caring for 60 million patients, processing 80% of

point-of-sales transactions and connecting 500

million mobile phone users. COBOL manages

our train timetables, air traffic control systems,

holiday bookings and supermarket stock

controls. And the list could go on.

• COBOL makes the world go round

14. August 2019 Seite: 22COBOL Grundlagen 1

Quelle: 14.08.2019 12:40 Uhrhttps://freedomafterthesharks.com/2016/06/27/exactly-what-is-cobol-and-why-is-cobol-still-a-widely-used-language-in-it/

Page 22: Teil 1: Grundlagen - cps4it · Inhalt • Einführung • Programmaufbau oder „Das erste Programm!“ • Arbeiten mit einfachen nummerischen Daten • Schleifen mit Zähler •

Einführung

Warum COBOL? – 1

• Mainframe Applikationen

– sind groß, sehr groß, sehr sehr groß

– haben sehr sehr komplexe Geschäftslogik

– leben lange

– sind dynamisch

– sind geschäftskritisch

– verarbeiten riesige Datenmengen

– sind flexibel für neue Technik

14. August 2019 Seite: 23COBOL Grundlagen 1

Page 23: Teil 1: Grundlagen - cps4it · Inhalt • Einführung • Programmaufbau oder „Das erste Programm!“ • Arbeiten mit einfachen nummerischen Daten • Schleifen mit Zähler •

Einführung

Warum COBOL? – 2

• COBOL ist

– selbst-dokumentierend

– einfach zu lernen

– portierbar

– performant

– skalierbar

– universell benutzt

– offen

– vollständig

– erweiterbar

– gut und einfach wartbar

14. August 2019 Seite: 24COBOL Grundlagen 1

Page 24: Teil 1: Grundlagen - cps4it · Inhalt • Einführung • Programmaufbau oder „Das erste Programm!“ • Arbeiten mit einfachen nummerischen Daten • Schleifen mit Zähler •

Einführung

Warum COBOL? – 3

• Nehmen wir an, alle Firmen, die COBOL

einsetzen, würden in eine andere Sprache und

Plattform investieren:

– Sie wären – nach seriösen Hochrechnungen –

mindestens 10 Jahre alleine damit beschäftigt, die

Anwendungen zu portieren.

– Sie hätten Anwendungen, die langsamer laufen.

– Sie hätten Anwendungen, die (wieder) fehlerhaft sind.

– …

• Das passiert nicht, so wie Englisch nicht

abgeschafft wird. ;-))

14. August 2019 Seite: 25COBOL Grundlagen 1

Page 25: Teil 1: Grundlagen - cps4it · Inhalt • Einführung • Programmaufbau oder „Das erste Programm!“ • Arbeiten mit einfachen nummerischen Daten • Schleifen mit Zähler •

Einführung

Warum COBOL? – 4

• COBOL wurde mehrfach tot gesagt durch

– Fortran: 1960s

– PL/I: 1970s

– PASCAL: 1980s

– Smalltalk: 1985

– C: 1990

– C++: 1995

– Java: 1998

– C#: 2001

– Cloud: 2018 “Mainframe ist bald tot”

– Lassen wir uns überraschen. ;-)

14. August 2019 Seite: 26COBOL Grundlagen 1

Page 26: Teil 1: Grundlagen - cps4it · Inhalt • Einführung • Programmaufbau oder „Das erste Programm!“ • Arbeiten mit einfachen nummerischen Daten • Schleifen mit Zähler •

Einführung

Warum COBOL? – 5

• Fazit:

COBOL is the language of the future!

14. August 2019 Seite: 27COBOL Grundlagen 1

Page 27: Teil 1: Grundlagen - cps4it · Inhalt • Einführung • Programmaufbau oder „Das erste Programm!“ • Arbeiten mit einfachen nummerischen Daten • Schleifen mit Zähler •

Einführung

Übung(en)

• Anmelden im TSO

• Test der User-IDen

• Bibliothek für Programme erstellen

– userid.KURS.COBOL

• Bibliothek für Jobcontrol erstellen

– userid.KURS.JCLCOBOL

14. August 2019 Seite: 28COBOL Grundlagen 1

Page 28: Teil 1: Grundlagen - cps4it · Inhalt • Einführung • Programmaufbau oder „Das erste Programm!“ • Arbeiten mit einfachen nummerischen Daten • Schleifen mit Zähler •

Inhalt

• Einführung

• Programmaufbau oder „Das erste Programm!“

• Arbeiten mit einfachen nummerischen Daten

• Schleifen mit Zähler

• Entscheidungen

• Schleifen mit Bedingungen

• Sections

• Tabellenverarbeitung

• sequentielle Dateien

14. August 2019 Seite 29COBOL Grundlagen 1

Page 29: Teil 1: Grundlagen - cps4it · Inhalt • Einführung • Programmaufbau oder „Das erste Programm!“ • Arbeiten mit einfachen nummerischen Daten • Schleifen mit Zähler •

Programmaufbau

Begriffe

14. August 2019 Seite 30COBOL Grundlagen 1

Kom-

mentar

FeldtypenSpalten Befehle

Division Zeichen-

vorrat

Syntax

Section

A-Bereich

B-Bereich

Page 30: Teil 1: Grundlagen - cps4it · Inhalt • Einführung • Programmaufbau oder „Das erste Programm!“ • Arbeiten mit einfachen nummerischen Daten • Schleifen mit Zähler •

Programmaufbau

ein einfaches Programm – 1

IDENTIFICATION DIVISION.

PROGRAM-ID. XXZ01.

*

ENVIRONMENT DIVISION.

INPUT-OUTPUT SECTION.

FILE-CONTROL.

SELECT AUSGABE TO DRUCKER.

*

DATA DIVISION.

FILE SECTION.

FD AUSGABE.

*

01 AUSGABE-SATZ PIC X(80).

*

14. August 2019 Seite: 31COBOL Grundlagen 1

Page 31: Teil 1: Grundlagen - cps4it · Inhalt • Einführung • Programmaufbau oder „Das erste Programm!“ • Arbeiten mit einfachen nummerischen Daten • Schleifen mit Zähler •

Programmaufbau

ein einfaches Programm – 2

*

PROCEDURE DIVISION.

ENDLICH-PROGRAMM-CODE SECTION.

*

OPEN OUTPUT AUSGABE.

*

MOVE ‘http://www.cps4it.de’ TO AUSGABE-SATZ

WRITE AUSGABE-SATZ

*

MOVE ‘das ist eine web-Adresse’ TO AUSGABE-SATZ

WRITE AUSGABE-SATZ

*

CLOSE AUSGABE

GOBACK.

14. August 2019 Seite: 32COBOL Grundlagen 1

Page 32: Teil 1: Grundlagen - cps4it · Inhalt • Einführung • Programmaufbau oder „Das erste Programm!“ • Arbeiten mit einfachen nummerischen Daten • Schleifen mit Zähler •

Programmaufbau

die Divisions

• IDENTIFICATION DIVISION

– Erkennungsteil – muss

• ENVIRONMENT DIVISION

– Beschreibung der Umgebung

• DATA DIVISION

– Datenteil

• PROCEDURE DIVISION

– Prozedurteil

14. August 2019 Seite: 33COBOL Grundlagen 1

Page 33: Teil 1: Grundlagen - cps4it · Inhalt • Einführung • Programmaufbau oder „Das erste Programm!“ • Arbeiten mit einfachen nummerischen Daten • Schleifen mit Zähler •

Programmaufbau

Zeichenvorrat von COBOL – 1

• A-Z

– COBOL-Wörter, Benutzerwörter (z.B. Variablen)

• a-z

– COBOL-Wörter, Benutzerwörter

• 0-9

– Benutzerwörter, nummerische Operationen,

nummerische Konstanten

• blank

– Trennzeichen

14. August 2019 Seite: 34COBOL Grundlagen 1

Page 34: Teil 1: Grundlagen - cps4it · Inhalt • Einführung • Programmaufbau oder „Das erste Programm!“ • Arbeiten mit einfachen nummerischen Daten • Schleifen mit Zähler •

Programmaufbau

Zeichenvorrat von COBOL – 2

• $ €

– Währungszeichen für Druckaufbereitung

• ,

– Druckaufbereitung, Trennung von Wörtern, Trennung

von Indizes bei Tabellen

• .

– Druckaufbereitung, Abschluss von Anweisungen,

Abschluss von Überschriften

14. August 2019 Seite: 35COBOL Grundlagen 1

Page 35: Teil 1: Grundlagen - cps4it · Inhalt • Einführung • Programmaufbau oder „Das erste Programm!“ • Arbeiten mit einfachen nummerischen Daten • Schleifen mit Zähler •

Programmaufbau

Zeichenvorrat von COBOL – 3

• ;

– Trennung von Anweisungen

• =

– Wertzuweisung, Vergleichsoperator

• -

– Bildung von Wörtern, nummerischer Operator,

Zeichen für Druckaufbereitung

• +

– nummerischer Operator, Druckaufbereitung

14. August 2019 Seite: 36COBOL Grundlagen 1

Page 36: Teil 1: Grundlagen - cps4it · Inhalt • Einführung • Programmaufbau oder „Das erste Programm!“ • Arbeiten mit einfachen nummerischen Daten • Schleifen mit Zähler •

Programmaufbau

Zeichenvorrat von COBOL – 4

• ()

– algebraische Klammerung, Tabellenelemente

• *

– Druckaufbereitung, Multiplikation

• **

– Exponentiation

• /

– Bruchstrich, Seitenvorschub

14. August 2019 Seite: 37COBOL Grundlagen 1

Page 37: Teil 1: Grundlagen - cps4it · Inhalt • Einführung • Programmaufbau oder „Das erste Programm!“ • Arbeiten mit einfachen nummerischen Daten • Schleifen mit Zähler •

Programmaufbau

Zeichenvorrat von COBOL – 5

• > < >= <=

– Bedingungen

• ‘ “

– Begrenzungszeichen für nicht nummerische Literale;

ANSI: “

• :

– Teilzeichenketten

• *>

– Inline-Kommentar

14. August 2019 Seite: 38COBOL Grundlagen 1

Page 38: Teil 1: Grundlagen - cps4it · Inhalt • Einführung • Programmaufbau oder „Das erste Programm!“ • Arbeiten mit einfachen nummerischen Daten • Schleifen mit Zähler •

Programmaufbau

Wörter und Literale – 1

• Wörter sind

– reservierte COBOL-Wörter

– Benutzerwörter

• Regeln

– Folge von max. 30 Zeichen

– erlaubt sind Buchstaben, Ziffern und -

– mindestens 1 Buchstabe

– erstes und letztes Zeichen kein -

– Namen für Datenfelder müssen eindeutig sein

14. August 2019 Seite: 39COBOL Grundlagen 1

Page 39: Teil 1: Grundlagen - cps4it · Inhalt • Einführung • Programmaufbau oder „Das erste Programm!“ • Arbeiten mit einfachen nummerischen Daten • Schleifen mit Zähler •

Programmaufbau

Wörter und Literale – 2

• sinnvoll

– Namen sprechend wählen

– lange Namen mit Bindestrichen übersichtlich teilen

– sinnvolle Abkürzungen wählen

• Beispiele:

– SUMME

– A3BX45

– SUMMEDERVERKAUFSNDLSOST

– MENGE-EIN

– GRÖSSER

14. August 2019 Seite: 40COBOL Grundlagen 1

Page 40: Teil 1: Grundlagen - cps4it · Inhalt • Einführung • Programmaufbau oder „Das erste Programm!“ • Arbeiten mit einfachen nummerischen Daten • Schleifen mit Zähler •

Programmaufbau

Figurative Konstanten

• [ALL] ZERO / ZEROS / ZEROES

• [ALL] SPACE / SPACES

• [ALL] HIGH-VALUE / HIGH-VALUES

• [ALL] LOW-VALUE / LOW-VALUES

• [ALL] QUOTE / QUOTES

• ALL ‘literal’

• [ALL] NULL / NULLS

14. August 2019 Seite: 41COBOL Grundlagen 1

Page 41: Teil 1: Grundlagen - cps4it · Inhalt • Einführung • Programmaufbau oder „Das erste Programm!“ • Arbeiten mit einfachen nummerischen Daten • Schleifen mit Zähler •

Programmaufbau

Aufteilung der Spalten – 1

• 01-06 Zeilennummerierung möglich

• 07 Typ der Zeile

– blank normale Zeile

– * Kommentarzeile

– - Fortsetzungszeile

– / Seitenvorschub für Druck

– D Zeile für Debug-Mode (später)

14. August 2019 Seite: 42COBOL Grundlagen 1

Page 42: Teil 1: Grundlagen - cps4it · Inhalt • Einführung • Programmaufbau oder „Das erste Programm!“ • Arbeiten mit einfachen nummerischen Daten • Schleifen mit Zähler •

Programmaufbau

Aufteilung der Spalten – 2

• 08-11 A-Bereich

– Überschriften von DIVISIONs, SECTIONs

– bestimmte Stufennummern (später)

• 12-72 B-Bereich

– Namen der Felddefinitionen

– Befehle

• 73-80 beliebig, unabhängig von COBOL

(ISPF-Profil: NUM COB STD

-> bitte nicht mehr benutzen)

14. August 2019 Seite: 43COBOL Grundlagen 1

Page 43: Teil 1: Grundlagen - cps4it · Inhalt • Einführung • Programmaufbau oder „Das erste Programm!“ • Arbeiten mit einfachen nummerischen Daten • Schleifen mit Zähler •

Programmaufbau

IDENTIFICATION DIVISION – 1

• Inhalte

– IDENTIFICATION DIVISION.

– PROGRAM-ID. Programmname.

– [AUTHOR. Verfasser.]

– [INSTALLATION. Computertyp.]

– [DATE-WRITTEN. Datum der Erstellung.]

– [DATE-COMPILED. Datum der Umwandlung.]

– [SECURITY. Wer darf Programm lesen.]

• 1. Teil im A-Bereich, Inhalte im B-Bereich

14. August 2019 Seite: 44COBOL Grundlagen 1

Page 44: Teil 1: Grundlagen - cps4it · Inhalt • Einführung • Programmaufbau oder „Das erste Programm!“ • Arbeiten mit einfachen nummerischen Daten • Schleifen mit Zähler •

Programmaufbau

IDENTIFICATION DIVISION – 2

• Position

– Überschriften / Paragrafen im A-Bereich

– Inhalte im B-Bereich

• Punkte bei Paragrafen und Inhalten wahlfrei

• Reihenfolge muss nach Norm eingehalten

werden; Compiler braucht das nicht

• dringende Empfehlung: nur Mussangaben

verwenden, da die Kannangaben von ANSI als

“obsolete” gekennzeichnet wurden

14. August 2019 Seite: 45COBOL Grundlagen 1

Page 45: Teil 1: Grundlagen - cps4it · Inhalt • Einführung • Programmaufbau oder „Das erste Programm!“ • Arbeiten mit einfachen nummerischen Daten • Schleifen mit Zähler •

Programmaufbau

ENVIRONMENT DIVISION

• Beschreibung der Umgebung

– Namen

– Organisationsformen

– Zugriffsmethoden

• 2 Kapitel

– CONFIGURATION SECTION

– INPUT-OUTPUT SECTION

14. August 2019 Seite: 46COBOL Grundlagen 1

Page 46: Teil 1: Grundlagen - cps4it · Inhalt • Einführung • Programmaufbau oder „Das erste Programm!“ • Arbeiten mit einfachen nummerischen Daten • Schleifen mit Zähler •

Programmaufbau

ENVIRONMENT DIVISION – CONFIGURATION SECTION – 1

• Inhalte

– [ENVIRONMENT DIVISION.]

– [CONFIGURATION SECTION.]

– [SOURCE-COMPUTER. Comp-name-1

[with debugging mode]].

– [OBJECT-COMPUTER. Comp-name-2.]

– [SPECIAL-NAMES. Spezialangaben.]

• 1. Teil im A-Bereich, Inhalte im B-Bereich

14. August 2019 Seite: 47COBOL Grundlagen 1

Page 47: Teil 1: Grundlagen - cps4it · Inhalt • Einführung • Programmaufbau oder „Das erste Programm!“ • Arbeiten mit einfachen nummerischen Daten • Schleifen mit Zähler •

Programmaufbau

ENVIRONMENT DIVISION – CONFIGURATION SECTION – 2

• Beispiele für SPECIAL-NAMES

– DECIMAL-POINT IS COMMA.

– SYSOUT IS AUSGABE.

– PAGE IS NEUE-SEITE.

– ALPHA-TEST IS ‘A’ ALSO ‘a’ etc.

• Ergebnisse

– Komma wird benutzt

– DISPLAY UPON AUSGABE. (statt SYSOUT)

– WRITE ... AFTER ... NEUE-SEITE (statt PAGE)

– SORT mit a = A / auch Abfragen? -> testen!

14. August 2019 Seite: 48COBOL Grundlagen 1

Page 48: Teil 1: Grundlagen - cps4it · Inhalt • Einführung • Programmaufbau oder „Das erste Programm!“ • Arbeiten mit einfachen nummerischen Daten • Schleifen mit Zähler •

Programmaufbau

ENVIRONMENT DIVISION – INPUT-OUTPUT SECTION

• Organisationsform der Dateien

– direkt, relativ, sequentiell

• Zugriffsmethode

– direkt, sequentiell, dynamisch

– Returncode Behandlung

• Beispiele später

14. August 2019 Seite: 49COBOL Grundlagen 1

Page 49: Teil 1: Grundlagen - cps4it · Inhalt • Einführung • Programmaufbau oder „Das erste Programm!“ • Arbeiten mit einfachen nummerischen Daten • Schleifen mit Zähler •

Programmaufbau

DATA DIVISION

14. August 2019 Seite: 50COBOL Grundlagen 1

DATA DIVISION

WORKING-STORAGE

SECTION

FILE

SECTION

LINKAGE

SECTION

Datei 1Datei 2

Datei n

Var 1Var n

Var n

Parm 1Parm 2

Parm n

Page 50: Teil 1: Grundlagen - cps4it · Inhalt • Einführung • Programmaufbau oder „Das erste Programm!“ • Arbeiten mit einfachen nummerischen Daten • Schleifen mit Zähler •

Programmaufbau

DATA DIVISION – Datendefinition

• Format:

• Stufennummer datenname KLAUSEL

• Beispiel:*

01 EINGABE-SATZ PIC X(80).

01 AUSGABE-SATZ PIC X(80).

01 ZIFFER PIC 9(01).

01 FUENF-ZIFFERN PIC 9(05).

789012345

14. August 2019 Seite: 51COBOL Grundlagen 1

Page 51: Teil 1: Grundlagen - cps4it · Inhalt • Einführung • Programmaufbau oder „Das erste Programm!“ • Arbeiten mit einfachen nummerischen Daten • Schleifen mit Zähler •

Programmaufbau

Feldtypen

• alphanummerisch

– 01 FELD PIC X(020).

• alphabetisch

– 01 FELD PIC A(020).

• nummerisch binär

– 01 FELD-BINAER PIC [S]9(08) BINARY.

• nummerisch dezimal

– 01 FELD-DECIMAL PIC [S]9(5)V99

PACKED-DECIMAL.

• nummerisch Display-Feld

– 01 FELD-DISPLAY PIC [S]9(08).14. August 2019 Seite: 52COBOL Grundlagen 1

Page 52: Teil 1: Grundlagen - cps4it · Inhalt • Einführung • Programmaufbau oder „Das erste Programm!“ • Arbeiten mit einfachen nummerischen Daten • Schleifen mit Zähler •

Programmaufbau

Darstellung im hexadezimalen Format

• alphanummerisch / alphabetisch

– ABEND: C1 C2 C5 D5 C4

• nummerisch binär

– 12345: 00 00 30 39

• nummerisch dezimal

– 12345: 12 34 5F 12 34 5C

• nummerisch Display-Feld

– 12345: F1 F2 F3 F4 F5 F1 F2 F3 F4 C5

14. August 2019 Seite: 53COBOL Grundlagen 1

Page 53: Teil 1: Grundlagen - cps4it · Inhalt • Einführung • Programmaufbau oder „Das erste Programm!“ • Arbeiten mit einfachen nummerischen Daten • Schleifen mit Zähler •

Programmaufbau

Stufennummern

• 77 war früher “das übliche” (heute 01 nehmen)

• 66 für Redefinitionen (nicht mehr empfohlen)

• 01, 05, ... für Strukturen

– Beginn auf Doppelwortgrenze ausgerichtet

• 88 Schalter

14. August 2019 Seite: 54COBOL Grundlagen 1

Page 54: Teil 1: Grundlagen - cps4it · Inhalt • Einführung • Programmaufbau oder „Das erste Programm!“ • Arbeiten mit einfachen nummerischen Daten • Schleifen mit Zähler •

Programmaufbau

DATA DIVISION – Datendefinition

• Format:

datenname

Stufennummer FILLER KLAUSEL

blank

14. August 2019 Seite: 55COBOL Grundlagen 1

Page 55: Teil 1: Grundlagen - cps4it · Inhalt • Einführung • Programmaufbau oder „Das erste Programm!“ • Arbeiten mit einfachen nummerischen Daten • Schleifen mit Zähler •

Programmaufbau

DATA DIVISION – Datendefinition – Struktur

*

01 Customer-Record.

05 Customer-Name.

10 Last-Name Pic x(17).

10 [Filler] Pic x.

10 Initials Pic xx.

05 Part-Order.

10 Part-Name Pic x(15).

10 Part-Color Pic x(10).

000111111

789012345

14. August 2019 Seite: 56COBOL Grundlagen 1

01 und 77: A-Bereich

02 bis 49: B-Bereich

Page 56: Teil 1: Grundlagen - cps4it · Inhalt • Einführung • Programmaufbau oder „Das erste Programm!“ • Arbeiten mit einfachen nummerischen Daten • Schleifen mit Zähler •

Programmaufbau

PROCEDURE DIVISION

• Die Logik des Programms oder der Code

• Aufteilung nach Regeln der strukturierten

Programmierung möglich und dringend zu

empfehlen - > später

14. August 2019 Seite: 57COBOL Grundlagen 1

Page 57: Teil 1: Grundlagen - cps4it · Inhalt • Einführung • Programmaufbau oder „Das erste Programm!“ • Arbeiten mit einfachen nummerischen Daten • Schleifen mit Zähler •

Programmaufbau

einfache Befehle – 1

• MOVE

– alpha to alpha

– alpha to numeric

– numeric to alpha

– numeric to numeric

• DISPLAY

– Anzeige von Daten - normalerweise Testhilfe!

– Schreiben auf SYSOUT

• ACCEPT

– Lesen vom System, von SYSIN

14. August 2019 Seite: 58COBOL Grundlagen 1

Page 58: Teil 1: Grundlagen - cps4it · Inhalt • Einführung • Programmaufbau oder „Das erste Programm!“ • Arbeiten mit einfachen nummerischen Daten • Schleifen mit Zähler •

Programmaufbau

einfache Befehle – 2

• CONTINUE

– Leeranweisung

– sehr zu empfehlen

– sinnvoll mit einem Punkt, um das Ende einer

Verarbeitung zu kennzeichnen

– sinnvoll innerhalb von Bedingungen

14. August 2019 Seite: 59COBOL Grundlagen 1

Page 59: Teil 1: Grundlagen - cps4it · Inhalt • Einführung • Programmaufbau oder „Das erste Programm!“ • Arbeiten mit einfachen nummerischen Daten • Schleifen mit Zähler •

Programmaufbau

Übung(en)

• Programm im SCLM anlegen

– Vorführung SCLM und Compile

• Programm schreiben

– lesen 80 Stellen aus SYSIN

– Übertragen in anderes Feld

– schreiben Kommentar und Feld

• JCL schreiben

• Test mit Analyse Joboutput

14. August 2019 Seite: 60COBOL Grundlagen 1

Page 60: Teil 1: Grundlagen - cps4it · Inhalt • Einführung • Programmaufbau oder „Das erste Programm!“ • Arbeiten mit einfachen nummerischen Daten • Schleifen mit Zähler •

Inhalt

• Einführung

• Programmaufbau oder „Das erste Programm!“

• Arbeiten mit einfachen nummerischen Daten

• Schleifen mit Zähler

• Entscheidungen

• Schleifen mit Bedingungen

• Sections

• Tabellenverarbeitung

• sequentielle Dateien

14. August 2019 Seite 61COBOL Grundlagen 1

Page 61: Teil 1: Grundlagen - cps4it · Inhalt • Einführung • Programmaufbau oder „Das erste Programm!“ • Arbeiten mit einfachen nummerischen Daten • Schleifen mit Zähler •

Nummerische Daten

Begriffe

14. August 2019 Seite 62COBOL Grundlagen 1

Kom-

mentar

Feldtypendecimal ADD

COMPUTEDruck

Syntax

Section

hexa-

decimal

Fließ-

komma

Page 62: Teil 1: Grundlagen - cps4it · Inhalt • Einführung • Programmaufbau oder „Das erste Programm!“ • Arbeiten mit einfachen nummerischen Daten • Schleifen mit Zähler •

Nummerische Daten

External decimal

• PIC S9999 [DISPLAY]

– +1234 F1 F2 F3 C4

– -1234 F1 F2 F3 D4

– 1234 F1 F2 F3 C4

• PIC 9999 [DISPLAY]

– 1234 F1 F2 F3 F4*

01 WERT-OHNE-VZ PIC 9999.

77 WERT-MIT-VZ PIC S9(4).

01 WERT-MIT-VZ PIC S9(04) DISPLAY.

14. August 2019 Seite: 63COBOL Grundlagen 1

Auch mit Parameter

leading sign möglich

Page 63: Teil 1: Grundlagen - cps4it · Inhalt • Einführung • Programmaufbau oder „Das erste Programm!“ • Arbeiten mit einfachen nummerischen Daten • Schleifen mit Zähler •

Nummerische Daten

Internal decimal

• PIC S9(5) PACKED-DECIMAL oder

• PIC S9(5) COMP-3

– +1234 01 23 4C

– -1234 01 23 4D

• PIC 9(5) PACKED-DECIMAL oder COMP-3

– +1234 01 23 4F

– -1234 01 23 4F*

01 WERT-MIT-VZ PIC S99999 COMP-3.

14. August 2019 Seite: 64COBOL Grundlagen 1

Page 64: Teil 1: Grundlagen - cps4it · Inhalt • Einführung • Programmaufbau oder „Das erste Programm!“ • Arbeiten mit einfachen nummerischen Daten • Schleifen mit Zähler •

Nummerische Daten

binary

• PIC S9(4) BINARY oder COMP oder COMP-4

– +1234 04 D2

– -1234 FB 2E

• PIC 9(4) BINARY oder COMP oder COMP-4

– +1234 04 D2*

01 WERT-MIT-VZ PIC S9999 COMP.

14. August 2019 Seite: 65COBOL Grundlagen 1

Page 65: Teil 1: Grundlagen - cps4it · Inhalt • Einführung • Programmaufbau oder „Das erste Programm!“ • Arbeiten mit einfachen nummerischen Daten • Schleifen mit Zähler •

Nummerische Daten

Internal Floating Point

• COMP-1

– +1234 43 4D 20 00

• COMP-2

– +1234 43 4D 20 00 00 00 00 00

– -1234 C3 4D 20 00 00 00 00 00*

01 WERT-MIT-FP COMP-1.

• Logik– The leftmost bit contains the sign and the next 7 bits contain the

exponent; the remaining 3 or 7 bytes contain the mantissa.

• Hinweis: benutzt eigene Register; seit 64-bit-

Architektur sehr schnell!14. August 2019 Seite: 66COBOL Grundlagen 1

Page 66: Teil 1: Grundlagen - cps4it · Inhalt • Einführung • Programmaufbau oder „Das erste Programm!“ • Arbeiten mit einfachen nummerischen Daten • Schleifen mit Zähler •

Nummerische Daten

External Floating Point

• PIC +9(2).9(2)E+99 [DISPLAY]

– +1234 4E F1 F2 4B F3 F4 C5 4E F0 F2

– -1234 60 F1 F2 4B F3 F4 C5 4E F0 F2

*

01 WERT-MIT-EXP PIC +99.99E+99.

14. August 2019 Seite: 67COBOL Grundlagen 1

Page 67: Teil 1: Grundlagen - cps4it · Inhalt • Einführung • Programmaufbau oder „Das erste Programm!“ • Arbeiten mit einfachen nummerischen Daten • Schleifen mit Zähler •

Nummerische Daten

Schreibweise und sinnvolle Definitionen

• BINARY (COMP / COMP-4)

• PACKED-DECIMAL (COMP-3)

• immer mit Vorzeichen (schneller)

• gepackt immer mit ungerader Ziffernanzahl

• binär immer S9(4) bzw. S9(8)

• Stellen > 9: nutze gepackt statt binär (noch)

14. August 2019 Seite: 68COBOL Grundlagen 1

Page 68: Teil 1: Grundlagen - cps4it · Inhalt • Einführung • Programmaufbau oder „Das erste Programm!“ • Arbeiten mit einfachen nummerischen Daten • Schleifen mit Zähler •

Nummerische Daten

Übung(en)

• Pgm1 in Datei speichern

• Pgm2 schreiben

– Einlesen verschiedene Formate

– Übertragen und ausgeben versch. Formate

• Jobs mit den verschiedenen Konstellationen

• Test mit Analyse Joboutput / DUMP

14. August 2019 Seite: 69COBOL Grundlagen 1

Page 69: Teil 1: Grundlagen - cps4it · Inhalt • Einführung • Programmaufbau oder „Das erste Programm!“ • Arbeiten mit einfachen nummerischen Daten • Schleifen mit Zähler •

Nummerische Daten

Rechenbefehle

• ADD

• SUBTRACT

• MULTIPLY

• DIVIDE

• COMPUTE

14. August 2019 Seite: 71COBOL Grundlagen 1

Page 70: Teil 1: Grundlagen - cps4it · Inhalt • Einführung • Programmaufbau oder „Das erste Programm!“ • Arbeiten mit einfachen nummerischen Daten • Schleifen mit Zähler •

Nummerische Daten

Rechenbefehl ADD

• Syntax in Kurzfassung und Beispielen

ADD W1 TO W2

ADD 12 TO W2

ADD 12 TO W2 ROUNDED

ADD 12 TO 45 GIVING W3 ROUNDED

ADD CORR STR1 TO STR2 ROUNDED

END-ADD

• Details siehe Language Reference

14. August 2019 Seite: 72COBOL Grundlagen 1

Page 71: Teil 1: Grundlagen - cps4it · Inhalt • Einführung • Programmaufbau oder „Das erste Programm!“ • Arbeiten mit einfachen nummerischen Daten • Schleifen mit Zähler •

Nummerische Daten

Rechenbefehl SUBTRACT

• Syntax in Kurzfassung und Beispielen

SUBTRACT W1 FROM W2

SUBTRACT 12 FROM W2

SUBTRACT 12 FROM W2 ROUNDED

SUBTRACT 12 FROM 45 GIVING W3 ROUNDED

SUBTRACT CORR STR1 FROM STR2 ROUNDED

END-SUBTRACT

• Details siehe Language Reference

14. August 2019 Seite: 73COBOL Grundlagen 1

Page 72: Teil 1: Grundlagen - cps4it · Inhalt • Einführung • Programmaufbau oder „Das erste Programm!“ • Arbeiten mit einfachen nummerischen Daten • Schleifen mit Zähler •

Nummerische Daten

Rechenbefehl MULTIPLY

• Syntax in Kurzfassung und Beispielen

MULTIPLY W1 BY W2

MULTIPLY 12 BY W2

MULTIPLY 12 BY W2 ROUNDED

MULTIPLY 12 BY 45 GIVING W3 ROUNDED

MULTIPLY CORR STR1 BY STR2 ROUNDED

END-MULTIPLY

• Details siehe Language Reference

14. August 2019 Seite: 74COBOL Grundlagen 1

Page 73: Teil 1: Grundlagen - cps4it · Inhalt • Einführung • Programmaufbau oder „Das erste Programm!“ • Arbeiten mit einfachen nummerischen Daten • Schleifen mit Zähler •

Nummerische Daten

Rechenbefehl DIVIDE

• Syntax in Kurzfassung und Beispielen

DIVIDE W1 INTO W2

DIVIDE 12 INTO W2

DIVIDE 12 INTO W2 ROUNDED

DIVIDE 12 INTO 45 GIVING W3 ROUNDED

DIVIDE CORR STR1 INTO STR2 ROUNDED

END-DIVIDE

• Details siehe Language Reference

14. August 2019 Seite: 75COBOL Grundlagen 1

Page 74: Teil 1: Grundlagen - cps4it · Inhalt • Einführung • Programmaufbau oder „Das erste Programm!“ • Arbeiten mit einfachen nummerischen Daten • Schleifen mit Zähler •

Nummerische Daten

Rechenbefehl COMPUTE

• Syntax in Kurzfassung und Beispielen

COMPUTE W1 = W1 + W2

COMPUTE W1 ROUNDED = W1 + W2

COMPUTE W1 = W1**W2 + W2/4 - 2003

ON SIZE ERROR mach was

NOT ON SIZE ERROR mach was anderes

END-COMPUTE

• Details siehe Language Reference

14. August 2019 Seite: 76COBOL Grundlagen 1

Page 75: Teil 1: Grundlagen - cps4it · Inhalt • Einführung • Programmaufbau oder „Das erste Programm!“ • Arbeiten mit einfachen nummerischen Daten • Schleifen mit Zähler •

Nummerische Daten

Übung(en)

• Pgm2 in Datei speichern

• Pgm3xx schreiben

– Probieren Sie verschiedene Befehle auf

nummerischen Feldern

– arbeiten Sie mit ROUNDED und vergleichen Sie die

Ergebnisse

– versuchen Sie, Abbrüche zu erzeugen

– sichern Sie Ihre Pgm-Versionen

• Jobs mit verschiedenen Konstellationen

• Test mit Analyse Joboutput / DUMP

14. August 2019 Seite: 77COBOL Grundlagen 1

Page 76: Teil 1: Grundlagen - cps4it · Inhalt • Einführung • Programmaufbau oder „Das erste Programm!“ • Arbeiten mit einfachen nummerischen Daten • Schleifen mit Zähler •

Nummerische Daten

Druckaufbereitung – Nullenunterdrückung

• Syntaxbeispiele

01 FELDER-FUER-DRUCK.

05 FELD1 PIC 99999.

* 12345 12345

05 FELD2 PIC ZZZ99.

* 00345 bb345

* 00005 bbb05

05 FELD3 PIC ZZZZZ.

* 00000 bbbbb.

* 00345 bb345

14. August 2019 Seite: 79COBOL Grundlagen 1

Page 77: Teil 1: Grundlagen - cps4it · Inhalt • Einführung • Programmaufbau oder „Das erste Programm!“ • Arbeiten mit einfachen nummerischen Daten • Schleifen mit Zähler •

Nummerische Daten

Druckaufbereitung – Währungssymbol fix

• Syntaxbeispiele

01 FELDER-FUER-DRUCK.

05 FELD1 PIC €99999.

* 12345 €12345

05 FELD2 PIC €ZZZ99.

* 00345 €bb345

* 00005 €bbb05

05 FELD3 PIC €ZZZZZ.

* 00000 €bbbbb.

* 00345 €bb345

14. August 2019 Seite: 80COBOL Grundlagen 1

SPECIAL-NAMES:

CURRENCY SIGN IS “€”.

Page 78: Teil 1: Grundlagen - cps4it · Inhalt • Einführung • Programmaufbau oder „Das erste Programm!“ • Arbeiten mit einfachen nummerischen Daten • Schleifen mit Zähler •

Nummerische Daten

Druckaufbereitung – Währungssymbol gleitend

• Syntaxbeispiele

01 FELDER-FUER-DRUCK.

05 FELD1 PIC €€€999.

* 12345 €12345

05 FELD2 PIC €€€€€9.

* 00345 bb€345

* 00005 bbbb€5

05 FELD3 PIC €€€€€€.

* 00000 bbbbbb.

* 00345 bb€345

14. August 2019 Seite: 81COBOL Grundlagen 1

SPECIAL-NAMES:

CURRENCY SIGN IS “€”.

Page 79: Teil 1: Grundlagen - cps4it · Inhalt • Einführung • Programmaufbau oder „Das erste Programm!“ • Arbeiten mit einfachen nummerischen Daten • Schleifen mit Zähler •

Nummerische Daten

Druckaufbereitung – Komma und Punkt – 1

• Syntaxbeispiele

01 FELDER-FUER-DRUCK.

05 FELD1 PIC 999,999.

* 123456 123,456

05 FELD2 PIC ZZZ,ZZZ.

* 003456 bb3,456

* 000056 bbbbb56

05 FELD3 PIC ZZ,9999.

* 000000 bbb0000.

14. August 2019 Seite: 82COBOL Grundlagen 1

SPECIAL-NAMES:

DECIMAL-POINT

IS COMMA.

Page 80: Teil 1: Grundlagen - cps4it · Inhalt • Einführung • Programmaufbau oder „Das erste Programm!“ • Arbeiten mit einfachen nummerischen Daten • Schleifen mit Zähler •

Nummerische Daten

Druckaufbereitung – Komma und Punkt – 2

• Syntaxbeispiele

01 FELDER-FUER-DRUCK.

05 FELD1 PIC 999,999.

* 123,456 123,456

* 000,025 000,025

05 FELD2 PIC ZZZ,ZZZ.

* 000,025 bbbbb25

05 FELD3 PIC ZZ9,999.

* 000,025 bb0,025

14. August 2019 Seite: 83COBOL Grundlagen 1

SPECIAL-NAMES:

DECIMAL-POINT

IS COMMA.

Page 81: Teil 1: Grundlagen - cps4it · Inhalt • Einführung • Programmaufbau oder „Das erste Programm!“ • Arbeiten mit einfachen nummerischen Daten • Schleifen mit Zähler •

Nummerische Daten

Druckaufbereitung – Komma und Punkt – 3

• Syntaxbeispiele

01 FELDER-FUER-DRUCK.

05 FELD1 PIC 99,99.

* 123,456 12,34

05 FELD2 PIC ZZZZZ9,9.

* 000,056 bbbbb0,0

14. August 2019 Seite: 84COBOL Grundlagen 1

SPECIAL-NAMES:

DECIMAL-POINT

IS COMMA.

Page 82: Teil 1: Grundlagen - cps4it · Inhalt • Einführung • Programmaufbau oder „Das erste Programm!“ • Arbeiten mit einfachen nummerischen Daten • Schleifen mit Zähler •

Nummerische Daten

Druckaufbereitung – Vorzeichen – 1

• Syntaxbeispiele

01 FELDER-FUER-DRUCK.

05 FELD1 PIC 999999-.

* -123456 123456-

05 FELD2 PIC 999999+.

* -123456 123456-

* +000056 000056+

14. August 2019 Seite: 85COBOL Grundlagen 1

SPECIAL-NAMES:

DECIMAL-POINT

IS COMMA.

Page 83: Teil 1: Grundlagen - cps4it · Inhalt • Einführung • Programmaufbau oder „Das erste Programm!“ • Arbeiten mit einfachen nummerischen Daten • Schleifen mit Zähler •

Nummerische Daten

Druckaufbereitung – Vorzeichen – 2

• Syntaxbeispiele

01 FELDER-FUER-DRUCK.

05 FELD1 PIC +ZZZZZ9.

* +000056 +bbbb56

05 FELD2 PIC ++++++9.

* +000056 bbbb+56

05 FELD3 PIC -----99.

* +003456 bbb3456

14. August 2019 Seite: 86COBOL Grundlagen 1

SPECIAL-NAMES:

DECIMAL-POINT

IS COMMA.

Page 84: Teil 1: Grundlagen - cps4it · Inhalt • Einführung • Programmaufbau oder „Das erste Programm!“ • Arbeiten mit einfachen nummerischen Daten • Schleifen mit Zähler •

Nummerische Daten

Druckaufbereitung – Vorzeichen – 3

• Syntaxbeispiele

01 FELDER-FUER-DRUCK.

05 FELD1 PIC 999999DB.

* -123456 123456DB

* +000056 000056bb

05 FELD2 PIC PIC 999999CR.

* -123456 123456CR

* +000056 000056bb

14. August 2019 Seite: 87COBOL Grundlagen 1

SPECIAL-NAMES:

DECIMAL-POINT

IS COMMA.

Page 85: Teil 1: Grundlagen - cps4it · Inhalt • Einführung • Programmaufbau oder „Das erste Programm!“ • Arbeiten mit einfachen nummerischen Daten • Schleifen mit Zähler •

Nummerische Daten

Druckaufbereitung – Sternchen

• Syntaxbeispiele

01 FELDER-FUER-DRUCK.

05 FELD1 PIC ****99.

* 123456 123456

* +000056 ****56

05 FELD2 PIC ******.

* 000056 ****56

* 000000 ******

05 FELD3 PIC ***999.

* 000056 ***056

14. August 2019 Seite: 88COBOL Grundlagen 1

SPECIAL-NAMES:

DECIMAL-POINT

IS COMMA.

Page 86: Teil 1: Grundlagen - cps4it · Inhalt • Einführung • Programmaufbau oder „Das erste Programm!“ • Arbeiten mit einfachen nummerischen Daten • Schleifen mit Zähler •

Nummerische Daten

Druckaufbereitung – Leerzeichen / Zeichen – 1

• Syntaxbeispiele

01 FELDER-FUER-DRUCK.

05 FELD1 PIC 999B999.

* 123456 123 456

* +000056 000 056

05 FELD2 PIC 99B99B99.

* 123456 12 34 56

05 FELD3 PIC 099B99B99.

* 123456 012 34 56

14. August 2019 Seite: 89COBOL Grundlagen 1

Page 87: Teil 1: Grundlagen - cps4it · Inhalt • Einführung • Programmaufbau oder „Das erste Programm!“ • Arbeiten mit einfachen nummerischen Daten • Schleifen mit Zähler •

Nummerische Daten

Druckaufbereitung – Leerzeichen / Zeichen – 2

• Syntaxbeispiele

01 FELDER-FUER-DRUCK.

05 FELD1 PIC XBXBXBX.

* COBOL C O B O L

05 FELD2 PIC 99/99/99.

* 100809 10/08/09

14. August 2019 Seite: 90COBOL Grundlagen 1

Page 88: Teil 1: Grundlagen - cps4it · Inhalt • Einführung • Programmaufbau oder „Das erste Programm!“ • Arbeiten mit einfachen nummerischen Daten • Schleifen mit Zähler •

Nummerische Daten

Übung(en)

• Pgm3xx in Datei speichern

• Pgm4xx schreiben

– Probieren Sie verschiedene Druckaufbereitungen

• Währung, Nullen unterdrücken, Dezimalzahlen, Stern etc

– versuchen Sie Abbrüche zu erzeugen

– sichern Sie Ihre Pgm-Versionen

• Jobs mit verschiedenen Konstellationen

• Test mit Analyse Joboutput / DUMP

14. August 2019 Seite: 91COBOL Grundlagen 1

Page 89: Teil 1: Grundlagen - cps4it · Inhalt • Einführung • Programmaufbau oder „Das erste Programm!“ • Arbeiten mit einfachen nummerischen Daten • Schleifen mit Zähler •

Inhalt

• Einführung

• Programmaufbau oder „Das erste Programm!“

• Arbeiten mit einfachen nummerischen Daten

• Schleifen mit Zähler

• Entscheidungen

• Schleifen mit Bedingungen

• Sections

• Tabellenverarbeitung

• sequentielle Dateien

14. August 2019 Seite 93COBOL Grundlagen 1

Page 90: Teil 1: Grundlagen - cps4it · Inhalt • Einführung • Programmaufbau oder „Das erste Programm!“ • Arbeiten mit einfachen nummerischen Daten • Schleifen mit Zähler •

Schleifen mit Zähler

Begriffe

14. August 2019 Seite 94COBOL Grundlagen 1

Schleife

UNTILPERFORM ADD

AFTERBEFORE

Syntax

Section

TEST

Page 91: Teil 1: Grundlagen - cps4it · Inhalt • Einführung • Programmaufbau oder „Das erste Programm!“ • Arbeiten mit einfachen nummerischen Daten • Schleifen mit Zähler •

Schleifen mit Zähler

einfache Schleife – DO UNTIL

• Syntaxbeispiel

Anweisung-1

PERFORM WITH TEST AFTER

VARYING I1 FROM 1 BY 1

UNTIL I1 > 10

anweisung(en)

END-PERFORM

Anweisung-2

14. August 2019 Seite: 95COBOL Grundlagen 1

Anweisungen

?

Anweisung-2

Anweisung-1

ja

nein

Page 92: Teil 1: Grundlagen - cps4it · Inhalt • Einführung • Programmaufbau oder „Das erste Programm!“ • Arbeiten mit einfachen nummerischen Daten • Schleifen mit Zähler •

Schleifen mit Zähler

einfache Schleife – DO WHILE

• Syntaxbeispiel

Anweisung-1

PERFORM [WITH TEST BEFORE]

VARYING I1 FROM 1 BY 1

UNTIL I1 > 10

anweisung(en)

END-PERFORM

Anweisung-2

14. August 2019 Seite: 96COBOL Grundlagen 1

Anweisungen

?

Anweisung-1

ja

nein

Anweisung-2

Page 93: Teil 1: Grundlagen - cps4it · Inhalt • Einführung • Programmaufbau oder „Das erste Programm!“ • Arbeiten mit einfachen nummerischen Daten • Schleifen mit Zähler •

Schleifen mit Zähler

einfache Schleife – Syntax

• Syntaxbeispiel

PERFORM [WITH TEST {BEFORE|AFTER}]

VARYING var-1 FROM {var-2|lit-2}

BY {var-3|lit-3}

UNTIL Bedingung

anweisung(en)

END-PERFORM

14. August 2019 Seite: 97COBOL Grundlagen 1

Page 94: Teil 1: Grundlagen - cps4it · Inhalt • Einführung • Programmaufbau oder „Das erste Programm!“ • Arbeiten mit einfachen nummerischen Daten • Schleifen mit Zähler •

Schleifen mit Zähler

einfache Befehle – 2

• CONTINUE

– Leeranweisung

– sehr zu empfehlen

– sinnvoll mit einem Punkt genau dann, um das Ende

einer Verarbeitung zu kennzeichnen

– sinnvoll innerhalb von Bedingungen (ohne Punkt)

14. August 2019 Seite: 98COBOL Grundlagen 1

Page 95: Teil 1: Grundlagen - cps4it · Inhalt • Einführung • Programmaufbau oder „Das erste Programm!“ • Arbeiten mit einfachen nummerischen Daten • Schleifen mit Zähler •

Schleifen mit Zähler

Übung(en)

• Pgm4xx in Datei speichern

• Pgm5xx schreiben

– Kodieren Sie Schleifen in beiden Ausprägungen

– versuchen Sie, Abbrüche zu erzeugen

– sichern Sie Ihre Pgm-Versionen

• Jobs mit verschiedenen Konstellationen

• Test mit Analyse Joboutput / DUMP

14. August 2019 Seite: 99COBOL Grundlagen 1

Page 96: Teil 1: Grundlagen - cps4it · Inhalt • Einführung • Programmaufbau oder „Das erste Programm!“ • Arbeiten mit einfachen nummerischen Daten • Schleifen mit Zähler •

Schleifen mit Zähler

Übung(en)

• Pgm5xx in Datei speichern

• Pgm6xx schreiben

– Loop wie vorher

– Lassen Sie die Jobs mit den unterschiedlichen

Felddefinitionen für die Variablen bis 10.000.000 mal

laufen und vergleichen Sie die Laufzeiten

– Welche Definitionen sind die besten?

• Test mit Analyse Joboutput / DUMP

14. August 2019 Seite: 100COBOL Grundlagen 1

Page 97: Teil 1: Grundlagen - cps4it · Inhalt • Einführung • Programmaufbau oder „Das erste Programm!“ • Arbeiten mit einfachen nummerischen Daten • Schleifen mit Zähler •

Schleifen mit Zähler

Übung(en)

• Pgm6xx in Datei speichern

• Pgm7xx schreiben

– Loop wie vorher

– Addieren Sie eine Zahl mit sich selbst abhängig von

einer Eingabe.

– Vergleichen Sie das Ergebnis mit einer Multiplikation

– Nutzen Sie ebenfalls Zahlen mit Nachkommastellen

• Test mit Analyse Joboutput / DUMP

14. August 2019 Seite: 101COBOL Grundlagen 1

Page 98: Teil 1: Grundlagen - cps4it · Inhalt • Einführung • Programmaufbau oder „Das erste Programm!“ • Arbeiten mit einfachen nummerischen Daten • Schleifen mit Zähler •

Schleifen mit Zähler

Übung(en)

• Pgm7xx in Datei speichern

• Pgm8xx schreiben

– Loop wie vorher

– Multiplizieren Sie eine Zahl mit sich selbst abhängig

von einer Eingabe.

– Vergleichen Sie das Ergebnis mit einer

Exponentierung

– Nutzen Sie ebenfalls Zahlen mit Nachkommastellen

• Test mit Analyse Joboutput / DUMP

14. August 2019 Seite: 102COBOL Grundlagen 1

Page 99: Teil 1: Grundlagen - cps4it · Inhalt • Einführung • Programmaufbau oder „Das erste Programm!“ • Arbeiten mit einfachen nummerischen Daten • Schleifen mit Zähler •

Inhalt

• Einführung

• Programmaufbau oder „Das erste Programm!“

• Arbeiten mit einfachen nummerischen Daten

• Schleifen mit Zähler

• Entscheidungen

• Schleifen mit Bedingungen

• Sections

• Tabellenverarbeitung

• sequentielle Dateien

14. August 2019 Seite 105COBOL Grundlagen 1

Page 100: Teil 1: Grundlagen - cps4it · Inhalt • Einführung • Programmaufbau oder „Das erste Programm!“ • Arbeiten mit einfachen nummerischen Daten • Schleifen mit Zähler •

Entscheidungen

Begriffe

14. August 2019 Seite 106COBOL Grundlagen 1

FALSE

<=TRUE GT

CASEIF

Syntax

ELSE

Operand

Page 101: Teil 1: Grundlagen - cps4it · Inhalt • Einführung • Programmaufbau oder „Das erste Programm!“ • Arbeiten mit einfachen nummerischen Daten • Schleifen mit Zähler •

Entscheidungen

Alternative

• Alternative

– wahr oder falsch (TRUE oder FALSE)

• Prüfung durch Bedingungen

– Vergleichsbedingung

– Vorzeichenbedingung

– Klassenbedingung

– Bedingungsnamenbedingungen

14. August 2019 Seite: 107COBOL Grundlagen 1

Page 102: Teil 1: Grundlagen - cps4it · Inhalt • Einführung • Programmaufbau oder „Das erste Programm!“ • Arbeiten mit einfachen nummerischen Daten • Schleifen mit Zähler •

Entscheidungen

Beispiel

IF A > B

THEN

IF B > C

THEN

CONTINUE

ELSE

tu was-1

END-IF

tu was-2

ELSE

tu was-3

END-IF

14. August 2019 Seite: 108COBOL Grundlagen 1

Page 103: Teil 1: Grundlagen - cps4it · Inhalt • Einführung • Programmaufbau oder „Das erste Programm!“ • Arbeiten mit einfachen nummerischen Daten • Schleifen mit Zähler •

Entscheidungen

Syntax

IF Bedingung

THEN

{anw-1-1 [anw-1-2] | CONTINUE} ...

[ELSE

{anw-2-1 [anw-2-2] | CONTINUE} ...]

[END-IF]

14. August 2019 Seite: 109COBOL Grundlagen 1

Page 104: Teil 1: Grundlagen - cps4it · Inhalt • Einführung • Programmaufbau oder „Das erste Programm!“ • Arbeiten mit einfachen nummerischen Daten • Schleifen mit Zähler •

Entscheidungen

Vergleichsbedingung

• Vergleich eines Subjekts und einem Objekt mit

einem Vergleichsoperator

– subject [IS] [NOT] oper object

– subject ist Datenfeld oder Literal oder arithmetischer

Ausdruck

– object ist Datenfeld oder Literal oder arithmetischer

Ausdruck

– oper ist

• GREATER THAN | LESS THAN | EQUAL TO

• > < = >= <=

14. August 2019 Seite: 110COBOL Grundlagen 1

Page 105: Teil 1: Grundlagen - cps4it · Inhalt • Einführung • Programmaufbau oder „Das erste Programm!“ • Arbeiten mit einfachen nummerischen Daten • Schleifen mit Zähler •

Entscheidungen

Vergleichsbedingung – Beispiele

IF RECHENFELD > 100

IF SUMMENFELD = ANZAHL * PREIS-PRO-STUECK

- (ANZAHL / 1000 * SKONTO)

IF BESTAND < MINDESTBESTAND

IF LIEFERDATUM > VERFALLDATUM

14. August 2019 Seite: 111COBOL Grundlagen 1

Page 106: Teil 1: Grundlagen - cps4it · Inhalt • Einführung • Programmaufbau oder „Das erste Programm!“ • Arbeiten mit einfachen nummerischen Daten • Schleifen mit Zähler •

Entscheidungen

Vergleichsbedingung – nummerische Daten – 1

• Vergleich eines Subjekts und einem Objekt mit

einem Vergleichsoperator

– subject [IS] [NOT] oper object

– subject ist Datenfeld oder Literal oder arithmetischer

Ausdruck

– object ist Datenfeld oder Literal oder arithmetischer

Ausdruck

– oper ist

• GREATER THAN | LESS THAN | EQUAL TO

• > < = >= <=

14. August 2019 Seite: 112COBOL Grundlagen 1

Page 107: Teil 1: Grundlagen - cps4it · Inhalt • Einführung • Programmaufbau oder „Das erste Programm!“ • Arbeiten mit einfachen nummerischen Daten • Schleifen mit Zähler •

Entscheidungen

Vergleichsbedingung – nummerische Daten – 2

• Vergleich auf Inhalt der Felder

• Vergleich nicht auf Länge der Felder

• Existenz von Kommata

• Existenz von Vorzeichen

• unterschiedliche Formate werden konvertiert

14. August 2019 Seite: 113COBOL Grundlagen 1

Page 108: Teil 1: Grundlagen - cps4it · Inhalt • Einführung • Programmaufbau oder „Das erste Programm!“ • Arbeiten mit einfachen nummerischen Daten • Schleifen mit Zähler •

Entscheidungen

Vergleichsbedingung – nicht-nummerische Daten

• Gültige Sortierfolge wird berücksichtigt

– siehe SPECIAL-NAMES. ALPHA-TEST IS ...

• Vergleich Zeichen für Zeichen ab links

– Felder gleicher Länge

• bis Ergebnis

– Felder ungleicher Länge

• bis Ergebnis

• bis Ende kürzeres Feld ist dann der Rest des längeren Feldes

blank, sind diese Felder gleich, sonst ist längeres Feld größer

14. August 2019 Seite: 114COBOL Grundlagen 1

Page 109: Teil 1: Grundlagen - cps4it · Inhalt • Einführung • Programmaufbau oder „Das erste Programm!“ • Arbeiten mit einfachen nummerischen Daten • Schleifen mit Zähler •

Entscheidungen

Vergleichsbedingung – nicht-nummerisch / nummerisch gemischt

• Es gilt nicht der arithmetische Wert des

nummerischen Feldes

• Intensive Kenntnisse der internen Darstellung

von Zahlen ist erforderlich

• Bei Benutzung wird gewarnt durch Compiler

• zurückhaltende Benutzung dringend empfohlen

14. August 2019 Seite: 115COBOL Grundlagen 1

Page 110: Teil 1: Grundlagen - cps4it · Inhalt • Einführung • Programmaufbau oder „Das erste Programm!“ • Arbeiten mit einfachen nummerischen Daten • Schleifen mit Zähler •

Entscheidungen

Vorzeichenbedingung

• Prüfung auf kleiner / gleich / größer Null

• Format

– var-1 [IS] [NOT] {POSITIVE | ZERO | NEGATIVE

– arithm-1 [IS] [NOT] {POSITIVE | ZERO | NEGATIVE

14. August 2019 Seite: 116COBOL Grundlagen 1

Page 111: Teil 1: Grundlagen - cps4it · Inhalt • Einführung • Programmaufbau oder „Das erste Programm!“ • Arbeiten mit einfachen nummerischen Daten • Schleifen mit Zähler •

Entscheidungen

Klassenbedingung

• Prüfung auf

– nummerisch

– alfabetisch

– alfabetisch in Großbuchstaben

– alfabetisch in Kleinbuchstaben

• Format

– var-1 [IS] [NOT] {NUMERIC | ALPHABETIC |

ALPHABETIC-UPPER |

ALPHABETIC-LOWER}

14. August 2019 Seite: 117COBOL Grundlagen 1

Page 112: Teil 1: Grundlagen - cps4it · Inhalt • Einführung • Programmaufbau oder „Das erste Programm!“ • Arbeiten mit einfachen nummerischen Daten • Schleifen mit Zähler •

Entscheidungen

Klassenbedingung – gültige Formen

14. August 2019 Seite: 118COBOL Grundlagen 1

Art des Kennzeichners

gültige Form der Klassenprüfung

alfabetisch ALPHABETIC NOT ALPHABETIC

alfanummerisch ALPHABETIC NUMERIC

NOT ALPHABETIC NOT NUMERIC

nummerisch (COMP …)

NUMERIC NOT NUMERIC

Page 113: Teil 1: Grundlagen - cps4it · Inhalt • Einführung • Programmaufbau oder „Das erste Programm!“ • Arbeiten mit einfachen nummerischen Daten • Schleifen mit Zähler •

Entscheidungen

Klassenbedingung – FALSE als Ergebnis

• Bei Vergleichen ergibt sich der Wert FALSE bei

– NUMERIC, wenn Inhalt nicht nummerisch

– ALPHABETIC, wenn andere Zeichen als Buchstaben

oder Blank

– ALPHABETIC-UPPER, wenn andere Zeichen als

Großbuchstaben oder Blank

– ALPHABETIC-LOWER, wenn andere Zeichen als

Kleinbuchstaben oder Blank

14. August 2019 Seite: 119COBOL Grundlagen 1

Page 114: Teil 1: Grundlagen - cps4it · Inhalt • Einführung • Programmaufbau oder „Das erste Programm!“ • Arbeiten mit einfachen nummerischen Daten • Schleifen mit Zähler •

Entscheidungen

Bedingungsnamenbedingung

• Stufennummer 88

• Beispiel:01 EINGABE-SATZ.

05 SATZART PIC X(01).

88 SATZART-OK VALUE ‘1’ THRU ‘4’,’7’.

05 FAMILIENSTAND PIC 9(01).

88 LEDIG VALUE 1.

88 VERHEIRATET VALUE 2.

88 GESCHIEDEN VALUE 3.

88 SONSTIGES VALUE 4.

14. August 2019 Seite: 120COBOL Grundlagen 1

Page 115: Teil 1: Grundlagen - cps4it · Inhalt • Einführung • Programmaufbau oder „Das erste Programm!“ • Arbeiten mit einfachen nummerischen Daten • Schleifen mit Zähler •

Entscheidungen

Bedingungsnamenbedingung - Vorteile

• Der Vergleich ist schnell (naja )

• Aussagefähigkeit d.h. leichter lesbar

• änderungsfreundlicher

• kürzerer Code

14. August 2019 Seite: 121COBOL Grundlagen 1

Page 116: Teil 1: Grundlagen - cps4it · Inhalt • Einführung • Programmaufbau oder „Das erste Programm!“ • Arbeiten mit einfachen nummerischen Daten • Schleifen mit Zähler •

Entscheidungen

Mehrfachbedingungen

• Bedingungen miteinander verknüpfen

– AND

– OR

– Klammernregel beachten

14. August 2019 Seite: 122COBOL Grundlagen 1

A1 A2 A1 OR A2 A1 AND A2

T T T T

T F T F

F T T F

F F F F

Page 117: Teil 1: Grundlagen - cps4it · Inhalt • Einführung • Programmaufbau oder „Das erste Programm!“ • Arbeiten mit einfachen nummerischen Daten • Schleifen mit Zähler •

Entscheidungen

geschachtelte IF-Anweisungen

• Innerhalb der Zweige können weitere IF-

Anweisungen kodiert werden

• für Lesbarkeit

– einrücken

– END-IF benutzen

• CONTINUE benutzen

• keinen Punkt benutzen!

14. August 2019 Seite: 123COBOL Grundlagen 1

Page 118: Teil 1: Grundlagen - cps4it · Inhalt • Einführung • Programmaufbau oder „Das erste Programm!“ • Arbeiten mit einfachen nummerischen Daten • Schleifen mit Zähler •

Entscheidungen

geschachtelte IF-Anweisungen – Regeln

• Jede Anweisung hängt vom letzten IF oder ELSE

ab

• Jedes ELSE innerhalb einer geschachtelten IF-

Anweisung wird dem letzten IF zugeordnet, das

noch nicht durch ein ELSE abgeschlossen

worden ist.

• Vorsicht bei ELSE-Zweigen, die keine Aktion

beinhalten. CONTINUE verwenden sinnvoll.

14. August 2019 Seite: 124COBOL Grundlagen 1

Page 119: Teil 1: Grundlagen - cps4it · Inhalt • Einführung • Programmaufbau oder „Das erste Programm!“ • Arbeiten mit einfachen nummerischen Daten • Schleifen mit Zähler •

• Unvollständige Verzweigung

• vollständige Verzweigung

• Mehrfachverzweigung

Entscheidungen

Verzweigungen – Struktogramme

14. August 2019 Seite: 125COBOL Grundlagen 1

Page 120: Teil 1: Grundlagen - cps4it · Inhalt • Einführung • Programmaufbau oder „Das erste Programm!“ • Arbeiten mit einfachen nummerischen Daten • Schleifen mit Zähler •

Entscheidungen

Übung(en)

• Pgm8xx in Datei speichern

• Pgm9xx schreiben

– Bedingungen gemäß Eingabe aus JCL kodieren;

dabei unterschiedliche Texte ausgeben

• einfache Bedingungen

• verschachtelte Bedingungen

• Optimieren durch Nutzen von Bedingungsnamen

• PGMAxx schreiben mit Vorgabe

• Test mit Analyse Joboutput / DUMP

14. August 2019 Seite: 126COBOL Grundlagen 1

Page 121: Teil 1: Grundlagen - cps4it · Inhalt • Einführung • Programmaufbau oder „Das erste Programm!“ • Arbeiten mit einfachen nummerischen Daten • Schleifen mit Zähler •

Entscheidungen

Fallauswahl – Struktogramme

14. August 2019 Seite: 127COBOL Grundlagen 1

Page 122: Teil 1: Grundlagen - cps4it · Inhalt • Einführung • Programmaufbau oder „Das erste Programm!“ • Arbeiten mit einfachen nummerischen Daten • Schleifen mit Zähler •

Entscheidungen

Fallauswahl – Umsetzung in COBOL – 1

• EVALUATE TRUE

• WHEN bedingung-1

– anw-11 [... anw-1n]

• WHEN bedingung-2

– anw-21 [... anw-2n]

• ...

• WHEN OTHER

– anw-91 [... anw-9n]

• END-EVALUATE

14. August 2019 Seite: 128COBOL Grundlagen 1

Page 123: Teil 1: Grundlagen - cps4it · Inhalt • Einführung • Programmaufbau oder „Das erste Programm!“ • Arbeiten mit einfachen nummerischen Daten • Schleifen mit Zähler •

Entscheidungen

Fallauswahl – Umsetzung in COBOL – 2

• EVALUATE bedingung-1 ALSO bedingung-2

• WHEN TRUE ALSO TRUE

– anw-11 [... anw-1n]

• WHEN FALSE ALSO TRUE

– anw-21 [... anw-2n]

• ...

• WHEN OTHER

– anw-91 [... anw-9n]

• END-EVALUATE

14. August 2019 Seite: 129COBOL Grundlagen 1

Page 124: Teil 1: Grundlagen - cps4it · Inhalt • Einführung • Programmaufbau oder „Das erste Programm!“ • Arbeiten mit einfachen nummerischen Daten • Schleifen mit Zähler •

Entscheidungen

Fallauswahl – Umsetzung in COBOL – 3

• EVALUATE TRUE ALSO FALSE

• WHEN bedingung-1 ALSO bedingung-2

– anw-11 [... anw-1n]

• WHEN bedingung-1 ALSO bedingung-2

– anw-21 [... anw-2n]

• ...

• WHEN OTHER

– anw-91 [... anw-9n]

• END-EVALUATE

14. August 2019 Seite: 130COBOL Grundlagen 1

. . . und so weiter!

Details siehe Bookmanager

Kodiere aber so, dass es

*jeder* verstehen kann!

Page 125: Teil 1: Grundlagen - cps4it · Inhalt • Einführung • Programmaufbau oder „Das erste Programm!“ • Arbeiten mit einfachen nummerischen Daten • Schleifen mit Zähler •

Entscheidungen

Ablauf des Evaluate

• Arithmetische Ausdrücke errechnen

• 1. WHEN-CLAUSE von links nach rechts

– positiv, dann führe aus und springe zum Ende

• nächste WHEN-CLAUSE

– positiv, dann führe aus und springe zum Ende

• etc. bis WHEN OTHER falls vorhanden

• also: häufigsten Fall zu Beginn kodieren

14. August 2019 Seite: 131COBOL Grundlagen 1

Page 126: Teil 1: Grundlagen - cps4it · Inhalt • Einführung • Programmaufbau oder „Das erste Programm!“ • Arbeiten mit einfachen nummerischen Daten • Schleifen mit Zähler •

Entscheidungen

Übung(en)

• PgmAxx in Datei speichern

• PgmBxx schreiben

– PgmBxx soll eine Optimierung von PgmAxx sein

– Benutzen von EVALUATE statt IF

– Vergleichen Sie den Aufwand

– Vergleichen Sie die Lesbarkeit

– optimieren Sie weiter, indem Sie den Dateiaufbau

anpassen (Duplikate -> Referenzen)

• Test mit Analyse Joboutput / DUMP

14. August 2019 Seite: 132COBOL Grundlagen 1

Page 127: Teil 1: Grundlagen - cps4it · Inhalt • Einführung • Programmaufbau oder „Das erste Programm!“ • Arbeiten mit einfachen nummerischen Daten • Schleifen mit Zähler •

Inhalt

• Einführung

• Programmaufbau oder „Das erste Programm!“

• Arbeiten mit einfachen nummerischen Daten

• Schleifen mit Zähler

• Entscheidungen

• Schleifen mit Bedingungen

• Sections

• Tabellenverarbeitung

• sequentielle Dateien

14. August 2019 Seite 133COBOL Grundlagen 1

Page 128: Teil 1: Grundlagen - cps4it · Inhalt • Einführung • Programmaufbau oder „Das erste Programm!“ • Arbeiten mit einfachen nummerischen Daten • Schleifen mit Zähler •

Schleifen mit Bedingungen

Begriffe

14. August 2019 Seite 134COBOL Grundlagen 1

TEST

REPEATUNTIL WHILE

AFTER

BEFORE

PERFORM

Page 129: Teil 1: Grundlagen - cps4it · Inhalt • Einführung • Programmaufbau oder „Das erste Programm!“ • Arbeiten mit einfachen nummerischen Daten • Schleifen mit Zähler •

Schleifen mit Bedingungen

Abweisschleife (WHILE-Schleife)

• Die Aktion wird solange wiederholt, wie die

Bedingung erfüllt ist.

• Die Bedingung wird vor der Aktion geprüft, d.h.

die Aktion wird möglicherweise nie ausgeführt.

14. August 2019 Seite: 135COBOL Grundlagen 1

Page 130: Teil 1: Grundlagen - cps4it · Inhalt • Einführung • Programmaufbau oder „Das erste Programm!“ • Arbeiten mit einfachen nummerischen Daten • Schleifen mit Zähler •

Schleifen mit Bedingungen

Nichtabweisschleife (UNTIL-Schleife)

• aktion wird solange wiederholt, bis die

Bedingung erfüllt ist.

• Die Aktion wird immer mindestens einmal

ausgeführt.

14. August 2019 Seite: 136COBOL Grundlagen 1

Page 131: Teil 1: Grundlagen - cps4it · Inhalt • Einführung • Programmaufbau oder „Das erste Programm!“ • Arbeiten mit einfachen nummerischen Daten • Schleifen mit Zähler •

Schleifen mit Bedingungen

Umsetzung in COBOL

• Abweisschleife

PERFORM [WITH TEST BEFORE]

UNTIL Bedingung

anweisung(en)

END-PERFORM

• Nichtabweisschleife

PERFORM WITH TEST AFTER

UNTIL Bedingung

anweisung(en)

END-PERFORM

14. August 2019 Seite: 137COBOL Grundlagen 1

Page 132: Teil 1: Grundlagen - cps4it · Inhalt • Einführung • Programmaufbau oder „Das erste Programm!“ • Arbeiten mit einfachen nummerischen Daten • Schleifen mit Zähler •

Schleifen mit Bedingungen

Übung(en)

• PgmBxx in Datei speichern

• PgmCxx schreiben

– lesen Schulungsdatei mit ACCEPT

– Ausgabe der Zeilen

– Ausgabe Anzahl der Zeilen

• Test mit Analyse Joboutput / DUMP

14. August 2019 Seite: 138COBOL Grundlagen 1

Page 133: Teil 1: Grundlagen - cps4it · Inhalt • Einführung • Programmaufbau oder „Das erste Programm!“ • Arbeiten mit einfachen nummerischen Daten • Schleifen mit Zähler •

Inhalt

• Einführung

• Programmaufbau oder „Das erste Programm!“

• Arbeiten mit einfachen nummerischen Daten

• Schleifen mit Zähler

• Entscheidungen

• Schleifen mit Bedingungen

• Sections

• Tabellenverarbeitung

• sequentielle Dateien

14. August 2019 Seite 141COBOL Grundlagen 1

Page 134: Teil 1: Grundlagen - cps4it · Inhalt • Einführung • Programmaufbau oder „Das erste Programm!“ • Arbeiten mit einfachen nummerischen Daten • Schleifen mit Zähler •

Sections

Begriffe

14. August 2019 Seite 142COBOL Grundlagen 1

TEST

Rück-

sprungUNTIL WHILE

AFTER

BEFORE

Funktion

Page 135: Teil 1: Grundlagen - cps4it · Inhalt • Einführung • Programmaufbau oder „Das erste Programm!“ • Arbeiten mit einfachen nummerischen Daten • Schleifen mit Zähler •

Sections

warum und weshalb

• Vorzug der strukturierten Programmierung ist es,

Aufgaben in kleine Module aufteilen zu können

• Umsetzung in COBOL mit Sections

• Aufruf mit PERFORM section-name

– Verzweigung zur Section

– Ausführen aller Anweisungen in der Section

– Rücksprung

– ausführen nächste Anweisung

14. August 2019 Seite: 143COBOL Grundlagen 1

Page 136: Teil 1: Grundlagen - cps4it · Inhalt • Einführung • Programmaufbau oder „Das erste Programm!“ • Arbeiten mit einfachen nummerischen Daten • Schleifen mit Zähler •

Sections

einfacher Aufruf

. . .

PERFORM VORLAUF

. . .

VORLAUF SECTION.

[VORLAUF-01.]

anweisung-1

anweisung-2

continue.

[VORLAUF-EX.

EXIT.]

14. August 2019 Seite: 144COBOL Grundlagen 1

Page 137: Teil 1: Grundlagen - cps4it · Inhalt • Einführung • Programmaufbau oder „Das erste Programm!“ • Arbeiten mit einfachen nummerischen Daten • Schleifen mit Zähler •

Sections

Aufrufmöglichkeiten

• PERFORM section I1 TIMES oder

• PERFORM section 20 TIMES

• PERFORM section UNTIL bedingung

• PERFORM section WITH TEST AFTER

UNTIL bedingung

14. August 2019 Seite: 145COBOL Grundlagen 1

Page 138: Teil 1: Grundlagen - cps4it · Inhalt • Einführung • Programmaufbau oder „Das erste Programm!“ • Arbeiten mit einfachen nummerischen Daten • Schleifen mit Zähler •

Sections

Syntax Inline-PERFORM

PERFORM

[WITH TEST {BEFORE|AFTER}]

VARYING {var-1|ind-1}

FROM {lit-2|var-2|ind-2}

BY {lit-3|var-3}

UNTIL bedingung-1

[anweisung-1]

[anweisung-2]

[...]

END-PERFORM

14. August 2019 Seite: 146COBOL Grundlagen 1

Page 139: Teil 1: Grundlagen - cps4it · Inhalt • Einführung • Programmaufbau oder „Das erste Programm!“ • Arbeiten mit einfachen nummerischen Daten • Schleifen mit Zähler •

Sections

Syntax Outline-PERFORM

PERFORM section

[WITH TEST {BEFORE|AFTER}]

VARYING {var-1|ind-1}

FROM {lit-2|var-2|ind-2}

BY {lit-3|var-3}

UNTIL bedingung-1

14. August 2019 Seite: 147COBOL Grundlagen 1

Page 140: Teil 1: Grundlagen - cps4it · Inhalt • Einführung • Programmaufbau oder „Das erste Programm!“ • Arbeiten mit einfachen nummerischen Daten • Schleifen mit Zähler •

Sections

PERFORM mit zwei Laufvariablen

PERFORM section

[WITH TEST {BEFORE|AFTER}]

VARYING {var-1|ind-1}

FROM {lit-2|var-2|ind-2}

BY {lit-3|var-3}

UNTIL bedingung-1

AFTER {var-4|ind-4}

FROM {lit-5|var-5|ind-5}

BY {lit-6|var-6}

UNTIL bedingung-2

14. August 2019 Seite: 148COBOL Grundlagen 1

Page 141: Teil 1: Grundlagen - cps4it · Inhalt • Einführung • Programmaufbau oder „Das erste Programm!“ • Arbeiten mit einfachen nummerischen Daten • Schleifen mit Zähler •

Sections

PERFORM mit zwei Laufvariablen – Ablauflogik

14. August 2019 Seite: 149COBOL Grundlagen 1

FROM-1

-> var-1

FROM-5

-> var-4

Bed-1

Statements

ausführen

Var-4

erhöhen

Bed-2

Var-1

erhöhen

FROM-5

-> var-4

EXITTRUE

FALSE

TRUE

FALSE

WITH

TEST

BEFORE

FROM-1

-> var-1

FROM-5

-> var-4

Bed-1

Statements

ausführen

Bed-2

Var-1

erhöhen

Var-4

erhöhen

EXIT

TRUEFALSE

TRUE

FALSE

WITH

TEST

AFTER

Page 142: Teil 1: Grundlagen - cps4it · Inhalt • Einführung • Programmaufbau oder „Das erste Programm!“ • Arbeiten mit einfachen nummerischen Daten • Schleifen mit Zähler •

Sections

PERFORM - Bedeutung der Parameter – 1

• WITH TEST BEFORE | WITH TEST AFTER

– Diese beiden Abbruchbedingungen haben die gleiche

Bedeutung; einmal werden die Tests nach den

Statements, einmal vor der Ausführung der

Statements ausgeführt.

• VARYING

– Als Parameter gibt man den Subscript oder den Index

an, der beim Bearbeiten der Schleife benutzt und

verändert werden soll.

14. August 2019 Seite: 150COBOL Grundlagen 1

Page 143: Teil 1: Grundlagen - cps4it · Inhalt • Einführung • Programmaufbau oder „Das erste Programm!“ • Arbeiten mit einfachen nummerischen Daten • Schleifen mit Zähler •

Sections

PERFORM - Bedeutung der Parameter – 2

• FROM

– Mit dem Parameter gibt man den Anfangswert an, d.h.

den Wert, den der Laufindex vor dem Durchlaufen

haben soll.

• BY

– Nach jedem Durchgang durch die Schleife wird der

Laufindex um das hier genannte Inkrement erhöht.

14. August 2019 Seite: 151COBOL Grundlagen 1

Page 144: Teil 1: Grundlagen - cps4it · Inhalt • Einführung • Programmaufbau oder „Das erste Programm!“ • Arbeiten mit einfachen nummerischen Daten • Schleifen mit Zähler •

Sections

PERFORM - Bedeutung der Parameter – 3

• UNTIL

– Eine Iteration ist die wiederholte Ausführung eines

oder mehrerer Befehle. Die Abbruchbedingung wird

durch die UNTIL-Klausel angegeben. Die Schleife

wird so lange durchlaufen, bis die Abbruchbedingung

erfüllt ist.

• section

– Beim out-line-PERFORM wird ein Prozedurname

angegeben. Die dort kodierten Befehle werden für

jeden Iterationsschritt ausgeführt.

14. August 2019 Seite: 152COBOL Grundlagen 1

Page 145: Teil 1: Grundlagen - cps4it · Inhalt • Einführung • Programmaufbau oder „Das erste Programm!“ • Arbeiten mit einfachen nummerischen Daten • Schleifen mit Zähler •

Sections

PERFORM - Bedeutung der Parameter – 4

• PERFORM ... END-PERFORM

– Bei dem in-line-PERFORM werden die zwischen dem

PERFORM und dem END-PERFORM kodierten

Befehle durchlaufen, bis die Abbruchbedingung(en)

erfüllt ist (sind).

14. August 2019 Seite: 153COBOL Grundlagen 1

Page 146: Teil 1: Grundlagen - cps4it · Inhalt • Einführung • Programmaufbau oder „Das erste Programm!“ • Arbeiten mit einfachen nummerischen Daten • Schleifen mit Zähler •

Sections

Übung(en)

• PgmCxx in Datei speichern

• PgmDxx schreiben

– PgmDxx soll eine Optimierung von PgmBxx und

PgmCxx sein

– Prüfen Sie, wo Sie in Ihrer Verarbeitung die einzelnen

Aufgaben in Sections auslagern können. Benutzen

Sie PERFORM section

• Test mit Analyse Joboutput / DUMP

14. August 2019 Seite: 154COBOL Grundlagen 1

Page 147: Teil 1: Grundlagen - cps4it · Inhalt • Einführung • Programmaufbau oder „Das erste Programm!“ • Arbeiten mit einfachen nummerischen Daten • Schleifen mit Zähler •

Inhalt

• Einführung

• Programmaufbau oder „Das erste Programm!“

• Arbeiten mit einfachen nummerischen Daten

• Schleifen mit Zähler

• Entscheidungen

• Schleifen mit Bedingungen

• Sections

• Tabellenverarbeitung

• sequentielle Dateien

14. August 2019 Seite 157COBOL Grundlagen 1

Page 148: Teil 1: Grundlagen - cps4it · Inhalt • Einführung • Programmaufbau oder „Das erste Programm!“ • Arbeiten mit einfachen nummerischen Daten • Schleifen mit Zähler •

Tabellenverarbeitung

Begriffe

14. August 2019 Seite 158COBOL Grundlagen 1

PERFORM

OCCURSStruktur

Haupt-

speicher

AFTER

BEFORE

Tabelle

Page 149: Teil 1: Grundlagen - cps4it · Inhalt • Einführung • Programmaufbau oder „Das erste Programm!“ • Arbeiten mit einfachen nummerischen Daten • Schleifen mit Zähler •

Tabellenverarbeitung

Fragen

• Was ist eine Tabelle?

• Wie ist eine Tabelle definiert?

• Welche Möglichkeit der Adressierung gibt es?

• Welche Möglichkeiten der Tabellenverarbeitung

gibt es?

• Wie kann man Tabellen mit Anfangswerten

versehen?

14. August 2019 Seite: 159COBOL Grundlagen 1

Page 150: Teil 1: Grundlagen - cps4it · Inhalt • Einführung • Programmaufbau oder „Das erste Programm!“ • Arbeiten mit einfachen nummerischen Daten • Schleifen mit Zähler •

Tabellenverarbeitung

Grundlagen

• Große Mengen von Daten

• gleichartige Daten

• Unterscheidung nur durch bestimmte Zuordnung

• Gleichheit der Daten in

– Länge

– Typ

– Speicherformat

14. August 2019 Seite: 160COBOL Grundlagen 1

Page 151: Teil 1: Grundlagen - cps4it · Inhalt • Einführung • Programmaufbau oder „Das erste Programm!“ • Arbeiten mit einfachen nummerischen Daten • Schleifen mit Zähler •

Tabellenverarbeitung

Beispiel Tagesumsatz – unbrauchbar

01 STAMMSATZ.

05 UMSATZ-TAG-001 PIC 9(4)V99.

05 UMSATZ-TAG-002 PIC 9(4)V99.

...

05 UMSATZ-TAG-366 PIC 9(4)V99.

14. August 2019 Seite: 161COBOL Grundlagen 1

Page 152: Teil 1: Grundlagen - cps4it · Inhalt • Einführung • Programmaufbau oder „Das erste Programm!“ • Arbeiten mit einfachen nummerischen Daten • Schleifen mit Zähler •

Tabellenverarbeitung

Beispiel Tagesumsatz – brauchbar

01 STAMMSATZ.

05 UMSATZ-TAG OCCURS 366

PIC 9(4)V99.

• Im Hauptspeicher stehen die Daten direkt hinter

einander.

14. August 2019 Seite: 162COBOL Grundlagen 1

Page 153: Teil 1: Grundlagen - cps4it · Inhalt • Einführung • Programmaufbau oder „Das erste Programm!“ • Arbeiten mit einfachen nummerischen Daten • Schleifen mit Zähler •

Tabellenverarbeitung

Beispiel Gehaltstabelle

01 GEHALTS-TABELLE.

05 GEHALT OCCURS 12.

10 BRUTTO PIC 9(5)V99.

10 ZULAGE PIC 9(5)V99.

10 ABZUG PIC 9(5)V99.

• Im Hauptspeicher stehen die Daten direkt hinter

einander in der Form:

– BRUTTO(1),ZULAGE(1),ABZUG(1),BRUTTO(2) etc.

14. August 2019 Seite: 163COBOL Grundlagen 1

Page 154: Teil 1: Grundlagen - cps4it · Inhalt • Einführung • Programmaufbau oder „Das erste Programm!“ • Arbeiten mit einfachen nummerischen Daten • Schleifen mit Zähler •

Tabellenverarbeitung

Übung(en)

• Neue Section im Programm anlegen

– Definieren Sie eine Tabelle, die als Initialwerte die

Monatsnamen enthält.

– Definieren Sie eine 2-dimensionale Tabelle aus 52

Wochen und je 7 Tagen. Die Tage haben 4 Vor- und 2

Nachkommastellen. Initialisieren Sie diese Tabelle auf

verschiedene Wege mit 0.

• Test mit Analyse Joboutput / DUMP

14. August 2019 Seite: 164COBOL Grundlagen 1

Page 155: Teil 1: Grundlagen - cps4it · Inhalt • Einführung • Programmaufbau oder „Das erste Programm!“ • Arbeiten mit einfachen nummerischen Daten • Schleifen mit Zähler •

Inhalt

• Einführung

• Programmaufbau oder „Das erste Programm!“

• Arbeiten mit einfachen nummerischen Daten

• Schleifen mit Zähler

• Entscheidungen

• Schleifen mit Bedingungen

• Sections

• Tabellenverarbeitung

• sequentielle Dateien

14. August 2019 Seite 165COBOL Grundlagen 1

Page 156: Teil 1: Grundlagen - cps4it · Inhalt • Einführung • Programmaufbau oder „Das erste Programm!“ • Arbeiten mit einfachen nummerischen Daten • Schleifen mit Zähler •

sequentielle Dateien

Begriffe

14. August 2019 Seite 166COBOL Grundlagen 1

ACCESS

READ

WRITEDIVISIONOPEN

CLOSE

MODE

BEFORE

INPUT-

OUTPUT

Page 157: Teil 1: Grundlagen - cps4it · Inhalt • Einführung • Programmaufbau oder „Das erste Programm!“ • Arbeiten mit einfachen nummerischen Daten • Schleifen mit Zähler •

sequentielle Dateien

wo steht was?

• ENVIRONMENT DIVISION

– Verbindungsname zur Job Control

– Programm logischer Name

• DATA DIVISION

– Gestalt der Buffer

– Satzbeschreibung

• PROCEDURE DIVISION

– OPEN, CLOSE, WRITE, READ, REWRITE, DELETE,

START

14. August 2019 Seite: 167COBOL Grundlagen 1

Page 158: Teil 1: Grundlagen - cps4it · Inhalt • Einführung • Programmaufbau oder „Das erste Programm!“ • Arbeiten mit einfachen nummerischen Daten • Schleifen mit Zähler •

sequentielle Dateien

ENVIRONMENT DIVISION

FILE-CONTROL.

SELECT Dateiname

ASSIGN TO DDname-1 [DDname-2]...

[ORGANIZATION IS SEQUENTIAL]

[ACCESS MODE IS SEQUENTIAL]

[FILE STATUS IS Datenname-3]

[PASSWORD IS Datenname-4]

14. August 2019 Seite: 168COBOL Grundlagen 1

Page 159: Teil 1: Grundlagen - cps4it · Inhalt • Einführung • Programmaufbau oder „Das erste Programm!“ • Arbeiten mit einfachen nummerischen Daten • Schleifen mit Zähler •

sequentielle Dateien

Beschreibung der Parameter – 1

• ORGANIZATION

– logischer Aufbau der Datei

– Organisation der Datei

• sequentiell, indiziert -> später, relativ -> später

• ACCESS MODE

– Zugriffsart auf die Sätze der Datei

• sequentiell, direkt -> später, dynamisch -> später

14. August 2019 Seite: 169COBOL Grundlagen 1

Page 160: Teil 1: Grundlagen - cps4it · Inhalt • Einführung • Programmaufbau oder „Das erste Programm!“ • Arbeiten mit einfachen nummerischen Daten • Schleifen mit Zähler •

sequentielle Dateien

Beschreibung der Parameter – 2

• PASSWORD

– IBM-Erweiterung -> noch nicht gesehen

• FILE-STATUS

– Definition eines Datenfeldes, in das während der

Verarbeitung der Zustand der Ein-/Ausgabe-operation

aufgenommen wird

– 2-stelliges Feld in DATA DIVISION

– Werte der beiden Bytes siehe COBOL Language

Reference “Status Key”

14. August 2019 Seite: 170COBOL Grundlagen 1

Page 161: Teil 1: Grundlagen - cps4it · Inhalt • Einführung • Programmaufbau oder „Das erste Programm!“ • Arbeiten mit einfachen nummerischen Daten • Schleifen mit Zähler •

sequentielle Dateien

Befehle – OPEN / CLOSE

• OPEN INPUT Dateiname-1 [Dateiname-2]

• OPEN OUTPUT Dateiname-1 [Dateiname-2]

• CLOSE Dateiname-1 [Dateiname-2]

14. August 2019 Seite: 171COBOL Grundlagen 1

Page 162: Teil 1: Grundlagen - cps4it · Inhalt • Einführung • Programmaufbau oder „Das erste Programm!“ • Arbeiten mit einfachen nummerischen Daten • Schleifen mit Zähler •

sequentielle Dateien

Befehle – READ

• READ dateiname [NEXT] RECORD

[INTO Datenname]

[AT END Anweisung-1]

[NOT AT END Anweisung-2]

END-READ

14. August 2019 Seite: 172COBOL Grundlagen 1

zusätzlicher Bereich z.B. Ende-Schalter z.B. Verarbeitung

Page 163: Teil 1: Grundlagen - cps4it · Inhalt • Einführung • Programmaufbau oder „Das erste Programm!“ • Arbeiten mit einfachen nummerischen Daten • Schleifen mit Zähler •

sequentielle Dateien

Befehle – WRITE

• WRITE datensatzname

[FROM Datenname]

END-WRITE

14. August 2019 Seite: 173COBOL Grundlagen 1

zusätzlicher BereichStufennummer 01

in FILE SECTION

Page 164: Teil 1: Grundlagen - cps4it · Inhalt • Einführung • Programmaufbau oder „Das erste Programm!“ • Arbeiten mit einfachen nummerischen Daten • Schleifen mit Zähler •

sequentielle Dateien

Programmlogik – Teil 1

ENVIRONMENT DIVISION.

CONFIGURATION SECTION.

SPECIAL-NAMES.

DECIMAL-POINT IS COMMA.

INPUT-OUTPUT SECTION.

FILE-CONTROL.

SELECT AMT-EINGABE ASSIGN TO DDSE01.

SELECT AMT-AUSGABE ASSIGN TO DDSA01.

*

DATA DIVISION.

FILE SECTION.

* DATEI DER AEMTER

FD AMT-EINGABE

BLOCK CONTAINS 0 RECORDS

RECORDING MODE IS F.

01 AMT-EIN-SATZ PIC X(80).

***

FD AMT-AUSGABE

BLOCK CONTAINS 0 RECORDS

RECORDING MODE IS F.

01 AMT-AUS-SATZ PIC X(80).

14. August 2019 Seite: 174COBOL Grundlagen 1

Page 165: Teil 1: Grundlagen - cps4it · Inhalt • Einführung • Programmaufbau oder „Das erste Programm!“ • Arbeiten mit einfachen nummerischen Daten • Schleifen mit Zähler •

sequentielle Dateien

Programmlogik – Teil 2

WORKING-STORAGE SECTION.

01 EINGABE-SATZ.

02 EINGABE-ZEILE PIC X(200) OCCURS 200.

/***************************************************************

PROCEDURE DIVISION.

SCHEIN SECTION.

****************************************************************

OPEN INPUT AMT-EINGABE

OPEN OUTPUT AMT-AUSGABE

READ AMT-EINGABE INTO EINGABE-ZEILE(1)

MOVE EINGABE-ZEILE(1) TO AMT-AUS-SATZ

WRITE AMT-AUS-SATZ

CLOSE AMT-EINGABE

CLOSE AMT-AUSGABE

14. August 2019 Seite: 175COBOL Grundlagen 1

Page 166: Teil 1: Grundlagen - cps4it · Inhalt • Einführung • Programmaufbau oder „Das erste Programm!“ • Arbeiten mit einfachen nummerischen Daten • Schleifen mit Zähler •

sequentielle Dateien

Programmlogik – Zusammenfassung

14. August 2019 Seite: 176COBOL Grundlagen 1

JCL

ENVIRONMENT DIVISION.

INPUT-OUTPUT SECTION.

FILE-CONTROL.

SELECT AMT-EINGABE ASSIGN TO DD01.

DATA DIVISION.

FILE SECTION.

FD AMT-EINGABE.

01 AMT-EIN-SATZ PIC X(80).

PROCEDURE DIVISION.

OPEN INPUT AMT-EINGABE

READ AMT-EINGABE

aber:WRITE AMT-AUS-SATZ !!

Page 167: Teil 1: Grundlagen - cps4it · Inhalt • Einführung • Programmaufbau oder „Das erste Programm!“ • Arbeiten mit einfachen nummerischen Daten • Schleifen mit Zähler •

sequentielle Dateien

Übung(en)

• neue Section im Programm anlegen

– Schreiben Sie ein Programm, das eine Datei

verarbeitet.

– Geben Sie die Sätze aus.

– Bei einem Gruppenwechsel geben Sie eine

zusätzliche Zeile mit “---” aus.

• Test mit Analyse Joboutput / DUMP

14. August 2019 Seite: 177COBOL Grundlagen 1

Page 168: Teil 1: Grundlagen - cps4it · Inhalt • Einführung • Programmaufbau oder „Das erste Programm!“ • Arbeiten mit einfachen nummerischen Daten • Schleifen mit Zähler •

zu guter Letzt

das gibt es auch

• GO TO NEIN!!!!

• NEXT SENTENCE NEIN!!!!

• Dringende Empfehlung:

>>> Punkt nur am Ende einer Section <<<

14. August 2019 Seite: 178COBOL Grundlagen 1

Page 169: Teil 1: Grundlagen - cps4it · Inhalt • Einführung • Programmaufbau oder „Das erste Programm!“ • Arbeiten mit einfachen nummerischen Daten • Schleifen mit Zähler •

Inhalt

• Einführung

• Programmaufbau oder „Das erste Programm!“

• Arbeiten mit einfachen nummerischen Daten

• Schleifen mit Zähler

• Entscheidungen

• Schleifen mit Bedingungen

• Sections

• Tabellenverarbeitung

• sequentielle Dateien

14. August 2019 Seite 180COBOL Grundlagen 1