[NEWSboard IBMi Forum]

Thema: QleActBndPgm

  1. #1
    Registriert seit
    Sep 2005
    Beiträge
    393

    QleActBndPgm

    Hallo zusammen
    V7R1

    wir rufen in einem recht komplexen Ablauf mit Recursion über Actgrp's
    u.a. das QleActBndPgm.

    Das funktioniert auch mehrere 100 oder sogar 1000de mal in diesem ablauf!

    Plötzlich aber, findet der Aufruf das *SRVPGM nicht mehr.

    PHP-Code:
    D ActivateProgram...                                            
    D                 PR            10i 0 EXTPROC('QleActBndPgm')   
    D                                 *   PROCPTR                   
    D                                     
    CONST                     
    D                               10i 0                           
    D Info                                LIKE
    (Qle_ABP_Info_t)      
    D                               10i 0                           
    D Error                               LIKE
    (ErrorDS)             
    D                                     OPTIONS(*OMIT:*VARSIZE)   
    D                                     NOOPT 
    PHP-Code:
    D GetSysPointer   PR              *   PROCPTR               
    D                                     EXTPROC
    ('rslvsp')     
    /* return value as Procedure Pointer weak documentation     
    D HexType                        2A   VALUE                 
    D Object                          *   value options(*string)
    D Library                         *   value options(*string)
    D Authoritie                     2A   value                 
    ...

    ...
    C                   EVAL      ServicePgmP =              
    C                                GetSysPointer(          
    C                                   HexType  :           
    C                                   %trim(ServicePgm)   :
    C                                   WRPRCLIB  :          
    C                                   AUTH_NONE            
    C                                )                       

    C                   EVAL      ActivateResult =       
    C                                ActivateProgram(    
    C                                   ServicePgmP   :  
    C                                   ActivationMark : 
    C                                   ActivationInfo : 
    C                                   ActInfolen  :    
    C                                   Error            
    C                                )    
    C                   CALLP     GetExport(                
     *                  ====      ============              
    C                                ActivationMark   :     
    C                                0   :                  
    C                                %len(%trim(Procedure)):
    C                                %trim(Procedure)   :   
    C                                Ergebnis   :           
    C                                ExportType   :         
    C                                Error                  
    C                             ) 
    Der ServicePgmP enthällt, lt debug, nach dem GetSysPointer
    SYP:MYPGMA_FNT :0203:AS03 :0000000000000000

    ActivationMark ist zunächst 0, nach dem ActivateProgram -2147478087
    Error jedoch leer

    nach dem GetExport steht ExportType auf 0

    Das SRVPGM ist in diesem Ablauf mehrere 100 mal vorher gefunden worden!

    Hat da einer ne Idee?

    Der ILEMax

  2. #2
    Registriert seit
    Mar 2002
    Beiträge
    5.287
    Zitat Zitat von ILEMax Beitrag anzeigen
    wir rufen in einem recht komplexen Ablauf mit Recursion über Actgrp's

    Der ILEMax
    ... da verheddert ihr euch wohl in euren ACTGRPs. Das Programm wird sehr wohl gefunden, die Aktivierung geht schief. Was wollt ihr mit diesem Kram eigentlich wirklich bezwecken - "Mehrfach-Aktivierung" geht jedenfalls anders...

    D*B
    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
    Sep 2005
    Beiträge
    393
    Das Pgm arbeitet ein komplexe Struktur ab.
    Eigentlich immer Schema F.

    Mal mit einem Extra a, mal mit einem Extra b
    Diese 'Extras' werden dann von MYPGM_A bzw. MYPGM_B abgearbeitet.
    heute sind es rd 80 Extras, morgen vllt 85 oder 90
    Der Entwickler schreibt ein MYPGM_x und der Ablauf verarebitet es.
    Läuft schon seid Jahren erfolgreich und stabil, ist mit rd 10 Extras gestartet.

    Nun gibt es eine besonders große Struktur, und da knallt es plötzlich.
    Und das, bei einem Extra, das NICHT neu ist.
    Der Programmstapel zeigt, das wir uns in der 3. Recursionsebene befinden.
    Andere Strukturen (diese auch) gehen 10 und mehr ebenen tiefer.

    Was heist 'die Aktivierung' geht schief?
    kann ich da was machen?
    Danke
    Der ILEMax

  4. #4
    Registriert seit
    Mar 2002
    Beiträge
    5.287
    ... mit diesen nebulösen Angaben kann ich nix anfangen. Das Original des obigen Programms war jahrelang ohne jegliches Problem im Einsatz und ist auch Bestandteil von ArdGate und funzt auch da ohne Probleme.

    D*B
    PS: Alte Programmiererweisheit - Kaum macht mans richtig, schon gehts.
    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
    Sep 2005
    Beiträge
    393
    Ja, genau.
    es ist auch bei uns seit Jahren ohne Problem und ohne Änderung im Einsatz.

    Jetzt knallt der Aufruf des SRV Pgm da der Pointer *Null ist.
    Das SRVPGM ist da und auch in diesem Ablauf schon mehrfach gelaufen

  6. #6
    Registriert seit
    Aug 2001
    Beiträge
    2.873
    Kann man vielleicht aus dem Joblog etwas erkennen?
    Könnte es sein, dass es irgendwo einen Überlauf gibt (eine Rekursion zuviel) und deshalb das Service-Programm nicht mehr gefunden wird?

    Birgitta
    Birgitta Hauser

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

  7. #7
    Registriert seit
    Sep 2005
    Beiträge
    393
    Nein, leider nicht.
    Das Joblog hat nur den MCH3601.
    Das das sich auf den Pointer bezieht und nicht auf die Parameter hab ich erst gar nicht begriffen.
    Da aber lt Debug alle paramterer in der richtigen Länge zur verfügung stehen binn ich erst auf den Pointer gekommen.
    Der Job ist heute Nacht auf den fehler gekommen, ich bin mit debug drauf und kann den Aufruf nach voll ziehen.
    Ein 2. Job, frisch gestartet, hat den selben Aufruf, die selben Parameter, und findet das *SRV Pgm

    Der ILEMax

  8. #8
    Registriert seit
    Mar 2002
    Beiträge
    5.287
    ... der MCH3601 ist ein Folgefehler, das Problem besteht beim Aufruf des QLEAWI: die Aktivierung geht schief und dann lässt sich der Export nicht ermitteln.

    D*B
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

Berechtigungen

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