Difference between revisions of "READ"

From QB64 Wiki
Jump to navigation Jump to search
m (Text replacement - "Qbasic" to "QBasic")
 
(41 intermediate revisions by 4 users not shown)
Line 1: Line 1:
Purpose:
The '''READ''' statement reads values from a [[DATA]] field and assigns them to one or a comma separated list of variables.
To read values from a DATA statement and assign them to variables.


Syntax:
READ ''list of variables''


Comments:
{{PageSyntax}}
A READ statement must always be used with a DATA statement.
::: [[READ]] value1$[, value2!, value3%, ...]


READ statements assign variables to DATA statement values on a one-to-one basis.


READ statement variables may be numeric or string, and the values read must agree with the variable types specified. If they do not agree, a "Syntax error" results.
* READ statements assign variables to [[DATA]] statement values on a one-to-one basis sequentially.
* A single READ statement may access one or more [[DATA]] values. They are accessed in the order set.
* Several READ statements may access the same [[DATA]] statement block at the following sequential position.
* [[DATA]] can be READ using [[STRING]] or numerical [[TYPE]] variables singularly or in a comma separated list:
:: [[STRING]] READ variables can read quoted or unquoted text or numerical DATA values!
:: Numerical type READ variables can only read '''unquoted''' numerical DATA values!
::'''If they do not agree, a [[ERROR Codes|"Syntax error"]] may result when run reading string data as numerical values!'''
* If the number of variables specified is fewer than the number of elements in the DATA statement(s), subsequent READ statements begin reading data at the next unread element. If there are no subsequent READ statements, the extra data is ignored.
* If variable reads exceed the number of elements in the DATA field(s), an [[ERROR Codes|"Out of data" error]] will occur!
* Use the [[RESTORE]] statement to reread DATA statements from the start, with or without a line label as required.
* [[ACCESS]] READ can be used in an [[OPEN]] statement to limit file access to read only, preserving file data.
* '''WARNING! Do not place DATA fields after [[SUB]] or [[FUNCTION]] procedures! QB64 will FAIL to compile properly!'''
: QBasic allowed programmers to add DATA fields anywhere because the IDE separated the main code from other procedures.


A single READ statement may access one or more DATA statements. They are accessed in order. Several READ statements may access the same DATA statement.


If the number of variables in list of variables exceeds the number of elements in the DATA statement(s), an "Out of data" message is printed.
''Example 1:'' Placing data into an array.
{{CodeStart}}
{{Cl|DIM}} A(10) AS {{Cl|SINGLE}}
{{Cl|FOR...NEXT|FOR}} I = 1 {{Cl|TO}} 10
  {{Cl|READ}} A(I)
{{Cl|NEXT}} I
{{Cl|FOR...NEXT|FOR}} J = 1 {{Cl|TO}} 10
  {{Cl|PRINT}} A(J);
{{Cl|NEXT}}
{{Cl|END}}


If the number of variables specified is fewer than the number of elements in the DATA statement(s), subsequent READ statements begin reading data at the first unread element. If there are no subsequent READ statements, the extra data is ignored.
{{Cl|DATA}} 3.08, 5.19, 3.12, 3.98, 4.24
{{Cl|DATA}} 5.08, 5.55, 4.00, 3.16, 3.37 '' ''
{{CodeEnd}}
{{OutputStart}}
3.08  5.19  3.12  3.98  4.24  5.08  5.55  4  3.16  3.37
{{OutputEnd}}
:''Explanation:'' This program reads the values from the DATA statements into array A. After execution, the value of A(1) is 3.08, and so on. The DATA statements may be placed anywhere in the program; they may even be placed ahead of the READ statement.


To reread DATA statements from the start, use the RESTORE statement.


Examples:
''Example 2:'' Reading three pieces of data at once.
{{CodeStart}}
PRINT " CITY ", " STATE  ", " ZIP"
PRINT {{Cl|STRING$}}(30, "-")  'divider
  {{Cl|READ}} C$, S$, Z&
