DATA: Difference between revisions
Jump to navigation
Jump to search
Navigation:
Main Page with Articles and Tutorials
Keyword Reference - Alphabetical
Keyword Reference - By usage
Report a broken link
(Created page with "The DATA statement creates a line of fixed program information separated by commas. The DATA can be later READ by the program at runtime. {{PageSyntax}} : DATA [value1, value2, ...] {{PageDescription}} * 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 mai...") |
No edit summary |
||
Line 9: | Line 9: | ||
* DATA is used at the beginning of every data field line with commas separating the values that follow. | * 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.''' | * 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 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. | * DATA is best placed after the main program code. | ||
** '''QB64''' DATA can be placed inside a [[SUB]] or [[FUNCTION]] procedures. | ** '''QB64''' DATA can be placed inside a [[SUB]] or [[FUNCTION]] procedures. | ||
Line 24: | Line 24: | ||
{{PageExamples}} | {{PageExamples}} | ||
''Example 1:'' Creating two DATA fields that can be [[READ]] repeatedly using [[RESTORE]] with the appropriate line label. | ''Example 1:'' Creating two DATA fields that can be [[READ]] repeatedly using [[RESTORE]] with the appropriate line label. | ||
{{CodeStart}} | {{CodeStart}} | ||
{{Cl|RESTORE}} Database2 | {{Cl|RESTORE}} Database2 | ||
{{Cl|READ}} A$, B$, C$, D$ 'read 4 string values from second DATA field | {{Cl|READ}} A$, B$, C$, D$ 'read 4 string values from second DATA field | ||
Line 32: | Line 32: | ||
FOR i = 1 TO 18 | FOR i = 1 TO 18 | ||
{{Cl|READ}} number% 'read first DATA field 18 times only | {{Cl|READ}} number% 'read first DATA field 18 times only | ||
PRINT number%; | PRINT number%; | ||
NEXT | NEXT | ||
Line 42: | Line 42: | ||
Database2: | Database2: | ||
{{Cl|DATA}} "Hello, ", "world! ", Goodbye, work! | {{Cl|DATA}} "Hello, ", "world! ", Goodbye, work! | ||
{{CodeEnd}} | {{CodeEnd}} | ||
{{OutputStart}}Hello world! Goodbyework! | {{OutputStart}}Hello world! Goodbyework! | ||
Line 50: | Line 50: | ||
''Example 2:'' How to [[RESTORE]] and [[READ]] DATA in a [[SUB]] procedure in QB64. Line labels can be used for multiple DATA fields. | ''Example 2:'' How to [[RESTORE]] and [[READ]] DATA in a [[SUB]] procedure in QB64. Line labels can be used for multiple DATA fields. | ||
{{CodeStart}} | {{CodeStart}} | ||
{{Cl|DIM}} {{Cl|SHARED}} num(10) 'shared array or must be passed as a parameter | {{Cl|DIM}} {{Cl|SHARED}} num(10) 'shared array or must be passed as a parameter | ||
ReadData 2 '<<<<<<< change value to 1 to read other data | ReadData 2 '<<<<<<< change value to 1 to read other data | ||
Line 68: | Line 68: | ||
mydata2: | mydata2: | ||
{{Cl|DATA}} 10,9,8,7,6,5,4,3,2,1 | {{Cl|DATA}} 10,9,8,7,6,5,4,3,2,1 | ||
{{Cl|END SUB}} | {{Cl|END SUB}} | ||
{{CodeEnd}} | {{CodeEnd}} | ||
{{OutputStart}} 10 9 8 7 6 5 4 3 2 1 {{OutputEnd}} | {{OutputStart}} 10 9 8 7 6 5 4 3 2 1 {{OutputEnd}} | ||
{{PageSeeAlso}} | {{PageSeeAlso}} | ||
* [[READ]] | * [[READ]] | ||
* [[RESTORE]] | * [[RESTORE]] | ||
* [[SUB]], [[FUNCTION]] | * [[SUB]], [[FUNCTION]] |
Revision as of 01:24, 23 January 2023
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.
- 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 "Out of Data" error 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.
Examples
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. 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