[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Jul 2008
    Beiträge
    76

    Unhappy free rpg xml-into Abbruch CPE3025 (Parameterübergabe für xml-into)

    Hallo Forum,
    Ich bin verwirrt..


    folgendes Statements:
    clear orders;
    xml-into orders %xml(LocFile:LocOptions);


    ich fülle einmal fix:
    LocFile = '/XMLOrderIN/20210921_235825_1SRDXU_1.xml'
    Alles ist bestens.

    Dann fülle ich LocFile über Parameter, die an das Programm übergeben werden:
    LocFile = parameter;
    Abbruch CPE3025 Kein Pfad oder keine Bibliothek mit diesem Namen
    Die Inhalte sind identisch lt. debug.


    Die Feldlängen ebenfalls.
    dcl-s LocFile char(128);
    dcl-pi Order02 extpgm('Order02');
    parameter char(128);
    end-pi;


    Parameter kommt aus einem CLLE dcl var(&parameter) type(*char) len(128)


    Stelle ich PI auf varchar um … zerlegt es mir den Parameter
    dcl-s LocFile varchar(128);
    dcl-pi Order02 extpgm('Order02');
    parameter char(128);
    end-pi;
    ....5...10...15...20...25...30...35...40...45...50 ...55...60
    1 'MLOrderIN/20210921_235825_1SRDXU_1.xml '
    61 ' '
    121 ' /X'


    Mit der Bitte um Entwirrung.

    Franco

  2. #2
    Registriert seit
    Feb 2017
    Beiträge
    41
    Hallo,

    du füllst im CL eine Char Variable im RPG Interface verwendest du aber einen Varchar... Daher dürfte die Zerlegung kommen, im Varchar wird in den ersten Bytes die Länge des String gespeichert.

    Gruß,
    Manuel

  3. #3
    Registriert seit
    Aug 2001
    Beiträge
    2.869
    VarChar und Char sind unterschiedliche Datentypen.
    Solange wir nur mit RPG und entsprechenden Prototypen arbeiten, ist es zumindest bei Input/Only Parametern (CONST / VALUE) egal, ob der übergebene Parameter mit fixer oder variabler Länge definiert ist.

    Erfolgt der Aufruf aus CL, funktioniert dieser Mechanismus nicht. D.h. von CL werden die Daten mit fixer Länge übergeben, was im Untergrund bedeutet es wird ein Pointer auf dem Anfang des Feldes übergeben. Solange beide Felder mit fixer Länge definiert sind ist das auch kein Problem.
    Wenn jedoch ein Feld mit variabler Länge definiert ist, werden 2 (oder bei großen Feldern) 4 führende (unsichtbare) Bytes in der die variable Länge hinterlegt wird hinzugefügt.
    Wird jetzt das Programm aus CL aufgerufen und nur ein Pointer übergeben, zeigt dieser jetzt auf den Anfang des variablen Feldes, also auf das erste der beiden führenden Bytes. Damit werden u.U. nicht numerische Werte übertragen und das Programm macht den Abflug.

    Am einfachsten ist es du definierst die Variable LocFile mit variabler Länge lädst den Parameter-Wert um und entfernst dabei die führenden und folgenden Blanks.

    Code:
    DCL-S  LocFile   VarChar(128);
    
    LocFile = %Trim(Parameter);
    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

  4. #4
    Registriert seit
    Feb 2001
    Beiträge
    20.207
    Vom CLLE kannst du auch eine Struktur definieren.
    Die ersten 2 Stellen sind %BIN gefolgt von den Daten in der Länge.
    Bei CLP kann man auch einen
    CHGVAR %bin(&ziel 1 2) = 128
    CHGVAR %sst(&ziel 3 128) = 'Name der Datei'
    verwenden.
    Dies intspricht dann VARCHAR in ILERPG.
    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

  5. #5
    Registriert seit
    Jul 2008
    Beiträge
    76
    Hallo Manuel,

    vielen Dank für den Hinweis.

    Franco

  6. #6
    Registriert seit
    Jul 2008
    Beiträge
    76
    Hallo Birgitta,

    %trim und schon wars gut.

    Danke.

    Gruß Franco

  7. #7
    Registriert seit
    Jul 2008
    Beiträge
    76
    Hallo Fuerchau,

    das probiere ich natürlich auch...

    Gruß Franco

Similar Threads

  1. CL Parameterübergabe als Datenstruktur
    By camouflage in forum NEWSboard Programmierung
    Antworten: 7
    Letzter Beitrag: 05-09-19, 16:01
  2. RPG Parameterübergabe von RPG an übergeordnetes CL
    By TheDevil in forum NEWSboard Programmierung
    Antworten: 12
    Letzter Beitrag: 12-02-15, 12:40
  3. Drucken via IP nach IPL: Abbruch Ausgabeprog.
    By DS in forum IBM i Hauptforum
    Antworten: 4
    Letzter Beitrag: 11-06-03, 09:36
  4. Abbruch nach dem Starten vom FTP-Server
    By JonnyRico in forum IBM i Hauptforum
    Antworten: 1
    Letzter Beitrag: 24-01-03, 16:05
  5. Abbruch bei Releasewechsel von V4R2 auf V4R5
    By Matthias.Hayn in forum IBM i Hauptforum
    Antworten: 13
    Letzter Beitrag: 02-03-02, 16:49

Tags for this Thread

Berechtigungen

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