Anmelden

View Full Version : Embedded SQL: "Select into" in 7.1



MSC
08-06-12, 15:59
Hallo zusammen,

eine RPG-IV-Prozedur auf unserer 7.1-Power-i, sieht ungefähr so aus:



(...)
D rdy S 10I 0 INZ
(...)

/Free
(...)

exec sql select count(*) INTO :rdy from BEST
where bknr = :aknr and bnnr = 9999999;

(...)
/End-Free

Das Programm läuft unter 7.1 ohne Murren, aber der Compiler will es nicht neu umwandeln: Fehler RNS9309. In der Umwandlungsliste befinden sich einige Einträge:


*RNF0256 30 33 Bestimmung zwischen Prozeduren gefunden.

*RNF3787 30 1 Prozedurschnittstellendefinition in Unterprozedur
nicht gefunden.

*RNF5415 30 1 Prozedur gibt einen Wert zurück, aber es wurde keine Sobald ich den SQL-Teil im Programm auskommentiere, lässt sich das Programm umwandeln; alle Fehlermeldungen verschwinden. Hat 7.1 Probleme mit SQL ... INTO oder ist es irgendwie strenger damit, so dass ein Fehler, der unter V6R1 noch übergangen wurde, jetzt zum Tragen kommt?

Vielen Dank für jede Hilfe!

Schöne Grüße
Markus

Fuerchau
08-06-12, 18:08
Müsste ein Compiler-Fehler sein, mal an IBM melden.

Alternativ:
Prüfe mal, ob der SQL im Fixed-Format korrekt umgewandelt wird.

MSC
11-06-12, 15:03
Danke, Fuerchau, für den Tipp.

Im Fixed Format hat der Compiler sich weiterhin geweigert. Dann habe ich die SQL-Zeilen in ein kleines Testprogramm gesetzt, und das Umwandeln klappte!

Der einzige Unterschied schien in der Quelle zu liegen: während mein Testprogramm nur aus einer Hauptprozedur besteht, ist die umwandelunwillige Quelle eine Serviceprogrammquelle mit ca. 20 Prozeduren (H nomain).

Also eine letzte Verzweiflungstat: Ich habe den Quellcode der Prozedur, die das problematische SQL enthält, vom Ende der Quelle an die erste Stelle gesetzt. Eigentlich hatte ich gehofft, dass nun der Fehler in einer anderen Prozedur gemeldet würde, und ich so das Problem weiter eingrenzen könne. Aber dem war nicht so: das Umwandeln klappte jetzt einwandfrei! Komisch, oder?

Es würde mich ja doch interessieren, was das gewesen sein könnte. Na ja, Hauptsache es geht. Danke nochmals!

Gruß
Markus

AS400.lehrling
11-06-12, 15:55
Möglicherweise war in der Quelle am Anfang eine Leerstelle und der Compiler kommt nicht damit klar.


Schuss ins Blaue :)

Würde mich aber schon Interessieren was ein Cal bei IBM als Ergebnis bringt.

Gruß AS400.lehrling

MSC
11-06-12, 18:47
Da dieselbe Quelle funktionierte, wenn ich nur den SQL-Part ausgesternt habe, glaube ich, dass dein Schuss ins Blaue eher danebentrifft. :-)

Wenn ich dazu komme, werde ich IBM den Fall mal vorlegen und hier berichten.

Schöne Grüße
Markus

Fuerchau
17-06-12, 12:40
Ggf. kam der Compiler mit einer redundanten Definition der verwendeten Variablen in unterschiedlichen Prozeduren nicht zurecht.

Um diesem zukünftig aus dem Weg zu gehen empfielt es sich sowieso die Module einzeln zu erstellen und mittels CRTSRVPGM dann später zu binden.