Fichiers et groupe d'activation en V3R10.

BoTTom |    Changer de couleur
 
 Un certains nombre de paramètres système concernant la gestion de fichiers
  peuvent maintenant être liés à la notion de groupe d'activation.
 
 On parle de champs d'application ou de portée, pour indiquer si un
  paramètre est valide pour l'ensemble du job ou uniquement pour les pgms
  d'un groupe d'activation (celui dans lequel se trouve le pgm ayant passé
  la commande)
 
 Trois notions essentielles utilisent cette notion de portée.
 
 A/ la portée d'une substitution avec OVRDBF OVRSCOPE( )
 
  une substitution peut être valide pour:  *CALLLVL le pgm passant la cde
                                             (et les pgms appelés)
                                           *ACTGRPDFN le groupe d'activation
                                              du pgm passant la cde.
                                           *JOB     tous les pgms du job
 
    pour un pgm s'exécutant dans le groupe d'activation par défaut (non ILE)
     *ACTGRPDFN équivaut à *CALLLVL.
 


|    Changer de couleur
 
 ######################################################################## 
 # SUBSTITUTIONS Niveau JOB     *JOB                                    # 
 #                                                                      # 
 ######################################################################## 
 
   Groupe d'activation A                  Groupe d'activation B
 ####################################  #################################### 
 # ...............................  #  # ................................ # 
 # : Substitutions groupe A      :  #  # : Substitutions groupe B       : # 
 # :    *ACTGRPDFN               :  #  # :    *ACTGRPDFN                : # 
 # :.............................:  #  # :..............................: # 
 #                                  #  #                                  # 
 # Programmes      Substitutions    #  # Programmes       Substitutions   # 
 # ----------      -------------    #  # ----------       -------------   # 
 # proc1           *CALLLVL         #  # proc3                            # 
 #                                  #  #                                  # 
 # proc2                            #  # proc5             *CALLLVL       # 
 #                                  #  #                                  # 
 # proc4                            #  #                                  # 
 #                                  #  #                                  # 
 ####################################  #################################### 


|    Changer de couleur
 
 Une substitution niveau JOB est unique par fichier.
  Passer une commande OVRDBF pour un fichier écrase une substitution
   déja définie pour ce fichier, s'il en existe une au même niveau.
 
 L'ordre de recherche du système est le suivant :
 
 1/ Substitions niveau *CALLLVL (en remontant la liste d'invocation)
     jusqu'à la procédure la plus ancienne du groupe d'activation actif.
 
 2/ substitutions niveau groupe d'activation.
 
 3/ substitution niveau *CALLVL, pour les procédures situées AU DESSUS de la
     procédure la plus ancienne du groupe d'activation actif.
 
 4/ substitutions niveau JOB.
 
 (Prenons un exemple)
 
   Soit la liste d'invocation suivante :
 
 


|    Changer de couleur
 
  Programme/procédure    Groupe d'activation  Substitution        OVRSCOPE
  -------------------    -------------------  ------------------  ---------
1 proc1                   A                   OVRPRTF CPI(10)     *CALLLVL
2 proc2                   B                   OVRPRTF LPI(8)      *ACTGRPDFN
3 proc3                   C                   OVRPRTF HOLD(*YES)  *JOB
4 proc4                   B                   OVRPRTF HOLD(*NO)   *CALLLVL
5 proc5 (OPEN du PRTF)    B
 
 Recherche *CALLLVL jusqu'à la procédure la plus ancienne du groupe (proc2)
le système cherche une substitution niveau 5 puis 4 :
  (il utilise OVRPRTF HOLD(*NO) trouvé niveau 4)
 puis il remonte niveau 3 (non utilisé : OVRSCOPE(*JOB).)
            puis niveau 2 (non utilisé : OVRSCOPE(*ACTGRPDFN)
 Recherche *ACTGRP 
 (il utilise OVRPRTF LPI(8) trouvé niveau 2 avec OVRSCOPE(*ACTGRPDFN)
 Recherche *CALLLVL au dessus de la procédure la plus ancienne
 (il utilise OVRPRTF CPI(10) , trouvé niveau 1)
 Recherche *JOB 
 (il trouve OVRPRTF HOLD(*YES) , qui remplace la valeur actuelle *NO)
 
 Résultat: PRTF ouvert avec CPI(10) LPI(8) HOLD(*YES) 


|    Changer de couleur
 
 B/ la portée d'une ouverture avec OPNSCOPE( )
     sur les commandes OVRDBF,OPNDBF,OPNQRYF.
 
 Ce paramètre concerne les ouvertures en mode partagé [SHARE(*YES)].
 
    *ACTGRP l'ouverture est partagée entre programmes du même groupe
             d'activation (valeur par défaut ET prioritaire)
    *JOB    l'ouverture est partagée entre tous les programmes du job
 
    *ACTGRPDFN :
  S'il s'agit du groupe d'activation par défaut (*DFTACTGRP ou pgm non ILE)
  le champ d'application de l'ouverture correspond au niveau d'appel du pgm.
 
  S'il s'agit d'un groupe d'activation spécifique (donc pgm ILE),
  le champ d'application correspond au groupe d'activation du programme.
 
 Cela permet de limiter la portée d'une ouverture partagée à une application
 seule, alors qu'avant l'ODP était utilisable par tous les programmes
 du job, d'où risque de rencontrer des types d'ouverture incompatibles, ou
 de voir des pointeurs de fichier dépositionnés par d'autres pgms.
 


|    Changer de couleur
 
C/ et enfin, le contrôle de validation est lancé pour le groupe d'activation
 en cours, ou bien pour l'ensemble du job.
 
 STRCMTCTL CMTSCOPE        *ACTGRP : lancé pour le groupe d'activation
 
                           *JOB    : lancé pour le job.
 
 la valeur par défaut (*ACTGRP) permet d'avoir plusieurs transactions
  en cours, en même temps, portant sur des fichiers différents.
 
 Donc, de valider au sein d'une application, une transaction en cours
  (COMMIT), ou bien de l'invalider, sans que cela n'ait de répercussion
  sur les autres applications (autres groupes d'activation).
 
 Pour gérer tous les contrôles de validation actifs, la nouvelle
  commande : WRKCMTDFN est utile.
 
 Elle permet de gérer tous les contrôles de validation déclenchés par un
  JOB, ou bien tous les contrôles actifs sur votre machine.
       (voir le cours sur le Two Phases Commit)
 


|    Changer de couleur

 
D/ Complément : groupes d'activation et SQL
 
    Sur la comande compilation CRTSQLRPGI, nous trouvons un paramètre CLOSQLCSR
 quand libérer les ressources et fermer les fichiers ?
  • *ENDMOD : en fin de module (de programme s'il n'y a qu'un module)
  • *ENDACTGRP : en fin de groupe d'activation (fin de job si *DFTACTGRP)

En effet, SQL fonctionne de la manière suivante :

. première utilisation d'un fichier ou d'une table, il est ouvert puis fermé

. dès la deuxième utilisation, il ne sera fermé que suivant ce paramètre

Les groupes d'activation permettent donc aussi de choisir
quand fermer les fichiers laissés ouverts par SQL





©AF400