RPG (Programmiersprache)

aus Wikipedia, der freien Enzyklopädie
Dies ist eine alte Version dieser Seite, zuletzt bearbeitet am 7. Dezember 2005 um 20:48 Uhr durch Varus (Diskussion | Beiträge). Sie kann sich erheblich von der aktuellen Version unterscheiden.
Zur Navigation springen Zur Suche springen

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 I - IV

Programme, die mit RPG geschrieben wurden, pflegt man auch in der heutigen Zeit. Nach Weiterentwicklungen (RPG I - IV) können neuere Projekte inzwischen mit dem besseren 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 5 von insgesamt 10 Bestimmungen aus:

  • Header
  • File Description (Dateibeschreibung)
  • Input (Eingabe)
  • Calculation (Berechnung)
  • Output (Ausgabe)

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

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.
  • 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 10 Zeichen.
  • Vielfältige Möglichkeiten für Datums- und Zeitoperationen.
  • Eine Vielzahl integrierter Funktion (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ä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 vereinbart 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 Liste S 10I 0 DIM(5)
D K S 10I 0
 /FREE
 FOR k = 1 TO %elem(Liste);
 Liste(k) = k;
 ENDFOR; 
 
 EVAL *INLR = *ON; 
 /END-FREE 


Plattformen

RPG wurde ursprünglich für die IBM-Systeme /3, /32, /34, /36, /38 and AS/400 entwickelt. Es existieren aber auch Implementierungen für Siemens BS2000 und WANG VS 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/ .


Abgerufen von „https://de.wikipedia.org/w/index.php?title=RPG_(Programmiersprache)&oldid=11422777"