sous-systèmes (3 ème partie) compléments ADDRTGE

BoTTom |    Changer de couleur
 
 Il est possible de jouer avec la table de sélection d'un sous-système
 
 EXEMPLE 1:
 
 Vous associez au sous-système QINTER la JOBQ QINTER pour les querys
  utilisateurs,et vous voulez être sûr que cette JOBQ soit utilisée pour
  la commande RUNQRY uniquement.
 
 Nous savons que la commande soumise est placée dans l'external sous
  forme de message de type *RQS et qu'elle sera traitée par QCMD
  (Pgm indiqué dans ADDRTGE par défaut)
 
 NOUS POUVONS CHANGER CE POSTE AFIN DE PLACER LE PGM SUIVANT:
 
PGM
DCL &MSG *CHAR 512
DCL &CLE *CHAR 4
DCL &LG  *DEC (3 0)
DCL &DEB *DEC (3 0)
DCL &LGR *DEC (3 0)
DCL &RES *DEC (3 0)


|    Changer de couleur
      /* recupérer le message (commande à exécuter) dans l'external */
      RCVMSG     PGMQ(*EXT) MSGTYPE(*RQS) RMV(*NO) KEYVAR(&CLE) MSG(&MSG)
      /* conversion min/MAJ et cadrage à gauche */
      CALL QCMDCHK PARM(&MSG 512)
      /* vérifier (via QCLSCAN) si cde RUNQRY                       */
             CHGVAR &LG 512     /* lg de &msg */
             CHGVAR &DEBUT 1    /* début de recherche */
             CHGVAR &LGR 6      /* lg de RUNQRY
                                /*                  min/MAJ-!   !- cadrage*/
                                /*                          v   v         */
             CALL QCLSCAN PARM(&MSG &LG &DEB 'RUNQRY' &LGR '1' '1' '*' &RES)
      /* RUNQRY non trouvé ==> travail refusé                       */
             IF (&RES = 0) THEN(DO)
               SNDPGMMSG  MSGID(CPF9898) MSGF(QCPFMSG)                  +
                 MSGDTA('Commande RUNQRY non trouvée, Travail refusé')  +
                 MSGTYPE(*ESCAPE)
               RETURN
             ENDDO
 
      /* RUNQRY trouvé ==> l'ancien message est enlevé (il était déja lu) */
      /*   puis placement dans l'external d'une copie et enfin tfr à QCMD */
 


|    Changer de couleur
             ELSE DO
               RMVMSG     PGMQ(*EXT) MSGKEY(&CLE)
               SNDPGMMSG  MSG(&MSG) TOPGMQ(*EXT) MSGTYPE(*RQS)
               TFRCTL QCMD
             ENDDO
             ENDPGM
 
  De la même manière les postes de sélection peuvent être utilisés plus
  finement pour les entrées Télécommunication.
 
 Structure de la donnée de routage pour un job télécom:
 
 1       9        19        29             37             47
 
 !mode ou! Device ! user-id  ! "PGMEVOKE"  ! nom-programme ! biblio-pgm !
 ! *ANY  ! APPC   !          !             !               !            !
 
 l'entrée standard est CMPVAL(PGMEVOKE 29) <-- constante "PGMEVOKE"
                       PGM(*RTGDTA)        <--- pgm indiqué en 37-56
 
 
 


|    Changer de couleur
Vous pouvez personnaliser en indiquant
                       CMPVAL(nom-pgm 37)  <-- comparaison sur le pgm
                       PGM(*RTGDTA)
 
et en plaçant cette entrée avant la précédente (N° de séquence plus petit)
 
 Par Exemple : ADDRTGE ... CMPVAL(QCNTEDDM 37) PGM(*RTGDTA) CLS(DDMCLS)
 
Quand une demande de communication arrive sur un système cible elle est
 traitée par QLUS, qui cherche alors un sous-système ayant une entrée
 télécom adéquat (ADDCMNE)
 
QLUS cherche d'abord une entrée sur  1/ le nom de l'unité      DEV(xxx)
                                     2/ le nom de lieu éloigné RMTLOCNAME
                                     3/ le type d'unité DEV(*APPC,...)
 
Si plusieurs sous-systèmes acceptent cette entrée avec un niveau de priorité
 identique (tous sur le paramètre DEV ou tous sur RMTLOCNAME), un nom de
 mode sera prioritaire à *ANY.
Et enfin, en cas d'égalité,comme sur les autres entrées, le sous-système
 ayant cherché à acquérir ce type d'unité en premier (=le premier démarré)
 sera chargé d'initialiser le job correspondant.


|    Changer de couleur
 
A noter que les jobs PCS/400 de dialogue avec le routeur sont prévus dans
 QCMN en standard et utilisent le nom de pgm en position 37 pour le routage.
 
Il est possible d'ajouter des postes de routage avec un n° de séquence
 inférieur (toujours préférable à la modif), sur le même principe.
 
   ce qui vous permet de préciser une classe ou un pool particulier.
   (classe standard QGPL/QWCPCSUP)
 
quelques programmes systèmes (à utiliser pos/37)
 
 TOPCD    pgm : QTFDWNLD
 
 RMTCMD         QCNTEDDM (attention cela concerne toutes les demandes DDM)
 
 impr. virt.    QVPPRINT
 
 dossiers       QXFSERV
 
 en règle générale, regarder le premier programme de la liste d'invocation
  des jobs générés par PCS


|    Changer de couleur
 
 ET ENFIN: 
 
 si votre job s'aperçoit en cours de traitement qu'il doit changer de
  sous-système (ou de pool système), cela est possible.
 
 TFRJOB JOBQ(__)  RTGDTA(QCMDI) RQSDTA(*NONE) > pour un job interactif
 
        (il faut avoir prévu une entrée JOBQ pour le sous-système).
 
 TFRBCHJOB        RTGDTA(QCMDB) RQSDTA(*NONE)  > pour un job batch
 
 RRTJOB  RTGDTA(QCMDI) RQSDTA(*NONE)      > pour re-passer dans la table
                                            de routage du MEME sous-système.
 
 ATTENTION: commandes invalides avec des travaux de groupe.
 




©AF400