Dans les programmes d’exit, il en existe un qui s’exécutera avant un PWRDWNSYS
Pour 2 raisons
-1 Pour faire un contrôle par rapport à une condition particulière de lancement
-2 Pour fermer des applications et valider des informations en cours
Voici un exemple succinct qu’il vous faudra améliorer
Ici on demande juste de valider par un Y que l’IPL est bien voulu
La commande pour ajouter le point d’exit est au début du programme
PGM
/* association pour associer le programme */
/*ADDEXITPGM EXITPNT(QIBM_QWC_PWRDWNSYS) */
/* FORMAT(PWRD0100) */
/* PGMNBR(1) */
/* PGM(GDATA/PPWRDWN) */
DCL VAR(&RPY) TYPE(*CHAR) LEN(1)
dcl VAR(&USR) TYPE(*CHAR) LEN(10)
Rtvjoba USER(&USR)
SNDUSRMSG MSGID(CPF9897) MSGF(QCPFMSG) +
MSGDTA('PWRDWNSYS demandé par, ' *BCAT +
&USER *BCAT 'Tapez pour valider.') +
VALUES('Y' 'N') DFT('N') TOUSR(QSYSOPR) +
MSGRPY(&RPY)
/* Si non on arrête le travail */
if (&RPY *NE 'Y') then(do)
SNDUSRMSG MSGID(CPF9897) MSGF(QCPFMSG) MSGDTA('**** +
PWRDWNSYS annulé ****') MSGTYPE(*INFO) +
TOUSR(QSYSOPR)
ENDJOB JOB(*) OPTION(*IMMED)
ENDDO
/* Si oui faire les traitements de fermeture */
/* pour les applications sensibles par exemple */
/* libérer des unités etc ... */
endpgm
Remarque
Vous pouvez tester même le type d’ipl ou la zone de redémarrage en utilisant les paramètres que vous pouvez recevoir dans la zone au format PWRD0100 ou
PWRD0100.
Attention après sa mise en œuvre, il sera appelé à chaque lancement de PWRDWNSYS pour l’enlever
RMVXITPGM EXITPNT(QIBM_QWC_PWRDWNSYS) FORMAT(PWRD0100) PGMNBR(1)
Plus d’informations ici
https://www.ibm.com/docs/en/i/7.4?topic=ssw_ibm_i_74/apis/xpwrdwn.htm