-
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;-)).
Similar Threads
-
By philsturm in forum NEWSboard Programmierung
Antworten: 6
Letzter Beitrag: 05-09-14, 10:09
-
By Gimli in forum IBM i Hauptforum
Antworten: 1
Letzter Beitrag: 11-03-03, 11:16
-
By DEVJO in forum IBM i Hauptforum
Antworten: 3
Letzter Beitrag: 05-03-03, 08:18
-
By Gimli in forum IBM i Hauptforum
Antworten: 2
Letzter Beitrag: 04-03-03, 10:47
-
By Gimli in forum IBM i Hauptforum
Antworten: 6
Letzter Beitrag: 03-03-03, 11: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