[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    May 2005
    Beiträge
    103

    Unhappy SQLRPGLE - Umwandlungsparameter?

    Hallo zusammen,

    habe ein Problem mit einem SQLRPGLE-Modul.

    Folgender Code:

    C/EXEC SQL
    C+ DELETE FROM GTSDRK WHERE GSLIJA = :d#JJJJ and GSLIMO = :d#MM
    C/END - EXEC

    Dieser Code SOLLTE bestimmte Datensätze in einer DB-Datei GTSDRK löschen. In Variable GSLIJA steht das Jahr (z. B. 2005) und in Variable GSLIMO steht der Monat ( z. B. 5).

    Dies funktioniert leider nicht, denn im Debugger habe ich erkannt, dass mit F11 auf :d#MM die Nachricht "Variable nicht gefunden" erscheint. F11 auf :d#JJJJ zeigt mir den korrekten Wert 2005.
    Wenn ich ohne im Programmcode weiterzugehen mit F11 auf die Variable p#MM irgendwo anders im Quellcode abfrage, so bekomme ich den richtigen Wert angezeigt (5) !?!!

    Vor der Modulumwandlung, aufgrund Änderungen an ANDEREN Statements, hat dieses Statement noch funktioniert !!
    Könnte ich irgendwelche Parameter beim Umwandeln vergessen haben ??

    Vielen Dank für eure Hilfe


    P.S.: Ich habe inzwischen auch schon das nicht geänderte Originalmodul nochmals umgewandelt ... Ergebnis: Es funktioniert auch nicht. Da liegt es wohl nahe, dass nicht meine Änderungen im Programm dazu führten, sondern meine Umwandlungsmethode, oder ??


    mfG,
    Tobias

  2. #2
    Registriert seit
    Aug 2001
    Beiträge
    2.928
    Zitat Zitat von Tobse77
    Hallo zusammen,

    habe ein Problem mit einem SQLRPGLE-Modul.

    Folgender Code:

    C/EXEC SQL
    C+ DELETE FROM GTSDRK WHERE GSLIJA = :d#JJJJ and GSLIMO = :d#MM
    C/END - EXEC

    Dieser Code SOLLTE bestimmte Datensätze in einer DB-Datei GTSDRK löschen. In Variable GSLIJA steht das Jahr (z. B. 2005) und in Variable GSLIMO steht der Monat ( z. B. 5).

    Dies funktioniert leider nicht, denn im Debugger habe ich erkannt, dass mit F11 auf :d#MM die Nachricht "Variable nicht gefunden" erscheint. F11 auf :d#JJJJ zeigt mir den korrekten Wert 2005.
    Wenn ich ohne im Programmcode weiterzugehen mit F11 auf die Variable p#MM irgendwo anders im Quellcode abfrage, so bekomme ich den richtigen Wert angezeigt (5) !?!!

    Vor der Modulumwandlung, aufgrund Änderungen an ANDEREN Statements, hat dieses Statement noch funktioniert !!
    Könnte ich irgendwelche Parameter beim Umwandeln vergessen haben ??

    Vielen Dank für eure Hilfe


    P.S.: Ich habe inzwischen auch schon das nicht geänderte Originalmodul nochmals umgewandelt ... Ergebnis: Es funktioniert auch nicht. Da liegt es wohl nahe, dass nicht meine Änderungen im Programm dazu führten, sondern meine Umwandlungsmethode, oder ??


    mfG,
    Tobias
    Die Host-Variable heißt nicht :IrgendWas, sondern nur IrgendWas. Wenn Du mit STRDBG arbeitest, dann gib auf der Befehlezeile einfach EVAL IrgendWas an und du bekommst den Inhalt der Variablen IrgendWas angezeigt.

    Ansonsten würde ich Dir raten mal nachzuschauen was in SQLCOD oder SQLSTT drin steht. (Funktioniert ebenfalls mit EVAL). Ist der SQLCOD < 0 , liegt ein SQL-Fehler vor. Ist der SQLCOD = 100 wurde kein Satz gefunden.

    Ausserdem mal den alten Trick versuchen sich ab- und wieder anzumelden und die Bibliotheks-Liste prüfen. Vielleicht hast Du das Programm ja in eine falsche Umgebung umgewandelt o.a.

    Birgitta
    Birgitta Hauser

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

  3. #3
    Registriert seit
    May 2005
    Beiträge
    103

    Unhappy

    Zitat Zitat von B.Hauser
    Die Host-Variable heißt nicht :IrgendWas, sondern nur IrgendWas. Wenn Du mit STRDBG arbeitest, dann gib auf der Befehlezeile einfach EVAL IrgendWas an und du bekommst den Inhalt der Variablen IrgendWas angezeigt.

    Ansonsten würde ich Dir raten mal nachzuschauen was in SQLCOD oder SQLSTT drin steht. (Funktioniert ebenfalls mit EVAL). Ist der SQLCOD < 0 , liegt ein SQL-Fehler vor. Ist der SQLCOD = 100 wurde kein Satz gefunden.

    Ausserdem mal den alten Trick versuchen sich ab- und wieder anzumelden und die Bibliotheks-Liste prüfen. Vielleicht hast Du das Programm ja in eine falsche Umgebung umgewandelt o.a.

    Birgitta

    Vielen Dank für die Antwort Birgitta,

    leider kommt dies nicht so ganz hin. Wie schon zuvor gesagt, mit F11 auf die gleiche Variable innerhalb des Quellcodes kommt der richtige Wert. Und wenn ich auf dieses :d#JJJJ mit F11 tippe, dann kommt auch das richtige Jahr !!
    Mit eval d#MM kommt selbstverständlich der richtige Wert.
    In SQLCOD kommt 077952576 und in SQLSTT kommt nur *blanks (also: ' ').
    Die Bibliotheksliste ist absolut i.O., denn zu einem späteren Zeitpunkt in der Ausführung schreibt das Modul auch in diese Datei !! Das Löschen soll die zuvor bestehenden "falschen" Datensätze eliminieren, bevor die "Richtigen" geschrieben werden, um keine Redundanz zu erzeugen (bezügl. Rechnungsstellung).
    Bin zwar beruhigt, dass es nicht an meinen geänderten Statements liegt, denn mit dem alten Code funktionierts ja auch nicht mehr, aber es MUSS wohl an den Umwandlungsparametern liegen, denn es hat vor meiner Umwandlung definitiv schon mal geklappt !!!
    Über weitere Tips und Ratschläge würde ich mich sehr freuen !!!
    mfG,
    Tobias

  4. #4
    Registriert seit
    Aug 2001
    Beiträge
    2.928
    Hallo,

    wird Deine Datei im Journal aufgezeichnet?
    Wenn nein, solltest Du den Parameter COMMIT im CRTSQLRPGI auf *NONE setzen. (Unterlassungs-Wert ist *CHG)

    Besser ist allerdings in die Quelle ein SET OPTION-Statement einzufügen, das diesen Parameter zum Umwandlungs-Zeitpunkt setzt. Dann wird's auch beim nächsten Mal nicht vergessen.
    PHP-Code:
    C/EXEC SQL  Set Option Commit = *NONE
    C
    /END-EXEC 
    Wann hast Du eigentlich den SQLCOD abgefragt? Vor oder nach dem DELETE-Statement? Nach den Dummy-Werte zu urteilen davor. Beide Variablen werden erst durch das Ausführen eines SQL-Statements gesetzt.

    Birgitta
    Birgitta Hauser

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

  5. #5
    Registriert seit
    Feb 2001
    Beiträge
    20.695
    Mit Sicherhet liegts nicht an irgendwelchen Parametern der Umwandlung !
    Bist du denn sicher, dass das auszuführende Modul mit der angezeigten Quelle identisch ist ?
    Ein Wert SQLCOD = 077952576 ist vollkommen unmöglich.

    Prüfe mal die Umwandlungsliste !
    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

  6. #6
    Registriert seit
    May 2005
    Beiträge
    103
    Bin mir sicher, dass das ausgeführte Modul zur Quelle passt, denn es stehen meine Änderungskennzeichen drin. Habe das Modul nach der Änderung mit 15 umgewandelt und danach mit UPDPGM in den relevanten Programmen aktualisiert.

    Leider bin ich ein ziemlicher SQL-Laie und mit dem ILE-Konzept auch nicht so vertraut. Das Programm wurde von ukrainischen Spezialisten geschrieben.
    Übrigens: Wenn ich den besagten SQL-Befehl nach strsql eingebe (natürlich ohne Variablen, sondern mit den korrekten Werten), dann funktionierts !!

    Werde jetzt das SQL-Statement entfernen und stattdessen mit den Variablen einen SETLL machen und per Schleife die Delete-Operation durchführen. Manche sind schließlich auch schon in Eleganz gestorben

    Trotzdem Vielen Dank für eure Hilfe; wirklich ein tolles Forum !!


    mfG,
    Tobias

  7. #7
    Registriert seit
    Jan 2001
    Beiträge
    850
    Hallo Tobias,


    prüfe ggf. nochmal ob und wo deine Variablen definiert sind.
    Vielleicht handelt es sich um lokale Varaiblen die nicht korrekt gefüllt sind.
    Gruss
    Michael

Similar Threads

  1. Anzeigervariable im SQLRPGLE
    By Jenne in forum NEWSboard Programmierung
    Antworten: 10
    Letzter Beitrag: 06-06-07, 10:10
  2. sqlrpgle
    By guru30 in forum NEWSboard Programmierung
    Antworten: 3
    Letzter Beitrag: 22-02-06, 14:53
  3. SQLRPGLE
    By mk in forum NEWSboard Programmierung
    Antworten: 7
    Letzter Beitrag: 17-11-05, 09:48
  4. *zoned bei SQLRPGLE Programm
    By Stefan_Sk in forum NEWSboard Programmierung
    Antworten: 3
    Letzter Beitrag: 12-07-05, 13:04
  5. Suche SQLRPGLE Beispiel-Code
    By WeKaSys in forum IBM i Hauptforum
    Antworten: 3
    Letzter Beitrag: 15-10-04, 11:19

Berechtigungen

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