-
Notifications
You must be signed in to change notification settings - Fork 80
/
xxfile.info
executable file
·167 lines (158 loc) · 8.73 KB
/
xxfile.info
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
XXFILø£E XXFILE is a program which is similar in concept to the XFILE
command of ddt: one has a file of commands which is executed
frequently. The distinction is that XXFILE command files can pass
control of the tty around from place to place, a property which the
xfile command does not possess.
XXFILE operates by opening a STY, logging it in, and feeding
the command file(s) through it. Thus, as far as the programs being run
are concerned, it is exactly as if they were receiving input from the
tty. Input is supplied (with one exception) when the program on the
other end requests it, at which time XXFILE sends characters from the
file until it has sent an interrupt or activation character. Output
(including echoing, since the connection is full-duplex) may be directed
to the tty, to a file, or to the bit bucket; regardless of that, it is
possible to specify various strings (initially '*ERROR*', '?U?', and
'??') which will cause an error when encountered in the output. Errors
may also be generated when a fatal error is encountered.
When errors are encountered, the file being executed is
suspended and input is taken from the tty (except see the 'E' switch
under JCL). In this case, the connection is similar to that supplied by
SUPDUP. It is also possible to start tty input manually during the
execution of a file, or to specify that tty input begin in the command
file itself--xxfile commands may be included in the command file, where
they are treated exactly as if they were entered from the tty.
Note that when XXFILE starts it sets its ..SAFE variable to -1:
attempts to kill one, or to log out while it is running, will provoke
the --Kill Protected Job-- query from DDT.
JCL:
Three things may be specified on the jcl line, in any order:
switches, the output file, and the input files. Switches are letters
preceded by a '/'; there are currently three switches:
E: If this switch was set, and an error is encountered while XXFILE is
running disowned (has no console), then it will print any error
messages to the output file (if one exists) and logout. Normally,
it will attempt to use the TTY, thereby hanging up.
P: If this switch is set, the terminal seen by the programs you're
running is just a printing console, rather than whatever you're
running on.
S: If set, XXFILE will keep trying if it gets a DEVICE FULL error when
it tries to open its STY. In particular, it will try every ten
seconds for an hour before it gives up. This is primarily useful
for jobs running under BATCHN on DM, for example, since the user may
not be around to make a STY available.
The output file (which defaults to the bit bucket) is a file name
followed by '_'; the default name is <HSNAME>;<XUNAME> >. Input files may
be either file names, separated by commas, or text strings, which are
treated as files. Text strings should be enclosed in square brackets;
control characters may be included by using <uparrow><char>; the
characters '^' and ']' may be quoted with ctrl-Q. Thus:
:xxfile tty:_[:muddle^m]taa;foo bar,taa;zork feep[<QUIT>]
will direct output to the tty; input will be
:muddle
followed by the contents of foo bar and zork feep, followed by <QUIT>.
If no sname is provided for input files, your sname is assumed;
defaults are sticky from one input file to the next.
Before any of the jcl line is executed, the following string is
sent:
<xuname>0U:GAG 0
This logs the tty in, and causes :sends to be refused. The tty is also
put in refuse mode. When the jcl line has finished executing, 0U is
sent to log the tty out.
Commands
Commands may be included in files to be executed or typed in
from the tty. In either case, they are of the form
<intercept character><single-letter command><optional command line>. If
a command requires a command line, it must be terminated in the file
with <crlf>. The intercept character is initially ctrl-^.
When commands are typed from the tty, <rubout> erases the last
character, ctrl-W erases the last word, and ctrl-X, ctrl-U, and ctrl-@
erase the entire command line. Attempts to rubout past the beginning of
the command line abort the command.
Commands currently implemented are:
A--Abort the current input source. The current file or text field is
flushed, and execution proceeds with the next part of the jcl line.
B--Begin tty input. Suspend execution of the current file, and accept
input from the tty until an 'S' command is given. This command is
executed implicitly when an error is detected and when the 'H'
command is given.
C--Change output file. Takes the new output file as a command line.
The current output file is closed, and output is directed to the
specified location.
D--Return to ddt (like ctrl-Z).
E--Error strings. Takes 0-n error strings, separated by commas, as a
command line. Initially the error strings are '*ERROR*', '?U?', and
'??'. Checking for errors may be disabled simply by giving this
command with a null command line.
F--Force input. Characters until the next 'F' command will be jammed
down the throat of the running job, whether it wants them or not.
Some jobs (PUB, for example) do not explicitly request input, but
read it at interrupt level. This command is for them.
H--Halt job. Sends ctrl-Z immediately, then does a 'B' command.
I--Set intercept character. Takes the new character on a command line,
as the first character. Note that this must be a control character
of some sort, so it will interrupt when typed.
J--Undo an 'R' command.
P--Proceed xxfile.
Q--Quit xxfile.
R--Remain in this job. All input must go to the current job until a 'j'
command is executed. This allows fatal errors (ioc's which aren't
handled, for example) to be detected. When the input source is the
tty, such checking is suppressed.
S--Stop tty input. Revert to the current input file.
T--Set ctrl-T character. See 'Job status'.
V--Valret string. This reads a line from the current input source, and
does a .value of it. Control characters (cr, for example) may be
included by giving uparrow followed by the normal character: ctrl-M
as uparrow (^) followed by M.
?--Give brief command summary.
The intercept character may be sent by quoting it with the
intercept character. The ctrl-T character is only noticed when typed on
the tty; it may be sent by quoting with the intercept character also.
Rubout is a null command.
The tty
Unless the P switch is set in the jcl line, the tty your jobs
see will be a software tty very similar to the one you are using--the
major difference is that the screen is slightly smaller. The P switch
causes the tty to be the default sty, which is a printing terminal 72
columns wide.
When the input source is the tty, or output is to the tty, all
abnormal output from XXFILE is printed in a two-line echo area, to
preserve the display of output from the program. It also tries to keep
the cursor on your tty in phase with the cursor on your job's tty.
TTY input
When the input source is the tty, XXFILE enters super-image
input mode, meaning that ctrl-Z and ctrl-_ are treated as normal input
characters. Should you need to get out of xxfile, the D command may be
used; also, ctrl-Z and ctrl-_ may be typed as commands, since
super-image input is turned off in the command reader.
Since the foreign tty is similar to your own, rubouts and such
will be handled correctly. It is, in fact, possible to run real-time
teco through xxfile, though I know of no good reason for doing so.
Job status
Ctrl-T typed from the tty causes a brief summary of your job's
status to be printed, either in the echo area (if XXFILE is using the
tty for output) or on the next line. The summary includes:
Tnn mm jname sname status % timusd %RD lastout
Where:
Tnn is the tty your jobs are running on.
mm is the index of the job currently having the tty.
jname is its jname
sname is its sname
status is like PEEK's: WALK, RUN, FLY, &c, or the reason the job is not
currently running. This may be preceded by '=>', '<=', or '<=>';
these mean, respectively, that XXFILE is currently sending characters
to your job, receiving characters from it, or both.
% is the percentage of the system your job is getting
timusd is the amount of cpu time it has used so far.
%RD is the percentage of the current input file that has been used.
lastout is the first 10 or 15 characters of the last group sent to the
job. If the job is a ddt, which activates on every character, this
will only be one character, the last one sent; if it is a muddle, it
may be an entire form.
Cautions
MUDDLEs, at least, are known to hang up occasionally when
talking to a sty. As nearly as I can determine, this is a timing
problem in the system. You can win, usually, by entering tty input mode
(the 'B' command), typing ctrl-Z, ctrl-P, and P, then leaving tty input
(the 'S' command).