Cas d'une application VA avec des accès BD SQL sur un serveur AS/400.
A l'exécution de cette application, il peut y avoir beaucoup de fichiers ouverts (ODP) (voire un même fichier ouvert plusieurs fois) sur le processus de connexion MWRPGSVR.

SQL400 gère les ouvertures d'ODP mais pas les fermetures, même si les curseurs éventuellement utilisés dans le programme ont bien été fermés, ou même si l'on n'a fait que des SELECT...FROM...

Il est utile de mettre en place une solution permettant de fermer tous les ODP en fin de traitement.

Par exemple :
Soit une application composée d'un menu principal déclenchant des chaines de programmes.
Il faut pouvoir fermer tous les ODP ouverts à la fin de chaque chaine :

- Pour tous les programmes de la chaine, excepté celui du menu principal, il faut modifier le prompt CRTPGM en spécifiant un groupe d'activation (ACTGRP) : remplacer la valeur par défaut *CALLER. (cf plus bas "comment modifier le prompt de tous les programmes", quite à revenir sur les prompts des quelques programmes de menu principal afin de leur remettre la valeur *CALLER)

- Dans le menu principal, après l'exécution de chaque option, faire exécuter la commande "RCLACTGRP ACTGRP(XXXXXX) " sur une partie serveur AS/400, XXXXXX étant le nom du groupe d'activation indiqué dans les prompts (cf ci dessus).
Cette commande peut être exécutée soit via un EXECUTER_CMD soit via l'appel d'un CLP.

Pour information, la commande RCLACTGRP ferme les ODP ouverts en récupérant au niveau système toutes les ressources du groupe d'activation indiqué.
Remarques sur l'utilisation de cette commande :
- Elle doit être appelée depuis un programme appartenant à un autre groupe d'activation que celui indiqué dans la commande. C'est pour cela qu'il faut un prompt spécifique pour le programme du menu principal (remettre la valeur initiale *CALLER sur le paramètre ACTGRP)
- Aucun programme appartenant au groupe d'activation indiqué dans la commande ne doit être en cours d'exécution
- L'exécution de cette commande peut durer quelques secondes s'il y a beaucoup d'ODP ouverts (un peu comme un RCLRSC).


NB : Comment modifier le prompt de tous les programmes de l'environnement :
Lancer le programme GPRPT0 avec le nom de l' environnement en paramètre :
GPRPT0 NOM_ENV
Indiquer alors pour le prompt de CRTPGM pour les programmes VADELIA : "ACTGRP(XXXXX);"
(Indiquer le mot clé de la commande avec sa nouvelle valeur par défaut entre parenthèses suivi d'un";").

Remarque : Avec la version 8.2 d'Adélia/IWS, vous devez avoir les PTF F001 à F005 sur la partie serveur AS/400 (code produit HH£AIWS).

  • Aucune étiquette