You should use the establish procedure
to create a new book. Here is a program fragment which creates a new
book called results
:
FILE outf; IF establish(outf, "results", stand out channel, 0,0,0)/=0 THEN print(("Cannot establish book results", newline)); exit(1) FI
As you can see, establish
has a similar header to
open. What are the integers used for? The header for
establish
is
PROC establish = (REF FILE f, STRING idf, CHANNEL chann, INT p,l,c)INT:
The p
, l
and c
in
establish
determine the maximum number of pages, lines
and characters in the book which is being created. Values of
0
for all three integers mean that the file should be
established with zero length. However, they are ignored by the
stand out channel in the QAD standard prelude provided with
the a68toc compiler.
The procedure used to write data to a book is put. Its header is
PROC put=(REF FILE f,[]SIMPLOUT items)VOID:
You can examine the source of the standard prelude to see how the
mode SIMPLOUT
is declared.
Again, newline and
newpage can be used independently of
put
as in the following fragment:
FILE outf; IF establish(outf, "newbook", stand out channel, 0,0,0)/=0 THEN put(stand error, ("Cannot establish newbook", newline)); exit(2) ELSE put(outf,("Data for newbook",newline)); FOR i TO 1000 DO put(outf,i) OD; newline(outf); close(outf) FI
On output, the newline character is written to the book.
newpage
behaves just like newline
except
that a form feed character is searched for on input, and written on
output.
The procedure establish
can fail if the disk you are
writing to is full or you do not have write access (in a network, for
example) in which case it will return a non-zero value.
When you have completed sending data to a book, you must close it
with the close procedure. This is
particularly important with books you write to because the channel is
buffered as explained above. Using close
ensures that any
remaining data in the buffer is flushed to the book.
The procedure print uses the REF
FILE
name stand out. So
print(("Your name",newline))
is equivalent to
put(stand out,("Your name",newline))
Again, stand out
is open when your program is started
and it should not be closed. Transput via stand out
is
unbuffered. You cannot read from stand out
, nor write to
stand in
. The procedure write
is synonymous
with print
.
result
. Ansprimes
. AnsSian Mountbatten 2012-01-19