IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

AS/400 Discussion :

Dans un CLLE : Extraction bibliothèque d'appel


Sujet :

AS/400

  1. #1
    Membre du Club
    Inscrit en
    Mai 2008
    Messages
    102
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 102
    Points : 66
    Points
    66
    Par défaut Dans un CLLE : Extraction bibliothèque d'appel
    Bonjour,

    J'aimerais savoir si dans un CLLE, il est possible d'extraire la bibliothèque d'appel de celui ci.

    La commande RTVJOBA ne me permet pas, du moins pour ce que j'en sais, d'extraire cette information...

    Merci pour votre aide.

  2. #2
    Membre expérimenté

    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 298
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 298
    Points : 1 578
    Points
    1 578
    Par défaut
    RTVJOBA c'est pour le JOB comme son nom l'indique.
    En mode interactif, un JOB commence au logon et se termine au logoff.
    En mode batch, le job est créé lors de la soummission et se termine lorsque le traitement batch est fini (bien ou pas bien).

    Pour extraire les infos sur les objets, la commande à utiliser est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RTVOBJD OBJ(*LIBL/MONPGMCL) OBJTYPE(*PGM) RTNLIB(&RTNLIB)

  3. #3
    Membre du Club
    Inscrit en
    Mai 2008
    Messages
    102
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 102
    Points : 66
    Points
    66
    Par défaut Dans un CLLE : Extraction bibliothèque d'appel : précisions
    Bonjour,

    Merci pour votre réponse.

    Mais mon problème est plus complexe.

    Une application développée en DOT-NET fait appel à des
    procédures stockées sur l'AS400.

    Ces procédures stockées appelent à leur tour un CLLE.

    Il y a une procédure stockée pour l'environnement de prod, et une autre
    autre pour l'environnement de developpement (tests, etc...)

    Le CLLE appelé par la procédure stockée doit pouvoir
    installer le bon environnement ( environnement de PROD ou de DEV).

    L'application DOT-NET appelle ma procédure stockée en indiquant
    la blibliothèque :
    CALL BIB_PROD/PROC_STOCK.

    Or, au moment de l'appel, je ne sais pas dans mon CLLE depuis quel
    environnement (bibliothèque) je suis appelé .

    D'où ma question : y a-t-il un moyen de connaitre la bibliothèque d'appel
    au moment de l'exécution.

    Merci pour votre aide.

  4. #4
    Expert confirmé
    Homme Profil pro
    ANCIEN Consultant/Formateur/Développeur AS/400, iSeries, System i et Cobol
    Inscrit en
    Juin 2007
    Messages
    2 096
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : ANCIEN Consultant/Formateur/Développeur AS/400, iSeries, System i et Cobol
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 096
    Points : 4 155
    Points
    4 155
    Par défaut
    Citation Envoyé par LIANAZEL Voir le message
    Bonjour,
    ...
    Ces procédures stockées appelent à leur tour un CLLE.
    Il y a une procédure stockée pour l'environnement de prod, et une autre
    autre pour l'environnement de developpement (tests, etc...)
    Le CLLE appelé par la procédure stockée doit pouvoir
    installer le bon environnement ( environnement de PROD ou de DEV).
    ...
    D'où ma question : y a-t-il un moyen de connaitre la bibliothèque d'appel
    au moment de l'exécution.
    Merci pour votre aide.
    Bonjour.
    Personnellement, en dehors de la solution proposée par Philippe, je ne pense pas. La façon la plus simple et la plus déterministe est de passer un paramètre au CLLE qui lui indique l'environnement, par exemple le nom de la bibliothèque. Les deux procédures cataloguées pour les deux environnements, chacune d'elle sachant dans quel environnement elle est, elle passe cet environnement en paramètre au CLLE et le tour est joué. Le CLLE installera l'environnement adéquat en fonction du paramètre qu'il reçoit.

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 55
    Points : 75
    Points
    75
    Par défaut
    Bonjour,

    Pour compléter le message précédent, s'il implique beaucoup de modification, la solution serait de faire un module RPG comme point d'entrée du programme qui irait chercher la bibliothèque en position 81 de la PSDS et la passerait comme paramètre au module CLLE.

  6. #6
    Membre expérimenté

    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 298
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 298
    Points : 1 578
    Points
    1 578
    Par défaut
    +1 avec HJ et vazymimil. C'est en effet une solution assez simple envisageable.

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Août 2008
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 123
    Points : 146
    Points
    146
    Par défaut
    Bonsoir,

    Les solutions précédentes sont les plus pragmatiques et ce sont, de loin, celles que je privilégie également.

    Mais pour le cas ou cela intéresserait quelqu'un un jour, voici un rpg retournant en parm le nom et la bib de son prog appelant (ou blanc si erreur). Il est basé sur l'utilisation des instructions MI : MATINV (materialisation de la pile d'invocation du job) et MATPTR (materialisation d'un pointeur).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
     ********************************************************* 
    ** Retourne en parm le nom et la bib du prog appelant  ** 
    ********************************************************* 
    H DftActGrp(*NO)                                           
    h option(*srcstmt:*nodebugio:*noshowcpy)                   
                                                               
    D InvStk          ds         32768                         
    D  InvBytPrv                     9b 0 INZ(%Size(InvStk ))  
    D  InvBytAvl                     9b 0                      
    D  InvNbrEnt                     9b 0                      
    D  InvMrkCnt                     9b 0                      
    D pInvEnt         s               *                        
    D InvEnt          ds           128    based(pInvEnt)       
    D  Reserved32                   32                         
    D  pInvPgm                        *                        
                                                               
    D MatTpl          ds           100                         
    D  MatBytPrv                     9b 0  INZ(%Size(MatTpl )) 
    D  MatBytAvl                     9b 0                      
    D  MatPtrTyp                     1                 
    D                                2                         
    D  MatPtrCtx                    30                         
    D                                2                         
    D  MatPtrObj                    30                         
     * -- Prototypes instructions MI                           
    D MatPtr          pr                  extproc('_MATPTR')   
    D  Mp1                                like(MatTpl)         
    D  Mp2                            *                        
                                                               
    D MatInvS         pr                  extproc('_MATINVS2') 
    D  Mi1                                like(InvStk)         
     * -- Parametres                                           
    D ObjPgm          s             30                         
    D ObjLib          s             30                         
                                                               
    C     *Entry        Plist                                  
    C                   Parm                    ObjPgm         
    C                   Parm                    ObjLib         
                                                               
    C                   callp     MatInvS (InvStk)             
    C                   eval      pInvEnt = %addr(InvStk) + 16 
    C                                     + ((InvNbrEnt - 3)  * 128)
                                                                    
    C                   callp(e)  MatPtr(MatTpl:pInvPgm)            
    C                   eval      ObjPgm = *blank                   
    C                   eval      ObjLib = *blank                   
                                                                    
    c                   if        not %Error and MatBytAvl > 0      
    C                   Eval      ObjPgm = %Trimr(MatPtrObj)        
    C                   Eval      ObjLib = %Trimr(MatPtrCtx)        
    C                   endif                                       
                                                                    
    C                   eval      *inlr = *on

  8. #8
    Expert confirmé
    Homme Profil pro
    ANCIEN Consultant/Formateur/Développeur AS/400, iSeries, System i et Cobol
    Inscrit en
    Juin 2007
    Messages
    2 096
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : ANCIEN Consultant/Formateur/Développeur AS/400, iSeries, System i et Cobol
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 096
    Points : 4 155
    Points
    4 155
    Par défaut
    Un petit complément à tester à loisirs pour les cobolistes curieux :
    - à partir de la V5R4, on peut récupérer dans un programme Cobol le statut de ce programme (Cobol) en déclarant la clause PROGRAM STATUS dans les SPECIAL-NAMES. Lorsqu'il y a une erreur dans l'exécution du programme (plantage), le nom du programme, la bibliothèque, le module, le code ereur, etc... sont renvoyés par le système dans une variable associée à PROGRAM STATUS. En utilisant les DECLARATIVES et USE AFTER STANDARD ERROR on récupère ces données et on les renvoie au programme appelant à travers un paramètre. Mais il faut qu'il y ait plantage, alors on le provoque : un simple READ non précédé par un OPEN et le tour est joué. J'essaierai de faire un exemple pour ceux qui sont intéressés.

  9. #9
    Membre du Club
    Inscrit en
    Mai 2008
    Messages
    102
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 102
    Points : 66
    Points
    66
    Par défaut
    Boujour,


    Merci pour toutes vos réponses.

    Je tacherais de mettre en oeuvre une des solutions évoqués ( par
    curiosité intellectuelle)

    Cdt.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 8
    Dernier message: 10/05/2007, 00h46
  2. bug dans programme d'extraction de données d'une page web
    Par youpimevla dans le forum Web & réseau
    Réponses: 11
    Dernier message: 31/08/2006, 10h02
  3. Réponses: 3
    Dernier message: 20/06/2006, 07h06
  4. Script dans une page à part et l'appeler par un lien
    Par kent151 dans le forum Général JavaScript
    Réponses: 17
    Dernier message: 22/04/2006, 18h59
  5. [Oracle] Stocker ma requête dans un fichier poyr y faire appel en PHP
    Par alex007 dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 13/03/2006, 10h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo