-
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(¶meter) 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
-
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
-
Hallo Manuel,
vielen Dank für den Hinweis.
Franco
-
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
-
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.
-
Hallo Fuerchau,
das probiere ich natürlich auch...
Gruß Franco
-
Hallo Birgitta,
%trim und schon wars gut.
Danke.
Gruß Franco
Similar Threads
-
By camouflage in forum NEWSboard Programmierung
Antworten: 7
Letzter Beitrag: 05-09-19, 15:01
-
By TheDevil in forum NEWSboard Programmierung
Antworten: 12
Letzter Beitrag: 12-02-15, 11:40
-
By DS in forum IBM i Hauptforum
Antworten: 4
Letzter Beitrag: 11-06-03, 08:36
-
By JonnyRico in forum IBM i Hauptforum
Antworten: 1
Letzter Beitrag: 24-01-03, 15:05
-
By Matthias.Hayn in forum IBM i Hauptforum
Antworten: 13
Letzter Beitrag: 02-03-02, 15:49
Tags for this Thread
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- You may not post attachments
- You may not edit your posts
-
Foren-Regeln
|
Erweiterte Foren Suche
Google Foren Suche
Forum & Artikel Update eMail
AS/400 / IBM i
Server Expert Gruppen
Unternehmens IT
|
Kategorien online Artikel
- Big Data, Analytics, BI, MIS
- Cloud, Social Media, Devices
- DMS, Archivierung, Druck
- ERP + Add-ons, Business Software
- Hochverfügbarkeit
- Human Resources, Personal
- IBM Announcements
- IT-Karikaturen
- Leitartikel
- Load`n`go
- Messen, Veranstaltungen
- NEWSolutions Dossiers
- Programmierung
- Security
- Software Development + Change Mgmt.
- Solutions & Provider
- Speicher – Storage
- Strategische Berichte
- Systemmanagement
- Tools, Hot-Tips
Auf dem Laufenden bleiben
|
Bookmarks