> Tech > Groupes d’activation automatiques

Groupes d’activation automatiques

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

Les groupes d’activation automatiques sont créés quand un programme démarre et détruits quand un programme se termine. Ils n’ont pas de noms : le système d’exploitation leur attribue un numéro au moment de leur création.

Pour utiliser un groupe d’activation automatique, spécifiez ACTGRP(*NEW) quand vous créez le programme.

Groupes d’activation automatiques

/>Quand le programme s’exécute, un nouveau groupe d’activation est créé. Quand ce programme se termine, ce groupe d’activation est aussitôt récupéré.

Beaucoup d’utilisateurs disent « Il ne faut jamais utiliser ACTGRP(*NEW) parce que cela dégrade la performance ».

Ce n’est pas tout à fait vrai. Tout d’abord, le fait d’utiliser ACTGRP(*NEW) n’est ni meilleur ni pire que d’utiliser un groupe d’activation nommé puis de le récupérer. Ce qui prend du temps, c’est la création puis la destruction du groupe d’activation. Peu importe que vous le fassiez manuellement avec un groupe d’activation nommé, ou que vous laissiez ce soin au système.

De plus, la création et la destruction d’un groupe d’activation prend environ 1/100e de seconde, d’après mes tests. Si cette opération se répète un million de fois, c’est un coût important. Mais, si on le fait trois ou quatre fois pendant un job interactif, c’est insignifiant. Vos utilisateurs passent plus de temps à cligner des yeux qu’à attendre que les groupes d’activation soient créés ou récupérés.

C’est vrai, la récupération d’un groupe d’activation a pour effet de fermer tous les fichiers qu’il contient. Sûr, cela prend du temps et peut s’avérer coûteux. Mais pas plus que d’utiliser le groupe d’activation pour fermer les fichiers quand il doit le faire avec le code opération CLOSE, ou en activant l’indicateur LR dans votre programme RPG.
Prenons le cas d’un programme grâce auquel un utilisateur saisit une commande. Au fur et à mesure que chaque ligne article est ajoutée à la commande, le programme GETDESC que montre la figure 2 est appelé, de manière à afficher la description sur l’écran. Si ce programme de saisie de commande est compilé avec ACTGRP(*NEW) et si GETDESC est compilé avec ACTGRP(*CALLER), les deux seront déchargés de la mémoire à la fin du programme. Les fichiers des deux seront fermés. (Peu importe que vous activiez LR dans le programme de saisie de commande, parce que quand il se termine, le groupe d’activation est récupéré, ce qui a pour effet de fermer les fichiers et de désactiver les programmes.)

Allons plus loin. Disons que le programme de saisie de commande appelle un grand nombre de sousprogrammes:
un qui calcule le prix d’un article, un autre qui permet à l’utilisateur de consulter les articles proposés à la vente, un autre qui calcule la TVA, et un autre encore qui permet à l’utilisateur de trouver le bon client pour une commande. Si tous les sousprogrammes sont créés avec ACTGRP (*CALLER) et si le programme de saisie de commande principal est ACTGRP(*NEW), tous sont déchargés de la mémoire quand le programme se termine. C’est un moyen simple et élégant de tout décharger. Bien entendu, si vous voulez que les fichiers restent ouverts afin que les appels suivants soient aussi rapides que possible, ACTGRP(*NEW) n’est pas le bon choix. Il vaudra mieux alors utiliser un groupe d’activation nommé.

Téléchargez cette ressource

Guide inmac wstore pour l’équipement IT de l’entreprise

Guide inmac wstore pour l’équipement IT de l’entreprise

Découvrez toutes nos actualités à travers des interviews, avis, conseils d'experts, témoignages clients, ainsi que les dernières tendances et solutions IT autour de nos 4 univers produits : Poste de travail, Affichage et Collaboration, Impression et Infrastructure.

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