[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Mar 2021
    Beiträge
    5

    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

  2. #2
    Registriert seit
    Feb 2001
    Beiträge
    20.207
    Definiere eine 2. Struktur mit identischen Namen und Zoned-Felder.
    Mach einen eval-corr und du hast alles passend.
    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
    Mar 2021
    Beiträge
    5
    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?

  4. #4
    Registriert seit
    Feb 2001
    Beiträge
    20.207
    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.
    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
    Mar 2021
    Beiträge
    5
    Zitat Zitat von Fuerchau Beitrag anzeigen
    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.

  6. #6
    Registriert seit
    Aug 2001
    Beiträge
    2.869
    Dann hilft nur mit Pointern zu arbeiten ... und das wird komplex.

    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

  7. #7
    Registriert seit
    Mar 2021
    Beiträge
    5
    danke dir Birgitta

    schade ich dachte es würde einfacher gehen

  8. #8
    Registriert seit
    Aug 2001
    Beiträge
    2.869
    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.
    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

  9. #9
    Registriert seit
    Mar 2021
    Beiträge
    5
    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.



  10. #10
    Registriert seit
    Feb 2001
    Beiträge
    20.207
    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
    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

  11. #11
    Registriert seit
    Mar 2002
    Beiträge
    5.286
    ... 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
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

Similar Threads

  1. Ganzes Array mit %char umwandeln
    By dschroeder in forum NEWSboard Programmierung
    Antworten: 2
    Letzter Beitrag: 12-12-17, 12:35
  2. String mit Zoned-Repräsentation in packed umwandeln
    By dschroeder in forum NEWSboard Programmierung
    Antworten: 15
    Letzter Beitrag: 03-07-17, 14:24
  3. Binary in Packed.
    By dholtmann in forum NEWSboard Programmierung
    Antworten: 14
    Letzter Beitrag: 12-05-17, 15:29
  4. Antworten: 15
    Letzter Beitrag: 05-01-16, 16:42
  5. Antworten: 7
    Letzter Beitrag: 24-04-14, 11:00

Tags for this Thread

Berechtigungen

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