[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Oct 2003
    Beiträge
    117

    MCH1210 Empfängerwert zu klein

    Folgendes Problem:

    Eine 10-stellige Integer-Variable wird einer RPG-Prozedur als Parameter übergeben.

    Dort wird sie so auch angezeigt:

    Code:
    p_meinevariable: Ganze Zahl (10,0) CONST
    Im SQL-Statement der Prozedur (embedded) wird sie dann verwendet. Der SQL-Precompiler macht eine gepackte Variable mit 5 Bytes daraus:

    Code:
    SQL_00005     129    133P 0     p_meinevariable
    Das heißt neun verfügbare Stellen, bei 10-stelligem Inhalt kracht es mit MCH1210.

    Hat jemand eine Lösung?

  2. #2
    Registriert seit
    Feb 2001
    Beiträge
    20.243
    Den Wert selber in eine 10-stellige P-Variable übertragen und SQL mit dieser aufrufen.
    Aber beachte, dass ggf. bei der Rückübertragung der MCH kommt.
    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

  3. #3
    Registriert seit
    Oct 2003
    Beiträge
    117
    Zitat Zitat von Fuerchau Beitrag anzeigen
    Den Wert selber in eine 10-stellige P-Variable übertragen und SQL mit dieser aufrufen.
    Ok, so funktioniert es jetzt. Werde mir wohl angewöhnen müssen, übergebene Parameter erst einmal in lokale Variablen zu übertragen. Nicht schön, aber so funktioniert es wenigstens.

    Zitat Zitat von Fuerchau Beitrag anzeigen
    Aber beachte, dass ggf. bei der Rückübertragung der MCH kommt.
    Das sollte (bei uns) kein Problem sein, da wir die Parameter zu 99 % als Konstante übergeben.

    Danke für die schnelle Lösung.

  4. #4
    Registriert seit
    Aug 2001
    Beiträge
    2.875
    Baldur's Lösung ist nur eine Notlösung!

    Wenn die Variable definitiv als 10I 0 definiert ist, handelt es sich um einen Bug, der bereinigt werden muss. Prüfe zunächst ob alle PTFs installiert sind. Sofern Ihr auf dem aktuellen Stand seid, solltet Ihr den Fehler IBM melden.

    Wenn die Variable mit Datentyp B definiert ist, solltest Du die Definition auf Datentyp I ändern und nochmals prüfen, was das embedded SQL dann macht.

    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

  5. #5
    Registriert seit
    Feb 2001
    Beiträge
    20.243
    Das Problem liegt hier in SQLRPG, da I-Variablen nicht unterstützt werden sondern P-Variablen generiert werden.
    In SQLRPGLE verhält sich der Precompiler korrekt (V5R4):

    SQL_00005 129 132I 0
    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
    Oct 2003
    Beiträge
    117
    Zitat Zitat von Fuerchau Beitrag anzeigen
    Das Problem liegt hier in SQLRPG, da I-Variablen nicht unterstützt werden sondern P-Variablen generiert werden.
    In SQLRPGLE verhält sich der Precompiler korrekt (V5R4):

    SQL_00005 129 132I 0
    Aber hier handelt es sich um ein SQLRPGLE. Vermutlich ist es doch ein Bug.

  7. #7
    Registriert seit
    Mar 2002
    Beiträge
    5.287
    ... wie ist denn nun deine Variable im PROTOTYP und Procedure Interface deklariert???

    @Baldur: SQLRPG kennt kein CONST, das ist ILE
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  8. #8
    Registriert seit
    Feb 2001
    Beiträge
    20.243
    Stimmt, der Fehler muss an anderer Stelle liegen.
    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

  9. #9
    Registriert seit
    Oct 2003
    Beiträge
    117
    Zitat Zitat von BenderD Beitrag anzeigen
    ... wie ist denn nun deine Variable im PROTOTYP und Procedure Interface deklariert???
    Da liegt der Hund wohl begraben.
    Die Deklaration kommt aus einer Datenstruktur (Based), die als Feldreferenz dient.

    Code:
         D                 PI              N
         D  p_meinevariable...
         D                    LIKE(Dcl_DS.p_meinevariable)
         D                    CONST
    Verwende ich die übergebene Variable in SQL, kracht es.
    Verwende ich eine lokale Variable, die auf die gleiche Datenstruktur verweist, macht er es richtig:

    SQL_00005 129 132I 0

    Aber warum???

Similar Threads

  1. MCH1210 + RNQ0103 Feldüberlauf
    By fmu in forum NEWSboard Programmierung
    Antworten: 4
    Letzter Beitrag: 06-05-09, 14:27
  2. SQL 1. Buchstabe gross - Rest klein
    By linguin in forum IBM i Hauptforum
    Antworten: 1
    Letzter Beitrag: 31-03-09, 15:08
  3. Querformat Rmt-Printer zu klein
    By JuergenK in forum NEWSboard Drucker
    Antworten: 0
    Letzter Beitrag: 25-10-07, 13:27
  4. Empfängerwert zu klein
    By mmaschke in forum IBM i Hauptforum
    Antworten: 11
    Letzter Beitrag: 06-04-05, 08:53
  5. EVAL-Statement ->Ergebnisfeld zu klein
    By Marchfeld in forum IBM i Hauptforum
    Antworten: 9
    Letzter Beitrag: 26-11-03, 10:48

Berechtigungen

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