PDA

View Full Version : SQLRPGLE im Free-Format wird nicht kompiliert



Tobse77
28-11-07, 16:17
Hallo,

habe im Free-Format einige SQL-Statements nach folgendem Schema eingebunden:

H ....
D ....

/Free

Exec SQL
Create KdCsr Cursor for
Select KdNr, KdVrn1, KdPLV
From KUNDST00
Where KdMan = 1 and KdLand = 'FR'
For Read Only;

Exec SQL
Open KdCsr;
.
.
.
.

*inLR = *on;

/End-Free

Beim Versuch dieses Programm per Auswahl 14 (CRTSQLRPGI) zu kompilieren (mit Commit *NONE, da nicht journalisiert), bekomme ich 183 Fehler des Typs *RNF0257 (Eintrag für Formularart für Hauptprozedur ungültig oder in falscher Reihenfolge)
und 1 Fehler des Typs *RNF7023 (Das Umwandlungsprogramm kann nicht bestimmen, wie das Programm enden kann.)

Die 183 Fehler entsprechen ziemlich genau der Anzahl der Statements in meinem PGM.

Weiß jemand auf Anhieb, was hier der Fehler sein könnte :confused:

Noch etwas... ich beziehe mich in meinen eingebundenen SQL-Statements auf mehrere Dateien, von denen ich eine auch fortschreibe. Muss ich diese in den F-Bestimmungen definieren, obwohl ich die Felder aussschließlich in den SQL-Statements anspreche ????

Bogomil
28-11-07, 16:47
Hallo Tobse77,

es müsste EXEC SQL declare KdCstr for ... heissen.

Wenn Dein Code spaltengrecht gezeigt wird, dann beginnt Dein Code zu früh.
"/FREE" muss ab Spalte 7 beginnen. Der eigentliche Programmcode darf in Free-RPG erst ab Spalte 8 beginnen.
Im SEU (ab V5R4) oder im Websphere wird ein Fehler dafür angezeigt.
Im SEU vor V5R4 gibt es für Free-RPG leider keine Syntaxprüfung.

Bogomil

B.Hauser
28-11-07, 16:53
Mit welchem Release arbeitest Du?

Embedded SQL im Free Format wird standardmäßig erst ab Release V5R4 unterstützt.

Unter Release V5R3 kann man Free Format SQL mit diversen PTFs nachrüsten.

Übrigens: Wenn man die Free-Format-Unterstützung für SQL hat, kann man auch auf V5R2 runtercompilieren und diesen Code auf Maschinen mit V5R2 ohne Probleme laufen lassen.

Dateien, die mit SQL angesprochen bzw. verarbeitet werden müssen nicht in den F-Bestimmungen angegeben werden. Ob nur gelesen wird oder auch Updates erfolgen ist unerheblich.

Birgitta

Tobse77
28-11-07, 17:02
Hallo :-)

Die Vermutung von Bogomil war (leider) richtig !! Ich habe nochmals die Spalten abgezählt und dabei festgestellt, dass die Anweisungen /Free und /End-Free um eine Stelle zu weit rechts auf St. 8 waren :-((

Schade, dass SEU hierauf nicht hinweist !!! Übrigens: Wir haben hier Release V5R4 und ich habe trotzdem keinen Fehler angezeigt bekommen.

Declare habe ich im Sourcecode stehen ... hab mich hier im Forum "vertippt"


Nun funktioniert alles !!

Danke für eure Hilfe !!

Tobias