PDA

View Full Version : RPGII, RPGIII, RPG400, RPGIV, ILE Was ist was?



Seiten : [1] 2

Schnichels
26-05-04, 09:06
Hallo,

wir diskutieren gerade über die verschiedenen RPG-Arten.
Sind uns aber nicht ganz einig was die Bezeichnung nun eigentlich bedeuten.

RPGII:
ganz altes RPG mit Zyklus, Quellenart RPG

RPGIII + RPG400:
"normales RPG" ohne Zyklus, Quellenart RPG

ILERPG + RPGIV:
ILE-RPG, Quellenart RPGLE

Free-Format-RPG:
?????????????????????

Ist das so richtig?

Gibt es einen Unterschied zwischen ILERPG und RPGIV?

Was ist Free-Format-RPG? Ab welchem Release kann man es
einsetzen? Worin besteht der Unterschied zu ILERPG?

Und wo geht die Reise hin? ILERPG, Free-Format, ........ ???

Was ist eure Meinung?

Vielen Dank im Voraus

Jürgen Schnichels

Fuerchau
26-05-04, 09:22
Alle RPG-Versionen (auch ILE) unterstützen noch die Zyklus-Programmierung !

RPGIV ist auch Quellenart RPG und ist eigentlich identisch zu RPG/400.

ILERPG und Freeformat (seit V5) gehören eigentlich zusammen. Das Freeformat bietet nur eine etwas komfortablere Quelleneditierung (Einrückungen) und ein paar Erweiterungen bzgl. der Dateizugriffe (Keyliste ohne KLIST).
Ansonsten kann auch ohne /Free genau das Gleiche programmiert werden wie mit /Free.

B.Hauser
26-05-04, 10:33
Hier ein kurzer Überblick:

RPGII oder RPG/36 --> auf der /36
RPGIII oder RPG/38 --> auf der /38

RPG400 entspricht RPGIII nur auf der AS/400
RPGIII und RPG400 werden oft als Synonym verwendet.
Quellenart RPG
--> RPGII, RPGIII und RPG400 sind definitiv tot, da alle weitere Entwicklung nur noch in RPGIV erfolgt.

RPGIV seit Release V3R1M0
Quellenart RPGLE
Erweiterung von RPGIII
Längere Datei-/Feld-Namen, z.T. andere OpCodes z.B. SELECT statt SELEC, erweiterter Faktor 2, Einsatz von Built-in-Funktionen

Free Format RPG seit Release V5R1M0
Quellen-Art RPGLE
C-Bestimmungen können ohne Spalten-Format geschrieben werden.
Free-Format-Codierung beginnt mit der Compiler-Direktive /FREE und endet mit /END-FREE.
Free-Format und klassische Schreibweise können in der gleichen Quelle verwendet werden.
Veränderte Reihenfolge im Free-Format: OPCODE Faktor1 Faktor2 Ergebnis.
Keine Unterstützung von Bedingungs- und Ergebnis-Indikatoren
Nicht alle OPCodes werden im Free Format unterstützt (z.B. MOVE)
Felddefinitionen sind nur in D-Bestimmungen möglich
Jedes Statement endet mit einem Semi Colon.
In Release V5R1M0 gibt es für jede Free-Format-Codierung eine Entsprechung in der klassischen Schreibweise. In V5R2M0 gibt es Neuerungen, die nur noch im Free-Format möglich sind.
Free Format RPG ist und bleibt RPGIV (zumindest vorerst!)

ILERPG und RPGIV werden oft als Synonym verwendet, was jedoch nicht ganz korrekt ist. Jedes ILERPG-Programm ist in RPGIV geschrieben, jedoch nicht jedes RPGIV-Programm ist ein ILE Programm.
ILE ist eigentlich ein Programmierungs-Konzept, mit Prototyping, Erstellen von Prozeduren, Funktionen, Service-Programmen u.ä.
Durch ILE ist es möglich Funktionen und Methoden aus anderen Programmiersprachen (z.B. C oder JAVA) direkt in ein Programm einzubinden.

