DEF LEN commande

Syntaxe :

DEF LEN [=] longueurVarChaine

Description :

Utilisez la commande DEF LEN pour définir la quantité d’espace de stockage que le compilateur doit attribuer aux variables chaînes (et aux éléments d’un tableau de chaînes et aux champs de record de type chaîne). Cela peut vous aider à calibrer plus efficacement la mémoire que vous utilisez.

Quand le compilateur rencontre, pour la première fois, une variable chaîne donnée, il alloue suffisamment d’espace de stockage pour contenir la chaîne à sa taille maximale. La taille maximale d’une chaîne est déterminée comme suit :

Si la taille est explicitement déclarée dans une commande DIM (comme avec une instruction : “DIM 16 maChaine$”), alors cette valeur est utilisée.
Si la chaîne est déclarée dans une commande DIM au moyen de la clause AS STR255, sa taille maximale est 255.
Si la taille maximale n’est pas explicitement déclarée dans une commande DIM, alors la valeur de longueurVarChaine spécifiée dans la plus récente commande DEF LEN est utilisée.
Si aucune commande DEF LEN n’a encore été rencontrée (et que la taille maximale n’est pas explicitement déclarée dans une commande DIM), alors 255 est utilisé.
(La quantité réelle d’espace de stockage alloué pour la chaîne est toujours plus grande d’1 octet que la taille maximale de la chaîne, et c’est toujours un nombre pair).

longueurVarChaine doit avoir une valeur dans la plage 1 à 255, et doit être une “expression statique entière”. Une expression statique entière est une expression valide constituée seulement par :

des constantes entières littérales;
des noms de constantes symboliques précédemment définis;
des opérateurs (comme +, , *, /, >, =);
des parenthèses
(En particulier, elle ne peut contenir ni variables, ni références à des fonctions)

Vous pouvez avoir plus d’une commande DEF LEN dans votre programme. Chaque commande DEF LEN s’applique aux variables qui sont déclarées après, jusqu’à l’apparition de la commande DEF LEN suivante.

DEF LEN a une portée globale : elle s’applique à toutes les variables qui apparaissent après dans le code source (jusqu’à la commande DEF LEN suivante), que ces variables soient à l’intérieur du “programme principal” ou à l’intérieur de fonctions LOCAL.

Exemple :

x$ = "Bonjour"
DEF LEN 35
DIM y$
DIM 255 z$
a$ = "Ceci est un test"
DEF LEN 1
DIM b$(100)
BEGIN RECORD monTypeRec
  DIM 20 champ1$
  DIM champ2$
END RECORD

Le compilateur alloue l’espace de stockage des chaînes ci-dessus comme suit :

Variable
Longeur max chaîne
Octets stockés
x$
255
256
y$
35
36
z$
255
256
a$
35
36
b$()
1 (pour chaque élément)
2 (pour chaque éléement)
champ1$
20
22 (quand une variable record est déclarée)
champ2$
1
2 (quand une variable record est déclarée)

Note :

DEF LEN est une commande “non-exécutable”, ce qui signifie que vous ne pouvez pas changer son effet en la plaçant après une clause THEN ou ELSE (dans une commande IF), ni en la plaçant dans aucun genre de bloc d’exécution conditionnelle tels que LONG IF…END IF, WHILE…WEND, FOR…NEXT, etc. Toutefois, vous pouvez l’inclure ou l’exclure conditionnellement du programme en la plaçant dans un bloc COMPILE LONG IF.

Voir Aussi :