DATA - QB64 Wiki


From QB64 Wiki

Jump to: navigation, search

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!

Example 1: 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

Example 2: How to RESTORE and READ DATA in a SUB procedure in QB64 only. 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

Note: A specific array index can be passed in a parameter or the entire array can be passed using empty brackets.

See also:

Go to Keyword Reference - Alphabetical
Go to Keyword Reference - By usage
Go to Main WIKI Page
Personal tools