|
|
1.1 root 1: .LP
2: The following standard quad functions
3: are available in \*u \*a:
4: .IP "\*(qdcr \'name\'" 24
5: The result of ``\*(qdcr'' is a character array
6: containing the function whose name is
7: passed as an argument.
8: .IP "\*(qdfx newfn"
9: The contents of the character array
10: specified as an argument are fixed as
11: an \*a function.
12: .IP "\*(qdnc \'arg\'"
13: This function can be used to determine what
14: type of variable an \*a symbol is. The
15: apl symbol must be specified inside quote
16: marks, as shown. The returned value will be:
17: .br
18: 0 \(em symbol is undefined
19: .br
20: 2 \(em symbol is a label or variable
21: .br
22: 3 \(em symbol is a function name
23: .br
24: 4 \(em unknown type (should not occur)
25: .br
26: .IP "\*(qdnl arg"
27: The argument should be a scalar or vector
28: with components 1, 2, or 3.
29: This function returns a two-dimensional
30: character array containing the names of
31: all items whose types are specified in the
32: vector
33: (same type definitions as for ``\*(qdnc'' above).
34: The ordering of names in the matrix is fortuitous.
35: .sp 2
36: .LP
37: The following non-standard quad functions are
38: defined:
39: .IP "fd \*(qdap \'string\'" 24
40: This quad function is used to append a
41: character string onto the end of a \*u
42: file. The first argument specifies the
43: file descriptor of the file (which should
44: have been opened earlier). The second
45: argument is a character array which is
46: to be appended. A carriage return is
47: automatically appended to the end of
48: each row of the character array when it
49: is appended to the end of the file.
50: .IP "\*(qdchdir \'directory\'"
51: This quad function can be used to change
52: \*a to another directory. Normally, \*a
53: runs in the directory that you were in
54: when it was started by the ``apl'' command.
55: The argument is a character
56: vector specifying the new directory (there
57: is NO way to default this). A 0 is returned
58: if the ``chdir'' was successful; a \(mi1 is
59: returned if it failed.
60: .IP "\*(qdclose fd"
61: This function complements ``\*(qdopen''. The
62: argument is the file descriptor of a \*u
63: file to be closed. This function returns
64: 0 for success or \(mi1 for failure.
65: .IP "mode \*(qdcreat \'file\'"
66: This function creates a \*u file. If the
67: file already exists, it is truncated to zero
68: length. The creation mode is specified as
69: the first argument
70: The filename is specified
71: in a character vector as the second argument.
72: The file descriptor of the created file (or
73: \(mi1 for error) is returned.
74: .IP "\*(qddup fd"
75: This function executes the ``dup'' system
76: call. It returns an integer number which
77: may be used as a file descriptor on later
78: I/O calls.
79: The new file descriptor
80: is a duplicate of the argument ``fd''.
81: If the argument file descriptor could not be
82: duplicated, \(mi1 is returned.
83: .IP "\*(qdexec matrix"
84: Takes a two-dimensional character matrix
85: and formats it into a \*u ``exec'' system
86: call. The matrix passed as an argument
87: must be two-dimensional, the rows must
88: be \fIzero\fR terminated.
89: .IP "\*(qdexit code"
90: This quad function is used to terminate
91: the execution of the current process,
92: with the completion code ``code''. It should
93: be used to terminate child processes and
94: can be used to terminate an \*a session;
95: however, it is recommended that the system command
96: ``)off'' be used for that purpose.
97: .IP "\*(qdfloat charvect"
98: This quad function is useful in conjunction
99: with ``\*(qdwrite'' and ``\*(qdread''.
100: Although any type of
101: data may be written to a \*u file with
102: ``\*(qdwrite'', when it is read with ``\*(qdread'' it
103: will be interpreted as character data. This
104: function will convert a character array into
105: numeric form. The array must be a multiple
106: of 4 elements long for apl2 and 8 for apl.
107: The converted array is the returned value.
108: .IP "\*(qdfork xx"
109: ``xx'' is a dummy argument. A ``fork'' system
110: call is performed.
111: This quad function
112: probably will be followed by a
113: ``\*(qdexec'' quad function.
114: The process-id
115: of the child is returned to the parent;
116: a zero is returned to the child.
117: .IP "pid \*(qdkill signal"
118: This function executes the ``kill'' system
119: call. The first argument specifies what
120: process is to be signalled. The second
121: argument specifies what signal is to be
122: sent. A 0 is returned for a successful
123: ``kill''; \(mi1 is returned if the specified
124: process could not be found or is not
125: owned by the current user.
126: .IP "mode \*(qdopen \'file\'"
127: This function is dyadic. It opens a \*u
128: file for use by an \*a function with calls
129: via ``\*(qdread'' and ``\*(qdwrite''. The first
130: argument is the mode for the open (0=read,
131: 1=write, 2=read/write). The second
132: argument is a character vector containing
133: the file name. The file descriptor of the
134: opened file is returned (\(mi1 for error).
135: .IP "\*(qdpipe xx"
136: This quad function can be used to set up
137: a pipe (used for interprocess communication)
138: It returns a 2-element vector containing
139: the two ``pipe'' file descriptors.
140: .IP "\*(qdrd fd"
141: This function reads one line from the
142: file descriptor specified. If the line
143: is completely blank, a null string is
144: returned. An end-of-file will also return
145: a null string. Otherwise, the returned
146: value is the character string which was
147: read.
148: .IP "\*(qdrm \'filename\'"
149: The specified file will be removed,
150: equivalent to )drop filename. A 0
151: is returned for a successful remove;
152: \(mi1 is returned if the file could not be
153: removed or does not exist.
154: .IP "fd \*(qdread nbytes"
155: This function reads a specified number
156: of bytes from a designated file. The
157: first argument is the file descriptor;
158: the second is the number of bytes to be
159: read. The data which is read is returned.
160: Note that the returned vector is always
161: character data \(em to convert to numeric
162: format see the function ``\*(qdfloat''.
163: .IP "\*(qdrline fd"
164: This quad function is identical to ``\*(qdrd'',
165: described above.
166: .IP "\*(qdrun \'unix command\'"
167: The argument passed to ``\*(qdrun'' is executed
168: as a \*u shell command.
169: .IP "\*(qdseek (fd,pos,mode)"
170: This function executes the ``seek'' system
171: call on a \*u file. The argument to
172: ``\*(qdseek'' is a three-element vector containing
173: the file descriptor, seek offset, and mode
174: A 0 is returned for
175: a successful seek; \(mi1 is returned if an
176: error is detected.
177: .IP "signal \*(qdsig action"
178: This quad function allows signal processing
179: to be turned on and off under \*a function
180: control. The first argument is the signal
181: whose processing is to be changed. The
182: second argument specifies how the signal
183: will be processed \(em if zero, the signal will
184: cause termination of \*a and a possible
185: core dump; if non-zero, the signal will be
186: ignored. Note that the special way in which
187: interrupts and other signals are processed
188: by \*a is turned off by a call to ``\*(qdsig''
189: and cannot be turned back on. A \(mi1 is
190: returned on error, a positive number or zero
191: for success.
192: .IP "\*(qdwait xx"
193: This quad function is used in conjunction
194: with ``\*(qdfork'' \(em it returns a 3-element
195: vector of information about a child
196: process which has terminated. The first
197: element is either the
198: process-id of a completed
199: child process or \(mi1 (no children).
200: The second is the status of the dead
201: process,
202: and the last is the completion code.
203: .IP "fd \*(qdwrite data"
204: This function writes data to a specified
205: file. The first argument is the file
206: descriptor; the second is the data to be
207: written. The number of bytes written is
208: returned as the count. Any type of data
209: (character or numeric) may be written in
210: this manner.
211: .LP
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.