Directives 

READ DATA

Read Data from Program

Formats

1. Read Data:

READ DATA varlist,...[,ERR=stmtref]

2. Read from String:

READ DATA FROM data$ [,fileopt] TO varlist

Where:

data$

Data to be parsed into the varlist. String expression.

fileopt

Supported file options (see File Options):

ERR=stmtref

Error transfer

REC=name$

Record prefix (REC=VIS(string$) can also be used where string$ contains the record prefix.)

SEP=char$

Default separator character to parse data. Hex or ASCII string value. Dynamic SEP=* separators are not supported.

If the READ DATA statement also contains a REC= clause, the REC= clause must precede the SEP= clause.

stmtref

Program line number or statement label to which to transfer control.

varlist

List of variables to receive the values from the DATA statements. Comma-separated numeric and string variables are allowed.

Description

Use the READ DATA directive to read data embedded in a program.

Format 1

Read Data

READ DATA varlist,...[,ERR=stmtref]

Use this format to transfer the values/expressions from data statements in a program to the variables identified in varlist. When READ DATA is executed, PxPlus evaluates each expression in the data statements in order and places the values into the corresponding variables defined in your READ DATA directive.

PxPlus increments an internal pointer to the next data expression during the reading of data$. When the end of a data statement is reached, the next data statement in the program is used. Use a RESTORE directive to reset the pointer to the start of the first data statement.

Example 1: 

Include the END= or ERR= option to avoid an Error #2 when the pointer is at end of file:

0010 data "Dog","Cat","Pig"
0020 data "Pig","Cat","Dog"
0030 read data X$, end=1000
0040 print X$," | ",
0050 goto 0030
1000 restore
1010 print "DONE"; stop

->begin
->run
Dog | Cat | Pig | Pig | Cat | Dog | DONE

Format 2

Read Data from String

READ DATA FROM data$[,REC=string$][SEP=char$] TO varlist[,ERR=stmtref]

You can READ DATA FROM a string to initialize a list of variables or to parse a record into different IOLists.

Example 2 - Initialize Variables: 

You can READ DATA to an IOList to initialize all variables:

0010 ! Clear all variables in an IOLIST
0100 read data from "" to iol=8000
8000 iolist ID$,NAME$,AMT

0010 read data from "",rec=WORK$ to iol=iol(WORK)

Example 3 - Parse Record: 

You can use READ DATA to parse a record into different IOLists:

0100 read record (1)R$
0200 if R$(1,1)="T" then read data from R$ to iol=8000
0200: else read data from R$ to iol=8010
8000 iolist TYPE$,TRN_DATE$,TRN_AMOUNT
8010 iolist TYPE$,PAY_DATE$,PAY_AMOUNT

See Also

DATA Define Data Elements
RESTORE Reset Program Data Position
BEGIN Reset Files and Variables
LOAD Read Program into Memory