BEGIN RECORD commande

Syntaxe :

BEGIN RECORD nomType
  blocDefRec

END RECORD

Révision :

19 Juillet 2000 (Release 3)

Description :

Cette commande commence la définition d’un “vrai” type de record (par opposition au type de pseudo record, qui est défini à l’aide des commandes DIM RECORD…DIM END RECORD). La définition du type de record doit se terminer par une commande END RECORD.

Un bloc BEGIN RECORD…END RECORD est non-exécutable, si bien que vous ne pouvez pas changer son effet en le plaçant dans une structure d’exécution conditionnelle telle que LONG IF…END IF. En revanche, vous pouvez l’inclure ou l’exclure du programme de manière conditionnelle en le plaçant dans un bloc COMPILE LONG IF.

Le type de record défini dans un bloc BEGIN RECORD…END RECORD a une portée globale, et il peut être utilisé n’importe où dans votre programme après l’apparition du bloc.

nomType est un nom qui identifie le type de record. Ce nom doit être unique parmi tous les types de record définis dans votre programme.

blocDefRec
est un bloc comportant une ou plusieurs commandes DIM. Ces instructions DIM ont une syntaxe qui est identique à celle de la commande DIM ordinaire, exception faite pour les tableaux. Toutefois, au lieu de déclarer des variables, ces instructions DIM déclarent le nom et le type des champs de ce type de record. Les noms des champs n’ont pas besoin d’être uniques et propres à ce type de record (C’est-à-dire, que deux types de record différents peuvent utiliser les mêmes noms de champ). Un champ peut être de n’importe quel type de donnée, y compris un type de record précédemment défini. Un champ peut également être un tableau d’éléments de n’importe quel type.

Vous pouvez également utiliser la syntaxe “préfixe point” à l’intérieur d’un bloc de définition de record pour déclarer un espace “vide”; c’est-à-dire, quelques octets à l’intérieur du record qui ne sont identifiés par aucun nom de champ :

DIM .constante

…où constante est un entier littéral, ou bien un nom de constante symbolique (sans son préfixe de soulignement). Ceci déclare le nombre d’octets spécifiés comme étant “sans nom”.

Vous pouvez utiliser aussi la syntaxe “point-virgule” après la définition d’un nom de champ, dans le but de spécifier combien d’octets vous devez sauter entre le début de ce champ et le début du champ suivant. Vous pouvez utiliser ceci soit pour insérer des octets “sans nom” à l’intérieur du record, ou pour que deux champs se chevauchent en mémoire. Voyez la commande DIM pour plus d’informations au sujet de la syntaxe point-virgule.


Après qu’un type de record a été défini à l’aide de BEGIN RECORD…END RECORD, il peut être utilisé comme n’importe quel autre type de donnée. Cela signifie que vous pouvez déclarer :


des variables comme ayant le type nomType;

des tableaux comme ayant le type nomType;

des champs d’un autre record comme ayant le type nomType.
N’importe où après la commande END RECORD, vous pouvez utiliser la commande DIM, avec le mot-clé AS, pour déclarer une variable, un tableau ou un champ du type nomType. Par exemple, si vous avez défini un type de record appelé adresse, vous pouvez alors faire ce qui suit :

DIM maMaison AS adresse, taMaison AS adresse
DIM laFamille(15) AS adresse

BEGIN RECORD infoEmploye
  DIM 50 nom$
  DIM 19 noSecSoc$
  DIM 20 hobbies$
  DIM adresseEmploye AS adresse
END RECORD
Après la déclaration d’une variable comme étant d’un type donné de record, vous pouvez utiliser la syntaxe “point imbriqué” pour vous référer de manière spécifique aux champs à l’intérieur du record. En poursuivant l’exemple précédent :

DIM maSecretaire AS infoEmploye
maSecretaire.noSecSoc$ = "02 80 07 99 350 360"

Tableaux de records et tableaux de champs

Lorsque vous utilisez des tableaux de records, vous écrivez l’indice du tableau toujours à la fin de l’expression, et ce, que l’expression se réfère au record entier ou à l’un de ses champs. Par exemple, si vous avez un tableau de records appelé jeu, alors jeu(7) se réfère à l’élément numéroté 7 dans le tableau. Si ce type de record possède un champ appelé score, alors nous représentons le score de jeu(7) comme suit : jeu.score(7) 

Exemple : un tableau de records :

BEGIN RECORD infoEtudiant
  DIM 20 prenom$
  DIM 20 nom$
  DIM 1 noteFinale$
END RECORD

DIM mesEleves(35) AS infoEtudiant

'Ceci représente la note finale de l’étudiant n°14 :
mesEleves.noteFinale$(14) = "B"

Tableaux à l’intérieur des vrais records

Les vrais records ont la possibilité de contenir des champs qui sont des tableaux. Ce type spécial de tableau imbriqué est déclaré avec la syntaxe entre crochets au lieu des parenthèses pour accéder aux éléments individuellement. Les crochets sont utilisés pour dimensionner le tableau aussi bien que pour accéder à ses sous-éléments. L’espace mémoire réservé pour un champ tableau est limité à 32768 octets.

Exemple :

BEGIN RECORD infoEtudiant
  DIM 20 prenom$
  DIM 20 nom$
  DIM notes[100]
END RECORD

DIM mesEleves(35) AS infoEtudiant

mesEleves.notes[1](5) = 96
A la dernière ligne de cet exemple, la note numérotée 1 de l’étudiant numéroté 5 se voit attribuer la valeur 96.

Voir Aussi :