[NEWSboard IBMi Forum]

Hybrid View

  1. #1
    Registriert seit
    May 2005
    Beiträge
    103

    Question Alternative für MoveA im Frei-Format

    Hallo zusammen,

    ich suche eine Alternative für den OpCode MOVEA, welcher im Frei-Format nicht mehr verfügbar ist.

    Diesen setze ich momentan noch ein, um ein Datenbankfeld (30A) in ein Array zu schieben.

    Das Datenbankfeld beinhaltet eine Berechtigungsstruktur (z. B. 'JJJJJNNJJJNNNNJJJJNNNNNNNNNNNN')

    ... ich weiß ... ist nicht auf meinem Mist gewachsen, aber ich muss jetzt damit weiterarbeiten :-(

    Ich behelfe mir z. Zt. mit folgendem Code
    ...
    // Berechtigungsstruktur des angemeldeten Benutzers auslesen
    chain user v#taub00;
    if %found(v#taub00);
    /End-Free
    C MoveA TabFub JaNein
    /Free
    endif;
    ...

    Hat jemand ne elegante Lösung für mich ??

  2. #2
    Registriert seit
    Mar 2002
    Beiträge
    5.365
    der Möglichkeiten sind da viele, array mit Alfa feld überlagern und schnöde Zuweisung (was ich nicht mag, wg. verdeckter Programmierung, oder das Feld mit %subst verarbeiten, was auch in einer Schleife geht.

    D*B

    Zitat Zitat von Tobse77 Beitrag anzeigen
    Hallo zusammen,

    ich suche eine Alternative für den OpCode MOVEA, welcher im Frei-Format nicht mehr verfügbar ist.

    Diesen setze ich momentan noch ein, um ein Datenbankfeld (30A) in ein Array zu schieben.

    Das Datenbankfeld beinhaltet eine Berechtigungsstruktur (z. B. 'JJJJJNNJJJNNNNJJJJNNNNNNNNNNNN')

    ... ich weiß ... ist nicht auf meinem Mist gewachsen, aber ich muss jetzt damit weiterarbeiten :-(

    Ich behelfe mir z. Zt. mit folgendem Code
    ...
    // Berechtigungsstruktur des angemeldeten Benutzers auslesen
    chain user v#taub00;
    if %found(v#taub00);
    /End-Free
    C MoveA TabFub JaNein
    /Free
    endif;
    ...

    Hat jemand ne elegante Lösung für mich ??
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  3. #3
    Registriert seit
    May 2005
    Beiträge
    103
    Zitat Zitat von BenderD Beitrag anzeigen
    der Möglichkeiten sind da viele, array mit Alfa feld überlagern und schnöde Zuweisung (was ich nicht mag, wg. verdeckter Programmierung, oder das Feld mit %subst verarbeiten, was auch in einer Schleife geht.

    D*B
    Hallo BenderD und vielen Dank für die rasche Antwort.

    Die Schleife mit %subst ist zwar ne Möglichkeit, aber wirklich eleganter, als meine Nachgabe der Compiler-Schikane mit /End-Free und /Free ist das auch nicht.
    Es kann doch kein Fortschritt einer Programmiersprache sein, wenn ich für etwas eine Schleife programmieren muss, wofür mir zuvor ein Befehl/Statement genügte !?!?!
    Ein adäquate BiF vielleicht ??

  4. #4
    Registriert seit
    Mar 2002
    Beiträge
    5.365
    mit dem %subst war doch nicht gemeint das array zu füllen, sondern selbiges zu entfernen und den String direkt mit %subst anzufassen

    D*B

    BTW: manchmal kann es durchaus Sinn machen ein Statement durch mehr Code zu ersetzen, wenn letzteres besser lesbar ist. Programme werden öfter gelesen als geschrieben!

    Zitat Zitat von Tobse77 Beitrag anzeigen
    Hallo BenderD und vielen Dank für die rasche Antwort.

    Die Schleife mit %subst ist zwar ne Möglichkeit, aber wirklich eleganter, als meine Nachgabe der Compiler-Schikane mit /End-Free und /Free ist das auch nicht.
    Es kann doch kein Fortschritt einer Programmiersprache sein, wenn ich für etwas eine Schleife programmieren muss, wofür mir zuvor ein Befehl/Statement genügte !?!?!
    Ein adäquate BiF vielleicht ??
    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
    May 2005
    Beiträge
    103
    Zitat Zitat von BenderD Beitrag anzeigen
    mit dem %subst war doch nicht gemeint das array zu füllen, sondern selbiges zu entfernen und den String direkt mit %subst anzufassen

    D*B

    BTW: manchmal kann es durchaus Sinn machen ein Statement durch mehr Code zu ersetzen, wenn letzteres besser lesbar ist. Programme werden öfter gelesen als geschrieben!
    Danke für den weiteren Vorschlag.

    Da jedoch noch weitere Abhängigkeiten (Programmnamen etc.) von der Auswahl abhängen, benötige ich das Array unbedingt - Trotzdem Danke !!

  6. #6
    Registriert seit
    Jan 2008
    Beiträge
    16
    moin.

    versuch es doch mal mit pointern:
    PHP-Code:
    d a10 s 10 inz'ABCDEFGHIJ' )
    d a10_ptr s *
    d ara10 s 1 dim(10baseda10_ptr )

    /
    free
     a10_ptr 
    = %addra10 );
     *
    inlr = *on
    /end-free 
    ara10 enthält jetzt a-j.
    musst halt nur an deine variablen anpassen.

    mfg.

  7. #7
    Registriert seit
    Nov 2003
    Beiträge
    2.403
    Wenn "JaNein" zur Zeit als eigenständiges Feld mit DIM(nnn) definiert ist, könntest du es als Unterfeld einer Datenstruktur (z.B. JaNeinDS) definieren, und dann den "MOVEA TabFub JaNein" durch einen "MOVEL TabFub JaNeinDS" bzw. die entsprechende Zuweisung im Free-Format ersetzen.

  8. #8
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    Jo, den Overlay habe ich in der schnelle vergessen, aber du hast ja gesehen was ich meinte
    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

  9. #9
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    Aber das Free-Format kennt noch ein paar RPG-Gemeinheiten weniger:

    E MYARR 100 7p 0

    Z-ADD 1 MYARR <= füllt alles mit 1
    ADD MYVAR MYARR <= Addiert 1 Variable auf jedes Element
    ADD ARR1 ARR2 <= Addiert Element(ARR1) auf Element(ARR2)

    usw.
    Hier ist dann tatsächlich Schleifenprogrammierung angesagt. Ich gebe allerdings Dieter recht, dass die Schleife eben aussagt was getan wird, der ADD aber leider nicht, da der Variablenname selten als Array erkennbar ist.
    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
    Aug 2001
    Beiträge
    2.928
    Zitat Zitat von Fuerchau Beitrag anzeigen
    Aber das Free-Format kennt noch ein paar RPG-Gemeinheiten weniger:

    E MYARR 100 7p 0

    Z-ADD 1 MYARR <= füllt alles mit 1
    ADD MYVAR MYARR <= Addiert 1 Variable auf jedes Element
    ADD ARR1 ARR2 <= Addiert Element(ARR1) auf Element(ARR2)

    usw.
    Hier ist dann tatsächlich Schleifenprogrammierung angesagt. Ich gebe allerdings Dieter recht, dass die Schleife eben aussagt was getan wird, der ADD aber leider nicht, da der Variablenname selten als Array erkennbar ist.
    Wer behaupted denn so was?!

    PHP-Code:
     /Free
        
    //Initialisierung aller Elemente der Felgruppe Array mit 1 
        
    Array = 1
        
    //Erhöhung aller Elemente der Feldgruppe Array um 1
        
    Array += 1
        
    //Addiert zu jedem Element der Feldgruppe Array 
        //das passende Element in Feldgruppe Array2
        
    Array1 Array1 Array2
     /
    End-Free 
    Und dann gibt es (seit V5R3) auch noch die Built-In-Funktion %SubArr() mit der man gezielt Elemente in einer Feldgruppe bearbeiten kann. z.B.:
    PHP-Code:
     /Free
        
    //Element 1-5 der Feldgruppe Array wird mit 1 gefüllt
        
    %SubArr(Array: 15) = 1;

        
    //Element 6-8 der Feldgruppe Array wird mit 2 gefüllt
        
    %SubArr(Array: 63) = 2;

        
    //Alle Elemente ab Element 9 werden mit *HiVal gefüllt
        
    %SubArr(Array: 9) = *Hival;

        
    //die Elemente 5-11 werden sortiert
        
    SortA %SubArr(Array: 57);

        
    //Die Elemente 1-5 der Feldgruppe Array wird mit dem 
        //Inhalt der Elemente 4-8 der Feldgruppe Array2 gefüllt
        
    %SubArr(Array: 15) += %SubArr(Array245); 

    /
    End-Free 
    Birgitta
    Birgitta Hauser

    Anwendungsmodernisierung, Beratung, Schulungen, Programmierung im Bereich RPG, SQL und Datenbank
    IBM Champion seit 2020 - 5. Jahr in Folge
    Birgitta Hauser - Modernization - Education - Consulting on IBM i

  11. #11
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    D MyDS DS
    D MyFunTab 30
    D MyFun 1 dim(30)

    MyFun = TabFun;
    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
    May 2005
    Beiträge
    103
    Zitat Zitat von Fuerchau Beitrag anzeigen
    D MyDS DS
    D MyFunTab 30
    D MyFun 1 dim(30)

    MyFun = TabFun;
    Hallo Fuerchau,

    auch dir Danke für die Antwort.
    Mit 2 kleinen - aber notwendigen - Korrekturen funktioniert dein Lösungsvorschlag !!

    D MyDs DS
    D MyFunTab 30
    D MyFun 1 dim(30) overlay(MyFunTab)

    MyFunTab = TabFun;

    DANKESCHÖN !!

Similar Threads

  1. Frei Porn Site!
    By Fucasdreh in forum NEWSboard Server Job
    Antworten: 0
    Letzter Beitrag: 10-01-07, 13:12
  2. SQL Alternative Namen
    By andreas.lundschien in forum IBM i Hauptforum
    Antworten: 4
    Letzter Beitrag: 27-09-06, 10:56
  3. CPYTOIMPF Format
    By Muchi in forum IBM i Hauptforum
    Antworten: 11
    Letzter Beitrag: 03-08-06, 09:41
  4. SAVSYS alternative IPL-Einheit
    By tomikra in forum IBM i Hauptforum
    Antworten: 1
    Letzter Beitrag: 10-05-04, 14:21
  5. Embedded SQL - Datenbankoptionen in VARPG
    By woki in forum NEWSboard Programmierung
    Antworten: 2
    Letzter Beitrag: 13-04-04, 12:09

Berechtigungen

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