Ich konnte das Problem jetzt weiter eingrenzen und auch lösen. So müssen die SQL Statements aussehen:
Code:
EXEC SQL
SELECT
CASE
WHEN apkflgnr > 49999999 THEN apkflgnr - 40000000 ELSE
apkflgnr
END
INTO :liegenschaftsnummer
FROM apkopfp
WHERE apkfaufnr = :auftragsnummer;
Code:
EXEC SQL
SELECT COUNT(*)
INTO :count
FROM apkopfp
JOIN apumstp ON
CASE
WHEN INT(SUBSTR(DIGITS(apkflgnr), 1, 3)) < 500
THEN INT(SUBSTR(DIGITS(apkflgnr), 1, 3))
ELSE INT(SUBSTR(DIGITS(apkflgnr), 1, 3)) - 400 END
= apumbezr
WHERE apkfaufnr = :auftragsnummer;
Das ELSE und das END sind jeweils eine Zeile nach oben gerückt. Damit lässt es sich nun auch mit **free kompilieren. Ich habe zwar keinen Plan warum das nun klappt, eigentlich sollte das dem Precompiler ja egal sein wie viele Leerzeiche oder Enter dazwischen liegen da er das ja sowieso alles entfernt, oder?
@dschroeder: Deine genannten PTFs haben wir anscheinend noch nicht installiert, die werden wohl wenn ich das richtig verstanden habe erst in ein paar Monaten wenn wir 7.3 installieren in einem Cumtabe mitinstalliert.
Werde aber den Quellcode mal als SAVF mit einen Report an IBM geben vllt. können die ja genauer auskunft geben warum das END und ELSE da nicht sitzten darf.....
Bookmarks