[NEWSboard IBMi Forum]
Seite 2 von 2 Erste 1 2
  1. #13
    Registriert seit
    Feb 2001
    Beiträge
    20.258
    Das ist kein Systemmodul sondern eine stinknormale MI-Anweisung, die im RPG/LE ausgeführt wird (MATPTR).
    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. #14
    Registriert seit
    Jun 2006
    Beiträge
    348
    Das RPG Programm als Modul einzubinden ist kein Problem und funktioniert auch einwandfrei. Hatte ich schonmal getestet. Da wir aber nicht mit RPG programmieren, kann ich diese Lösung leider nicht verwenden.

  3. #15
    Registriert seit
    Feb 2001
    Beiträge
    20.258
    Nun, ob du nun ein API verwendest oder ein CLLE-Modul oder ein RPGLE-Modul tut der Sache an Sich keinen Abbruch.

    Die Idee, ein kleines RPGLE-Modul einzubinden und als Funktion aufzurufen "call procedure ... returning ..." ist doch gar nicht so übel.
    Man muss nur sagen, dass dies ein API 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

  4. #16
    Registriert seit
    Mar 2002
    Beiträge
    5.288
    QBaldur: Falls du die PSDS meinst, das muss ein Variablen Export aus der Runtime sein, die ist ohne jeden Aufruf immer aktuell gefüllt

    Zitat Zitat von Fuerchau
    Das ist kein Systemmodul sondern eine stinknormale MI-Anweisung, die im RPG/LE ausgeführt wird (MATPTR).
    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. #17
    Registriert seit
    Sep 2006
    Beiträge
    162
    @Schatte
    Habe vor zwei Jahre wissen wollen wie mein Programmstack aussieht. Ich wollte nämlich einen rekursiven Aufruf verhindern. Da es eine API zu dem Thema gibt, schrieb ich ein Programm und fertig.
    Wenn deine Frage darauf abzieht zu wissen, welches Programm (/Bibliothek) gerade ausgeführt wird, sollte diese API die Lösung sein, oder ??
    Gruß
    DVE

  6. #18
    Registriert seit
    Jun 2006
    Beiträge
    348
    Hast du ein Programmbeispiel zu diesem API?

    Gruß
    Matthias

  7. #19
    Registriert seit
    Sep 2006
    Beiträge
    162

    Die gewünschte Souce

    Habe das Programm etwas modifiziert, da es bei mir einen etwas anderen Zweck erfüllt.
    Brauchtst es nur als RPGLE umzuwandeln und fertisch.
    Das Programm liefert den Programmname/Bibliothek des aufrufenden Programmes zurück.
    Gruß
    DVE

    PHP-Code:
         *
         
    D GetCaller       PR                  Extpgm('QWVRCSTK')                                       
         
    D                             2000                                                             
         D                               10I 0                                                          
         D                                8    
    CONST                                                    
         
    D                               56                                                             
         D                                8    
    CONST                                                    
         
    D                               15                                                             
         
    **                                                                     --**                    
         
    Var             DS         65534                                                             
         D  BytAvl                       10I 0                                                          
         D  BytRtn                       10I 0                                                          
         D  Entries                      10I 0                                                          
         D  Offset                       10I 0                                                          
         D  EntryCount                   10I 0                                                          
         D VarLen          S             10I 0 Inz
    (%size(Var))                                          
         
    D APIErrorDS      DS                                                                           
         D                               10I 0 Inz
    ( %SizeAPIErrorDS ) )                               
         
    D  BytesAvail                   10I 0 Inz( *Zero )                                             
         
    D                                7    Inz( *Blanks )                                           
         
    D                                1    InzX'00' )                                             
         
    D  errmsg                 9     15                                                             
         D                              256    Inz
    ( *Blanks )                                           
         **                                                                     --**                    
         
    D JobIdInf        DS                                                                           
         D  JIDQName                     26    Inz
    ( *Blank )                                            
         
    D  JIDIntID                     16                                                             
         D  JIDRes3                       2    Inz
    (*Allx'00')                                           
         
    D  JIDThreadInd                 10I 0 Inz(2)                                                   
         
    D  JIDThread                     8    Inz(*Allx'00')                                           
         ** 
    beginn hauptprogramm                                                --**                    
         
    D ReaStack        DS           256                                                             
         D  EntryLen                     10I 0                                                          
         D  PgmName                      10    Overlay
    (ReaStack:25)                                     
         
    D  PgmLib                       10    Overlay(ReaStack:35)                                     
         
    D  QWVSI01                      10    OVERLAY(ReaStack:117)                                    
         
    D                                                                                              
         D ProgramName     DS            20                                                             
         D  Programm                     10                                                             
         D  Library                      10                                                             
          
    *                                                                                             
         
    D                SDS                                                                           
         D  ThisPgm                1     10                                                             
          
    *                                                                                             
         ** 
    beginn hauptprogramm                                                --**                    
         
    c     *entry        plist                                                                      
         c                   parm                    ReturnCode        7                                
         c                   parm                    ProgramName      20                                
          
    *                                                                                             
         
    c                   movel(p)  '*'           JIDQName                                           
         c                   movel
    (p)  *BLANKS       ReturnCode                                         
          
    *                                                                                             
         
    c                   z-add     0             timea             6 0                              
         c                   z
    -add     0             zahl              6 0                              
         c     errmsg        doueq     
    *blanks                                                          
         c     errmsg        oreq      
    'CPF3C53'                                                        
         
    c     zahl          orge      3                                                                
         c                   reset                   APIErrorDS                                         
         C                   CallP     GetCaller
    (Var:VarLen:'CSTK0100':JobIdInf                         
         C                             
    :'JIDF0100':APIErrorDS)                                          
         
    c                   time                    timeb             6 0                              
         c     timea         ifne      timeb                                                            
         c                   add       1             zahl                                               
         c                   z
    -add     timeb         timea                                              
         c                   
    endif                                                                      
         
    c                   enddo                                                                      
         c     errmsg        ifeq      
    *BLANKS                                                          
         c                   movel     
    *BLANKS       ProgramName                                        
         C                   
    Do        Entries                                                          
         C                   
    Eval      ReaStack  = %subst(Var:Offset 1)                               
         
    C                   Eval      Offset    Offset EntryLen                                    
          
    programm und programmlib nach array                                                         
         
    c     PgmName       ifne      'QCMD'                                                           
         
    c     PgmName       andne     ThisPgm                                                          
         c     ProgramName   andeq     
    *BLANKS                                                          
         c                   movel
    (p)  PgmName       Programm                                           
         c                   movel
    (p)  Pgmlib        Library                                            
         c                   
    endif                                                                      
          *                                                                                             
         
    C                   Enddo                                                                      
         c                   
    else                                                                       
         
    c                   movel     *blanks       ProgramName                                        
         c     
    '*'           cat       errmsg:0      ProgramName                                        
         c                   movel
    (p)  errmsg        ReturnCode                                         
         c                   
    endif                                                                      
          *                                                                                             
         
    C                   return 

  8. #20
    Registriert seit
    Jun 2006
    Beiträge
    348
    Vielen Dank für dein Programmbeispiel!

Similar Threads

  1. Rufendes Programm in CL "retrieven"
    By Lichtblitz in forum IBM i Hauptforum
    Antworten: 1
    Letzter Beitrag: 22-06-06, 09:50
  2. Spoolfile Attribute im CL ermitteln
    By asb_salem in forum NEWSboard Programmierung
    Antworten: 8
    Letzter Beitrag: 21-03-06, 13:32
  3. QMQRY in CL Programm
    By Hubert in forum IBM i Hauptforum
    Antworten: 12
    Letzter Beitrag: 11-05-05, 13:25
  4. CMD Parameter im CL Programm
    By mk in forum IBM i Hauptforum
    Antworten: 2
    Letzter Beitrag: 25-09-04, 15:48
  5. Cobol Programm mit DUMP beenden
    By Wirnitzer in forum IBM i Hauptforum
    Antworten: 3
    Letzter Beitrag: 09-08-01, 10:31

Berechtigungen

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