Exemple de dtaq (*dtaq)

Cet exemple permet de lancer un robot qui traitera des commandes CL envoyés.

Cela permet de créer un gestionnaire de commande asynchrone. 

Voici les 2 programmes :

le programme d'écriture

PGM (&PARM &DTAQ &LIB)              
DCL &PARM *CHAR 100                 
DCL &LIB  *CHAR 10                  
DCL &DTAQ *CHAR 10                  
DCL &LEN  *DEC  (5 0) (100)         
CALL QSNDDTAQ (&DTAQ &LIB &LEN &PARM)
ENDPGM                              

le programme de lecture

PGM PARM(&DTAQ &LIB)                                 
             DCL        VAR(&LIB) TYPE(*CHAR) LEN(10)
             DCL        VAR(&DTAQ) TYPE(*CHAR) LEN(10)
DCL &PARM *CHAR 100                                  
DCL &LEN  *DEC  (5 0) (100)                          
DCL &WAIT *DEC  (5 0) (-1) /* ATTENTE PERMANENTE */  
DCL &LEN1 *DEC  (15 5) (100)                         
RTVDTAARA DTAQ01 &PARM                               
IF COND(&PARM *NE ' ') THEN(GOTO EXEC)               
LECT:                                                
CALL QRCVDTAQ (&DTAQ &LIB &LEN &PARM &WAIT)          
IF COND(&LEN *GT 0) THEN(DO)                         
IF COND(%SST(&PARM 1 4) = '*FIN') THEN(GOTO FIN)     
             CHGDTAARA  DTAARA(DTAQ01) VALUE(&PARM)  
EXEC:                                                
CALL QCMDEXC (&PARM &LEN1)                           
MONMSG CPF0000                                       
             CHGDTAARA  DTAARA(DTAQ01) VALUE(' ')    
ENDDO              &nbsp                                  GOTO LECT
FIN:     
ENDPGM   

Vous pouvez lancer votre programme de lecture en batch ==>SBMJOB CMD(call PGMLECT parm('nomdtaq' 'nomlib') job(nomdtaq). 

Si votre programme plante ou est arrêté, vous pouvez retrouver la commande dans une dtaara qui a le même nom. 

 PE

...