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: |
En batch: |
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) |
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. |
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) |
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). |