Page 1 sur 1

[RESOLU] Afficher imprimante en erreur (Writer en MSGW)

Posté : lun. 09 mars 2015, 18:08:50
par Diggi
Bonjour,

Comme dans la plupart des parcs informatiques, j'ai souvent des imprimantes en erreur (plus de papier, plus d'encre, câble déconnecté, éteinte...).
Lorsqu'on essaye d'imprimer depuis l'IBM i, et que l'imprimante ne répond pas correctement, le système passe l'imprimante en MSGW.

J'utilise donc la commande WRKWTRpour gérer tous les Writers et voir ceux qui sont en MSGW. Mais cela m'oblige à faire défiler la liste en vérifiant la colonne "Etat".

Il me semble qu'il n'existe pas de commande pour n'afficher que les Writers dans l'état MSGW et pas ceux en STR. On peut aussi passer par la commande WRKACTJOB SBS(QSPL) avec F16 sur la colonne "Etat" mais cela affiche un état TIMW tout en fin de liste (il faut donc tout faire défiler). Ce n’est donc pas l’idéal..

Est-ce que vous auriez un CL (ou une idée de CL) qui permettrait par une simple commande de n'afficher que les WTR dans l'état MSGW ?

API

Posté : mar. 10 mars 2015, 12:49:04
par cmasse
Bonjour,

hélas pas d'idée géniale, même System i Navigator en permet pas de filtrer sur l'état de l'éditeur. Reste la programmation par API (QUSLJOB) qui permet de filtrer sur le type de job (W The job is a spooled writer job.).


http://www-01.ibm.com/support/knowledge ... usljob.htm

Mais c'est cher payé :cry:

(sujet non précisé)

Posté : mar. 10 mars 2015, 16:31:08
par Diggi
Bonjour,

J'ai finalement trouvé la solution en utilisant l'API QSPRWTRI dans un CL.

Code : Tout sélectionner

             PGM
/* ----------------------------------*/
/*                                   */
/* AFFICHER LES WRITERS EN ERREUR    */
/* (UTILISATION API QSPRWTRI)        */
/*                                   */
/* ----------------------------------*/

             DCLF       FILE(QADSPOBJ)
             
             DCL        VAR(&RCVR) TYPE(*CHAR) LEN(320)
             DCL        VAR(&RCVRLEN) TYPE(*CHAR) LEN(4)
             DCL        VAR(&ERRCDE) TYPE(*CHAR) LEN(8)
             DCL        VAR(&RCVRLENN) TYPE(*DEC) LEN(4 0)
             DCL        VAR(&RCVRLENC) TYPE(*CHAR) LEN(4)
             DCL        VAR(&STATUS) TYPE(*CHAR) LEN(1)
             
             CHGVAR     VAR(&RCVRLENN) VALUE(320)
             CHGVAR     VAR(&RCVRLENC) VALUE(&RCVRLENN)
             CHGVAR     VAR(&ERRCDE) VALUE(X'0000000000000000')

            DSPOBJD    OBJ(*ALL) OBJTYPE(*DEVD) OUTPUT(*OUTFILE) +
                         OUTFILE(QTEMP/QADSPOBJ)
            OVRDBF     FILE(QADSPOBJ) TOFILE(QTEMP/QADSPOBJ)

            SNDUSRMSG  MSG('**************** AFFICHAGE DES IMPRIMANTES EN +
            *MSGW ***************************') MSGTYPE(*INFO)
                        
 LECTURE:   RCVF
              MONMSG     MSGID(CPF0864) EXEC(GOTO CMDLBL(FIN)) /* EOF */
              
             IF         COND(&ODOBAT *EQ 'PRTLAN') THEN(DO)
             
               CALL       PGM(QSPRWTRI) PARM(&RCVR &RCVRLEN 'WTRI0100' +
                                             &ODOBNM &ERRCDE)
               MONMSG     MSGID(CPF33C8 CPF9801) EXEC(GOTO +
                            CMDLBL(LECTURE)) /* NOT FOUND OR NOT STARTED*/
             
               CHGVAR     VAR(&STATUS) VALUE(%SST(&RCVR 20 1))
               IF         COND(&STATUS = 'Y') THEN(DO)
 /*             SNDPGMMSG  MSG(&ODOBNM *BCAT 'EST EN *MSGW')       */
                SNDUSRMSG  MSG(&ODOBNM *BCAT 'EST EN *MSGW') MSGTYPE(*INFO)
               ENDDO

             ENDDO

             GOTO       CMDLBL(LECTURE)
 FIN:
             DLTOVR     FILE(QADSPOBJ)
             
             SNDUSRMSG  MSG('**************** FIN DE LA LISTE DES IMPRIMANTES +
              ***************************') MSGTYPE(*INFO)
                           
             WRKWTR
             ENDPGM