-
Datenstruktur in eine Char Variable umwandeln /Packed werte machen Probleme
Hallo Zusammen,
ich komme bei einem Problem nicht mehr weiter.
Ich habe eine DatenStruktur die ich eine Char Variable zuweisen möchte, aber die Packed Werte hier Probleme machen:
dcl-ds InformationenderPerson qualified inz;
Infonummer zoned(8:2) //bsp 12345678,12
infoname char(10) // bsp: Max
infopacked packed(5:0) //bsp 85354
end-ds
dlc-s WertederDS char(100) inz;
WertederDs = InformationenderPerson;
Eregbnis :
WertederDs = 112345678,12MaxeMW!
Wie kann ich die Variable parsen oder umwandeln damit ich den normalen Wert (nicht eMW! sondern 85354) bekomme?
Bedingungen sind:
Die Datenstruktur kann ich nicht geändern werden, da diese Prozedur von verschiedenen Datenstrukturen aufgerufen werdeb soll.
Übergabeparameter soll nur diese Variable WertederDS sein.
Vielen Dank!
mfg
-
Definiere eine 2. Struktur mit identischen Namen und Zoned-Felder.
Mach einen eval-corr und du hast alles passend.
-
Hallo Fuerchau,
in meinem Sourcecode definiere ich keine Datenstrukturen sondern bekomme nur diesen Wert WertederDS und kann nur mit diesen arbeiten.
Sonst müsste ich für jede Datenstruktur, die mir übergeben wird eine 2. Datenstruktur anlegen und das wäre unnötiger Verbrauch von speicher.
Gibt es keine Möglichkeit die Packed Werte als Normalen String umwandeln zu können ohne eine 2 Datenstruktur aufbauen zu müssen?
-
Du kannst ein zusätzliches Feld mit "Overlay() Pos()" als gepackt definieren.
Woher kommt denn die DS "InformationenderPerson"?
Du kannst doch ebenso ein neues Feld "WertederDs likeds(InformationenderPerson)" anlegen und der DS dann den Wert zuweisen.
Normalerweise sind ja nun mal Felder und vor allem Strukturen in Copystrecken definiert;-), so dass man sich darauf beziehen kann.
-
Zitat von Fuerchau
Du kannst ein zusätzliches Feld mit "Overlay() Pos()" als gepackt definieren.
Woher kommt denn die DS "InformationenderPerson"?
Das Problem ist das es nicht nur diese DS sein kann sondern auch andere (die auch anders strukturiert sind).
In der Theorie soll jedes RPGLE Objekt darauf zugreifen können.
ich will einen simplen xml generator bauen
und mit einen simplen %subst die Tags befühlen
das hat super funktioniert solange ich keine Packed werte hatte
Du kannst doch ebenso ein neues Feld "WertederDs likeds(InformationenderPerson)" anlegen und der DS dann den Wert zuweisen.
dann hätte ich doch schon wieder eine Datenstruktur mit packed werten und könnte diese wieder nicht als char übergeben
Normalerweise sind ja nun mal Felder und vor allem Strukturen in Copystrecken definiert;-), so dass man sich darauf beziehen kann.
Ja, da hast du recht.
Ich wollte nur eine Dynamische "Klasse" erschaffen, wo ich nicht immer expliziert auf die jeweilige Datenstruktur schauen muss.
-
Dann hilft nur mit Pointern zu arbeiten ... und das wird komplex.
Birgitta
-
danke dir Birgitta
schade ich dachte es würde einfacher gehen
-
Ich habe allerdings doch mal eine dumme Frage.
Warum willst Du denn die Datenstruktur überhaupt in eine Text-Variable schieben?
Bei der Parameter-Übergabe kannst Du auch eine Datenstruktur mitgeben.
Außerdem kannst Du ja auch die Variable wieder in die Datenstruktur schieben und damit wären Deine gepackten Felder wieder richtig sichtbar.
Ansonsten ist die Lösung von Baldur, d.h. 2. Datenstrutkur mit gezonten Feldern die beste Lösung.
-
Warum willst Du denn die Datenstruktur überhaupt in eine Text-Variable schieben?
Weil ich keine Dynamische Datenstruktur erstellen kann oder ?
Nehmen wir mal an das ich eine Datenstruktur als Parameter übergeben würde,
dann müsste meine Datenstruktur genauso ausschauen wie die ich übergeben habe richtig ?
Und müsste für jede Datenstruktur eine Prozedur schreiben.
-
Nein musst du nicht. Wenn du allerdings an die Feldinhalte willst, kannst du relativ simple Definitionen verwenden:
dcl-pi *n;
myds char(2000);
end-pi;
dcl-s pDS pointer;
dcl-ds MyDS likeds(xxxx) based(pDS);
pDS = %addr(myds); // Setzen Basispointer von Parameter
-
... man beachte den feinsinnigen Humor der Compilerentwickler bei IBM! Datenstrukturen haben mit Struktur nichts zu tun, das sind blanke Binärdaten und können wie solche weitergegeben werden (mal von Alignment abgesehen). Wenn sie jemand interpretieren will, muss er den Aufbau der "Datenstruktur" kennen - am einfachsten geht das, wenn man das zur Compiletime weiß, dann macht das der Compiler für den Programmierer. Wenn man das zur Compiletime nicht weiß, braucht man Metadaten, die den Aufbau beschreiben, dann kann man sich das auch zur Laufzeit zusammenbauen oder auseinander klamüsern. Hierbei sollte man aber genau wissen, was man da tut - bei Fehlern gehts ab in den dunklen Wald!!!
D*B
Similar Threads
-
By dschroeder in forum NEWSboard Programmierung
Antworten: 2
Letzter Beitrag: 12-12-17, 11:35
-
By dschroeder in forum NEWSboard Programmierung
Antworten: 15
Letzter Beitrag: 03-07-17, 13:24
-
By dholtmann in forum NEWSboard Programmierung
Antworten: 14
Letzter Beitrag: 12-05-17, 14:29
-
By PFR in forum NEWSboard Programmierung
Antworten: 15
Letzter Beitrag: 05-01-16, 15:42
-
By MGJ79 in forum NEWSboard Programmierung
Antworten: 7
Letzter Beitrag: 24-04-14, 10:00
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