.LP
The following monadic
i-beam functions are available:
.sp
.IP 20 5
This i-beam returns the time-of-day
as the total number of
1/60 seconds which
have elapsed since
midnight.
Division by 60 gives
the number of seconds
since midnight,
etc.
.IP 21
This i-beam returns the total
amount of CPU time used by
the current \*a session in
1/60 seconds.
This includes the amount of
time spent by the system
performing I/O
(sys time)
and computational time
(``user'' time).
.IP 22
This i-beam returns the
number of 8-bit bytes
which are left in the
workspace.
However,
this value is not really meaningful
since the in-core
workspace will be expanded,
if possible,
when full.
.IP 24
This i-beam returns the
time-of-day
(in 1/60 seconds)
when the current \*a
session was begun.
.IP 25
This i-beam returns the
current date as a 6-digit
number of the form
\fImmddyy\fR.
Thus,
February 23, 1978
would be 022378.
.IP 26
This i-beam returns the
line number in the function
currently being executed.
Thus,
if it is used in line 3
of a function,
it will return 3.
.IP 27
This i-beam returns a
vector of the line numbers
in pending functions
(functions which called the
current function and are 
waiting for its completion).
.IP 28
This i-beam returns the
date
(as a 6-digit number,
\fImmddyy\fR)
when the current \*a session began.
.IP 29
This i-beam returns the
current origin,
set by the ``)origin''
system command.
.IP 30
This i-beam returns the
current width,
as set by the ``)width''
system command.
.IP 31
This i-beam returns the
current number of digits
to be displayed,
as set by the ``)digits''
system command.
.IP 32
This i-beam returns the
number of workspace bytes
which are being used.
It is the complement of
i-beam 22,
which tells how many
bytes are unused.
Thus,
the maximum workspace size
(in bytes)
can be calculated by
adding i-beams 22 and 32.
.IP 36
This i-beam returns the
second element of the
vector returned by i-beam
27 \(em
that is,
it returns the
line number of the
function which called
the current function.
.IP 40
This i-beam returns the
total amount of CPU time
spent by any child processes
of \*a.
Children of \*a include the
editor,
the shell if ``)shell'' is
used,
anything run by ``Lrun'',
and any processes executed
using ``Lfork''.
.IP 41
This i-beam returns the total
amount of ``user''
time spent by \*a
and all of its children.
.IP 42
This i-beam returns the total
``system'' time
spent by \*a and all of its
children.
.IP 43
This i-beam returns the
total amount of ``user''
time
(computational time)
spent by \*a.
.IP 44
This i-beam returns the
total amount of ``sys''
(I/O and other system calls)
time spent by \*a.
.IP 95
This i-beam causes \*a to
print out its namelist table.
It is intended for system development
of \*a.
.IP 96
This i-beam causes \*a to
dump its stack on the terminal.
It is intended for system
development of \*a,
and is probably useful
only in generating a big
messy-looking display.
.IP 97
This i-beam returns
the total number of elements
on \*a's internal stack.
It is intended for system
development and debugging of
\*a itself.
.IP 98
This i-beam function turns off
the trace of all memory allocations
and deallocations which i-beam
99 turns on.
It returns a 1 if the trace was
on,
and a 0 if it was off already.
.IP 99
This i-beam turns on the
alloc/free trace mentioned above,
which i-beam 98 turns off.
It also returns a 1 if the
trace was already on,
or a 0 if it was off.
.sp 2
.LP
The following dyadic
i-beam functions were implemented
to compensate for the lack of
sufficient quad variables.
They may be subject to future
change.
The function is specified
by the right argument,
the left argument is a parameter
to that function.
The available i-beams are:
.IP 29 5
This i-beam may be used to set
the origin to any permitted value.
The left argument specifies
the new origin,
and the previous origin is returned.
.IP 30
This i-beam may be used to set
the terminal width to any permitted
value.
The left argument specifies
the new width,
and the previous width is returned.
.IP 31
This i-beam may be used to set
the number of digits displayed to
any permitted value.
The left argument specifies
the new number of digits,
and the previous value is returned.
.IP 34
This i-beam implements the system
``nice'' function.
The ``nice'' of the \*a process will
be set to the value specified by the
left argument.
A zero will be returned for
success,
a \(mi1 is returned for failure.
This is intended for
background processing,
not interactive use of \*a.
.IP 35
This i-beam implements the system
``sleep'' function.
\*a will suspend itself for the
number of seconds specified
(by the left argument).
The value returned is the value
of the left argument.
.IP 63
This i-beam implements the system
``empty'' function.
The left argument specifies a file
descriptor of a pipe.
If the pipe is empty,
a 1 will be returned,
if not-empty, a 0 will be returned.
A \(mi1 will be returned if
the file descriptor is illegal
or is not a pipe.
.IP 90
Normally,
\*a
will not exit if it reads an
end-of-file from a terminal.
This safety feature may be
disabled by using i-beam 90
with a zero left argument.
A non-zero left argument restores
the requirement that the user
exit with ``)off''
or ``)continue''.
[Note:
this feature cannot be enabled
if the input device is not a terminal.]
.IP 99
This i-beam causes the buffered version
of APL to flush the buffer associated with
the file descriptor specified as the left
argument.
A 0 is returned for success,
\(mi1 for failure.
In unbuffered APL,
0 is always returned and no action is
taken
(since the command is meaningless).
Note that flushing a pipe used for
input may cause information to be
lost.