PRINT C$, S$, Z&


<nowiki>
{{Cl|DATA}} "DENVER,", COLORADO, 80211 '' ''
FOR I=1 TO 10
{{CodeEnd}}
   READ A(I)
{{OutputStart}}
NEXT I
   CITY       STATE      ZIP
DATA 3.08, 5.19, 3.12, 3.98, 4.24
------------------------------
DATA 5.08, 5.55, 4.00, 3.16, 3.37
DENVER,     COLORADO     80211
</nowiki>
{{OutputEnd}}
:''Note:'' String DATA values do not require quotes unless they contain commas, end spaces or QBasic keywords.


This program segment reads the values from the DATA statements into array A. After execution, the value of A(1) is 3.08, and so on. The DATA statements may be placed anywhere in the program; they may even be placed ahead of the READ statement.


PRINT
PRINT "CITY", "STATE", "ZIP"
READ C$, S$, Z
DATA "DENVER,", "COLORADO", 80211
PRINT C$, S$, Z


RUN
''See also:''
CITY STATE ZIP
* [[DATA]], [[RESTORE]]
DENVER, COLORADO 80211
* [[PRINT USING]]
* [[OPEN]] FOR [[INPUT (file mode)|INPUT]] {{text|(file statement)}}
 
 
{{PageNavigation}}

Latest revision as of 13:09, 10 February 2021

The READ statement reads values from a DATA field and assigns them to one or a comma separated list of variables.


Syntax

READ value1$[, value2!, value3%, ...]


  • READ statements assign variables to DATA statement values on a one-to-one basis sequentially.
  • A single READ statement may access one or more DATA values. They are accessed in the order set.
  • Several READ statements may access the same DATA statement block at the following sequential position.
  • DATA can be READ using STRING or numerical TYPE variables singularly or in a comma separated list:
STRING READ variables can read quoted or unquoted text or numerical DATA values!
Numerical type READ variables can only read unquoted numerical DATA values!
If they do not agree, a "Syntax error" may result when run reading string data as numerical values!
  • If the number of variables specified is fewer than the number of elements in the DATA statement(s), subsequent READ statements begin reading data at the next unread element. If there are no subsequent READ statements, the extra data is ignored.
  • If variable reads exceed the number of elements in the DATA field(s), an "Out of data" error will occur!
  • Use the RESTORE statement to reread DATA statements from the start, with or without a line label as required.
  • ACCESS READ can be used in an OPEN statement to limit file access to read only, preserving file data.
  • WARNING! Do not place DATA fields after SUB or FUNCTION procedures! QB64 will FAIL to compile properly!
QBasic allowed programmers to add DATA fields anywhere because the IDE separated the main code from other procedures.


Example 1: Placing data into an array.

DIM A(10) AS SINGLE FOR I = 1 TO 10 READ A(I) NEXT I FOR J = 1 TO 10 PRINT A(J); NEXT END DATA 3.08, 5.19, 3.12, 3.98, 4.24 DATA 5.08, 5.55, 4.00, 3.16, 3.37

3.08 5.19 3.12 3.98 4.24 5.08 5.55 4 3.16 3.37

Explanation: This program reads the values from the DATA statements into array A. After execution, the value of A(1) is 3.08, and so on. The DATA statements may be placed anywhere in the program; they may even be placed ahead of the READ statement.


Example 2: Reading three pieces of data at once.

PRINT " CITY ", " STATE ", " ZIP" PRINT STRING$(30, "-") 'divider READ C$, S$, Z& PRINT C$, S$, Z& DATA "DENVER,", COLORADO, 80211

CITY      STATE     ZIP ------------------------------ DENVER,  COLORADO    80211

Note: String DATA values do not require quotes unless they contain commas, end spaces or QBasic keywords.


See also:



Navigation:
Keyword Reference - Alphabetical
Keyword Reference - By Usage
Main Wiki Page