[NEWSboard IBMi Forum]
Seite 1 von 2 1 2 Letzte
  1. #1
    Registriert seit
    Oct 2015
    Beiträge
    109

    XML in PF übertragen (Variablenproblem)

    Guten Tag zusammen,
    ich habe beim Import von XML in eine Physische Datei das Problem,
    dass eine der Variablen (evtl negativ mit Nachkommastelle) dafür sorgt,
    dass mein Fetch nicht mehr funktioniert.
    Meine Felder in der phyischen Datei sind:
    Code:
    RIONID       20    0  S 
    RIANZA        5    0  S
    RIAUFO       11    2  S
    Mein XML (Beispielblock):
    Code:
      
      Customer>
        CustomerNo>1000000315
        NoOfSuccessfullOrders>2
        Currency>EUR
        Balance>-10.85
        Collection>0
        ReturnQuote>33
        ReturnQuoteAmount>10
      /Customer
    Meine Prozedur:
    Code:
           //-----------------------------------------------------------------------
           // Prozedur XML speichern
           //-----------------------------------------------------------------------
         P xmltosql        B
         D                 PI
         D file_name       S            900A
          /free
            exec sql set option commit=*CHG;
            exec sql declare c2 cursor for
              select info_req.*
              from xmltable('/ExCustomerDataList/Customer'
                   passing xmlparse(document get_xml_file('/home/codaho/test.xml'))
                   columns
            RIONID         varchar(20) path 'CustomerNo',
            RIANZA         varchar(5)  path 'NoOfSuccessfullOrders',
            RIAUFO         varchar(13) path 'Balance'
    
    
                           ) info_req;
    
    
    
    
            exec sql open C2;
            dou (sqlcode <> *zeros) and sqlcode <> 326;
            exec sql fetch c2 into :rionid, :rianza, :riaufo;
              write risk00r;
            enddo;
          /end-free
         P                 E
    Das Problem ergibt sich erst wenn ich die Zeile:
    Code:
            RIAUFO         varchar(13) path 'Balance'
    hinzufüge.

    Haben Sie vllt eine Lösung parat?

    Vielen Dank schon einmal!

  2. #2
    Registriert seit
    Feb 2001
    Beiträge
    20.207
    Da wäre dann schon der Fehlercode und -text relevant.
    Noch weiß XML ja nicht, dass der Inhalt numerisch sein soll.
    Der Fehler hat da eine andere Ursache.
    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
    Feb 2001
    Beiträge
    20.207
    PS:
    Du kannst Zeichenvariable nicht so einfach einer Dezimalvariablen zuweisen.
    Entweder du definierst für XML auch dec(11, 2) oder gibst ein Alphafeld als Ziel an und wandelst dann selber mit %Dec(Feld:11:2) um.
    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

  4. #4
    Registriert seit
    Oct 2015
    Beiträge
    109
    Guten Morgen,
    dankeschön für die Antwort!

    Ich habe jetzt per SQL Folgendes abgesetzt:
    Code:
    select info_req.* from xmltable('/ExCustomerDataList/Customer'
    passing xmlparse(document get_xml_file('/home/codaho/test.xml'))
    columns
    RIONID         varchar(20) path 'CustomerNo',
    RIANZA         varchar(5)  path 'NoOfSuccessfullOrders',
    RIAUFO         dec(11, 2)  path 'Balance'
    ) info_req
    Als Fehler erhalte ich:
    Code:
    Fehler bei benutzerdefinierter Funktion in Teildatei QSQPTABL. 
    Abbruchantwort für Nachricht CPF503E empfangen.
    Hilft das weiter? Mir per Google leider nicht

  5. #5
    Registriert seit
    Jun 2001
    Beiträge
    1.973
    ggf offtopic ...
    nun bin ich nicht der XML Fachmann ...

    aber ist das XML überhaupt so gültig?
    müßte das statt
    Customer>
    CustomerNo>1000000315
    NoOfSuccessfullOrders>2
    Currency>EUR
    Balance>-10.85
    Collection>0
    ReturnQuote>33
    ReturnQuoteAmount>10
    /Customer
    nicht
    HTML-Code:
    <Customer>
        <CustomerNo>1000000315</CustomerNo>
        <NoOfSuccessfullOrders>2</NoOfSuccessfullOrders>
        <Currency>EUR</Currency>
        <Balance>-10.85</Balance>
        <Collection>0</Collection>
        <ReturnQuote>33</ReturnQuote>
        <ReturnQuoteAmount>10</ReturnQuoteAmount>
      </Customer>
    oder aber so
    HTML-Code:
    <Customer>
        CustomerNo=1000000315
        NoOfSuccessfullOrders=2
        Currency=EUR
        Balance=-10.85
        Collection=0
        ReturnQuote=33
        ReturnQuoteAmount=10
      </Customer>
    aussehen?
    Das Notwendige steht über dem technisch machbaren.
    (klingt komisch, funktioniert aber!)

  6. #6
    Registriert seit
    Oct 2015
    Beiträge
    109
    ja, entschuldige die Verwirrung. Es schaut genau so aus wie im ersten Beispiel.
    HTML-Code:
    <Customer>
        <CustomerNo>1000000315</CustomerNo>
        <NoOfSuccessfullOrders>2</NoOfSuccessfullOrders>
        <Currency>EUR</Currency>
        <Balance>-10.85</Balance>
        <Collection>0</Collection>
        <ReturnQuote>33</ReturnQuote>
        <ReturnQuoteAmount>10</ReturnQuoteAmount>   </Customer>
    Hab es gestern bloß nicht hinbekommen, den Auszug vernünftig zu posten.
    Hatte in der Vorschau immer nur die Werte.

  7. #7
    Registriert seit
    Oct 2013
    Beiträge
    171
    In der Nachricht CPF503E steht noch mehr Info - im Joblog nachschauen.

  8. #8
    Registriert seit
    Oct 2015
    Beiträge
    109
    hab mir den Fehler durchgelesen. Ich tippe mal auf diesen Punkt als Ursache:
    Bei einem der Eingabeparameter der Funktion ist ein Datenabgleichungsfehler aufgetreten.
    Sowas dachte ich mir zumindest,
    leider wüsste ich nicht, wie ich das korrekt übergebe.

  9. #9
    Registriert seit
    Feb 2001
    Beiträge
    20.207
    Da musst du mal in die Doku schauen, was als Feldtypen denn da so unterstützt wird.
    Alternativ musst du halt über Zeichenfelder gehen.
    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
    Oct 2015
    Beiträge
    109
    Wo kann ich die Doku finden?

    Habe mir http://publib.boulder.ibm.com/iserie...mstch2data.htm
    angeschaut und dementsprechend versucht:

    Code:
       RIAUFO         numeric(11, 2) path 'Balance'
    leider funktionierte das auch nicht.

    Auch:

    Code:
           //-----------------------------------------------------------------------
           // Prozedur XML speichern
           //-----------------------------------------------------------------------
         P xmltosql        B
         D                 PI
         D file_name       S            900A
         D $$AUFO          S             13A
          /free
            exec sql set option commit=*CHG;
            exec sql declare c2 cursor for
              select info_req.*
              from xmltable('/ExCustomerDataList/Customer'
                   passing xmlparse(document get_xml_file('/home/codaho/test.xml'))
                   columns
            RIONID         varchar(20) path 'CustomerNo',
            RIANZA         varchar(5)  path 'NoOfSuccessfullOrders',
            $$AUFO         char(13   ) path 'Balance'
    
    
                           ) info_req;
    
    
    
    
            exec sql open C2;
            dou (sqlcode <> *zeros) and sqlcode <> 326;
            exec sql fetch c2 into :rionid, :rianza, :$$aufo;
              riaufo = %dec($$aufo:11:2);
              write risk00r;
            enddo;
          /end-free
    bzw. :
    Code:
     $$AUFO         varchar(13   ) path 'Balance'
    wollen mir keinen erfolgreichen Versuch zurückgeben.

  11. #11
    Registriert seit
    Oct 2015
    Beiträge
    109
    Update: musste im SQL noch auf *CHG umstellen.
    Jetzt führt er da alles korrekt aus (auch mit decimal.

    Bloß mein Programm liefert immer noch bloß eine leere Zeile, sobald ich
    Balance mit rein nehme.

  12. #12
    Registriert seit
    Feb 2001
    Beiträge
    20.207
    Und was sagt das berühmte Joblog?

    Übrigens %DEC() verträgt nur ungern Leerzeichen. Der Feldtyp VARCHAR oder die Funktion %trim() wäre hier noch angebracht.
    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

Similar Threads

  1. Systemwechsel: Übertragen Spoolfiles
    By programmer400 in forum IBM i Hauptforum
    Antworten: 4
    Letzter Beitrag: 18-11-14, 16:22
  2. FTP Pc -> AS400 Source übertragen ?
    By Gimli in forum IBM i Hauptforum
    Antworten: 5
    Letzter Beitrag: 08-04-03, 09:54
  3. Logs von der AS/400 zum PC automatisch übertragen
    By kazamm in forum IBM i Hauptforum
    Antworten: 2
    Letzter Beitrag: 18-02-03, 09:04
  4. Wie Datei von 5.1 auf 3.7 übertragen?
    By hs in forum IBM i Hauptforum
    Antworten: 1
    Letzter Beitrag: 18-11-02, 15:44
  5. IFS-Dateien per FTP übertragen
    By mott in forum IBM i Hauptforum
    Antworten: 3
    Letzter Beitrag: 20-06-02, 11:24

Berechtigungen

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