2.4.2.3. - Reading From Files
The first function below
is for reading strings from a file one line at a time.
The second and third functions cause spec to switch its source of
command input from the keyboard to the specified files.
getline(file [, arg ])-
This function reads successive lines from the ASCII file
file
each time it is called
and returns the
string so obtained, including the trailing newline.
If
arg
is the string
"open", the function returns zero if the file can opened for reading.
Otherwise
-1 is returned.
If
arg
is
"close", the file is closed and zero is returned.
If
arg
is zero, the first line of the file is returned.
If only the first argument is present, the next line of the file is
read and returned.
At the end of the file, a -1 is returned.
The previous file, if any, is closed and the new file is
opened automatically when
the filename argument changes
(at least in this preliminary implementation).
dofile(file [, line_num|search_pattern ])-
Queues the file
file
for reading commands.
file
must be a string constant or expression.
Returns nonzero if the file doesn't exist or permit read access.
As of release 4.05.01, an optional second argument can specify a
line number or a text pattern that will be used to locate the point
in the file to begin reading.
If the argument is an integer, the number specifies at which line
to start reading the file.
(Currently, only positive integers are allowed.)
If the argument is anything else, it is considered a search string, and
text is read from the file starting
at the first line containing that search string.
The metacharacters
*,
which matches any string, and
?,
which matches any single character, are allowed in the search string.
Initial and trailing white space is ignored in the file.
qdofile(file)-
As above, but does not show the contents of the file on the screen
as the file is read.
Normally, most errors that occur while reading from a command file cause
spec to reset to the level of the main interactive prompt with any
open command files then closed.
However, as of release 4.05.01, the
spec_par()
option
"keep_going" is available to override that behavior.
See
spec_par() 2.4.1.2
.
When a command file is opened within a statement block, the source of input
isn't switched to the command file until all the commands in the statement
block are executed.
Thus it isn't possible to execute commands from a command file
within a statement block.
Note, though, the
getline()
(2.4.2.3
)
function is available to scan strings
from files.
When multiple command files are queued on a single command line,
the input source
can only change after the current line is exhausted, as
the following example demonstrates:
1.FOURC> print "hi";dofile("file1");dofile("file2");print "bye hi
bye
FOURC.2> Reading "file2".
print "This is text from file2"
This is text from file2
FOURC.1> Reading "file1".
print "This is text from file1"
This is text from file1
2.FOURC> Here
file1
contains the single line
print "This is text from file1",
and
file2
contains
print "This is text from file2".
|