-
Verschachtele /COPY Anweisung und embedded SQL
Hallo,
ich möchte 2 Copy Strecken verschachteln und bekomme im embedded SQL den Fehler SQL1003: Verschachtelte /COPY-Anweisungen nicht zulässig.
Weiß jemand auf die Schnelle, ob man das beim CRTSQLRPGI einstellen kann? Bisher hatten wir die Verschachtelung einfach mit /INCLUDE anstatt /COPY gemacht. Dadurch hat der SQL Precompiler die 2. Copy Strecke ignoriert und es gab keinen Verschachtelungskonflikt. Jetzt brauche ich in einem Programm aber die 2. Copy Strecke und möchte, dass auch embedded SQL die Verschachtelung auflöst. Geht das?
Dieter
-
RPGPPOPT(*LVL1/*LVL2) sollte dies dann machen.
-
Ich habe es gerade ausprobiert. *LVL2 scheint für uns genau das richtige zu sein.
Herzlichen Dank.
Dieter
-
Bedenke bei geschachtelten Copies/Includes Mehrfachcopies/Rekursionen per
#ifndef MyCopyMbr
#define MyCopyMbr
:
:
#endif
(oder so ähnlich) auszuschließen.
-
Vielen Dank für den Hinweis. Wir haben 2 "Ebenen" von Copystrecken. Zum einen die für die Serviceprogramm-Prototypes und zum anderen eine für Datenstrukturen. Die Serviceprogramm Copy-Strecken beinhalten alle auch die Datenstrukturen-Copystrecke. In der Datenstruktur Copy Strecke haben wir alles mit der if defined Direktive abgesichert. Z.B.:
/if not defined(COPY__###_um_SwitchDS)
D um_SwitchDS DS qualified template
D Name 50A varying
D Wert N
/define COPY__###_um_SwitchDS
/endif
Scheint jedenfalls zu klappen.
Nochmals Danke,
Dieter
-
Diese Direktiven sind am Besten grundsätzlich anzuwenden, also egal von welchem Typ der Copy ist.
Der "/define" gehört direkt nach den "/if"!
Warum?
Da Copies nun mal gerne länger als eine Seite sind, fügt hier irgendjemand einen neuen /Copy vor dem "/define" ein und schon klappts nicht mehr mit der Absicherung, da der /Define zu spät kommt.
-
Also wäre folgendes besser?
/if not defined(COPY__###_um_SwitchDS)
/define COPY__###_um_SwitchDS
D um_SwitchDS DS qualified template
D Name 50A varying
D Wert N
/endif
-
genau . also ich mache das persönlich immer so .
/if not defined(COPY__###_um_SwitchDS)
/define COPY__###_um_SwitchDS
bla bla
/endif
-
Nun, das entspricht doch eher einer verständlichen Logik.
Solange nun keiner einen "/undef" einbaut, bist du auf der sicheren Seite.
Mittel "/if" lassen sich auch "konfigurierbare" Copies erstellen.
Ich habe mehrere Gruppen von Funktionen in einem Copy.
Allerdings benötige ich nicht alle.
So kann ich in meiner Hauptquelle definieren:
/define FktBlock1
/define FktBlock2
:
/copy FktCopy
Ähnlich wird es in z.B. C++ auch gemacht (Dieter wird jetzt mal wieder dagegen sprechen).
Auch Versionen lassen sich so ggf. steuern.
/if Defined(Version_2)
d myCallProc pr extproc(MyCallProcV2)
d Parm1
d Parm2
/else
d myCallProc pr extproc(MyCallProc)
d Parm1
/endif
Solange also keiner explizit auf V2 verweist, wird die alte Funktion verwendet.
Dies vereinfacht die Kompilierung ins besonders bei längeren Copystrecken.
Dieter wird auch hier was dagegen haben.
-
Vielen Dank.
ich denke, ich werde unsere copy-Strecke entsprechend umbauen.
Dieter
Similar Threads
-
By NEWSolutions Redaktion in forum NEWSolutions artikel
Antworten: 0
Letzter Beitrag: 05-12-13, 05:55
-
By kuetemaj in forum IBM i Hauptforum
Antworten: 4
Letzter Beitrag: 05-02-03, 07:31
-
By Ludger Muhmann in forum IBM i Hauptforum
Antworten: 3
Letzter Beitrag: 30-07-02, 09:49
-
By Stefan_R in forum IBM i Hauptforum
Antworten: 0
Letzter Beitrag: 12-10-01, 09:47
-
By Marcus Scherz in forum IBM i Hauptforum
Antworten: 1
Letzter Beitrag: 26-07-01, 07:29
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