[NEWSboard IBMi Forum]

Hybrid View

  1. #1
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    Also Datenstrukturen als Returnwert geht zwar schon (ist dann vom Typ Zeichen) aber nicht unbedingt sinnvoll, da die Schnittstelle dann nicht eindeutig ist.

    IO/O-Parameter sind Parameter die "by reference", also mit Adresse übergeben werden und die Definitionen CONST und VALUE nicht enthalten. Also alle Parameter, die keine Extradefinitionen enthalten.
    Ein Problem ist noch die Definition STRING, da diese CONST mit einschließt.
    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

  2. #2
    Registriert seit
    Aug 2001
    Beiträge
    2.928
    Zitat Zitat von Fuerchau
    Also Datenstrukturen als Returnwert geht zwar schon (ist dann vom Typ Zeichen) aber nicht unbedingt sinnvoll, da die Schnittstelle dann nicht eindeutig ist.
    Wenn eine Datenstruktur als Rückgabe-Wert definiert ist, kann sie auch als Datenstruktur empfangen werden.
    In diesem Fall eine Dummy Datenstruktur an und versteckt diese in der Copy-Strecke für den Prototyp.
    Der Rückgabe-Wert kann dann mit LIKEDS definiert und verwendet werden.

    Beispiel:
    PHP-Code:
     Copy-Strecke Prototyp
    D DSQualName      DS                  based
    (DummyPtr)       
    D  Object                       10A                         
    D  Library                      10A                         
                                                                
    D GetQualName     PR                  likeDS
    (DSQualName)    
    D   ParmFile                    10A                         
    D   ParmLib                     10A 
    PHP-Code:
    D MyFile          S             10A   inz('MYFILEP')         
    D MyLib           S             10A                          
    D DSQualFile      DS                  likeDS
    (DSQualName)     
     */-----------------------------------------------------
     /
    Free                                        
        DSQualFile 
    GetQualName(MyFileMyLib);  
        
    Dsply DSQualFile.Object;                  
        
    Dsply DSQualFile.Library;                 
        *
    inLR = *On;                        
     /
    End-Free 
    PHP-Code:
    P GetQualName     B                   Export                   
    D GetQualName     PI                  likeDS
    (DSQualName)       
    D  ParmObj                      10A                            
    D  ParmLib                      10A                            
                                                                   
    D DSName          DS                  likeDS
    (DSQualName)       
     *-------------------------------------------------------------
     /
    Free                                                         
       DSName
    .Object ParmObj;                                    
       If 
    ParmObj    <> *Blanks;                                   
          If 
    ParmLib <> *Blanks;                                   
             
    DSName.Library ParmLib;                             
          else;                                                    
             
    DSName.Library '*LIBL';                             
          Endif;                                                   
       EndIf;                                                      
                                                                   
       Return 
    DSName;                                              
                                                                   
     /
    End-Free                                                     
    P GetQualName     E 
    Ergänzung zu Dieter:
    Es gibt auch noch die sogenannte Parameter-Übergabe by Constant Reference (Schlüssel-Wort CONST). Dabei wird geprüft, ob der übergebene Parameter der im Prototyp angegebenen Felddefinition entspricht. Bei Übereinstimmung wird die Adresse des Parameters an das rufende Programm oder Prozedur übergeben. Bei Abweichung wird ein temporäres Feld mit der erwarteten Definition erstellt und mit dem Paramete-Wert gefüllt. Anschliessend wird die Adresse diese neuen Feldes an das rufende Programm übergeben.

    Die Parameter-Übergabe by VALUE kann zur für den Aufruf von Prozeduren verwendet werden. Für den Aufruf von Programmen ist nur eine Parameter-Übergabe by Reference möglich, auch Constant Reference.

    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

Similar Threads

  1. Prozedur, in welchem Modul
    By loeweadolf in forum IBM i Hauptforum
    Antworten: 11
    Letzter Beitrag: 06-11-06, 15:05
  2. SQL-Update mit Werten aus der gleichen Tabelle
    By Ewald in forum NEWSboard Programmierung
    Antworten: 3
    Letzter Beitrag: 14-02-06, 14:51
  3. Prozedur variabel aufrufen
    By rolf in forum NEWSboard Programmierung
    Antworten: 4
    Letzter Beitrag: 14-10-05, 17:06
  4. Externe Prozedur
    By Muchi in forum NEWSboard Programmierung
    Antworten: 6
    Letzter Beitrag: 23-03-05, 08:04
  5. Parameterübergabe in Prozedur -> Compiler schmiert ab
    By JonnyRico in forum NEWSboard Programmierung
    Antworten: 5
    Letzter Beitrag: 23-11-04, 16:46

Berechtigungen

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