uni-texte LehrbUcher G. M. Barrow, Physikalische Chemie I, II, III W. L. Bontsch-Brujewitsch II. P. Swaigin II. W. Karpenko I A. G. Mironow, Aufgabensammlung zur Halbleiterphysik L. Collatz I J. Albrecht, Aufgaben aus der Angewandten Mathematik I, II W. Czech, Obungsaufgaben aus der Experimentalphysik H. Dallmann I K.-H. Elster, Einfiihrung in die hahere Mathematik M. Denis-Papin I G. Cullmann, Obungsaufgaben zur Informationstheorie M. J. S. Dewar, Einfiihrung in die moderne Chemie N. W. Efimow, Hahere Geometrie I, II A. P. French, Spezielle Relativitiitstheorie J. A. Baden Fuller, Mikrowellen D. Geist, Halbleiterphysik I, II W. L. Ginsburg I L. M. Levin IS. P. Strelkow, Aufgabensammlung der Physik I P. Guillery, Werkstoffkunde fiir Elektroingenieure E. Hala IT. Boublik, Einfiihrung in die statistische Thermodynamik J. G. Holbrook, Laplace-Transformationen I. E. Irodov, Aufgaben zur Atom-und Kernphysik D. Kind, Einfiihrung in die Hochspannungs·Versuchstechnik S. G. Krein I V. N. Uschakowa, Vorstufe zur haheren Mathematik H. Lau I W. Hardt, Energieverteilung R. Ludwig, Methoden der Fehler-und Ausgleichsrechnung E. Meyer I R. Pottel, Physikalische Grundlagen der Hochfrequenztechnik E. Poulsen Nautrup, Grundpraktikum der organischen Chemie L. Prandtl I K. Oswatitsch I K. Wieghardt, Fiihrer durch die Stramungslehre J. Ruge, Technologie der Werkstoffe W. Rieder, Plasma und Lichtbogen D. Schuller, Thermodynamik F. G. Taegen, Einfiihrung in die Theorie der elektrischen Maschinen I, II W. Tutschke, Grundlagen der Funktionentheorie W. Tutschke, Grundlagen der reellen Analysis I, II H.-G. Unger, Elektromagnetische Wellen I, II H.-G. Unger, Quantenelektronik H.-G. Unger, Theorie der Leitungen H.-G. Unger I W. Schultz, Elektronische Bauelemente und Netzwerke I, II, III B. Vauquois, Wahrscheinlichkeitsrechnung W. Wuest, StramungsmeBtechnik Skripten J. Behne I W. Muschik I M. Piisler, Ringvorlesung zur Theoretischen Physik, Theorie der Elektrizitiit H. Feldmann, Einfiihrung in ALGOL 60 O. Hittmair I G. Adam, Ringvorlesung zur Theoretischen Physik, Wiirmetheorie H. Jordan I M. Weis, Asynchronmaschinen H. Jordan I M. Weis, Synchronmaschinen I, II H. Kamp I H. Pudlatz, Einfiihrung in die Programmiersprache PL/I G. Lamprecht, Einfiihrung in die Programmiersprache FORTRAN IV E. Macherauch, Praktikum in Werkstoffkunde P. Paetzold, Einfiihrung in die allgemeine Chemie E.-V. Schliinder, Einfiihrung in die Wiirme-und Stoffiibertragung W. Schultz, Einfiihrung in die Quantenmechanik W. Schultz, Dielektrische und magnetische Eigenschaften der Werkstoffe Hermann Kamp Hilmar Pudlatz EinfGhrung in die Programmiersprache PL/I uni--texte Programmiersprachen Harry Feldmann EinfDhrung in ALGOL 60 Hermann Kamp / Hilmar Pudlatz EinfDhrung in die Programmiersprache PLf I GUnther Lamprecht EinfDhrung in die Programmiersprache FORTRAN IV Hermann Kamp / Hilmar Pudlatz Einfuhrung in die Programmiersprache PL/I Skriptum fOr Harer aller Fachrichtungen ab 1. Semester 2., verbesserte Auflage Friedr. Vieweg + Sohn . Braunschweig Hermann Kamp ist wissenschaftlicher Mitarbeiter und Dr. Hilmar Pudlatz ist Akademischer Rat am Rechenzentrum der Westfälischen Wilhelms-Universität Münster. 1974 Alle Rechte vorbehalten Copyright © 1974 by Friedr. Vieweg & Sohn Verlagsgesellschaft mbR, Braunschweig Die Vervielfältigung und Übertragung einzelner Textabschnitte, Zeichnungen oder Bilder, auch fUr Zwecke der Unterrichtsgestaltung, gestattet das Urheberrecht nur, wenn sie mit dem Verlag vorher vereinbart wurden. Im Einzelfall muß über die Zahlung einer Gebühr flir die Nutzung fremden geistigen Eigentums entschieden werden. Das gilt fUr die Vervielfältigung durch alle Verfahren einschließlich Speicherung und jede Übertragung auf Papier, Transparente, Filme, Bänder, Platten und andere Medien. ISBN 978-3-528-13316-0 ISBN 978-3-322-85532-9 (eBook) DOI 10.1007/978-3-322-85532-9 Vorwort Das vorliegende Buch gibt eine Einfiihrung in die Programmiersprache PL/I; es mochte dem Benutzer ein Selbststudium ermog1ichen, wobei mathematische oder program miertechnische Vorkenntnisse nicht erforderlich sind. Die zum Verstiindnis des Buches notwendigen Begriffserkliirungen werden in der Einleitung sowie in Teilen von Kapitel I vermittelt, wiihrend Kapitel II die Grundelemente der Sprache PL/I beschreibt. Die folgenden Kapitel wollen den Anfanger auch an kompliziertere Pro gramm-und Datenstrukturen heranfiihren und Grundfragen der Programm-Optimie rung behandeln. FUr die Benutzung des Buches mochten wir uns wtinschen, da~ die beiden ersten Kapitel besonders grtindlich erarbeitet werden, da uns dann bereits ein selbstiindiges Programmieren in der Sprache PL/I mog1ich erscheint. Wir denken dabei nicht nur an technisch-wissenschaftliche oder kommerzielle Anwendungen, sondern mochten 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 Universitiit MUnster abgehalten haben. Eine gr6~ere Anzahl von Beispielprogrammen solI die an ihnen veranschaulichten Sprachelemente er liiutern, wobei auch die Daten und Ergebnisse der Programme mitgegeben werden. Wir danken Frau I. Schulze und Herrn J. van Dyck flir das Schreiben des Manus kripts sowie den Herren Dipl.-Math. B. Neukiiter und Dr. S. Zorkendorfer flir das Lesen der Korrekturen und flir zahlreiche Verbesserungsvorschiiige. Nicht zuletzt danken wir dem Verlag fUr die gute Zusammenarbeit bei der Entstehung dieses Buches. Hermann Kamp Hilmar Pudlatz MUnster, im Juli 1972 I nhaltsverzeichnis Einleitung 1 I Gnmdbegriffe der Programmierung 9 1. Ein einfaches Programm 9 2. Ein-und Ausgabeoperationen, Sprungbefehl 11 3. Verarbeitung von Zeichenketten 15 4. OO-Schleife, Felder 17 5. Darstellung von Zahlen und Zeichen 32 n Elementares PL/I 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 1lI Block-und Programmstrukturen 102 1. Blacke, Geltungsbereiche von VariablenerkHirungen, Marken 102 2. Programmunterbrechungen und Testhilfen 116 3. Subroutinen und Funktionen 130 4. Verschiedene Speicherklassen 142 N Datenorganisation 146 1. Aufbau von Dateien, Band und Platte 146 2. Indexsequentielle Dateien 163 3. Regionalda teien 174 V Fortgeschrittene PL/I-Techniken 182 1. Zeiger und Listen 182 2. Programmgenerierung wiihrend der Dbersetzung 194 3. PL/I-integriertes SortierjMischprogramm 202 4. Parallelverarbeitung 208 VI Programmbeispieie 213 -1- Einleitung Eine Programmiersprache ist eine Kunstsprache, mit deren Hilfe die Eingabe einer Folge von Arbeitsanweisungen (In struktionen) in eine elektronische Datenverarbeitungsanlage (EDVA) moglich ist. Eine EDVA ist einer Hilfskraft in einem Bliro vergleichbar, die nach einer festen Arbeitsvorschrift immer wiederkehrende Aufgaben erledigen kann. Dies solI am folgenden Bild anschaulich erlautert werden: Arbeits gegebene Ergebnisse vorschrift Daten Tabellen, Tisch notierte rechen Zwischen maschine ergebnisse Die Blirohilfskraft erhalt eine detaillierte Arbeitsvor schrift, in der die zu bewaltigende Aufgabe (z.B. eine Lohn abrechnung) genau beschrieben ist. Nach dieser Arbeitsvor schrift muS sie fUr eine Anzahl von Personen die Bruttolohne aus Stundenlohn und Stundenzahl ermitteln, Steuer- und Sozi alversicherungsbeitrage in Tabellen nachschlagen und aus den Bruttolohnen und den genannten Abzligen die Nettolohne er mitteln. FUr jede Person mlissen also zunachst gewisse Daten (Personalstammdaten und Arbeitsdaten) gelesen werden. Zur Durchflihrung der erforderlichen Rechnungen bedient sich die Hilfskraft einer Tischrechenmaschine, wobei die anfallenden Zwischenergebnisse auf Papier notiert werden (Bruttolohn, Summe der Abzlige). Steuern und Sozialversicherungsbeitrage werden aus vorhandenen Tabellenheften entnommen. Sie haben mit den erwahnten Zwischenergebnissen gemein, daB sie auch auf Papier festgehalten - wir sagen "gespeichert" - sind. -2- SchlieBlich 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 Kastchen (bis auf das Kastchen ftir die Arbeitsvorschrift) einzelne Gerate der EDVA, die man als Einheiten bezeichnet. Die gegebenen Daten oder Eingabedaten werden tiber die Ein gabeeinheit "eingelesen", der eigentliche Arbeitsablauf ge schieht in der Zentraleinheit, dem Kernsttick der Rechenan lage, und die Ergebnisse oder Ausgabedaten werden tiber eine Ausgabeeinheit sichtbar gemacht: Eingabeeinheit Ausgabeeinheit Eingabe Ausgabe daten daten Zr-e-n-tr-a-l-e-in--h-e-it- --- I r----"--.L-......t::....-..., I I Rechen Speicher werk IL _____________________________________ ...1I Die Arbeitsvorschrift entspricht bei einer EDVA dem Pro gramm, das in maschinenlesbarer Form etwa als Lochkartenpa ket tiber eine Eingabeeinheit in die Zentraleinheit gebracht wird. Dort wird es zunachst 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 Ausftihrung einer Multiplikation (Stundenlohn x Stundenzahl!) im Rechenwerk gesteuert und tiberwacht wird. Das Steuerwerk, das im obigen Bild der Btirokraft entspricht, tibernimmt hier deren zentrale Rolle im Arbeitsablauf. Die Aufgabe der Hilfskraft war im wesentlichen auch eine Steuerfunktion, namlich fUr die kor- -3- rekte Ausflihrung 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 Zust1:i.nden haben, denen man die Begriffe "Ja" und "Nein" oder die Ziffern "0" und "1" als kleinste Infor mationseinheiten zuordnen kann. Diese kleinste Informations einheit nennt man ein Bit (= Bissen, Happen). 8 Bits faBt man zu einem Byte zusammen, und 1024 Bytes nennt man 1 Kilo Byte (= KB, analoge Bildung wie Kilogramm = 1000 Gramm). Die GroBe des Kernspeichers ist ein ungefahres MaB flir die GroBe und Leistungsfahigkeit einer Rechenanlage: Rechner mit 4-16 KB KernspeichergroBe zahlt man zu den kleineren, solche mit 32-128 KB zu den mittleren Anlagen, wahrend man bei EDVA mit liber 256 KB von GroBrechnern spricht. Wichtig flir die Leistungsfahigkeit von Rechenanlagen ist ferner das Vorhandensein von schnellen externen Speicherein heiten wie Magnetplatten-, Magnettrommel- und Magnetstrei fenspeichern. Extern heiBen diese Speichertypen deshalb, weil sie raumlich von der Zentraleinheit getrennt sind (im Gegensatz zum internen Kernspeicher), und schnell sind diese Speicher wegen der Moglichkeit, zu einzelnen auf ihnen ge speicherten Daten in kurzer Zeit wahlfrei zugreifen zu kon nen, wobei je Sekunde mehrere 100000 Bytes in den Kernspei cher liberflihrt werden konnen. In diesem Sinne sind Magnet bandeinheiten langsame Externspeicher, weil hier die Uber 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, daB die gewlinschten Daten abgerufen werden kon nen).