Was die zukünftige Entwicklung in RPG angeht:
1. Umstieg auf RPGIV
2. Free-Format ist im ersten Schritt nicht unbedingt erforderlich.
(In Code400 gibt es z.B. eine Option, mit der Quellen von der klassischen Schreibweise in Free-Format konvertiert werden können)
3. Ganz wichtig sich mit den ILE-Konzepten auseinander setzen und auf modulare Programmierung umsteigen.
4. Noch ist RPG auf der i5 die erste Wahl, auch wenn manche Kollegen anderer Meinung sind.
Allerdings sollte man, gerade was Dialog-Programmierung angeht, mal in Richtung JAVA schauen.

Birgitta

Schnichels
26-05-04, 10:47
Hallo,

danke für die ausführlichen Antworten. Jetzt wissen wir Bescheid.

mfG

Jürgen Schnichels

Schnichels
26-05-04, 11:25
Doch noch ein paar Fragen:

RPG/400 ist immer Quellenart RPG?

RPG IV ist immer Quellenart RPGLE?

Es reicht nicht aus aus einer RPG einfach einen RPGLE Quelle zu machen und diese dann umzuwandeln. Mann muss diese mit CVTRPGSRC umsetzen, dann ist eine RPGLE Quelle entstanden, wenn ich diese dann umwandele habe ich ein RPG IV Programm aber ohne ILE Funktionen?

Jetzt kann ich in diese Quelle ILE Funktionen einbauen, dann habe ich ein ILE Programm?

So richtig?

mfG

Jürgen Schnichels

B.Hauser
26-05-04, 11:55
Hallo Jürgen,

wenn Du von RPGIII auf RPGIV konvertieren willst benötigst Du den Befehl CVTRPGSRC.
Bei diesem Befehl werden die Bestimmungs-Arten umgesetzt.
H-Bestimmungen sind in RPGIV nicht mehr an ein Spalten-Format gebunden, sondern werden durch Schlüssel-Worte angegeben.
In den F-Bestimmungen gibt es einige Änderungen, z.B. ein Datei-Name kann in RPGIV bis zu 10 Stellen lang sein.
E-Bestimmungen und L-Bestimmungen und Teile der I-Bestimmungen werden in D-Bestimmungen, die es in RPG400 noch nicht gibt umgewandelt. Faktor1, Faktor2 und Ergebnis sind in RPGIV 14 Stellen lang, OpCode 10 stellen. Der Convert-Befehl bereitet die C-Bestimmungen im neuen Format auf.
Das Ergebnis ist immer noch RPG400, das jetzt nach RPGIV aussieht.
Für weitere Anpassungen z.B. Ersetzen von Z-ADD in EVAL brauchst Du ein Tool oder viel Fleiss.
In diesen geänderten Quellen kannst Du alles machen, was in RPGIV z.Z. möglich ist, z.B. Built-in-Funktionen einbauen, Qualifizierte Datenstrukturen definieren u.v.m.

Wenn Du RPGLE-Quellen mit Auswahl 14 umwandelst, wirst Du feststellen, dass auch ein anderer Compile-Befehl verwendet wird.
RPG400-Quellen werden mit CRTRPGPGM erstellt, während für RPGIV der Befehl CRTBNDRPG verwendet wird.

Sobald Du wirklich mit ILE anfängst, wirst du feststellen, dass vieles z.B. auch die Umwandlung nicht mehr so einfach geht. Und man des öfteren vor Problemen steht, die man sich zu RPGIII-Zeiten noch nicht mal vorstellen konnte.

Noch eine Anmerkung:
Falls Du SQL in deinen Quellen verwendest, muss die Quellen-Art für RPG400 SQLRPG und für RPGIV SQLRPGLE sein.
Ansonsten haben RPG400 Quellen immer die Quellen-Art RPG und RPGIV und ILERPG-Quellen die Quellen-Art RPGLE

