View Full Version : SQL-Precompiler mitten in einer DCL-DS
Guten Morgen wertes Forum.
Ich bastle gerade an ein paar Programme welche denselben Copysource mit einer Datenstrukturdefinition includen.
Beim letzten Programm knallt mir jedoch der SQL-Precompiler seine Copystrecken mitten in die DCL-DS (siehe Bild) und das dies nun nicht mehr zu compilieren ist versteh ich ... :p
530
Hat dies schon jemand gehabt bzw weiß wer wie ich das lösen kann (PTF etc) und/oder warum das der Precompiler so macht ?
OS 7.2
Vielen lieben Dank und Grüße
Christian
Hi,
also die Fehlermeldung sagt das der END-DS fehlt.
Jeb, da die SQLCA vor dem END-DS hinein gemogelt wurde :-)
**FREE
/IF DEFINED (PARM_SET1)
DCL-DS InParameters_Set1_Template TEMPLATE QUALIFIED;
Company CHAR(3);
Division CHAR(3);
CustomerNumber CHAR(10);
ItemNumber CHAR(10);
END-DS;
DCL-DS Parameter_Set1_Template TEMPLATE QUALIFIED;
DCL-DS InParameter LIKEDS(InParameters_Set1_Template);
OutParameter CHAR(130) DIM(27);
END-DS;
DCL-DS DynamicCallDS_Set1_Template TEMPLATE QUALIFIED;
Parameters LIKEDS(Parameter_Set1_Template);
END-DS;
/UNDEFINE PARM_SET1
/ENDIF
M.E. ist der verschachtelte DCL-DS falsch!
Versuch mal die Datenstruktur-Definition wie folgt zu ändern:
DCL-DS Parameter_Set1_Template TEMPLATE QUALIFIED;
InParameter LIKEDS(InParameters_Set1_Template);
OutParameter CHAR(130) DIM(27);
END-DS;
Birgitta
Sorry! Doppelt geposted
Birgitta
Einen wunderschönen guten Morgen.
Danke für den Hinweis. Des Fehler hab ich gestern auch schon entdeckt oder Fehler... unschönheit da sich die anderen Programme ja mit dieser Copystrecke komillieren lassen :-)
Ich habe testweise die Definition folgendermaßen umgebaut sowie den INCLUDE in eine Prozedur verschoben:
DCL-DS DynamicCallDS_Set1_Template TEMPLATE QUALIFIED;
DCL-DS Values;
DCL-DS InParameter;
Company CHAR(3);
Division CHAR(3);
CustomerNumber CHAR(10);
ItemNumber CHAR(10);
END-DS;
OutParameter CHAR(130) DIM(27);
END-DS;
END-DS;
Jedoch leider mit einem ähnlichem Ergebnis.
531
Nun knallt der Precompiler zwar nicht mehr die SQLCA hinein (die landet knapp vor der Main PROC - somit global) sondern die Arbeitsfelder SQL_00... zwischen dem OutParameter und END-DS. Scheinbar ein nicht lösbares Problem bei mir hier somit baue ich die Programme wieder auf nicht verschachtelte DS retour ... :-)
Edit: Im Herbst gibts dann ein neues Blech dann versuch ichs mitn neuen Release erneut.
Edit2: Easy cheesy Arrays anstatt DS und schon lässt es sich kompillieren.
LG
M.E. brauchst Du die verschachtelten DCL-DS nicht anzugeben.
Versuch mal die Datenstruktur wie folgt zu definieren:
DCL-DS DynamicCallDS_Set1_Template TEMPLATE QUALIFIED;
Values;
InParameter Overlay(Values);
Company CHAR(3) Overlay(InParameter);
Division CHAR(3) Overlay(InParameter: *Next);
CustomerNumber CHAR(10) Overlay(InParameter: *Next);
ItemNumber CHAR(10) Overlay(InParameter: *Next);
OutParameter CHAR(130) DIM(27) Overlay(Values: *Next);
END-DS;
Birgitta
holgerscherer
13-07-19, 18:40
Edit: Im Herbst gibts dann ein neues Blech dann versuch ichs mitn neuen Release erneut.
Um neue Releases zu testen, musst Du nicht unbedingt auf ein neues Blech warten. Da gibt es doch externe Lösungen ;-)
-h
Guten Morgen in die Runde.
Herzlichen Dank Birgitta für die Anregung. Habs so umgesetzt und läuft natürlich wunderbar :-)
Dank auch an Holger für seine PUB400.
greets