Home > CBM > BASIC > Keywords > Restore
180 Subpages: (divide), (equal), (less), (minus), (more), (multiply), (plus), (power), Abs, And, Append, Asc, Atn, Auto, Backup, Bank, Begin, Bend, Bload, Boot, Box, Bsave, Bump, Catalog, Char, Chr, Circle, Close, Clr, Cmd, Collect, Collision, Color, Concat, Cont, Copy, Cos, Data, Dclear, Dclose, Dec, Def, Delete, Dim, Directory, Dispose, Dload, Do, Dopen, Draw, Ds, Ds string, Dsave, Dverify, El, Else, End, Envelope, Er, Err, Exit, Exp, Fast, Fetch, Filter, Fn, For, Fre, Get, Get num, Getkey, Go, Gosub, Goto, Graphic, Gshape, Header, Help, Hex, If, Input, Input num, Instr, Int, Joy, Key, Left, Len, Let, List, Load, Locate, Log, Loop, Mid, Monitor, Movspr, New, Next, Not, Off, On, Open, Or, Paint, Peek, Pen, Pi, Play, Pointer, Poke, Pos, Pot, Print, Print num, Pudef, Quit, Rclr, Rdot, Read, Record, Rem, Rename, Renumber, Resume, Return, Rgr, Right, Rlum, Rnd, Rreg, Rspcolor, Rsppos, Rsprite, Run, Rwindow, Save, Scale, Scnclr, Scratch, Sgn, Sin, Sleep, Slow, Sound, Spc, Sprcolor, Sprdef, Sprite, Sprsav, Sqr, Sshape, St, Stash, Step, Stop, Str, Swap, Sys, Tab, Tan, Tempo, Then, Ti, Ti string, To, Trap, Troff, Tron, Until, Using, Usr, Val, Verify, Vol, Wait, While, Width, Window, Xor

KeywordAbbreviationToken (hex)Version(s)Classification
RESTORERE{Shift+S}8C1.0 to 7.0Command and Statement

 
Syntax 
RESTORE lineNumber ] ...
 
ParametersTypeLegal Value(s)Default ValueNote(s)
lineNumberUnsigned Integer0 ~ 63999first line of programOnly valid in v3.5+; lineNumber must exist if specified
 
 
 
Purpose 
Internal BASIC state management / user DATA access management.

 
 
Remarks 
The statement resets the secret DATA pointer to (by default) the beginning of the program.  In a way, it is the opposite of READ (which advances the DATA pointer).
 
Without a lineNumber, this statement simply allows the program to re-read DATA that has previously been READ.  It might be used to re-set the initial state of the program; or it might be used to READ the same DATA a second (third, etc.) time for some other use (parallel/duplicate arrays maybe).
 
With a lineNumber (only available in v3.5+)the possibilites increase a lot.  Instead of simply re-setting the DATA pointer (like rewinding a tape), it allows for random access to DATA (almost) anywhere in the program (like a random disk file).  Almost anywhere means the RESTORE statement can only set the DATA pointer to the start of a program line.  Most DATA statements have multiple values, but there is no way to specify which one (it always sets the DATA pointer to the start of a line).
 
If a lineNumber is specified, it must exist or an UNDEF'D STATEMENT ERROR is generated.  The lineNumber need not have DATA statements on it; in this case, some later line in the program should have DATA statements (otherwise the next READ would generate OUT OF DATA ERROR).
 
 
Example:
NEW

READY.
10 DATA SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY
20 FOR I = 1 TO 7
30 READ D$(I) : NEXT : REM initialize table
40 RESTORE : REM reset data pointer
50 READ N$: PRINT N$: REM re-read first item, and print it
RUN
SUNDAY

READY.
That isn't a very practical example... you could just PRINT D$(1) instead of re-reading the data!  But hopefully it makes the action of RESTORE clear to you.
 
 
See Also 
 
 
 
Compare With 

 
 
Contrast With 
 
© H2Obsession, 2014