[NEWSboard IBMi Forum]

Thema: DTAARA *LDA?

  1. #1
    Registriert seit
    Jun 2004
    Beiträge
    78

    Question DTAARA *LDA?

    Hallo,
    ich erweitere gerade ein PGM.
    Dabei muss ich je nach User Action andere PGM aufrufen.
    Parameteruebergabe zu den gerufenen PGM per lokaler DTAARA, jetzt mein Problem.
    Die DTAARA ist in allen PGM "LOCAL", die DS aber jeweils unterschiedlich.
    Wie kann ich das loesen?
    Ich kann ja im rufenden PGM nicht 3 unterschiedliche "LOCAL" DTAARA definieren......

    Gruss ratloser Ralf

  2. #2
    Registriert seit
    Feb 2001
    Beiträge
    20.702
    Dann musst du dir den Inhalt im Programm vorher retten (interne DS).
    Die *LDA gibts im Job halt nur 1 Mal !
    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
    Jun 2004
    Beiträge
    78
    Zitat Zitat von Fuerchau Beitrag anzeigen
    Dann musst du dir den Inhalt im Programm vorher retten (interne DS).
    Die *LDA gibts im Job halt nur 1 Mal !
    Hä?
    Sogut Du mir immer hilfst Fuerchau, das verstehe ich nicht.
    Also kann ich das Ding nennen wie ich will? Ich mache nur OUT vor- bzw. in nach dem PGM Aufruf um die Daten in meine DS zu bekommen oder wie?
    Ich rufe bei F16 Programm A auf, das erwartet eine DTAARA die LOKAL heisst.
    Bei F17 rufe ich Programm B auf, das erwartet ebenfalls eine DTAARA LOKAL (aber anders aufgebaut).


  4. #4
    Registriert seit
    Jun 2004
    Beiträge
    78
    Sorry, ist wohl zu warm heute oder so was in der Art
    Ich denke jetzt hab ich es verstanden.
    Ich brauche nur eine lokale DTAARA - ich leg nur die Felder von mehreren DS drueber...
    z.B.
    PGM A benoetigt
    1 6 Feld A
    7 14 Feld B
    PGM B benoetigt
    1 4 Feld C
    5 6 Feld D

    Dann mache ich eine DS
    mit allen Feldern und fuelle vor dem Call was ich gerade benoetige, richtig?

    Gruss Ralf

  5. #5
    Registriert seit
    Aug 2001
    Beiträge
    2.929
    Hallo Ralf,

    Deine Lösung funktioniert, solange:
    sich numerische, alphanumerische und Datums/Zeitfelder sich nicht überlagern. Dadurch könnten ungültige Werte in die numerischen oder Datums- und Zeitfelder gelangen, was dann zu einem Programm-Abbruch führt.

    Besser wäre es, 3 unterschiedliche Datenstrukturen zu definieren und vor Programm-Aufruf die benötigte Datenstruktur in die *LDA, die mit einem einzigen Feld mit 1024A definiert wurde, auszugeben.

    PHP-Code:
    D LDA            UDS                  dtaara(*LDA)           
    D  LDAInhalt                  1024                           
                                                                 
    D DSParPgm1       DS                  Qualified              
    D   Par1                        50A                          
    D   Par2                        15S 0                        
    D   Par3                          D                          
                                                                 
    D DSParPgm1       DS                  Qualified              
    D   Par1                        11S 3                        
    D   Par2                        30A  
     
    *------------------------------------------------------                        
     /
    Free   
          
    //Füllen Datenstrukturen für Parameterübergabe
          
    in LDA;                                                
          
    Clear LDAInhalt;                                       
          
    Select;                                                
          
    When Bedingung 1;                                    
               
    LDAInhalt DSParPGM1;                            
               
    Out LDA;                                          
               
    CallP Pgm1;                                       
          
    When Bedingung 2;                                    
               
    LDAInhalt DSParPGM2;      
               
    Out LDA;                    
               
    CallP Pgm2;                 
          
    EndSL;                           
          
    Out LDA;                         
     /
    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

  6. #6
    Registriert seit
    Jun 2004
    Beiträge
    78
    Danke Birgitta, wieder was gelernt.
    Alle DS sind bei mir alpha, werde trotzdem deine Loesung verwenden - ich finde dadurch ist der Code lesbarer.

    Gruss Ralf

  7. #7
    Registriert seit
    Jan 2007
    Beiträge
    1.002
    Es gäbe noch einen Weg,
    Holzhackermethode halt.

    Leg die Datenbereiche innerhalb der LDA
    fest.

    1-99 = PGM1
    101-200 = PGM2
    ...

    Hat den Vorteil beim Debuggen, dass Du gleich alle übergebenen Werte in der LDA
    siehst und zwischenspeichern muss man auch nicht

  8. #8
    Registriert seit
    Feb 2001
    Beiträge
    20.702
    Bei einer Neukonzeption von Parameterübergaben würde ich die *LDA nicht mehr nehmen sondern Aufrufparameter.
    Dies ist auf jeden Fall sicherer und flexibler.

    Bei "alten" Programmen muss man meist nehmen was gerade da 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

  9. #9
    Registriert seit
    Jan 2007
    Beiträge
    1.002
    Da geb ich Dir recht Fuerchau.

Similar Threads

  1. Länge einer DTAARA ermitteln
    By flytokiwi in forum IBM i Hauptforum
    Antworten: 12
    Letzter Beitrag: 04-04-07, 11:36
  2. dtaara per SQL ändern
    By jogisarge in forum NEWSboard Programmierung
    Antworten: 1
    Letzter Beitrag: 21-03-07, 11:00
  3. DTAARA
    By grunzheini in forum NEWSboard Programmierung
    Antworten: 1
    Letzter Beitrag: 31-01-07, 10:04
  4. Daten aus DTAARA
    By dino in forum IBM i Hauptforum
    Antworten: 1
    Letzter Beitrag: 08-01-07, 15:15
  5. Update DTAARA in RPG/LE
    By HoScHiE in forum IBM i Hauptforum
    Antworten: 4
    Letzter Beitrag: 10-06-02, 15:06

Berechtigungen

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