Hermann Kamp Hilmar Pudlatz Einführung in die Programmier- sprache PL I für Hörer aller Fachrichtungen ab 1. Sem Third Edition Hermann Kamp Hilmar Pudlatz Einführung in die Programmiersprache PL/1 Programmiersprachen------------------- Formale Sprachen, von H. Becker und H. Walter Einführung in ALGOL 60, von H. Feldmann Einführung in ALGOL 68, von H. Feldmann Einführung in die Programmiersprache PASCAL, von K.-H. Becker und G. Lamprecht Einführung in PASCAL, von H. Feldmann Die Programmiersprache PASCAL, von D. Krekel und W. Trier Einführung in die Programmiersprache Ada, von M. Nagl Einführung in die Programmiersprache PL/1, von H. Kamp und H. Pudlatz Einführung in die Programmierpsrache FORTRAN 77, von G. Lamprecht Einführung in die Programmiersprache SIMULA, von G. Lamprecht Einführung in die Programmiersprache BASIC, von W.-D. Schwill und R. Weibezahn BASIC in der medizinischen Statistik, von H. Ackermann Einführung in die Programmiersprache COBOL, von W.-M. Kähler PEARL, Processand Experiment Automation Realtime Language, von W. Werum und H. Windauer Vieweg---------------------/ Hermann Kamp/Hilmar Pudlatz Einführung in die Programmiersprache PL/1 Für Hörer aller Fachrichtungen ab 1. Semester 3. Auflage Springer Fachmedien Wiesbaden GmbH 1. Auflage I 9 72 2., verbesserte Auflage 1974 Nachdruck 1980 Nachdruck 1983 3. Auflage 1986 Alle Rechte vorbehalten © Springer Fachmedien Wiesbaden 1986 Ursprünglich erschienen bei Friedr. Vieweg & Sohn Verlagsgesellschaft mbH, Braunschweig 1986 Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Jede Verwertung außerhalb der engen Grenzen des Urheberrechtsgesetzes ist ohne Zustimmung des Verlags unzulässig und strafbar. Das gilt insbesondere ftir Verviclf<iltigungen, Übersetzungen, Mikroverfilmungen und die Einspeicherung und Verarbeitung in elektronischen Systemen. ISBN 978-3-528-23316-7 ISBN 978-3-663-14154-9 (eBook) DOI 10.1007/978-3-663-14154-9 Vorwort Das vorliegende Buch gibt eine Einführung in die Programmiersprache PL/1; es möchte dem Benutzer ein Selbststudium ermöglichen, wobei mathematische oder program miertechnische Vorkenntnisse nicht erforderlich sind. Die zum Verständnis des Buches notwendigen Begriffserklärungen werden in der Einleitung sowie in Teilen von Kapitel I vermittelt, während Kapitel II die Grundelemente der Sprache PL/1 beschreibt. Die folgenden Kapitel wollen den Anfänger auch an kompliziertere Pro gramm-und Datenstrukturen heranführen und Grundfragen der Programm-Optimie rung behandeln. Für die Benutzung des Buches möchten wir uns wünschen, daß die beiden ersten Kapitel besonders gründlich erarbeitet werden, da uns dann bereits ein selbständiges Programmieren in der Sprache PL/1 möglich erscheint. Wir denken dabei nicht nur an technisch-wissenschaftliche oder kommerzielle Anwendungen, sondern möchten auch Benutzer aus dem Bereich der Geisteswissenschaften und der Verwaltungen ansprechen. Dieses Skriptum lehnt sich eng an Vorlesungen und Kurse an, die wir am Rechenzentrum der Universität Münster abgehalten haben. Eine größere Anzahl von Beispielprogrammen soll die an ihnen veranschaulichten Sprachelemente er läutern, wobei auch die Daten und Ergebnisse der Programme mitgegeben werden. Wir danken Frau I. Schulze und Herrn J. van Dyck für das Schreiben des Manus kripts sowie den Herren Dipl.-Math. B. Neukäter und Dr. S. Zörkendörfer für das Lesen der Korrekturen und für zahlreiche Verbesserungsvorschläge. Nicht zuletzt danken wir dem Verlag ftir die gute Zusammenarbeit bei der Entstehung dieses Buches. Hermann Kamp Münster Hilmar Pudlatz In ha ltsverze ich ni s Einleitung 1 I Grundbegriffe der Programmierung 9 1. Ein einfaches Programm 9 2. Ein-und Ausgabeoperationen, Sprungbefehl 11 3. Verarbeitung von Zeichenketten 15 4. 00-Schleife, Felder 17 5. Darstellung von Zahlen und Zeichen 32 II Elementares PL/1 51 1. Verschiedene Formen der Ein-und Ausgabe 51 2. Eingebaute Funktionen 54 3. Bitketten, logische Operationen 70 4. Strukturen, Felder von Strukturen 79 5. Satzweise Ein-und Ausgabe, Files 87 III Block-und Programmstrukturen 102 1. Blöcke, Geltungsbereiche von Variablenerklärungen, Marken 102 2. Programmunterbrechungen und Testhilfen 116 3. Subroutinen und Funktionen 130 4. Verschiedene Speicherklassen 142 IV Datenorganisation 146 1. Aufbau von Dateien, Band und Platte 146 2. Indexsequentielle Dateien 163 3. Regionaldateien 174 V Fortgeschrittene PL/1-Techniken 182 1. Zeiger und Listen 182 2. Programmgenerierung während der Übersetzung 194 3. PL/1 -integriertes Sortier /Mischprogramm 202 4. Parallelverarbeitung 208 VI Programmbeispiele 213 -1- Einleitung Eine Programmiersprache ist eine Kunstsprache, mit deren Hilfe die Eingabe einer Folge von Arbeitsanweisungen (In struktionen) in eine elektronische Datenverarbeitungsanlage (EDVA) möglich ist. Eine EDVA ist einer Hilfskraft in einem Büro vergleichbar, die nach einer festen Arbeitsvorschrift immer wiederkehrende Aufgaben erledigen kann. Dies soll am folgenden Bild anschaulich erläutert werden: Arbeits gegebene Ergebnisse vorschrift Daten Tisch rechen maschine ergebnisse Die Bürohilfskraft erhält eine detaillierte Arbeitsvor schrift, in der die zu bewältigende Aufgabe (z.B. eine Lohn abrechnung) genau beschrieben ist. Nach dieser Arbeitsvor schrift muß sie für eine Anzahl von Personen die Bruttolöhne aus Stundenlohn und Stundenzahl ermitteln, Steuer- und Sozi alversicherungsbeiträge in Tabellen nachschlagen und aus den Bruttolöhnen und den genannten Abzügen die Nettolöhne er mitteln. Für jede Person müssen also zunächst gewisse Daten (Personalstammdaten und Arbeitsdaten) gelesen werden. Zur Durchführung der erforderlichen Rechnungen bedient sich die Hilfskraft einer Tischrechenmaschine, wobei die anfallenden Zwischenergebnisse auf Papier notiert werden (Bruttolohn, Summe der Abzüge). Steuern und Sozialversicherungsbeiträge werden aus vorhandenen Tabellenheften entnommen. Sie haben mit den erwähnten Zwischenergebnissen gemein, daß sie auch auf Papier festgehalten - wir sagen "gespeichert" - sind. -2- Schließlich werden alle interessierenden Daten als Ergebnis der Lohnabrechnung notiert und abgelegt. Eine EDVA - wir sagen auch vereinfachend Rechenanlage, Rechner oder "Maschine" - arbeitet im wesentlichen nach dem gleichen Prinzip. Dabei entsprechen den oben angegebenen Kästchen (bis auf das Kästchen für die Arbeitsvorschrift) einzelne Geräte der EDVA, die man als Einheiten bezeichnet. Die gegebenen Daten oder Eingabedaten werden über die Ein gabeeinheit "eingelesen", der eigentliche Arbeitsablauf ge schieht in der Zentraleinheit, dem Kernstück der Rechenan lage, und die Ergebnisse oder Ausgabedaten werden über eine Ausgabeeinheit sichtbar gemacht: Eingabeeinheit Ausgabeeinheit Eingabe Ausgabe daten daten Rechen Speicher werk I I L-------------------------------------..J Die Arbeitsvorschrift entspricht bei einer EDVA dem Pro gramm, das in maschinenlesbarer Form etwa als Lochkartenpa ket über eine Eingabeeinheit in die Zentraleinheit gebracht wird. Dort wird es zunächst gespeichert. Vom Speicher werden die einzelnen Instruktionen des Programms nach und nach in das Steuerwerk geholt, wo sie interpretiert werden und von wo aus der einzelne Arbeitsschritt z.B. die Ausführung einer Multiplikation (Stundenlohn x Stundenzahl!) im Rechenwerk gesteuert und überwacht wird. Das Steuerwerk, das im obigen Bild der Bürokraft entspricht, übernimmt hier deren zentrale Rolle im Arbeitsablauf. Die Aufgabe der Hilfskraft war im wesentlichen auch eine Steuerfunktion, nämlich für die kor- -3- rekte Ausführung der einzelnen Instruktionen der Arbeitsvor schrift Sorge zu tragen. Wenn eben vom Speicher die Rede war, so ist damit der Hauptspeicher der Zentraleinheit gemeint, der wegen seines Aufbaus aus magnetisierbaren Ferrit-Kernen auch Kernspeicher genannt wird. Jeder Ferrit-Kern kann einen von zwei polaren magnetischen Zuständen haben, denen man die Begriffe "Ja" und "Nein" oder die Ziffern "O" und "1" als kleinste Infor mationseinheiten zuordnen kann. Diese kleinste Informations einheit nennt man ein Bit(= Bissen, Happen). 8 Bits faßt man zu einem Byte zusammen, und 1024 Bytes nennt man 1 Kilo Byte(= KB, analoge Bildung wie Kilogramm= 1000 Gramm). Die Größe des Kernspeichers ist ein ungefähres Maß für die Größe und Leistungsfähigkeit einer Rechenanlage: Rechner mit 4-16 KB Kernspeichergröße zählt man zu den kleineren, solche mit 32-128 KB zu den mittleren Anlagen, während man bei EDVA mit über 256 KB von Großrechnern spricht. Wichtig für die Leistungsfähigkeit von Rechenanlagen ist ferner das Vorhandensein von schnellen externen Speieberein heiten wie Magnetplatten-, Magnettrommel- und Magnetstrei fenspeichern. Extern heißen diese Speichertypen deshalb, weil sie räumlich von der Zentraleinheit getrennt sind (im Gegensatz zum internen Kernspeicher), und schnell sind diese Speicher wegen der Möglichkeit, zu einzelnen auf ihnen ge speicherten Daten in kurzer Zeit wahlfrei zugreifen zu kön nen, wobei je Sekunde mehrere 100000 Bytes in den Kernspei cher überführt werden können. In diesem Sinne sind Magnet bandeinheiten langsame Externspeicher, weil hier die Über tragungsgeschwindigkeit von Daten in den Kernspeicher lang samer als bei den oben genannten Typen ist und der Zugriffs mechanismus nicht wahlfrei sein kann (bei einem Magnetband kann es Sekunden, ja Minuten dauern, bis das Band soweit ab gespult ist, daß die gewünschten Daten abgerufen werden kön nen).