From QB64 Wiki
The DATA statement creates a line of fixed program information separated by commas. The DATA can be READ by the program.
Syntax: DATA [value1, value2, ...]
- 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 RESTORE call uses no label.
- 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. Otherwise RESTORE will only read the first data field!
- QB comma separations were flexible to allow column alignments when creating them. QB64 removes spacing between commas.
- STRING DATA values with end spaces, QB keywords and commas in them require 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 is past the last data value, an "Out of Data" error will occur! Use end of data markers when necessary!
- Qbasic allowed programmers to add DATA fields anywhere because the IDE separated the main code from other procedures.
- Do not place labeled DATA fields after SUB or FUNCTION procedures! QB64 will FAIL to RESTORE properly!
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
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
- Note: A specific array index can be passed in a parameter or the entire array can be passed using empty brackets.