Google Chercher dans diml.org
[ english ]

Table des matières
Variables scalaires et variables vectorielles
Stockage des tableaux, valeurs scalaires des tableaux
Construction
Exemples  Dernières infos
 Une application du composant  WCT_NEWS  
>> Haut de la page

Le DIML Vectoriel : Construire un vecteur d'interface

Variables scalaires et variables vectorielles

Jusqu'à présent, les variables étaient scalaires, c'est à dire, détenaient une seule valeur chaîne. La suite du parcours nécessite l'introduction de variables vectorielles assimilables à des tableaux. La dimension de ces tableaux peut être multiple.

La forme tabulaire d'une variable est reconnaissable par les paires de crochets, mais certaines de ces syntaxes tabulaires ont des significations particulières :

TAB[] la valeur d'un tableau à l'indice "courant"
TAB[±n]la valeur d'un tableau à l'indice "courant" décalé de n positivement ou négativement
TAB[%INDIRECT%]accès indirect par rapport à la variable %INDIRECT%

Stockage des tableaux, valeurs scalaires des tableaux

Construction

Du point de vue de l'implémentation, toutes les variables d'interface DIML entre la zone "script" et la zone "présentation" sont stockées dans un tableau associatif d'interface. Pour pouvoir avoir les mêmes spécifications quelque soit les langages, les tableaux DIML sont stockées dans ce hash comme une succession de valeurs scalaires, mais dont les clefs prennent une forme particulière.

On construit une clef pour chaque élément du tableau %TABLE% par concaténation du nom de la variable tableau (ici "TABLE") et d'un suffixe d'indiçage normalisé :

Ainsi la 4ème cellule d'un vecteur %VECTEUR% sera une variable DIML scalaire de clef %VECTEUR§3%

Le caractère § a été choisi comme séparateur d'indice du fait de son innocuité syntaxique dans bien des langages.

NOTE : La signification particulière du caractère § est purement consensuelle et n'induit pas un traitement particulier des variables scalaires indicées. Il est de ce fait tout à fait possible d'utiliser des variables de cette forme en dehors de tout cadre tabulaire. Par contre, cette forme est nécessaire pour faire fonctionner correctement les mécanismes d'appel cités ici.

Remplir un tableau DIML revient à créer les variables indicées correspondantes. Les indices ne doivent pas être nécessairement suivis, et la taille de ces tableaux est "virtuellement" infinie.

Exemples

Voici comme premier exemple un tableau des mois de l'année :

<%set %MOIS§0% = "Janvier" %>
<%set %MOIS§1% = "Février" %>
<%set %MOIS§2% = "Mars" %>
<%set %MOIS§3% = "Avril" %>
<%set %MOIS§4% = "Mai" %>
<%set %MOIS§5% = "Juin" %>
<%set %MOIS§6% = "Juillet" %>
<%set %MOIS§7% = "Aoüt" %>
<%set %MOIS§8% = "Septembre" %>
<%set %MOIS§9% = "Octobre" %>
<%set %MOIS§10% = "Novembre" %>
<%set %MOIS§11% = "Décembre" %>

Un tableau peut contenir des éléments vides, ou non définis, par exemple :

<%set %CA_MOIS§1% = "8000" %>
<%set %CA_MOIS§3% = "28000" %>
<%set %CA_MOIS§4% = "35000" %>
<%set %CA_MOIS§5% = "56000" %>
<%set %CA_MOIS§8% = "23000" %>
<%set %CA_MOIS§9% = "34500" %>

Le tableau précédent comporte des "trous". Ces trous donneront une chaîne "par défaut" (en général la chaîne vide) si un appel vectoriel vient à les demander.

Un tableau d'interface en DIML n'a pas réellement de début ni de fin. Pour le début, il est d'usage de donner le premier élément pour une valeur d'indice nulle. Mais ceci n'est pas obligatoire. On pourrait très bien faire commencer les indices à une valeur plus grande :

<%set %MOIS§1% = "Janvier" %>
<%set %MOIS§2% = "Février" %>
<%set %MOIS§3% = "Mars" %>
<%set %MOIS§4% = "Avril" %>
<%set %MOIS§5% = "Mai" %>
<%set %MOIS§6% = "Juin" %>
<%set %MOIS§7% = "Juillet" %>
<%set %MOIS§8% = "Aoüt" %>
<%set %MOIS§9% = "Septembre" %>
<%set %MOIS§10% = "Octobre" %>
<%set %MOIS§11% = "Novembre" %>
<%set %MOIS§12% = "Décembre" %>

C'est simplement au moment de l'utilisation du tableau par des appels vectoriels qu'il faudra prendre garde où le tableau commence, et positionner les indices automatiques en conséquence.

précédent sommaire suivant


All material is copyleft V.G. FREMAUX (EISTI France) 1999 to 2003 except explicitly mentioned