-
Free RPG und Copies/Includes
So ich das neue Free RPG schätze (auch wenn sich nach Dieters Meinung die IBMer schief lachen), so sehr treibt's mich manchmal zur Verzweifelung.
Ist das nun wirklich nicht möglich, dass ich auf ein "DCL-F" nicht mehr eine "DEFINE" konditionierte Anweisung mittels "copy" oder "include" definieren kann. Da erhalt ich doch glatt die Meldung RNF0202: THE DIRECTIVE IS NOT SUPPORTED IN A FREE-FORM STATEMENT.
Weiss da jemand Bescheid?
kf
-
Poste mal den Code. Ich denke da liegt eher ein Syntax-Fehler vor.
Der Compiler liefert da schon mitunter komische Meldung, z.B.:
exec sql delete mytable where ...;
Hier kommt nun die Meldung "... wird von diesem Release nicht unterstützt ...".
Früher wurde man da eher auf das fehlende " from " hingewiesen.
-
Hier mein Beispiel:
dcl-f myDSPFile workstn(*ext) usropn
/copy qrpgcpysrc,f_infds
sfile(MySfl:RRN);
und im f_infds steht:
/if defined (INFDS)
infds(myInfDS)
/endif
Ergibt die erwähnte Fehlermeldung
kf
-
Dies liegt in der generellen Syntax begründet:
Solange eine Anweisung nicht mit Semikolon abgeschlossen ist, wird sie als eine Zeile betrachtet.
Nur Kommentare bis Zeilenende werden ausgeblendet.
Deine Anweisung wird nun mal als:
dcl-f myDSPFile workstn(*ext) usropn /copy qrpgcpysrc,f_infds sfile(MySfl:RRN);
interpretiert. Da ist ein copy/include nun leider nicht mehr möglich.
Hat nun mal alles so seine Vor/Nachteile.
-
Nachtrag:
Wobei ich eine bedingte INFDS eher für unsinnig halte;-).
-
Ggf. hilft ja noch ein kleiner Trick:
Definiere die Quelle als SQLRPGLE (man muss kein SQL verwenden).
Verwende beim CRTxxx die Option RPGPPOPT(*LVL2)!
Dies löst Copy/Includes auf bevor der SQL-Precompiler dran ist da der das mitunter nicht kann.
Für Nicht-SQL-RPG's gibt's diese Option wohl nicht.
-
Baldur,
Ist ja nur ein Beispiel - ich hätte ja auch ein zweites SFL hinschreiben können. Allerdings ist das wirklich ein Mist (hmmm, ob ich Dieter doch Recht geben sollte) .
Hingegen in einer DCL-S geht's:
siehe hier:
DCL-S salary
/IF DEFINED(large_vals)
PACKED(13:3)
/ELSE
PACKED(7:3)
/ENDIF
;
Nachtrag: Sorry, ist kein Copy.
Mal gucken was Barbara zum Copy meint ;-)
kf
-
Also wenn /IF-Anweisungen gehen mag er ja nur den Copy nicht. Versuch es doch mal mit dem Include, die Syntax ist ja die selbe.
Ansonsten ist das halt eine Fehlermeldung an IBM wert.
RPGLE ist da sowieso nicht besonders flexibel.
Ins besonders bei bedingten Daten-Teilstrukturen. Wenn sowas auch noch in Prototypen vorkommt (LIKEDS ist schnell gewählt) kann es ganz schön knallen.
Includes zu bedingen macht bei RPGLE eigentlich nur Sinn um doppelte Includes zu verhindern.
Sprachen wie C++ machen das zwar gerne, C++ hat aber genug Laufzeitprobleme bei falschen Definitionen.
Es gibt bei RPGLE zu wenig Laufzeit-Überwachungen (Pufferüberschreibungen werden ja hier häufiger mal gemeldet;-)).
-
M.E. Sollte es eigentlich immer noch funktionieren.
Poste es doch mal im IBM-Forum, das liest auch Barbara Morris und gibt entsprechende Antworten.
IBM RPG Forum
-
Licht im Dunkel...
/COPY oder /INCLUDE ist innerhalb von free form Statements nicht erlaubt. Erlaubt sind /IF, /ELSEIF, /ELSE und /ENDIF.
Um beim Beispiel zu bleiben müsste der Code so aussehen:
dcl-f myDSPFile workstn(*ext) usropn
/if defined (INFDS)
infds(f_infds)
/endif
sfile(MySfl:RRN);
Und um die "myINFDS" nicht "hart" zu codieren, kann ich mir als Copy Feld
definieren. Das kann man natürlich mit allen entsprechenden Keywords machen, klar.
Herzlichen Dank an Barbara Morris.
kf
-
/IF wird ja mit /ENDIF beendet, besitzt also ein Ende-Tag.
Von der Syntax müsste also ein /ENDCOPY bzw. /ENDINCLUDE implementiert werden.
Vielleicht kommt das ja auch mal irgendwann;-)?
-
... der RPG Parser kann nicht schachteln, das sieht man auch schon daran, dass bei einer if Anweisung das if, jedes else und das endif mit semikolon abgeschlossen werden müssen.
D*B
Similar Threads
-
By philsturm in forum NEWSboard Programmierung
Antworten: 6
Letzter Beitrag: 05-09-14, 09:09
-
By Gimli in forum IBM i Hauptforum
Antworten: 1
Letzter Beitrag: 11-03-03, 10:16
-
By DEVJO in forum IBM i Hauptforum
Antworten: 3
Letzter Beitrag: 05-03-03, 07:18
-
By Gimli in forum IBM i Hauptforum
Antworten: 2
Letzter Beitrag: 04-03-03, 09:47
-
By Gimli in forum IBM i Hauptforum
Antworten: 6
Letzter Beitrag: 03-03-03, 10:23
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- You may not post attachments
- You may not edit your posts
-
Foren-Regeln
|
Erweiterte Foren Suche
Google Foren Suche
Forum & Artikel Update eMail
AS/400 / IBM i
Server Expert Gruppen
Unternehmens IT
|
Kategorien online Artikel
- Big Data, Analytics, BI, MIS
- Cloud, Social Media, Devices
- DMS, Archivierung, Druck
- ERP + Add-ons, Business Software
- Hochverfügbarkeit
- Human Resources, Personal
- IBM Announcements
- IT-Karikaturen
- Leitartikel
- Load`n`go
- Messen, Veranstaltungen
- NEWSolutions Dossiers
- Programmierung
- Security
- Software Development + Change Mgmt.
- Solutions & Provider
- Speicher – Storage
- Strategische Berichte
- Systemmanagement
- Tools, Hot-Tips
Auf dem Laufenden bleiben
|
Bookmarks