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.....