RPG steht für Report Program Generator und stellt eine problemorientierte Programmiersprache sowie einen Programmgenerator dar. Sie wurde von IBM für die Arbeit mit Lochkarten entwickelt, weswegen der Sprachaufbau auch spaltenorientiert ist. Die Sprache wird hauptsächlich im Bereich der Großrechner und Minirechner, wie z. B. auf dem S/390 oder der AS/400 (iSeries), eingesetzt. RPG dient im kaufmännischen Umfeld der Datenlistenbearbeitung, d.h. die Hauptaufgabe besteht im Lesen, Berechnen und formatierten Ausgeben von Datenbankdateien.
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 5 von insgesamt 10 Bestimmungen aus:
Die Header-Bestimmung legt allgemeine Bedingungen und Werte fest.
Die Dateibeschreibung 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
Die Eingabebestimmung legt Felder, Konstanten oder Datenstrukturen fest.
Die Rechenbestimmung dient der Verarbeitung der Daten. Sie legt die Reihenfolge und die jeweiligen Befehle fest.
Die Ausgabeoperation 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 im Allgemeinen nicht mehr verwendet. RPG war des Weiteren mit gewissen Einschränkungen behaftet. So war es beispielsweise nicht möglich, komplexere Berechnungen, wie rekursive Algorithmen, auszuführen.
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:
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ät
H 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 = 0 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.
RPG wurde ursprünglich für die IBM-Systeme /3, /32, /34, /36, /38 und AS/400 entwickelt. 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). Im November 2005 startete außerdem ein quelloffenes Compiler-Projekt auf http://rpg2cpp.berlios.de/ .
RPG programming language | Lenguaje de programación RPG | Générateur automatique de programmes | RPG (linguaggio di programmazione) | RPG (programmeertaal) | RPG (język programowania) | RPG (linguagem de programação)
This article is licensed under the GNU Free Documentation License.
It uses material from the
"RPG (Programmiersprache)".
Home Page • arts • business • computers • games • health • hospitals • home • kids & teens • news • physicians • recreation• reference • regional • science • shopping • society • sports • world