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.