.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.