[NEWSboard IBMi Forum]

Hybrid View

  1. #1
    Registriert seit
    Aug 2001
    Beiträge
    2.928
    Wenn es nur darum geht das rufende Programm zu ermitteln, sind 2 CL-Befehle ausreichend.

    Beispiel:
    PHP-Code:
              PGM        PARM(&CALLER           +                           
                              &
    CALLED)                                      
    /* ---------------------------------------------------------------*/    
              
    DCL        VAR(&CALLERTYPE(*CHARLEN(10)                   
              
    DCL        VAR(&CALLEDTYPE(*CHARLEN(10)                   
              
    DCL        VAR(&MSGKEY)   TYPE(*CHARLEN(4)                  
              
    DCL        VAR(&SENDER)   TYPE(*CHARLEN(80)                 
    /* ---------------------------------------------------------------*/    
              
    SNDPGMMSG  MSG('TEST')                                  +     
                         
    TOPGMQ(*PRV (&CALLED))                       +     
                         
    MSGTYPE(*RQS)                                +     
                         
    KEYVAR(&MSGKEY)                                    
                                                                            
             
    RCVMSG     PGMQ(*PRV (&CALLED))                         +      
                          
    MSGKEY(&MSGKEY)                              +    
                          
    SENDER(&SENDER)                                   
               
    CHGVAR     VAR(&CALLERVALUE(%SST(&SENDER 56 10))           
     
    ENDE:     ENDPGM 
    Bei CALLED übergibst Du das aktuelle Programm und in CALLER bekommst Du das rufende Programm zurück.
    Jetzt brauchst Du nur noch eine Schleife darum zu bauen, und jeweils immer den CALLER als CALLED übergeben, solange, bis Du entweder Dein Programm findest (Rekursiver Aufruf) oder bis Du am Anfang des CALL-Stack bist.

    Ansonsten ist es auch möglich RPGIV-Programme rekursiv aufzurufen. Sie benötigen lediglich Aktivierungsgruppe *NEW.

    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

  2. #2
    Registriert seit
    Jul 2003
    Beiträge
    63
    Vielen Dank an alle,

    ich habe mich entschieden, in meinem Fall das (geniale) CL von Birgitta zu verwenden (Einverständnis vorausgesetzt); ist für bestehende Anwendungen ideal, vor allem wenn man es auf den Knall beim CALL nicht ankommen lassen will, sondern vorher Fußzeile und F-Tasten verändern / sperren möchte.

    Die Statusabfrage (Fuerchau) werde ich versuchen, bei jedem CALL zum Standard zu machen (wird nicht einfach; ich bin im Unternehmen nicht der einzige PGMR).

    Nochmals danke

    Klaus Hardy

  3. #3
    Registriert seit
    Dec 2002
    Beiträge
    301
    Hier gibt es noch ein Beispielprogramm zum besagten API. Das API liefert noch eine ganze Menge an zusätzlichen Informationen. http://www.rlpforen.de/showthread.php?t=9375
    Frank Hildebrandt

Similar Threads

  1. Call in einem Ile-RPG
    By dino in forum IBM i Hauptforum
    Antworten: 3
    Letzter Beitrag: 17-01-07, 09:23
  2. "remote" - call
    By hh-mi in forum IBM i Hauptforum
    Antworten: 5
    Letzter Beitrag: 15-11-06, 12:23
  3. CALL PGM schlägt fehl
    By alexander may in forum IBM i Hauptforum
    Antworten: 4
    Letzter Beitrag: 18-05-06, 20:16
  4. Retrieve Call Stack (QWVRCSTK) API
    By kuempi von stein in forum NEWSboard Programmierung
    Antworten: 11
    Letzter Beitrag: 20-08-04, 15:08
  5. Remote Function Call -> SAP
    By areichelt in forum NEWSboard SAP
    Antworten: 2
    Letzter Beitrag: 24-02-02, 16:44

Berechtigungen

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