[NEWSboard IBMi Forum]
Seite 1 von 2 1 2 Letzte
  1. #1
    Registriert seit
    Aug 2018
    Beiträge
    2

    Variablenname in Variable

    Hallo.


    Ich habe in einem RPG Programm folgende Variablen definiert:

    ABC
    DEF
    GHI

    Nun habe ich im fogende eine Variable XXX. In dieser steht entweder ABC, DEF oder GHI.

    Je nachdem was in XXX steht möchte ich nun der entsprechenden Variablen den Text "TEST" hinzufügen. Ich kann ja aber nicht einfach:

    XXX = XXX + "TEST" schreiben da er dann ja den Wert "TEST" der Variablen XXX hinzufügt und nicht einer der anderen. Er soll also falls zB in XXX "ABC" steht folgendes machen:

    ABC = ABC + "TEST"

    Wie kann ich das machen, das ich den Inhalt der Variablen XXX als Variablenname einer anderen interpretiere?


    Ich hoffe das war verständlich.

    Danke schonmal und Gruß
    Novus

  2. #2
    Registriert seit
    Jan 2007
    Beiträge
    904
    Wie wär's mit select oder if Statements?

    select;
    when XXX = 'ABC';
    ABC = ABC + 'TEST';
    ...
    endsl;

    Geht auch mit if. (if XXX = 'ABC'; ...)
    kf

  3. #3
    Registriert seit
    Aug 2001
    Beiträge
    2.644
    Zitat Zitat von Novus Beitrag anzeigen
    Wie kann ich das machen, das ich den Inhalt der Variablen XXX als Variablenname einer anderen interpretiere?
    Mit reinem RPG wird das fummelig bis fast unmöglich. Aber das ist doch eine gute Gelegenheit, SQL zu nehmen. Zum Beispiel mit PREPARE und co ;-)
    www.RZKH.de
    IBM Champion 2022, 2023, 2024
    IBM i Community Advocate https://www.youracclaim.com/badges/6...c-7ad4ba147af6
    Common / CEAC
    http://pub400.com

  4. #4
    Registriert seit
    Jan 2003
    Beiträge
    746
    Code:
    D VARTAB          S             10A   Dim(3)
    D VARXXX          S             10A         
    D V               S             10I 0       
     /Free                                      
      VARTAB(1) = 'ABC';                        
      VARTAB(2) = 'DEF';                        
      VARTAB(3) = 'GHI';                        
      
      VARXXX = 'ABC';                           
      V = %Lookup(VARXXX:VARTAB);               
      If V > 0;                                 
         VARTAB(V) = %Trim(VARTAB(V)) + 'Test'; 
      EndIf;                                    
      *InLr = *On;                              
     /End-Free

  5. #5
    Registriert seit
    Feb 2001
    Beiträge
    20.207
    @Robert
    Da kannst du auch gleich
    VARXXX + 'Test'
    nehmen.
    Es soll der Inhalt der Variablen ABC genommen werden.
    So suchst du ja nur nach dem Text und verküpfst diesen dann.

    Hier hilft nur ein Array mit 2 Feldern. Feld 1= Name des Elements, Feld 2 = Inhalt.
    Das hat man schon früher mit den 2 Tabellen in der E-Definition gelöst.
    Lookup in der 1. Tabelle, Ergebnis in der selben Position der 2. Tabelle.
    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

  6. #6
    Registriert seit
    Aug 2001
    Beiträge
    2.644
    Zitat Zitat von Fuerchau Beitrag anzeigen
    Hier hilft nur ein Array mit 2 Feldern. Feld 1= Name des Elements, Feld 2 = Inhalt.
    Das hat man schon früher mit den 2 Tabellen in der E-Definition gelöst.
    Lookup in der 1. Tabelle, Ergebnis in der selben Position der 2. Tabelle.
    Für solche Schweinereien lieb(t)e ich das gute alte Net.Data - da ging sowas wie

    @DTW_ASSIGN(newvar, $(VAR$(BLUBBER$(PREF))))

    Auch wenns der Lesbarkeit nicht dienlich ist...
    www.RZKH.de
    IBM Champion 2022, 2023, 2024
    IBM i Community Advocate https://www.youracclaim.com/badges/6...c-7ad4ba147af6
    Common / CEAC
    http://pub400.com

  7. #7
    Registriert seit
    Feb 2001
    Beiträge
    20.207
    Powershell, Rexx, Java/Script, Excel, VBA, .Net, u.v.m.
    ILERPG: njet!
    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

  8. #8
    Registriert seit
    Mar 2002
    Beiträge
    5.286
    Zitat Zitat von Fuerchau Beitrag anzeigen
    Powershell, Rexx, Java/Script, Excel, VBA, .Net, u.v.m.
    ILERPG: njet!
    ... du hast dynamische Speicher Allokation, typisierte Arrays, was brauchst Du mehr?

    D*B

    PS: gute Programme kommen zuweilen ohne so etwas aus!!!
    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
    Feb 2001
    Beiträge
    20.207
    Dynamische Arrays, dynamische(re)s SQL, Assoziative Arrays und Feldlisten, ...
    Oder einfach nur eine .Net-Portierung (Core) auf AS/400, ähm, IBM i.
    Technisch wäre das möglich.
    Man stelle sich nur vor: eine 128-Bit-Net-Entwicklung;-).
    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

  10. #10
    Registriert seit
    Jan 2007
    Beiträge
    904
    Dynamische Arrays kannst Du auch in RPG haben.
    kf

  11. #11
    Registriert seit
    Feb 2001
    Beiträge
    20.207
    Aber nicht typsicher. Klar kann ich ein Array bis max. 16MB per Based-Pointer definieren und per Alloc Speicher zuweisen. Allerdings liefert mir %elem() die Anzahl definierter Elemente und nicht der Anzahl allokierter Elemente. Man muss also genau wissen, wieviele Elemente gerade angelegt sind, sonst liefern %lookup und andere Funktionen Speicherfehler oder liefern Schrott.
    Das ist dann eher Halbdynamic.
    Un dann wäre da noch die Grenze von 16MB für Arrays (Dim).
    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
    Aug 2018
    Beiträge
    2
    Vielen Dank für die ganzen Antworten.

    Habe mich jett dazu entschieden mit einem Parameter abzufragen und dann mit Select die Operation durchzuführen. Klappt wie gewünscht. Das andere wäre nur eleganter gewesen

    Viele Grüße

Similar Threads

  1. Variable in SQL Statement
    By pabloesco in forum NEWSboard Programmierung
    Antworten: 3
    Letzter Beitrag: 21-04-20, 12:47
  2. SQL variable Spaltenbezeichnungen
    By roman.klinisch in forum NEWSboard Programmierung
    Antworten: 4
    Letzter Beitrag: 06-04-20, 14:19
  3. Variablenname in Variable
    By harkne in forum NEWSboard Programmierung
    Antworten: 19
    Letzter Beitrag: 04-12-14, 09:35
  4. SQL insert mit variable
    By Robi in forum IBM i Hauptforum
    Antworten: 3
    Letzter Beitrag: 21-03-03, 10:16
  5. Variable
    By Henrik Motzkus in forum IBM i Hauptforum
    Antworten: 4
    Letzter Beitrag: 05-03-02, 10:13

Berechtigungen

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