| BEGIN UNION | commande |
Syntaxe : BEGIN RECORD NomRecord
[DIM commandes] BEGIN UNION [DIM commandes] END UNION END RECORD Description : Une union est utilisée pour réserver de l’espace dans un record qui peut contenir potentiellement plus d’une taille de variable. L’exemple suivant réserve deux décalages égaux à l’intérieur d’un record pour des variables de tailles différentes :
BEGIN RECORD recordAvecUnion
DIM avantUnion BEGIN UNION DIM enUnion1` DIM enUnion2$ END UNION END RECORD DIM monTest AS recordAvecUnion monTest.enUnion2$ = "ALLIANCE" PRINT monTest.enUnion1 La variable monTest.enUnion1 est une valeur sur un seul octet qui occupe la même place en mémoire que le premier octet de la chaîne monTest.enUnion2$. Dans ce cas, monTest.enUnion1 se trouve être aussi l’octet de longueur de la chaîne et l’instruction PRINT affichera "8". Un tel recouvrement n’est pas indispensable et les deux valeurs pourraient très bien n’avoir aucune relation entre elles si ce n’est qu’elles commencent à la même adresse en mémoire. Lorsque FB^3 rencontre une commande BEGIN UNION, toutes les instructions DIM jusqu’à la commande END UNION sont examinées et l’élément le plus grand détermine la quantité d’espace mémoire réservée par le compilateur. Dans l’exemple ci-dessus, l’union occuperait 256 octets puisque l’élément le plus grand de l’union est une chaîne Pascal de 256 octets (1 octet de longueur + 255 caractères maximum). Voir Aussi : |