l'external (*EXT) dans la JOBMSGQ

BoTTom |    Changer de couleur
 
               JOBMSGQ :     L ' E X T E R N A L
 
 A chaque travail est associé un file d'attente message la JOBMSGQ
 
 cette file d'attente est composée de l'EXTERNAL(*EXT) et
  d'une file d'attente par pgm actif.
 
 L'external sert au dialogue avec le monde exterieur.
   Elle représente l'écran en mode interactif
                   la "job input stream" en mode batch.
 
 En interactif:
    les messages *INFO,*INQ,*NOTIFY,*COMP,*DIAG sont repércutés      à l'écran (écran particulier avec messages en haute intensité)      avec attente d'une réponse ou de la touche entrée.     
les messages *STATUS sont répercutés sur la ligne de message
     entrée verouillée.     
un message de type *RQS y est placé,la RQSDTA de la JOBD.
     des messages de type *RQS peuvent être saisis (entrée de commande)    


|    Changer de couleur
 
 
 En batch:
    les messages *INFO,*INQ,*NOTIFY,*COMP,*DIAG,*STATUS ne sont pas      répercutés.
    une réponse par défaut est envoyée aux messages *INQ et *NOTIFY      (*N pour les messages sans réponse par défaut)
    un message de type *RQS y est placé,la commande du SBMJOB,      ou plusieurs dans le cas de flot de commandes (SBMDBJOB par ex.)    Dans tous les cas:
    des pgms peuvent y placer des demandes (messages *RQS)
     qui seront traitées par QCMD (ou QCL)
    tous les messages (sauf *STATUS) seront répercutés dans la LOG.
       


|    Changer de couleur
 
 Initialisation d'un travail batch
 
 SBMJOB JOB(TRV01) CMD(CALL TOTO)  ---> Création de la jobmsgq
            /             !
jobq      /               !            -----------------------
    !TRV01 !              !----------->!  call toto (*rqs)   ! *EXT
     !    !                            !                     !
sbsd  !  !                             !---------------------!
 ----------------                      !                     ! PGMQ pour
 ! QCMDB  QCMD  !>>>>>>>>>>>>>>>>>>>>>>!                     !      QCMD
 ! QCMDI  QCMD  !                      !---------------------!
 ! QCMD38 QCL   !
 !  .........   !
 ----------------           QCMD va chercher les messages de type *RQS
                             dans l'external et les considere comme
                             des commandes à exécuter
                             (recherche et appel du CPP)
 
 
 
 


|    Changer de couleur
 
 Initialisation d'un travail batch
 
 SBMJOB JOB(TRV01) CMD(CALL TOTO)  ---> Création de la jobmsgq
            /             !
jobq      /               !            -----------------------
    !TRV01 !              !----------->!> call toto (*rqs)   ! *EXT
     !    !                            !                     !
sbsd  !  !                             !---------------------!
 ----------------                      !                     ! PGMQ pour
 ! QCMDB  QCMD  !                      !                     !      QCMD
 ! QCMDI  QCMD  !                      !---------------------!
 ! QCMD38 QCL   !                      !                     ! PGMQ pour
 !  .........   !                      !                     !      TOTO
 ----------------                      !---------------------!
 
                        Le message "call toto" est noté "déja lu",
                        TOTO est appellé, sa PGMQ crée.
 
 Quand TOTO va se terminer, retour à QCMD qui va essayer de lire le
  message suivant,s'il y a un suivant il sera traité de la même maniere.
  sinon c'est QCMD qui va decider d'arreter le travail.


|    Changer de couleur
 
 QCMD dans le cadre d'un travail interactif:
 
 si QCMD est appellé parce qu'il est le pgm indiqué dans la table de
  sélection du sous-système,il recherche le pgm puis le menu initial.
 
 s'il est appellé dans un autre contexte,il suit le même processus
  que dans un environnemnt batch,à la differrence que la lecture d'un
  message de type *RQS dans l'external provoque l'apparition d'un écran
  de saisie de message quand il n'y a pas de message "non lus".
 
Cet écran c'est l'ENTREE DE COMMANDE, qui n'est pas le fait de QCMD
 mais du à la routine de lecture de message,Vous pouvez donc faire
 apparaitre cet écran en allant lire l'external:
 
 
      RCVMSG     PGMQ(*EXT) MSGTYPE(*RQS) WAIT(*MAX) RMV(*NO)  +
                 MSG(&CDE) RTNTYPE(&TYPE)
      MONMSG CPF2415 EXEC(GOTO FIN) /* F3 OU F12 SUR ECRAN */
 
   &CDE contient la commande saisie
   &TYPE contient '08' si entrée et '10' si F4 (demande d'invite)

 Il faut prevoir le message CPF2415 qui est envoyé si l'utilisateur   demande la sortie de cet écran.

|    Changer de couleur
  
 Ayant établi un dialogue avec l'external votre programme devient un
  "Request-processor",il occupe un niveau de demande dans la liste
  d'invocation et est alors responsable du traitement à réaliser en cas
  d'annulation (ENDRQS ou appel système 2).
 Une demande d'annulation est matérialisée par le message CPF1907.    Voici un request-processor" ayant à sa charge les annulations          MONMSG CPF1907 EXEC(GOTO APPSYS2)             SNDPGMMSG  MSG('/* message bidon */') TOPGMQ(*EXT) MSGTYPE(*RQS)           RCVMSG     PGMQ(*EXT) MSGTYPE(*RQS) RMV(*NO)            ...            ...            ...
RETURN /* fin normale */

 APPSYS2: /* on arrive ici uniquement en cas d'annulation */
RCLSRC /* autres fonctions de "ménage" */
           ...  





©AF400