
|
PGM
/******************************************************************************/
/* CE PGM GERE UN PSEUDO SYSTEME BATCH */
/* */
/* INTERET : LIMITE LE NOMBRE DE JOBS AUX YEUX DU SYSTÈME, A UTILISER */
/* POUR LES PETITS TRAITEMENTS UTILISATEURS (LISTES,...) */
/* */
/* LA DTAQ SERT DE FILE D'ATTENTE */
/* */
/* PLACER CE PGM EN TRAVAIL À DÉMARRAGE AUTOMATIQUE (ADDAJE) */
/* AVEC UNE JOBD AYANT >>> ENDSEV(90) */
/* */
/* CE PEUT PGM PEUT S'EXECUTER EN PLUSIEURS EXEMPLAIRES */
/* (IL N'Y A PAS DE VERROUILLAGE SUR LES DTAQ) */
/* ==> LANCER PLUSIEURS FOIS LE PGM STREXEC */
/* ==> IL FAUDRA APPELLER AUTANT DE FOIS LE PGM ENDEXEC */
/******************************************************************************/
DCL &DTALEN *DEC (5 0)
DCL &DTA *CHAR 522
DCL &CMD *CHAR 512
DCL &WAIT *DEC (5 0)
DCL &POS *CHAR 2 VALUE('EQ')
DCL &KEYLEN *DEC (3 0) VALUE(4)
DCL &KEY *CHAR 4
DCL &IDLEN *DEC (3 0) VALUE(44)
DCL &ID *CHAR 44
DCL &PRF *CHAR 10
 
CHKOBJ OBJ(AF4TOOL/EXECDQ) OBJTYPE(*DTAQ)
MONMSG CPF0000 EXEC(DO)
CRTDTAQ DTAQ(AF4TOOL/EXECDQ) MAXLEN(522) SEQ(*KEYED) +
KEYLEN(4) SENDERID(*YES)
ENDDO
/* RETROUVE LA DERNIERE COMMANDE */
CHGVAR &KEY VALUE('*MSG')
CHGVAR &WAIT 1
CHGVAR &DTALEN 522
CALL QRCVDTAQ PARM('EXECDQ' 'AF4TOOL' +
&DTALEN &DTA &WAIT +
&POS &KEYLEN &KEY +
&IDLEN &ID)
/* ENVOI MESSAGE D'INFO AU PROFIL */
IF (&DTA *NE ' ') THEN(DO)
CHGVAR &PRF %SST(&DTA 1 10)
|
CHGVAR &CMD %SST(&DTA 11 512)
SNDMSG MSG('Commande :' *BCAT &CMD *BCAT +
'terminée.') TOUSR(&PRF)
ENDDO
 
/* ATTENTE D'UNE COMMANDE À EXECUTER */
LECTURE: CHGVAR &KEY VALUE('*CMD')
CHGVAR &WAIT -1
CHGVAR &DTALEN 512
CALL QRCVDTAQ PARM('EXECDQ' 'AF4TOOL' +
&DTALEN &CMD &WAIT +
&POS &KEYLEN &KEY +
&IDLEN &ID)
/* ARRET NORMAL DU PGM */
IF (&CMD *EQ '*END') RETURN
 
/* TEST VALIDITE DE LA COMMANDE */
CHGVAR VAR(&PRF) VALUE(%SST(&ID 35 10))
CALL QCMDCHK PARM(&CMD 512)
MONMSG CPF0000 EXEC(DO)
SNDMSG MSG('Erreur dans la commande :' *BCAT &CMD) +
TOUSR(&PRF)
GOTO LECTURE
ENDDO
/* PREPARATION DES INFOS POUR ENVOI DE MASSAGE */
CHGVAR &DTA (&PRF *CAT &CMD)
CHGVAR &DTALEN 522
CHGVAR &KEY VALUE('*MSG')
CALL QSNDDTAQ PARM('EXECDQ' 'AF4TOOL' +
&DTALEN &DTA +
&KEYLEN &KEY)
/* COMMANDE À EXECUTER "LOGEE" DANS LA PGMQ DE QCMD */
SNDPGMMSG MSG(&CMD) TOPGMQ(*PRV)
/* COMMANDE À EXECUTER PLACÉE DANS L'EXTERNAL */
SNDPGMMSG MSG(&CMD) TOPGMQ(*EXT) MSGTYPE(*RQS)
/* PUIS APPEL DE CE PGM À SUIVRE */
SNDPGMMSG MSG('call af4tool/execaje') TOPGMQ(*EXT) +
MSGTYPE(*RQS)
ENDPGM
|