Hi *ALL,
ich bin gerade über einen Umwandlungsfehler gestolpert und habe keine logische Erklärung dafür.

Hintergrund: Wir sind seit längerem dabei unsere Programmierung vom klassischen Spaltenorientierten RPG auf Free-Format (nur C-Karte, kein komplett Free) umzustellen. Da alte Programme nicht vollständig überarbeitet werden, wenn in ihnen Ergänzungen eingebaut werden, kommt es vor, dass gelegentlich Mischmasch zwischen beiden Codierungen in diesen Programmen vorkommt.

Ich habe in einem solchen Programm ein Embedded-SQL (dementsprechend den Source von RPGLE auf SQLRPGLE geändert) und einige Zeilen Free-Format ergänzt und erhalte jetzt die folgende Fehlermeldung vom SQL-Precompiler:

Code:
SQL0007  20      20  Position 28 Zeichen 'ü' (HEX X'D0') in SQL-Anweisung nicht gültig.
Die Meldung scheint auf den ersten Augenblick klar, aber als ich die fehlerhafte Stelle gesucht habe bin ich darüber gestolpert, dass es gar nichts mit dem SQL-Statement zu tun hat.
Ich habe das gesamte Programm zerlegt und habe folgende Konstellation ermittelt, die den Fehler auslöst:
Code:
  // Free-Format Zeile
  Write Satzformat;
C* Ein Kommentar mit ü
Versucht man diese zwei Zeilen Code mit CRTSQLRPGI umzuwandeln wird die obige Fehlermeldung erzeugt.
Ich habe spaßeshalber verschiedene C-Zeilen, mal mit, mal ohne Kommentar-* eingefügt, der Compilerfehler trat weiterhin auf. Nur wenn ich zwischen den Free-Format Write und die Kommentarzeile z.B. FeldA = FeldB; in Free-Format schreibe, funktioniert es wieder. Ebenfalls geholfen hat es, als ich statt C* einen Free-Format Kommentar mit // draus gemacht hatte.

Nachdem ich jetzt eine halbe Seite Erklärung geschrieben habe, hier nun meine eigentliche Frage:
Mache ich hier etwas falsch, ich war der Meinung, dass es kein Problem ist FREE-Format (ohne /FREE und /END-FREE) und klassische Codierung, übertrieben gesagt „kreuz und quer“, zu mischen? Ich hab mich auch bei Google umgesehen, aber außer einem PTF für V5R4M0 von August 2016 hab ich nichts gefunden, was irgendwie mit dem Fehler zusammen passt. Oder ist das eventuell ein Problem vom SQL-Precompiler selbst?

Vielleicht habt ihr eine Idee, es ist kein dramatischer Fehler, aber trotzdem nervig, wenn man erstmal seine SQL-Statements und Änderungen nach dem mysteriösen Umlaut absucht, der in Wirklichkeit in irgendeinem Kommentar von 199x steht

Mit freundlichen Grüßen,
Benjamin