Anmelden

View Full Version : SQL-Precompiler mitten in einer DCL-DS



prsbrc
11-07-19, 07:57
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

mk
11-07-19, 08:34
Hi,

also die Fehlermeldung sagt das der END-DS fehlt.

prsbrc
11-07-19, 08:40
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

B.Hauser
11-07-19, 18:02
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

B.Hauser
11-07-19, 18:06
Sorry! Doppelt geposted

Birgitta

prsbrc
12-07-19, 06:49
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

B.Hauser
13-07-19, 14:00
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

prsbrc
16-07-19, 06:44
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