!head('Random Access Input/Output')
the "DEFINE FILE" statement is not currently available, but there is a subroutine
"DFILE" that serves the same purpose. its calling sequence is:
!i('CALL DFILE(unit,lfile,lrec,av)')
!where(unit) is the logical unit.
!var(lfile) is the number of records in the file (ignored currently).
!var(lrec) is the size of each record in words. it is up to the user to insure
that all read/write statements are inside the proper record (or know whats going
on if not).
!var(av) is the assocated variable.
the associated variable is always updated to give the index for the next
record to be read/written.
!p after a DFILE has been done indexed reads and writes may be done
with the file. note that indexed files should always be assigned to a
logical unit within the program (via SETFIL) or on the a.out command.
!p note also that all reads/writes on a file that has a DFILE associated
with it will be of the appropriate record length, even if this requires
write zero fill bytes to pad out the record length.
!head('Format statement extentions')
there are a numer of changes to the processing of Format statements.
!pt Format statements are not syntax checked, except for rather obvious
things such as miss-matched parentheses, umatched quotes, and illegal 
characters.
!pt the ":" format item allows for stopping of the format scan if there are
no more data items in the I/O list.
!pt the "bz" and "bn" format items allow the changing of the meaning of blanks
inside the format. (this is not fully implemented yet).
!pt the tab ("t") format item has been extended to allow relative tabs ("tl" is 
tab left, and "tr" is tab right), in addition to the tab to a particular column.
!pt a "?" may appear wherever a number is expected in a format (except for "h" 
formats) and takes the next data value from the I/O list as the number. for 
example: 
)l2a
      write(6,10) i,x
10    format(' x = ',f?.2')
) !p will write out x in (for example) a f10.2 format if the value of i is 10. 
a more complex example might be:
)l2a
      write(6,10) int(log(abs(x))+0.9999),x
10    format(f?.0)
) !p
note that this feature is not in the Fortran 77 standard, so programs using it
may not be portable. 
!head('Free Format output')
This compiler implements a new free-format output facility. there are two
basic ways that free format may be specified.
!pt the format statement may be omitted, but the separating comma must
still be specified. for example:
)l2a
	print,'x =',x
	write(6,) 'y=',y
) !pt the format statement number is replaced by an asterisk (*). For example:
)l2a
	print *,'x =',x
	write(6,*) 'y=',y
) !p note that free format output is written with a blank carriage control
character, and that normally the line is less than 72 characters in length.
!head('Free Format Input')
Free format input is specified in the same way the free format output is, 
my omitting the format statement number or by replacing it with an 
asterisk. free format input has the following characteristics:
!pt data values may be separated by one or more blanks, or by commas.
!pt if two consecutive commas are encountered then the corresponding
variable is left unchanged.
!pt constants may not be split from one line to the next.
!pt if insufficient data values are found on one line then enough additional
lines will be read to satisfy the read request.
!pt character constants must be enclosed in quote marks ('), in the same
way required for data statements. if the constant is shorter than the variable
then blanks are padded onto the end of the variable. if it is longer then
the character constant is truncated.
!pt a runtime error will occur if a conversion error happens during the 
read statement. this may be intercepted with an "ERR=" exit.