Birgitta

Schnichels
26-05-04, 12:10
D A N K E !!!!!!!!!!!!!!!!!!!!!!!!!!

Fuerchau
26-05-04, 12:14
Ein, mittels CVTRPGSRC umgesetztes Programm ist im Sinne von ILE tatsächlich ein ILE-Programm.
Es besteht zwar nur aus einem Modul, verwendet aber trotzdem die Service-Programme der Laufzeitumgebung und ist deshalb als ILE-Programm anzusehen.
OPM-Programme (RPG) verwenden keine Service-Programme.

Nachzusehen über DSPPGM, ziehmlich zum Schluß werden die verwendete Service-Programme und Funktionen aufgelistet.

Aber: Es ist alles eine Betrachtungsweise.

B.Hauser
26-05-04, 12:32
Hallo Baldur,

sobald Prozeduren aus Service-Programmen aufgerufen werden, spricht man tatsächlich von ILE, auch wenn das Programm nur aus einem Modul besteht.

Wenn aber nur im OPM-Stil programmiert wird, also nur dynamische Programm-Aufrufe erfolgen, ist das m.E. kein ILE sondern RPGIV.
In RPGIII war ein statischer Prozedur-Aufruf noch nicht möglich, deshalb kann aus konvertierten Quellen ohne entsprechende Bearbeitung kein ILE-Programm entstehen.

ILE ist das Konzept und nicht die Programmiersprache!
Die ILE-Konzepte gelten ebenso für C oder COBOL.

Birgitta

Sven Schneider
26-05-04, 20:06
Hallo Birgitta,
ich möchte mich auch noch einmischen.
Ich muß hier Baldur rechtgeben.

Aus technischer Sicht ist ein mit CRTBNDPGM und DFTACTGRP(*YES) umgewandeltes RPGIV-Programm eine ILE-Objekt, es verhält sich halt wie ein OPM-Programm.

Auszug aus Online-Doku :

Wird dieses Programm aufgerufen, wird es immer in der
Standardaktivierungsgruppe ausgeführt. Die
Standardaktivierungsgruppe ist die Aktivierungsgruppe, in der alle
OPM-Programme (OPM = Original Program Model) ausgeführt werden.

Wird DFTACTGRP(*YES) angegeben, verhalten sich ILE RPG-Programme in
bezug auf die gemeinsame Benutzung von Dateien, den Dateibereich und
RCLRSC wie OPM-Programme.

Statisches Binden in ILE ist nicht verfügbar, wenn ein Programm mit
DFTACTGRP(*YES) erstellt wird. Dies bedeutet, daß beim Erstellen
dieses Programms die Parameter BNDDIR oder ACTGRP nicht verwendet
werden können. Darüber hinaus muß jede Aufrufoperation in der Quelle
ein Programm und nicht eine Prozedur aufrufen.

DFTACTGRP(*YES) ist sinnvoll, wenn versucht wird, eine Anwendung auf
Programmbasis in ILE RPG zu übertragen.


Weil auch CRTBNDRPG nutzt intern CRTRPGMOD und den Linker CRTPGM.
Und da hier ja Service-Progamme der ILE-Laufzeitumgebung statisch gebunden und zur Laufzeit auch genutzt werden, handelt es sich um ein ILE-Programmobjekt.
Jederzeit mit DSPPGM kontrollierbar.

Das Programm läuft halt nur in der Default-Aktivierungsgruppe, kann keine selbst!!! geschriebenen Prozeduren aufrufen und statisches Binden eigener!!! Module/Service-Programme ist nicht möglich.

Das Programm kann sehr wohl aber statisch gebundene Prozeduren der Laufzeitumgebung aufrufen.

Oder um es anders auszudrücken es gibt keinen OPM-Compiler für den Sprachstandard RPGIV.
Technisch wäre das sicherlich möglich, wenn man auf die ILE-Konstukte verzichten würde.

Sven