Syntaxe

Écrit des valeurs constantes dans une DATASECTION. READ les prend une à une, dans l'ordre ; RESTORE déplace la position de lecture.

DATASECTION
DATA SECTION
  [<label>:]
  DATA[.<type>] <literal>[, <literal>…]
ENDDATASECTION
END DATASECTION
END DATA SECTION
READ[.<type>] <target>
RESTORE [<label>]

S’écrit aussi : DATASECTION, ENDDATASECTION, READ, RESTORE

Les éléments

<label>Un nom suivi de : dans la section. RESTORE seul revient à la première valeur ; RESTORE <label> à la première valeur après l'étiquette. Les étiquettes ignorent la casse.
<type>Un type par ligne DATA : aucun ou .i (aussi .l .q .w .b .a .u .c) pour des entiers, .f ou .d pour des décimaux, .s pour des textes. Sur READ, il fixe ce qu'on lit.
<literal>Une valeur littérale : un nombre (négatif, décimal, %1010, 0c12, 0x10, 1.25e2), TRUE ou FALSE, ou un texte entre guillemets sur une ligne .s.
<target>Où va la valeur : une variable, une case de tableau (a(1) ou a[1]), ou un champ (p.x).

À savoir

  • Sans READ.<type>, la nature vient du sigil de la cible : $ lit un texte, # un décimal, sans sigil un entier. Lire un entier sur 2.9 donne 2.
  • DATA n'est admis que dans une DATASECTION. La section n'est pas exécutée : placez-la en haut ou en bas du programme.
  • DATA 1 + 2, et un texte sur une ligne sans .s, sont des erreurs de compilation. Une étiquette inconnue après RESTORE aussi.
  • Un type qui ne correspond pas arrête le programme (BASIC READ type does not match DATA), de même que lire après la dernière valeur (BASIC READ reached the end of DATA).
  • READ a, b compile en un programme qui ne démarre pas. Une seule cible par ligne READ.
  • Une étiquette de données n'est pas une étiquette de GOSUB : GOSUB ne peut pas l'atteindre. AGK n'a pas de DATA ; aukimi suit la DataSection typée de PureBasic.

Exemple

RESTORE LevelsREAD countFOR i = 1 TO count  READ name$  READ.f speed#  Console(name$ + " " + Str(speed#))   ' Forest 1.5, then Cave 2.25NEXTRESTOREREAD firstConsole(Str(first))   ' 99DATASECTION  DATA 99  Levels:  DATA 2  DATA.s "Forest"  DATA.f 1.5  DATA.s "Cave"  DATA.f 2.25ENDDATASECTION
Dans le manuel : Tableaux, listes et maps

Voir aussi