This is an old revision of the document!
Using DATA statements in libraries
by Richard Russell, March 2011
Because you cannot use line numbers or labels in libraries (or other INSTALLed modules), the conventional forms of the RESTORE statement cannot be used. At first sight it might appear that this precludes the use of DATA statements in libraries, but in fact they can be used by means of the relative version RESTORE +.
For example the following code could be placed in a library:
DEF PROCrestore
RESTORE +1
ENDPROC
DATA Here,are,some,data,items,in,a,library
DATA Here,is,some,more,data
Calling PROCrestore moves the data pointer so that the next items to be READ will be taken from the subsequent DATA statements:
PROCrestore
READ A$,B$,C$,D$
(this code could be in the main program or in a library).
Note the use of RESTORE +1 rather than RESTORE +2, as might superficially seem more correct. This ensures that the code will work correctly even if the library is crunched using the concatenate lines option (resulting in the ENDPROC being moved onto the same line as the RESTORE).
If you find that disconcerting you could always move the ENDPROC until after the DATA statements:
DEF PROCrestore
RESTORE +1
DATA Here,are,some,data,items,in,a,library
DATA Here,is,some,more,data
ENDPROC