Accueil du site > Les articles > Programme CL de (re)démarrage d’une imprimante
Version à imprimer Enregistrer au format PDF

Programme CL de (re)démarrage d’une imprimante

mercredi 11 août 2004, par Grégory Jarrige Visites  2518 Première mise en ligne le jeudi 6 novembre 2003.

Une mauvaise installation électrique, ou une mauvaise connectique (ce qui n’est pas rare avec du câblage twinax), peut entraîner des arrêts répétés de certains postes, et dans le cas qui nous préoccupe ici, de certaines imprimantes. Ces arrêts intempestifs peuvent entraîner une mise en erreur du périphérique au niveau de l’AS/400, et cela complique l’opération de redémarrage de la dite imprimante. Car dans ce cas la commande STRPRTWTR ne suffit pas à redémarrer l’imprimante défaillante. J’ai écrit le programme CL STRPRTCL de façon à gérer les principaux cas d’erreur et à permettre aux utilisateurs de redémarrer aisément une imprimante en erreur, au moyen d’une option de menu adéquate, sans avoir nécessairement recours au service exploitation. Le CL reçoit en paramètre le nom de l’imprimante, récupère l’état de la configuration du périphérique (device) concerné, et en fonction du code erreur retourné, effectue un certain nombre d’opérations correctrices. La lecture du source devrait vous éclairer sur la suite des opérations.


100 /**************************************************************************/
200 /*  PROJET    :  GESTION COMMERCIALE                                      */
300 /*  PROGRAMME :  STRPRTCL                                                 */
400 /*  FONCTION  :  DEMARRAGE IMPRIMANTE AVEC TEST PREALABLE DE L'ETAT       */
500 /*               DU DEVICE (MISE HORS PUIS EN FONCTION SI EN ERREUR)      */
900 /*  PARAMETRES :                                                          */
1000 /*                  &PRINTER --->  IMPRIMANTE                   10        */
1200 /**************************************************************************/
1300 /*  IMPORTANT : APRES COMPILATION, EXECUTER LA COMMANDE SUIVANTE          */
1400 /*         CHGPGM PGM(STRPRTCL) USRPRF(*OWNER)                            */
1500 /*      (PERMETTRA AUX UTILISATEURS D'ACCEDER A LA COMMANDE VRYCFG)       */
1600 /**************************************************************************/
1700              PGM        PARM(&PRINTER)
1800
1900              DCL        VAR(&PRINTER) TYPE(*CHAR) LEN(10)
2000              DCL        VAR(&CODERR) TYPE(*DEC) LEN(5 0)
2100              DCL        VAR(&MSG) TYPE(*CHAR) LEN(80)
2200
2300              CHGVAR     VAR(&MSG) VALUE('Démarrage en cours de +
2400                           l''imprimante ' *CAT &PRINTER)
2500              SNDPGMMSG  MSGID(CPF9897) MSGF(QSYS/QCPFMSG) +
2600                           MSGDTA(&MSG) TOPGMQ(*EXT) MSGTYPE(*STATUS)
2700
2800    /*  RECUPERATION ETAT DE LA CONFIGURATION   */
2900              RTVCFGSTS  CFGD(&PRINTER) CFGTYPE(*DEV) STSCDE(&CODERR)
3000
3100    /*  ARRET DE L'EDITEUR SI EN ERREUR     */
3200              IF         COND(&CODERR *EQ 106) THEN(DO)
3300              ENDWTR     WTR(&PRINTER) OPTION(*IMMED)
3400              MONMSG     MSGID(CPF3313)
3500              DLYJOB     DLY(5)
3600              VRYCFG     CFGOBJ(&PRINTER) CFGTYPE(*DEV) STATUS(*OFF)
3700              VRYCFG     CFGOBJ(&PRINTER) CFGTYPE(*DEV) STATUS(*ON) +
3800                           RESET(*YES)
3900              ENDDO
4000
4100    /*  REDEMARRAGE DE L'IMPRIMANTE EN ERREUR   */
4200              IF         COND(&CODERR *EQ 100) THEN(DO)
4300              VRYCFG     CFGOBJ(&PRINTER) CFGTYPE(*DEV) STATUS(*OFF)
4400              VRYCFG     CFGOBJ(&PRINTER) CFGTYPE(*DEV) STATUS(*ON) +
4500                           RESET(*YES)
4600              ENDDO
4700
4800    /*  REDEMARRAGE DE L'IMPRIMANTE HORS FONCTION   */
4900              IF         COND(&CODERR *EQ 0) THEN(DO)
5000              VRYCFG     CFGOBJ(&PRINTER) CFGTYPE(*DEV) STATUS(*ON) +
5100                           RESET(*YES)
5200              ENDDO
5300
5400    /*  REDEMARRAGE EDITEUR IMPRIMANTE   */
5500              STRPRTWTR  DEV(&PRINTER)
5600              MONMSG     MSGID(CPF3310)
5700
5800
5900              CHGVAR     VAR(&MSG) VALUE('Imprimante ' *CAT &PRINTER +
6000                           *TCAT ' démarrée')
6100              SNDPGMMSG  MSGID(CPF9897) MSGF(QSYS/QCPFMSG) +
6200                           MSGDTA(&MSG) TOPGMQ(*EXT) MSGTYPE(*STATUS)
6300
6400  FIN:        ENDPGM