[NEWSboard IBMi Forum]
Seite 1 von 5 1 2 ... Letzte
  1. #1
    Registriert seit
    Nov 2007
    Beiträge
    371

    Inhalt Variable Wert zuweisen

    Hallo Miteinander,

    In meiner Variablen steht z.b. der Wert
    'Feld1'.

    Dieser Wert stellt wiederrum einen Variablennamen dar.

    Ist es in RPG möglich den Wert einer Variablen auszulesen ( in diesem Beipiel wäre das Feld1) und diesem Inhalt Feld1 was eine Variable darstellt einen Wert zuzuweisen??



    das Thema wurde schon mal vor einiger Zeit hier diskutiert. Evtl hat sich seit der Zeit ja was getan...


    Vielen dank im voraus..

  2. #2
    Registriert seit
    Feb 2001
    Beiträge
    20.241
    Geändert hat sich zur Zeit nichts.
    Namen dienen nur dem Compiler und werden in Adressen übersetzt.
    Kennst du die Adresse (%ADDR() zur Compilezeit), kannst du "dynamisch" mit Inhalten arbeiten.
    Ansonten ist der "Name" zur Laufzeit unbekannt.
    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
    Nov 2007
    Beiträge
    371
    Ergo. Ich habe keine möglichkeit dem Feld1 einen Wert zuzuweisen oder??

    Geht das evtl über API QUSLFLD (buffer position)


    Offset Type Field
    Dec Hex

    0 0 CHAR(10) Field name
    10 A CHAR(1) Data type
    11 B CHAR(1) Use
    12 C BINARY(4) Output buffer position
    16 10 BINARY(4) Input buffer position




    Die Variablennamen meines Displayfiles werden erst zur Laufzeit über ein Api ermittelt.

  4. #4
    Registriert seit
    Mar 2002
    Beiträge
    5.287
    wenn du im Programm an den Buffer drankommst (sprich ihn addressieren kannst, dann reichen die Positionen, du holst dir einen Pointer auf die Buffer Variable, addierst den Offset drauf et voila.

    D*B

    der nicht ganz versteht wozu das eigentlich gut ist und meint, dass oft über Anwednungsdesign mehr zu holen ist...



    Zitat Zitat von woodstock99 Beitrag anzeigen
    Ergo. Ich habe keine möglichkeit dem Feld1 einen Wert zuzuweisen oder??

    Geht das evtl über API QUSLFLD (buffer position)


    Offset Type Field
    Dec Hex

    0 0 CHAR(10) Field name
    10 A CHAR(1) Data type
    11 B CHAR(1) Use
    12 C BINARY(4) Output buffer position
    16 10 BINARY(4) Input buffer position




    Die Variablennamen meines Displayfiles werden erst zur Laufzeit über ein Api ermittelt.
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  5. #5
    Registriert seit
    Nov 2007
    Beiträge
    371
    @ Bender.

    wir setzten unsere Displayattribute über einen Variablennamen. Diese Variablennamen holen wir uns über ein APi. Diese müssen alle erst einmal initialisiert werden x:20 weil es sonst zu Fehlern bei der Setzung der Attribute kommt.


    Wie soll man das sonst anstellen?
    Wir wollen halt nicht jede Variable im RPG
    per Hand initialisieren ...

  6. #6
    Registriert seit
    Feb 2001
    Beiträge
    20.241
    Nun ja, wenn du MI beherrschst, kannst du mittels DTAPTR (steht nur in MI zur Verfügung) eine Adresse mit Feldtyp und Ausprägung definieren und per MI-Befehl mittels CPYBLA o.ä. verarbeiten.

    Ich denke aber, dass das nicht die Lösung sein kann.

    Wenn du mit reinen Zeichenfeldern arbeitest kannst du ja per "%subst(MyFeld: pos: len)" variabel zugreifen.
    Mit gezonten numerischen Felder klappt das auch noch, bei gepackten Felder stößt du auf ein Problem.
    Binärfelder lassen sich noch per Zwischenfeld verarbeiten.
    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

  7. #7
    Registriert seit
    Nov 2007
    Beiträge
    371
    @ fuerchau..

    ?????????.
    ich glaube wir reden leider aneinander vorbei.

    siehe vorherige antwort..

  8. #8
    Registriert seit
    Mar 2002
    Beiträge
    5.287
    solange man ein File pro Displayfile hat, würde ich das von anderer Logik befreien (=> Design) und die Dinger aus den DDS Bestimmungen generieren - und fertig ist.
    @Baldur: Substring von DS (intern binary data) und Pointer ist dasselbe. Die packed und int Klamotten kriegt man auch über Zwischenfelder da rein (am besten macht man sich da ein Service Programm mit entsprechenden Konvertierungen)

    D*B

    Zitat Zitat von woodstock99 Beitrag anzeigen
    wir setzten unsere Displayattribute über einen Variablennamen. Diese müssen alle erst einmal initialisiert werden x:20 weil es sonst zu Fehlern bei der Setzung der Attribute kommt.

    Wie soll man das sonst anstellen?
    Wir wollen halt nicht jede Variable im RPG
    per Hand initialisieren ...
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  9. #9
    Registriert seit
    Nov 2007
    Beiträge
    371
    wir haben halt mehrere Records,Windows usw in unserer Bildschirmmaske. Wir positionieren und z.b auch bei einer Fehlermeldung über ein Api auf das fehlerhafte Feld. Ziel dieser ganzen Aktion soll sein : Keine Bezugszahlen mehr und flexibilität z.b. ein Feld das Blau ist soll bei einem Fehler in Umkehranzeige dargestellt werden usw und das ganze ohne Bezugszahlen, denn 1347 Bezugzahlen im Programm macht das ganze nicht grad übersichtlicher .

  10. #10
    Registriert seit
    Feb 2001
    Beiträge
    20.241
    Nunja, so ist das halt mit der Programmierung.
    Definiere alle Variablen für die Displayattribute an den Anfang des Satzformates.
    Definiere je Satzformat eine eigene Struktur (DS).
    Dann kannst du per
    eval %subst(MyDs: 1: Len) = *allx'20';
    die Attribute zuweisen.
    Du kannst auch
    - ein Array anlegen: MyArr 1 dim(nn)
    - die Felder in der I-Anweisung umbenennen
    - mit eval MyArr = x'20' zuweisen

    Aber alles das geht ja eigentlich am Thema vorbei.
    Denn auch mit einem API musst du ja irgendwo die Feldnamen übergeben, da ist es doch einfacher in einer *INZSR die Felder zu initialisieren als extra Code zu schreiben der fehleranfälliger wird.
    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
    Feb 2001
    Beiträge
    20.241
    Das kann doch nur die jeweilige Anwendung selber entscheiden.
    Ich würde dem eigenen API eben das Attributfeld auch als Parameter übergeben.
    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

  12. #12
    Registriert seit
    Nov 2007
    Beiträge
    371
    "Das kann doch nur die jeweilige Anwendung selber entscheiden." ???

    Ich muß gestehen der Zug rollt grad bei mir ein. Soll heissen ich versteh nur Bahnhof .

    Wie mit übergeben?
    Das Problem ich ja das der Feldname in einer Variablen steht.
    Ich muß ja an die Adresse des Feldnamens kommen und ich denke mal des dies über das Api

    QUSLFLD (buffer position)


    Offset Type Field
    Dec Hex

    0 0 CHAR(10) Field name
    10 A CHAR(1) Data type
    11 B CHAR(1) Use
    12 C BINARY(4) Output buffer position
    16 10 BINARY(4) Input buffer position



    realisiert werden kann oder bin ich jetzt im Augenblick nur noch verwirrt..

Similar Threads

  1. Wert aus CSV Datei
    By mk in forum IBM i Hauptforum
    Antworten: 9
    Letzter Beitrag: 21-12-06, 08:56
  2. Variable Zahlenkonvertieren
    By Xanas in forum NEWSboard Programmierung
    Antworten: 4
    Letzter Beitrag: 28-08-06, 12:21
  3. String mit HexInhalt muss als Hex-Wert in Variable
    By cheffe1008 in forum NEWSboard Programmierung
    Antworten: 7
    Letzter Beitrag: 16-05-06, 07:45
  4. Variable zuweisung
    By steven_r in forum NEWSboard Programmierung
    Antworten: 2
    Letzter Beitrag: 08-05-06, 11:01
  5. Können CLLE Module selbst einen Wert halten bzw. zurückgeben?
    By JonnyRico in forum NEWSboard Programmierung
    Antworten: 2
    Letzter Beitrag: 25-04-06, 10:16

Berechtigungen

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