READ DATA RESTORE


DATA statements kunnen in Liberty BASIC programma's worden ingebed om toegang 
tot strings en numerieke gegevens gemakkelijker te maken.  
DATA wordt door het programma  ingelezen met het READ statement, 
die de DATA items één voor één inleest.  Het  RESTORE statement zorgt ervoor 
dat de volgende READ statement begint te lezen bij het  eerst vermelde DATA statement, 
of bij het eerste DATA statement na een gespecificeerd aftaketiket als men 
die in het RESTORE statement heeft inbegrepen.  
Deze methodes kunnen worden gebruikt om gegevens in arrays te zetten, 
waarbij dit dus een gemakkelijke methode is om arrays te vullen.

DATA

Het DATA statement  is een geschikte manier om gegevens in programma's op te nemen. 
De DATA (gegevens) kunnen meer dan eens worden gelezen (zo vaak als u wilt) door 
gebruik te maken van het READ statement.  Een DATA statement voert in werkelijkheid  
geen actie uit wanneer het in de code van het programma wordt ontmoet. 
DATA en READ horen bij elkaar.

  data "one", 1, "two", 2, "three", 3, "end", 0

Één of meerdere DATA statements vormen de gehele reeks data elementen.  
Bijvoorbeeld, kunnen de gegevens die in het voorbeeld hierboven staan ook in meer 
dan één DATA statement worden vermeld:

'hier is onze data in twee in plaats van één regel
  data "one", 1, "two", 2
  data "three", 3, "end", 0
 
DATA is lokaal voor een subroutine of de functie waarin het gedefinieerd staat.

READ

Dit haalt de volgende string en/of de numerieke waarden uit de DATA statement in een programma.  
Het READ statement zal genoeg items ophalen om de variabele namen te vullen die 
de programmeur specificeert.  De opgehaalde waarden zullen worden omgezet om zich 
aan de vermelde variabelen aan te passen (string of numeriek).

Voorbeeld:

  ' lees de getallen en hun omschrijvingen  
  while desc$ <> "end"
    read desc$, value
    print desc$; " is the name for "; value
  wend
  'hier is onze data
  data "one hundred", 100, "two", 2, "three", 3, "end", 0

  end

U kunt ook numerieke items inlezen:

  'read the numbers and their descriptions
  while desc$ <> "end"
    read desc$, value$
    print desc$; " is the name for "; value$; ", length="; len(value$)
  wend
  'here is our data
  data "one hundred", 100, "two", 2, "three", 3, "end", 0

  end

RESTORE

RESTORE zal het lezen van het DATA statement terugstellen zodat de volgende READ 
informatie van de eerste DATA statement in het programma zal ontvangen 
(of van het eerste DATA statement in een functie of een subprogramma,
als dat de plaats is waar RESTORE wordt uitgevoerd).

Voorbeeld:

  'toon me al mijn data in hoofdletters
  while string$ <> "end"
    read string$
    print upper$(string$)
  wend
  string$ = ""  'clear this for next while/wend loop

  'stel nu het lezen van data terug naar het begin
  
  restore

 'show me nu al mijn data in klein letters 
   while string$ <> "end"
    read string$
    print lower$(string$)
  wend

  data "The", "Quick", "Brown", "Fox", "Jumped"
  data "Over", "The", "Lazy", "Dog", "end"

  end

RESTORE [branchLabel]

Als optie kunt u ervoor kiezen een label te gebruiken:

  'show me my data in all uppercase
  while string$ <> "end"
    read string$
    print upper$(string$)
  wend
  string$ = ""  'clear this for next while/wend loop

  'now reset the data reading to the second part
  restore [partTwo]

  'show me my data in all lowercase
  while string$ <> "end"
    read string$
    print lower$(string$)
  wend

  data "Sally", "Sells", "Sea", "Shells", "By", "The", "Sea", "Shore"
[partTwo]
  data "Let's", "Do", "Only", "This", "A", "Second", "Time", "end"


  end

Inlezen van DATA naar Arrays 
DATA wordt ingelezen (READ) naar variabelen.  Het kan niet direct worden geplaatst (READ) 
in een array. Om toch een array te vullen met DATA items, moet men eerst het item 
inlezen (READ) naar een variabele, en die variabele daarna gebruiken 
om een index (element) van een array te vullen.


'fout
read numericArray(1)

'correct:
read num1

numericArray(1) = num1

Error Handling

Elke poging om meer DATA items te lezen dan in de DATA lijst aanwezig zijn laat het programma met een fout stoppen. Merk op dat in de voorbeelden hierboven, een "end" markering in de DATA werd geplaatst en wanneer die wordt bereikt, het programma op houdt met het verder lezen van DATA. Dit is een uitstekende manier om fouten te verhinderen te laten ontstaan. Als geen eindmarkering of een vlag van één of andere soort wordt gebruikt, zorg er dan voor dat er andere controles zijn die voorkomen dat het READ statement meer data items probeert te lezen dan er in de DATA statements staan. See also: READ, RESTORE, READ and DATA