DATA - QB64Official/qb64 GitHub Wiki

The DATA statement creates a line of fixed program information separated by commas. The DATA can be later READ by the program at runtime.

Syntax

DATA [value1, value2, ...]

Description

  • DATA is used at the beginning of every data field line with commas separating the values that follow.
  • Values can be any literal STRING or numerical type. Variables cannot be used.
  • DATA fields can be placed and READ consecutively in the main program code body with or without line labels for RESTORE.
  • DATA is best placed after the main program code.
    • QB64 DATA can be placed inside a SUB or FUNCTION procedures.
  • RESTORE will only read the first data field if the DATA is not labeled or no label is specified in a RESTORE call.
  • When using multiple DATA fields, label each data field with a line label so that each data pointer can be reset for multiple reads with RESTORE linelabel.
  • QBasic comma separations were flexible to allow column alignments when creating them. QB64 removes spacing between commas.
  • STRING DATA values with end spaces, QBasic keywords and values that include the comma character must be enclosed in quotation marks.
  • DATA fields can only be created by the programmer and cannot be changed by a user or lost.
  • Comments after a data line require a colon before the comment.
  • If a READ statement attempts to read past the last data value, an ERROR Codes will occur. Use end of data markers when necessary.
  • DATA fields can be placed after SUB or FUNCTION procedures, but line labels are not allowed.

Example(s)

Creating two DATA fields that can be READ repeatedly using RESTORE with the appropriate line label.


RESTORE Database2
READ A$, B$, C$, D$         'read 4 string values from second DATA field
PRINT A$ + B$ + C$ + D$     'note that quoted strings values are spaced

RESTORE Database1
FOR i = 1 TO 18
  READ number%                     'read first DATA field 18 times only
  PRINT number%;                   
NEXT

END

Database1:
DATA 1, 0, 0, 1, 1, 0, 1, 1, 1
DATA 2, 0, 0, 2, 2, 0, 2, 2, 2 :       ' DATA line comments require a colon

Database2:
DATA "Hello, ", "world! ", Goodbye, work! 


Hello world! Goodbyework!
1  0  0  1  1  0  1  1  1  2  0  0  2  2  0  2  2  2

How to RESTORE and READ DATA in a SUB procedure in QB64. Line labels can be used for multiple DATA fields.


DIM SHARED num(10) 'shared array or must be passed as a parameter
ReadData 2 '<<<<<<< change value to 1 to read other data
FOR i = 1 TO 10
  PRINT num(i);
NEXT
END

SUB ReadData (mode)
IF mode = 1 THEN RESTORE mydata1 ELSE RESTORE mydata2
FOR i = 1 TO 10
  READ num(i)
NEXT

mydata1:
DATA 1,2,3,4,5,6,7,8,9,10
mydata2:
DATA 10,9,8,7,6,5,4,3,2,1
END SUB 


 10  9  8  7  6  5  4  3  2  1 

See Also