> Tech > Gestionnaires d’annulation ILE

Gestionnaires d’annulation ILE

Tech - Par Renaud ROSSET - Publié le 24 juin 2010
email

Nous venons de voir plusieurs techniques de traitement des exceptions. Mais qu'en est-il quand une application est annulée, par la commande ENDJOB (End Job), la commande ENDSBS (End Subsystem) ou une réponse "C" (cancel) à  un message d'interrogation, par exemple ? Ne serait-il pas intéressant de fermer l'application en bon

Gestionnaires d’annulation ILE

ordre dans de telles circonstances ? Bien sûr : c’est exactement ce que permet ILE avec les gestionnaires d’annulation.

Un gestionnaire d’annulation prend la main quand l’entrée de pile d’appel qui lui est associée se termine sans retour normal. A l’instar des gestionnaires de conditions, les gestionnaires d’annulation peuvent exécuter le code de votre choix. Considérons, par exemple, un long processus batch qui, en cas d’annulation, doit redémarrer du début. On pourrait écrire un gestionnaire d’annulation enregistrant des informations permettant au processus de redémarrer à  son point de sortie lorsqu’il s’est terminé.

Le coding des gestionnaires d’annulation ou des gestionnaires de conditions sont deux opérations très similaires. Le programme RPG IV CnlHdlTest (figure 3) est un exemple de gestionnaire d’annulation simple, qui démontre à  quel point il est facile de programmer des gestionnaires d’annulation. La procédure principale affiche simplement « Cancel me » et attend une réponse. Si on fournit une réponse (ou si on quitte), le programme se termine. Pour voir le gestionnaire d’annulation en action, vous pouvez appuyer sur la touche Appel Système quand ce message apparaît et choisir l’option 2 pour mettre fin au job. La procédure de gestionnaire d’annulation, CNLHDL, affiche « Cool, huh? » et attend une réponse avant de mettre fin au programme. Voyons comment les choses se passent.

Pour valider un gestionnaire d’annulation, enregistrez-le avec l’API ILE CEERTX (Register Call Stack Entry Termination User Exit Procedure). De même, pour le désenregistrer (invalider), utilisez l’API CEEUTX (Unegister Call Stack Entry Termination User Exit Procedure). Ces API sont expliquées dans les manuels cités plus haut. Leurs paramètres correspondent à  ceux des API d’enregistrement et de désenregistrement pour les gestionnaires de conditions. L’interface avec le gestionnaire d’annulation lui-même est constituée par un pointeur sur une zone de communication comme celle qui existe dans les gestionnaires de conditions. Toutefois, notre exemple n’utilise pas de zone de communication.

Le programme commence avec les prototypes de procédure requis. Observez que dans cet exemple, j’ai prototypé et codé le gestionnaire d’annulation dans le même module que la procédure principale. Je l’ai fait pour montrer que l’on peut coder des gestionnaires de conditions et des gestionnaires d’annulation de nombreuses façons différentes.

Les cartes D qui suivent définissent une variable chargée de recevoir la réponse aux messages affichés par le programme. Comme cette définition se trouve dans la procédure principale, la variable est de portée globale.

Ensuite, le programme enregistre le gestionnaire d’annulation. Notez que j’ai omis la zone de communication et les paramètres de code retour en les codant sous la forme *Omit. Le programme affiche alors le message « Cancel me » et attend une réponse. Après votre réponse au message, le programme désenregistre le gestionnaire d’annulation et se termine.

Si vous mettez fin au job (en choisissant par exemple l’option 2 du menu Appel Système), le gestionnaire d’annulation CNLHDL (A) prend la main. Il affiche le message « Cool, huh? » et attend une réponse.

Téléchargez cette ressource

Guide de Sécurité IA et IoT

Guide de Sécurité IA et IoT

Compte tenu de l'ampleur des changements que l'IA est susceptible d'entraîner, les organisations doivent élaborer une stratégie pour se préparer à adopter et à sécuriser l'IA. Découvrez dans ce Livre blanc Kaspersky quatre stratégies efficaces pour sécuriser l'IA et l'IoT.

Tech - Par Renaud ROSSET - Publié le 24 juin 2010