[NEWSboard IBMi Forum]
Seite 1 von 2 1 2 Letzte
  1. #1
    Registriert seit
    Sep 2016
    Beiträge
    45

    Nutzung von **free RPG und SQL Precompiler wirft Fehler?

    Hallo an alle RPG-Entwickler da draußen

    ich habe hier ein seltsames Problem, ich habe hier einen Quellcode, in diesem Quellcode steht nur eine Export-Prozedur. Geschrieben ist das ganze momentan in Total Free RPG, also ohne das **free.

    Nun wollte ich das ganze auf **free umschreiben, aber sobald ich das mache(erste Zeile **free und dann alles in die erste Spalte rücken) bekomme ich beim Kompilieren zwei Fehlermeldungen: "RNF0308 Das Gleitkommaliteral ist ungültig".

    Ich frage mich nun wie kann das sein, ohne **free lässt es sich nämlich ohne Fehler o. Warnung kompilieren?

    Soweit ich weis ist unsere Maschine auf den Stand von 7.2 mit allen nötigen PTFs, daran sollte es also eigentlich nicht liegen.

    Ich finde **free ja eigentlich klasse, muss aber zugeben das ich schon mehrmals Probleme damit hatte. Meistens will eine /copy Datei nicht vom Kompiler akzeptiert werden welche noch FIX Code enthielt(musste die dann erst umschreiben oder **free aus dem Quellcode nehmen) das ist ziemlich ärgerlich.

    PS: Hier sind die beiden SQL Statments
    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;

  2. #2
    Registriert seit
    Aug 2001
    Beiträge
    2.869
    Am Besten Du meldest den Fehler offiziell bei der IBM, damit der Bug behoben wird und ein entsprechendes PTF bereit gestellt wird.

    Wenn alle warten bis irgendwer den Fehler meldet, dann wird er nie behoben!

    Was Du probieren kannst wäre, den EXEC SQL auf Position 8 zu schreiben.
    Evtl. scannt der Pre-Compiler nur ab dieser Position.
    (Pre-Compiler hinkt immer etwas hinterher - so war das schon immer!)

    Birgitta
    Birgitta Hauser

    Anwendungsmodernisierung, Beratung, Schulungen, Programmierung im Bereich RPG, SQL und Datenbank
    IBM Champion seit 2020 - 4. Jahr in Folge
    Birgitta Hauser - Modernization - Education - Consulting on IBM i

  3. #3
    Registriert seit
    Sep 2016
    Beiträge
    45
    An der Position liegt das nicht, habe gerade einmal alles auf mind. 8 Stelle eingerückt und dann einfach einmal mit und ohne **free kompiliert. Ergebnis ist das gleich wie zu Anfang, mit **free klappt es nicht, ohne schon....

    Wie und Wo muss ich denn einen Bug melden bei IBM? Habe sowas bisher noch nicht getan und finde auf die schnelle nichts bei Google und in Rdi gibt es anscheinend auch keine Option dafür!

    Aber danke schon einmal für deine schnelle Hilfe!

  4. #4
    Registriert seit
    Jan 2012
    Beiträge
    1.102
    Wir hatten vor einigen Monaten (wahrscheinlich) das gleiche Problem. Ein fully free Programm enthielt nur eine zu exportierende Procedure mit einem embedded SQL Statement. Wir haben das Problem gemeldet und ein entsprechendes PTF bekommen. Seitdem klappt alles hervorragend. Wir sind allerdings nicht auf 7.2, sondern auf 7.1 TR11.

    IBM hat uns folgende PTFs als Lösung geliefert:

    Ptf 5770WDS / SI58914 und 5770SS1 / SI58913 (kommt als prereq Ptf bei der Bestellung mit )

    Ich bin sicher, dass es die entsprechenden PTFs auch für 7.2 gibt. Vielleicht kann man sogar die angegebenen verwenden. Ich meine, dass das Problem irgendwas mit einer zu breiten Sourcefile zu tun hatte. Seit wir **free benutzen, haben wir unsere Sourcefiles auf 240 Zeichen Breite erhöht.

    Dieter

  5. #5
    Registriert seit
    Sep 2016
    Beiträge
    45
    OK werde einmal rückfragen ob wir die PTFs bereits installiert haben.
    Wobei sich das bei dir ja doch schon ein wenig anders anhört, wir nutzten nämlich momentan noch normal breite Sourcen, um on the fly zwischen **free und nicht **free zu wechseln. Aber vllt. ist die breite auch relativ egal und das Problem taucht immer so auf, wie dem auch sei werde das einmal prüfen!

    Danke aber für den Hinweis! Vllt. habe ich ja Glück und das war es

  6. #6
    Registriert seit
    Jan 2012
    Beiträge
    1.102
    Ich habe sogar noch den Beispielsource, den ich an IBM geschickt habe, um das Problem nachzuvollziehen. Das war genau so , wie du sagst: Sobal eine embedded SQL - Anweisung vorkam, egal wie trivial, gab es das Problem.

    Vielleicht erinnere ich mich auch falsch und es hatte nichts mit der Breite, sondern mit der CCSID der Sourcedatei zu tun. Jedenfalls konnte IBM das Problem damals erst nicht nachvollziehen, weil ich das kurze Beispielprogramm einfach als txt-Datei geschickt hatte und IBM hat das dann in einen Editor kopiert. Da trat der Fehler bei IBM nicht auf. Erst als ich per SAVF den Source mit der Sourcefile geschickt habe, hatte IBM das gleiche Problem. Es hatte auf jedenfall etwas mit der Sourcefile zu tun.

    Wenn du also einen Bug bei IBM aufmachst, solltest du ein kleines Beispielprogramm zur Verfügung stellen und komplett mit Sourcefile als SAVF zu IBM schicken.

    Ich melde Software-Bugs meistens telefonisch unter:

    IBM-Software-Support:
    Hotline-Nr. 0800 / 5253553

    (Wir haben allerdings einen entsprechenden Wartungsvertrag).

    Dieter

  7. #7
    Registriert seit
    Sep 2016
    Beiträge
    45
    Ah super dann weis ich Bescheid wo ich das melden kann! Wartungsvertrag haben wir auch, meine ich, sollte alles klappen. Ich frage sonst nochmal meine Führungskraft sobald diese wieder verfügbar ist.

    Danke noch einmal!

  8. #8
    Registriert seit
    Jan 2012
    Beiträge
    1.102
    Ich denke, wenn du die Nummer anrufst, kann man dir gleich sagen, ob ihr einen passenden Wartungsvertrag habt. Du musst nur eure Kundennummer wissen. Ggf. reicht auch die Seriennummer eurer Maschine.

  9. #9
    Registriert seit
    Feb 2001
    Beiträge
    20.206
    Wenn es sich tatsächlich um ein CCSID-Problem handelte prüfe mal, ob dein Umwandlungs-Job (Batch/Dialog) auch mit einer passenden CCSID gesetzt ist.
    Es wird nämlich immer wieder gerne vergessen, dem Job eine andere CCSID als 65535 zu geben.
    Dann muss der Compiler irgendeine CCSID verarbeiten und bestimmte Zeichen sind eben CCSID-abhängig und können dann falsch interpretiert werden.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  10. #10
    Registriert seit
    Sep 2016
    Beiträge
    45
    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.....

  11. #11
    Registriert seit
    Feb 2001
    Beiträge
    20.206
    Ggf. kann dein Precompiler noch nicht breiter als 72 Stellen und dein SQL war eben breiter.
    Dies ist aber mit neueren Versionen/Releasen/PTF's schon behoben.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  12. #12
    Registriert seit
    Sep 2016
    Beiträge
    45
    Meine SQL Anweisungen sind nicht breiter als 72 Stellen, habe darauf geachtet weil dschroeder
    oben bereits ja das gleiche angedeutet hatte. Wenn du dir die Statement noch einmal anschaust wirst du auch shehen das die Statements jetzt sogar noch breiter sind als vorher(aber noch kleiner als 72 Stellen), weil das END und ELSE ja in die Zeile darüber positioniert worden sind, damit sind beide Zeilen jetzt 4 Stellen breiter als vorher.

    Interessant ist auch das wenn ich die die beiden ersten SQL Statements komplett kopiere und in eine neue Quellcodedatei übertrage sie auf anhieb funktionieren, auch mit **free und keinen Fehler auswerfen.
    Kopiere ich diese gesamte Quelle in eine neue Teiledatei gibt es am wieder den gleichen Fehler.

    Alles echt ein wenig seltsam.....

Similar Threads

  1. Antworten: 4
    Letzter Beitrag: 16-09-15, 16:47
  2. Antworten: 7
    Letzter Beitrag: 23-03-15, 18:21
  3. %dec in free-rpg ??
    By Gimli in forum IBM i Hauptforum
    Antworten: 1
    Letzter Beitrag: 11-03-03, 11:16
  4. Free RPG??
    By DEVJO in forum IBM i Hauptforum
    Antworten: 3
    Letzter Beitrag: 05-03-03, 08:18
  5. Free - RPG
    By Gimli in forum IBM i Hauptforum
    Antworten: 2
    Letzter Beitrag: 04-03-03, 10:47

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • You may not post attachments
  • You may not edit your posts
  •