PDA

View Full Version : Full Free RPG



Seiten : [1] 2

User_
15-01-20, 14:47
Hallo,
komme aus der RPG400 Welt ..
Frage,
wenn ich ein Full free RPG erstellen will, welchen Teildateityp muss die Quelle haben ?
Wie lang soll und kann die Quellendatei sein und muss diese einen speziellen Namen (QRPGLESRC ?? ) haben?
hat jemand ein kleines Beispiel eines Full Free RPG Programmes mit dcl und lesen einer physischen Datei und SQL ( select ) ?
wo und wie wird eine physische Datei beschrieben ?
Danke für eure Hilfe

Fuerchau
15-01-20, 15:15
Der Name der SRC-PF spielt keine Rolle, der Typ muss RPGLE oder SQLRPGLE sein.
Die Länge der SRCPF ist fast beliebig, 200 ist eine gängige Größe.
Das Mischen unterschiedlicher Längen bei Copy/Include kann schon mal zu Problemen führen.

Full-Free fängt dann mit

**free

als 1. Zeile an. Der Rest ist im RPGLE-Handbuch ganz gut erklärt.
https://www.ibm.com/support/knowledgecenter/en/ssw_ibm_i_73/rzasd/rzasdmain.htm

B.Hauser
15-01-20, 15:21
Solange du **FREE nicht auf der ersten Position in der ersten Zeile angegeben hast, kannst Du noch fix und free Format Code-Zeilen mischen (z.B. Free Form F-Specs und Free Form eigenständige Felder) und fix Format Datenstrukturen). Der (free Format) Source Code ist in diesem Fall auf die Stellen 8-80 beschänkt.

Wenn **FREE angegeben wurde, darf die Quelle keinerlei Fix-Format-Zeilen mehr enthalten. Fix-Format-Zeilen können allenfalls über eine Copy-Strecke eingebunden werden.
Der Source Code ist nur noch durch die länge der Quellen-Datei beschränkt, d.h. der Source Code kann bei Position 1 beginnen und bis zum Ende der Zeile gehen.

Fuerchau
15-01-20, 15:25
Zumindest seit V7R2 ist das Mischen auch mit **free wieder möglich. Diese Einschränkung scheint aufgehoben zu sein.

B.Hauser
15-01-20, 15:47
Zumindest seit V7R2 ist das Mischen auch mit **free wieder möglich. Diese Einschränkung scheint aufgehoben zu sein.

Wie kommst Du auf dieses schmale Brett!
Wenn die Datei mit **FREE beginnt ist KEIN Fix Format (außer in eingebundenen Copy-Strecken) zulässig. Du bekommst eine Latte von Compile Fehlern.
Probier's aus!

Birgitta

Fuerchau
15-01-20, 16:06
Daich mit SQLRPGLE arbeite mischt der Precompiler lustig Free und Fixed RPG-Code ohne dass der Compiler streikt.
In der Quelle findet man dann
**ENDFREE
:
**FREE

Es gilt also dasselbe wie früher mit /free und /endfree, was man allerdings inzwischen ebenso weglassen kann.

User_
16-01-20, 07:54
Hallo,
vielen Dank, hat mir schon sehr geholfen.
Dem hinweis folgend, konnte ich aber nicht so recht meine Frage beantwortet wissen, wegen dem laden und verarbeiten von Daten aus physichen Dateien und SQL.
Könnt Ihr mir da noch einen Schubs geben, Beispiele , Miniprogramme , etc .?
Gibts eine Literatur oder WIKI oder ähnlich, wo ich schnell in die Besonderheiten von FULLFREE ersehe und auch vergleichen kann, RPG400 - ILE - FREE - FULLFREE,

Da gehts mir hier im besonderem um Dateiverarbeitung, Berechnung , Vergleiche und Ausgabe ..

Im Bedanke mich bereits im voraus für eure Hilfe ..

B.Hauser
16-01-20, 08:35
Das kann man nicht unbedingt in 2 Minuten beantworten:
1. Wenn SQL eingebunden werden soll muss das Quellen-Attribut SQLRPGLE sein. Die Umwandlung erfolgt dann mit dem Befehl CRTSQLRPGI
2. Jedes eingebundene SQL-Statement muss mit EXEC SQL beginnen und mit Semikolon enden.
3. Man kann in den SQL-Befehlen Host-Variablen einsetzen (Variablen, die mit RPG definiert sind und somit im RPG Code angesprochen werden können. Host-Variablen müssen in SQL Statements immer mit einem führenden Doppelpunkt angegeben werden.
4.Wie man jetzt Cursor definiert und verarbeitet geht an dieser Stelle etwas zu weit. Da musst Du Dich schon etwas einlesen (oder irgendwo eine entsprechende Schulung besuchen):
Hier einige Links:
Embedded SQL Programming (https://www.ibm.com/support/knowledgecenter/ssw_ibm_i_74/rzajp/rzajppdf.pdf?view=kc)
Modernizing IBM i Applications from the Database up to the User Interface and Everything in Between (http://www.redbooks.ibm.com/abstracts/sg248185.html?Open)
http://www.redbooks.ibm.com/abstracts/sg246393.html?Open
Vom ITP-Verlag gab es auch mal ein Buch zum Thema Modernisierung, in dem gab es ein riesiges Kapitel zum Thema Embedded SQL. Bin mir aber nicht sicher ob man das noch irgendwo bestellen kann.

Birgitta

Fuerchau
16-01-20, 08:42
https://www.ibm.com/support/knowledgecenter/en/ssw_ibm_i_71/pdftable/pdftable.htm

Lade dir das aktuelle RPG-Reference-Handbuch herunter. Dort sind die Fullfree-Anweisungen ebenso dokumentiert.
Allerdings scheint man sich da ja nun inzwischen auch anmelden zu müssen.
Auf Deutsch" klappts dann:
https://www.ibm.com/support/knowledgecenter/de/ssw_ibm_i_73/rzasd/sc092508.pdf

Dies betrifft ja sowieso nur die "dcl-"-Zeilen, dcl-s, dcl-ds, dcl-f, dcl-pi, dcl-pr, ctl-opt, dcl-proc.
Im Bereich C-Zeilen (/free) hat sich nichts geändert außer, dass man sich /free und /end-free nun sparen kann.

Wichtig ist, dass man sich bei der Verwendung von SQLRPGLE auf eine einheitliche Länge der SRC-PF's festlegt. Der Precompiler legt in der QTEMP eine SRC-PF in der Länge der Hauptquelle an.
Beim Zusammenkopieren werden dann breitere Copy/Includes abgeschnitten und man wundert sich über die Fehlermeldungen.
Auch ist es immer noch schade, dass man zwar Copynest angeben kann, der SQL-Precompiler dies aber immer noch nicht erlaubt und Includes ignoriert.
Das bekommt man dann nur mit *LVL2-RPG-Option hin, die man aber leider immer noch nicht in CTL-OPT (H-Bestimmung) angeben kann.

malzusrex
16-01-20, 08:44
Kurze Tipps zum Umstieg von RPG nach Free-RPG
gibt es auch
hier (https://www.rpgpgm.com/2014/02/defining-variables-in-rpg-all-free.html)