Optimiser la recherche de postes dans une table Adélia (valable aussi en RPG).

Pensez : UN TABLEAU SE CHARGE PAR LA FIN

Je m’explique :

L’ordre Recherche d’Adélia (et donc du GAP) accepte un indice de départ de la recherche (i) mais pas d’indice de fin. La recherche se fait toujours jusqu’à  la fin du tableau. Plus le tableau est grand, plus la recherche sera longue, même si le nombre de postes alimentés est restreint ; c’est le nombre total de postes qui est important.

Pour optimiser les programmes, il suffit donc de charger le tableau par son dernier indice (9999), et ensuite de le lire à  partir du plus petit indice chargé.

Ceci fonctionne pour tous les tableaux, quelle qu’en soit la taille.

Petit source pour y voir plus clair :

Boucle de chargement « bateau » :
Tableau de 9999 postes

I = 10000 on pourrait partir de 9999
LIRE fichier et décrémenter à  posteriori,
TANT_QUE fichier EXISTE ET I > 1 mais on serait décalé de 1
I = I - 1 poste à  la fin
TAB_CODE(I) = code
TAB_LIBELLE(I) = libellé
LIRE_SUIVANT fichier
REFAIRE
I_MAX = I

Recherche d’un libellé dans le tableau :


I = I_MAX au lieu d'un I = 1
RECHERCHE = x_code TAB_CODE(I) la suite reste standard
SI *TROUVE = '1'
x_libellé = TAB_LIBELLE(I)
SINON
x_libellé = 'code inconnu'
FIN

Print Friendly, PDF & Email