Manuel §1.2.4    

Tableaux associatifs

Sisal permet de déclarer des tableaux asociatifs de données. Un tableau est un ensemble d'enregistrements réunis et accédés par une valeur quelconque. Cette structure doit être déclarée dans une partie Var d ’un script ou d ’un synoptique.

Map { Structure} ;

Par construction, à chaque valeur de clé est associé un seul enregistrement.

L'exemple suivant montre un tableau qui enregistre pour chaque produit deux caractéristiques température et pression. Les enregistrements sont accédés par l'identification du produit :

Encours Map of struct begin
Temperature; Pression;
End;

Le référencement d ’une variable de tableau se fait en indiquant le rang de la variable entre crochets.

Encours[ "AZ25332"].Temperature = 50; // Création  de cet enregistrement et valorisation d'un seul champ
If Encours[ "BY32767"].Pression > 25 then ....

On peut référencer un enregistrement qui n'a pas été créé, dans ce cas il existe mais toutes les valeurs rendues sont indéfinies.

Des fonctions système spécifiques permettent de gérer un tableau associatif.

La fonction find permet de tester l'existence d'un enregistrement dans un tableau associatif.

Find( TabAss, Cle): Booléen

La fonction permet de compter le nombre d'enregistrement d'un tableau associatif

Count( TabAss): Entier

La fonction Delete permet de supprimer un enregistrement d'un tableau associatif

Delete( TabAss, Cle): Booléen

Et la boucle For permet de balayer tous les produits contenus dans un tableau associatif.

For Variable In TabAss do INSTRUCTION

Par exemple, recherchons tous les produits dont la température est supérieure à 165°.

For produit In Encours do
If Encours[ produit].Temperature > 165 then ...

La variable Variable est dans ce cas un itérateur ; cet itérateur lorsqu'il est déréférencé (cf.Value) retourne la clé associé à l'enregistrement courant et pas l'enregistrement lui-même.