Anmelden

View Full Version : Embedded SQL in NoMain-Modulen nicht zulässig?



JonnyRico
02-12-04, 10:58
Hi,

kann es sein das ich Embedded SQL in NoMain Modulen nicht verwenden kann? Der Compiler steigt an der Stelle jedenfalls aus ;o(

Gruß

Sascha

BenderD
02-12-04, 11:09
Hallo Sascha,

der PreCompiler ist halt Steinzeit, der empfindlich auf Nichtglobales reagiert und wohl vermutlich Deklarationen in C Lochkarten ablocht. Ich mache da folgendes:
kein Nomain in H ablochen, als Modul umwandeln und ganz normal ein Serviceprogramm erstellen - und um mir alle Diskussionen mit dem maroden Compiler zu sparen mache ich ein SET OPTION im globalen Teil (der nie ausgeführt wird) und verlege auch die Cursor Deklarationen dahin.

mfg

Dieter Bender


Hi,

kann es sein das ich Embedded SQL in NoMain Modulen nicht verwenden kann? Der Compiler steigt an der Stelle jedenfalls aus ;o(

Gruß

Sascha

sim
02-12-04, 11:16
....ach wie schön wäre ein RPG Befehl wie:
%sql('select * from .....');


sim

B.Hauser
02-12-04, 12:26
Hi,

kann es sein das ich Embedded SQL in NoMain Modulen nicht verwenden kann? Der Compiler steigt an der Stelle jedenfalls aus ;o(

Gruß

Sascha

Hallo Sascha,

Embedded SQL kann in NoMain Modulen verwendet werden. Wird nutzen dies intensiv.

Es wäre wichtig zu wissen wer aussteigt, der PreCompiler oder der RPG Compiler. Weiterhin ware es interessant die genaue Fehlermeldung oder das SQL-Statement zu sehen, das Anstoss erregt.

Mit lokalen Variablen hatte ich bisher auch noch nie Probleme.

Allerdings sollte man darauf achten, dass Cursor-Namen, innerhalb eines Modules eindeutig sind. Werden lokale Variablen in mehreren Prozeduren mit dem gleichen Namen definiert, sollte auch die Definition (Feldtyp / Länge) identisch sein. Ansonsten eindeutige Namen verwenden.

Grund dafür ist, dass der Precompiler für die API-Aufrufe eigene Felder generiert und bei gleichen Namen mit unterschiedlicher Definition ins Schleudern kommt. Die Original-Host-Variablen werden in diese Felder umgeladen.

Ein Problem gibt es allerdings in NoMain Prozeduren:
Wenn keine F oder globalen D-Bestimmungen vorhanden sind, bzw. über /INCLUDE für den Precompiler ausgeblendet werden, wird die SQLCA nicht in die Quelle kopiert. In diesem Fall hilft die Definition eines Dummy-Feldes in den globalen Definitions-Bestimmungen.

Weiterhin ist es nicht möglich, Felder, die im Procedure Interface der jeweiligen Prozedur definiert wurden im embedded SQL zu verwenden. Dafür müssen zusätzliche Variablen definiert werden.

Birgitta

JonnyRico
02-12-04, 17:59
Hi,

danke für eure Tips. Der PreCompiler lief durch. Es war ein Problem im RPG-Compiler. Die Meldung war irgendwas mit "...in NoMain nicht zugelassen".
Ich hab's jetzt aber gerade noch einmal probiert und nun klappt es auf einmal. Vielleicht hab ich heute morgen einfach was übersehen oder war noch nicht ganz wach. Trotzdem euch allen vielen Dank.

Gruß

Sascha

JonnyRico
02-12-04, 18:14
Hi,

danke für eure Tips. Der PreCompiler lief durch. Es war ein Problem im RPG-Compiler. Die Meldung war irgendwas mit "...in NoMain nicht zugelassen".
Ich hab's jetzt aber gerade noch einmal probiert und nun klappt es auf einmal. Vielleicht hab ich heute morgen einfach was übersehen oder war noch nicht ganz wach. Trotzdem euch allen vielen Dank.

Gruß

Sascha