Random Access Files

OPEN filename FOR RANDOM AS #handle LEN=n

Om een bestand in de random access mode te benaderen en te bewerken, moet deze met een OPEN statement geopend worden.
Wanneer het bestand niet meer gebruikt, en in elk geval voordat uw programma eindigt, dient u het met het CLOSE commando af te sluiten.
Zie ook : Filedialog, File Operations, Path and Filename , PUT, FIELD, GET, GETTRIM

Een Random Access File (RAF bestand) bestaat uit records.
Het gehele bestand is verdeeld in vele records.
Elk record heeft dezelfde lengte. De lengte wordt gespecificeerd wanneer het bestand wordt geopend met de LEN parameter.
Het onderstaande voorbeeld opent een bestand " members.dat" en zet de recordlengte op 256

OPEN "members.dat" FOR RANDOM AS #1 LEN=256

Lezen en schrijven in een bestand dat willekeurig toegankelijk is (RAF)
wordt stuk voor stuk per record gedaan. Het record mag zich echter overal in de file bevinden.
Een record wordt ingelezen door het statement GET of met GETTRIM.
Een record wordt naar het bestand geschreven met het PUT statement.
Deze statements worden hierna verder gedetailleerd behandeld.

field

Field #handle,
Elk record is onder verdeeld in "fields (velden)", elk met een gegeven lengte.
Het field statement moet ingevoegd worden direct na het OPEN statement om de grootte van elk veld op te zetten.
Elk veld is benoemd door een variabele naam en heeft een specifieke lengte.
Wanneer de lengtes van alle velden bij elkaar geteld worden,
dan zal hun som gelijk moeten zijn aan de recordlengte die bij het OPEN statement met de LEN parameter was meegegeven.
In het bovenstaande voorbeeld is dat dus 256.
Een "$" teken geeft aan dat het betrokken veld dat zal bevatten die door een string variabele zal worden benaderd.
Indien er geen "$" teken is dan zal het veld een getal bevatten. De velden voor "members.dat" zouden er als volgt uit kunnen zien:

OPEN "members.dat" FOR RANDOM AS #1 LEN=256

FIELD #1,_ ' set up the fields for file opened as #1
90 AS Name$,_ ' 1st 90 bytes contains Name$, string
110 AS Address$,_ ' 2nd 110 bytes contains Address$, string
50 AS Rank$,_ ' 3rd 50 bytes contains Rank$, string
6 AS IDnumber ' 4th 6 bytes contains IDnumber, numeric

De waarde achter "LEN=" is 256, en is verkregen door het optellen van 90 + 110 + 50 + 6
oftewel de totale lengte van alle velden in FIELD#. Het FIELD statement dient na het OPEN statement te staan
en het moet gebruikt worden voordat u probeert te lezen of te schrijven van of naar het bestand door middel van GET of PUT.

put


PUT #handle, number

Dit statement wordt gebruikt om de gegevens die vervat zijn in de variabelen die in de
FIELD statement zijn genoemd naar een gespecificeerd record te schrijven.
De records in een RAF bestand zijn genummerd beginnend bij 1 en niet 0.
Als de lengte van een variabele in een gegeven veld korter is dan de veldlengte specificeert,
dan worden spaties toegevoegd om aan te vullen. Als de lengte van de data groter is dan de veldlengte,
dan wordt de data op de door FIELD gespecificeerde lengte afgekort.

Om data in record 3 van het hierboven vermelde bestand te plaatsen doen we het volgende:

Name$ = "John Q. Public"
Address$ = "456 Maple Street, Anytown, USA"
Rank$ = "Expert Programmer"
IDnumber = 99

PUT #1, 3

 

get


GET #handle, number

Dit statement leest een volledig record in en vult de variabelen die in het
FIELD statement zijn genoemd.

GET #1,3

Print Name$ would produce "John Q. Public "
Print Address$ would produce "456 Maple Street, Anytown, USA "
Print Rank$ would produce "Expert Programmer "

print IDnumber would produce "99"

enzovoort

gettrim


GETTRIM #handle, number
Dit commando haalt het record op dezelfde manier op als GET dat doet,
maar nu verwijderd het alle leidende of nalopende spaties in het record.

GETTRIM #1,3

Print Name$ would produce "John Q. Public"
' no blank spaces are included