- ILE RPG
-
RPG ist eine problemorientierte Programmiersprache für den kaufmännischen Bereich.
Inhaltsverzeichnis
Zweck und Ursprung
RPG steht ursprünglich für Report Program Generator. Die Sprache wurde von IBM ursprünglich für das Erstellen von kaufmännischen Listen (Reports) entwickelt. Ein Compiler für die erste Version erschien 1959. Zu damaliger Zeit arbeitete man mit Tabelliermaschinen und Lochkarten, deshalb war der Sprachaufbau, bevor RPG IV erschien, spaltenorientiert. Die Sprache wird hauptsächlich im Bereich der Großrechner und Minirechner, wie beispielsweise auf dem S/390 oder der AS/400 (iSeries), eingesetzt. Von einer Sprache zur Listenbearbeitung entwickelte sich RPG weiter zu einer Programmiersprache, die alle kaufmännischen Anwendungen abdeckte, inklusive Dialogverarbeitung und Arbeit mit relationalen Datenbanken.
RPG II , RPG III, RPG/400
Programme, die mit RPG geschrieben wurden, pflegt man auch in der heutigen Zeit. Nach Weiterentwicklungen (RPG II , RPG III, RPG/400) können neuere Projekte inzwischen mit dem besseren RPG IV (ILE RPG) geschrieben werden.
RPG-Programme werden in einem Programmzyklus verarbeitet, dessen Schritte sich ständig wiederholen. Im ersten Schritt werden allgemeine Informationen der Kopfzeile (Header) verarbeitet. Danach folgt das Lesen eines Datensatzes und dessen Verarbeitung. Der nächste Schritt ist die Ausgabe der verarbeiteten Daten. Ist danach ein bestimmter Indikator (der LR-Indikator) auf ON gesetzt, so wird das Programm beendet. Falls der Indikator weiterhin auf OFF gesetzt ist, wird der nächste Datensatz für die Verarbeitung vorbereitet.
Ein einfaches Programm kommt mit fünf von insgesamt zehn Bestimmungen aus:
- Header-Bestimmung − Sie legt allgemeine Bedingungen und Werte fest.
- File Description (Dateibeschreibung) − Sie beschreibt alle vom Programm verwendeten Dateien. Dafür werden folgende Informationen benötigt: 1. Dateiname, 2. Art der Dateiverwendung 3. Satzlänge in der Datei, 4. Eingabe- oder Ausgabeeinheit
- Input (Eingabebestimmung) − Sie legt Felder, Konstanten oder Datenstrukturen fest.
- Calculation (Rechenbestimmung) – Sie dient der Verarbeitung der Daten. Sie legt die Reihenfolge und die jeweiligen Befehle fest.
- Output (Ausgabeoperation) − Sie beschreibt die Felder und Sätze der Ausgabedateien sowie die Bedingung, unter der die Ausgabe durchgeführt wird.
Der Programmzyklus übernimmt die Verarbeitungsregeln für die jeweilige Datei. Der Programmierer braucht sich also nicht um den Zugriff auf jeden einzelnen Datensatz zu kümmern, was jedoch auch eine gewisse Unflexibilität mit sich bringt. Die Verwendung des Zyklus ist ein Relikt aus RPG II. In heutigen RPG-Programmen wird er meist nicht mehr verwendet. RPG war außerdem mit gewissen Einschränkungen behaftet: So war es beispielsweise nicht möglich, komplexere Berechnungen, wie rekursive Algorithmen, auszuführen.
RPG IV (ILE RPG)
ILE RPG ist eine von IBM entwickelte Programmiersprache. Die Abkürzung ILE steht für Integrated Language Environment und bezeichnet eine im Jahr 1993 eingeführte Entwicklungsumgebung. Die erste Sprache, die mit ILE konzipiert wurde, war ILE C/400 für die Version V2R3 des Betriebssystems OS/400. Erst in der Version V3R1 kamen die Sprachen ILE RPG, ILE COBOL/400 und ILE CL (Control Language) hinzu.
ILE RPG bietet als Nachfolger von RPG einige erhebliche Veränderungen und Erweiterungen:
- Die neue D-Bestimmung (Definitionsbestimmung) ist nun die Standardbestimmung für das Deklarieren von Feldern, Datenstrukturen oder Konstanten.
- Einbindung von SQL-Befehlen zum Lesen bzw Ändern von Datenbanken.
- Es ist gleichgültig, ob der Quellcode in Groß- oder Kleinbuchstaben geschrieben wird.
- Etliche Beschränkungen wurden korrigiert, z. B. die Erweiterung für die maximale Zeichenlänge von Feldnamen von 6 Zeichen auf 17 Zeichen.
- Vielfältige Möglichkeiten für Datums- und Zeitoperationen.
- Pointerorientierte Operationen.
- Eine Vielzahl integrierter Funktion (Build-In-Functions wie z. B. %trim - Entfernen von Leerzeichen).
- Möglichkeit nicht mehr spaltenorientiert arbeiten zu müssen durch die Compiler-Anweisung /FREE (erst ab OS/400-Version 5)
Beispiele
1. Dateibeschreibung
FDateiname+IPEASF.....L.....A.E/AEinh.Schlüsselwörter++ Ftest1 IF E DISK
Dieses Beispiel zeigt, wie die Bestimmungen für die Datei test1 festgelegt wird. I definiert eine Eingabedatei, F legt eine voll prozedurale Datei fest, d.h. die Verarbeitung wird nicht dem Programmzyklus überlassen. Durch E wird festgelegt, dass die Datei extern beschrieben ist. DISK gibt an, dass die Datei auf der Festplatte oder im einstufigen Speicher liegt.
2. Prozeduren, Definitionsbestimmungen und Rechenbestimmungen
Programm zur Berechnung der FakultätH DFTACTGRP(*NO) DName+++++++++++ETDsVon++++Bi/L+++IDG.Schlüsselwörter++++++++ D Fak PR 10I 0 D Zahl 10I 0 VALUE D Wert S 10I 0 CL0N01Faktor1+++++++Opcode&ExtErweiterter-Faktor2++++++++++++ C EVAL Wert = Fak(5) C DSPLY Wert C EVAL *INLR = *ON P Fak B D Fak PI 10I 0 D Zahl 10I 0 VALUE C IF Zahl = 1 C RETURN Zahl C ELSE C EVAL Zahl = Zahl * Fak(Zahl - 1) C RETURN Zahl C ENDIF P Fak E
Fak wird mit PR als Prozedur definiert. Das I gibt an, dass es sich beim Rückgabewert um eine ganze Zahl handelt, die 10 Stellen lang ist und 0 Dezimalstellen besitzt. Zahl ist der erste Parameter der Prozedur. Er wird mit VALUE als Wertparameter deklariert. Die Prozedur muss schließlich unter den Hauptrechenbestimmungen definiert werden.
Durch die Anweisung EVAL werden Feldern bestimmte Werte zugewiesen. DSPLY gibt eine Programmnachricht aus. INLR ist der Indikator, der angibt, dass das Programm beendet ist.
3. RPG-Free-Format
DName+++++++++++ETDsVon++++Bi/L+++IDG.Schlüsselwörter++++++++ D Array S 10I 0 DIM(5) D K S 10I 0 /FREE FOR k = 1 TO %elem(Array); Array(k) = k; ENDFOR; EVAL *INLR = *ON; /END-FREE
Dieses Beispiel zeigt die Verwendung des Free-Formats. Die eigentlichen Anweisungen müssen hierbei zwischen den Compiler-Direktiven /FREE und /END-FREE stehen.
Plattformen
RPG wurde ursprünglich für das IBM System/360 entwickelt. Für die Systeme /3, /32, /34, /36, /38 wurden immer wieder Erweiterungen geschaffen, welche schließlich mit dem ILE-Konzept auf der AS/400, iSeries und aktuell dem System-I (vorgestellt 2008) den vorläufigen Höhepunkt erreichten. Es existieren aber auch Implementierungen für Siemens BS2000, WANG VS und HP3000 sowie verschiedene Compiler für unixbasierte Systeme (Unibol) und PC (Baby/400, Lattice-RPG).
Sonstiges
Unter Programmierern kursiert der Scherz, RPG bedeute "Raten, Probieren, Glauben" oder auch "Raten, Probieren, Gewinnen."
Weblinks
Wikimedia Foundation.