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
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
|
RFC 740 RTB 42423 22 Nov 77
NETRJS Protocol
Network Working Group R. Braden
Request for Comments: 740 UCLA-CCN
NIC: 42423 22 November 1977
Obsoletes: 189, 599
NETRJS PROTOCOL
A. Introduction
NETRJS, a private protocol for remote job entry service, was defined
and implemented by the UCLA Campus Computing Network (CCN) for batch
job submission to an IBM 360 Model 91. CCN's NETRJS server allows a
remote user, or a daemon process working in behalf of a user, to
access CCN's RJS ("Remote Job Service") subsystem. RJS provides
remote job entry service to real remote batch (card reader/line
printer) terminals over direct communications lines as well as to the
ARPANET.
A batch user at a remote host needs a NETRJS user process to
communicate with the NETRJS server at the batch host. An active
NETRJS user process simulates a "Virtual Remote Batch Terminal", or
"VRBT".
A VRBT may have virtual card readers, printers, and punches. In
addition, every VRBT has a virtual remote operator console. Using a
virtual card reader, a Network user can transmit a stream of card
images comprising one or more batch jobs, complete with job control
language ("JCL"), to the batch server host. The NETRJS server will
cause these jobs to be spooled into the batch system to be executed
according to their priority. NETRJS will automatically return the
print and/or punch output images which are created by these jobs to
the virtual printer and/or card punch at the VRBT from which the job
was submitted. The batch user can wait for his output, or he can
signoff and signon again later to receive it.
To initiate a NETRJS session, the user process must execute a
standard ICP to a fixed socket at the server. The result is to
establish a full-duplex Telnet connection for the virtual remote
operator console, allowing the VRBT to signon to RJS. The virtual
remote operator console can then be used to issue commands to NETRJS
and to receive status, confirmation, and error messages from the
Braden [page 1]^L
RFC 740 RTB 42423 22 Nov 77
NETRJS Protocol
server. The most important remote operator commands are summarized
in Appendix D.
Different VRBT's are distinguished by 8-character terminal id's,
which are assigned by the server site to individual batch users or
user groups.
B. Connections and Protocols
The protocol uses up to five connections between the user and server
processes. The operator console uses a a full-duplex Telnet
connection. The data transfer streams for the virtual card reader,
printer, and punch each use a separate simplex connection under a
data transfer protocol defined in Appendix A. This document will use
the term "channel" for one of these simplex data transfer connections
and will designate a connection "input" or "output" with reference to
the server.
A particular data transfer channel needs to be open only while it is
in use, and different channels may be used sequentially or
simultaneously. CCN's NETRJS server will support simultaneous
operation of a virtual card reader, a virtual printer, and a virtual
punch (in addition to the operator console) on the same VRBT process.
The NETRJS protocol could easily be extended to any number of
simultaneously-operating virtual card readers, printers, and punches.
The NETRJS server takes a passive role in opening the data channels:
the server only "listens" for an RFC from the user process. NETRJS is
defined with an 8-bit byte size on all data channels.
Some implementations of NETRJS user processes are daemons, operating
as background processes to submit jobs from a list of user requests;
other implementations are interactive processes executed directly
under terminal control by remote users. In the latter case, the VRBT
process generally multiplexes the user terminal between NETRJS, i.e.,
acting as the remote operator console, and entering local commands to
control the VRBT. Local VRBT commands allow selection of the files
containing job streams to be sent to the server as well as files to
receive job output from the server. Other local commands would cause
the VRBT to open data transfer channels to the NETRJS server and to
close these channels to free buffer space or abort transmission.
The user process has a choice of three ICP sockets, to select the
character set of the VRBT -- ASCII-68, ASCII-63, or EBCDIC. The
server will make the corresponding translation of the data in the
card reader and printer channels. (In the CCN implementation of
NETRJS, an EBCDIC VRBT will transmit and receive, without
Braden [page 2]^L
RFC 740 RTB 42423 22 Nov 77
NETRJS Protocol
translation, "transparent" streams of 8-bit bytes, since CCN is an
EBCDIC installation). The punch stream will always be transparent,
outputting "binary decks" of 80-byte records untranslated. The
operator console connections always use Network ASCII, as defined by
the Telnet protocol.
The NETRJS protocol provides data compression, replacing repeated
blanks or other characters by repeat counts. However, when the
terminal id is assigned, a particular network VRBT may be specified
to use no data compression. In this case, NETRJS will simply
truncate trailing blanks and send records in a simple "op
code-length-data" form, called "truncated format" (see Appendix A).
C. Starting and Terminating a Session
The remote user establishes a connection to the NETRJS server by
executing an ICP to the contact socket 71 (decimal) for EBCDIC,
socket 73 (decimal) for ASCII-68, or to socket 75 (decimal) for
ASCII-63. A successful ICP results in a pair of connections which are
in fact the NETRJS operator console connections. NETRJS will send a
READY message over the operator output connection.
The user (process) must now enter a valid NETRJS signon command
("SIGNON terminal-id") through the virtual remote operator console.
RJS will normally acknowledge signon with a console message; however,
if there is no available NETRJS server port, NETRJS will indicate
refusal by closing both operator connections. If the user fails to
enter a valid signon within 3 minutes, NETRJS will close the operator
connections. If the VRBT attempts to open data transfer channels
before the signon command is accepted, the data transfer channels
will be refused with an error message to the VRBT operator console.
Suppose that S is the even number sent in the ICP; then the NETRJS
connections have sockets at the server with fixed relation to S, as
shown in the following table:
Channel Server Socket User Socket
------- ------------- -----------
Remote Operator Console Input S U + 3 Telnet
Remote Operator Console Output S + 1 U + 2 Telnet
Data Transfer - Card Reader #1 S + 2 any odd number
Data Transfer - Printer #1 S + 3 any even number
Data Transfer - Punch #1 S + 5 any even number
Once the VRBT has issued a valid signon, it can open data transfer
channels and initiate input and output operations as explained in the
following sections. To terminate the session, the VRBT may close all
Braden [page 3]^L
RFC 740 RTB 42423 22 Nov 77
NETRJS Protocol
connections. Alternatively, it may enter a SIGNOFF command through
the virtual remote operator console. Receiving a SIGNOFF, NETRJS
will wait until the current job output streams are complete and then
itself terminate the session by closing all connections.
D. Input Operations
A job stream for submission to the NETRJS server is a series of
logical records, each of which is a card image of at most 80
characters. The user can submit a "stack" of successive jobs through
the card reader channel with no end-of-job indication between jobs;
NETRJS is able to parse the JCL sufficiently to recognize the
beginning of each job.
To submit a batch job or stack of jobs for execution, the user
process must first open the card reader channel by issuing an Init
for foreign socket S+2 and the appropriate local socket. NETRJS,
which is listening on socket S+2, will return an RTS command to open
the channel. When the channel is open, the user can begin sending his
job stream using the protocol defined in Apendix A. For each job
successfully spooled, NETRJS will send a confirming message to the
remote operator console.
At the end of the job stack, the user process must send an
End-of-Data transaction to initiate processing of the last job.
NETRJS will then close the channel (to avoid holding buffer space
unnecessarily). At any time during the session, the user process can
re-open the card reader channel and transmit another job stack. It
can also terminate the session and signon later to get the output.
If the user process leaves the channel open for 5 minutes without
sending any bits, the server will abort (close) the channel. The user
process can abort the card reader channel at any time by closing the
channel; NETRJS will then discard the last partially spooled job.
If NETRJS finds an error (e.g., transaction sequence number error or
a dropped bit), it will abort the channel by closing the channel
prematurely, and also inform the user process that the job was
discarded (thus solving the race condition between End-of-Data and
aborting). The user process should retransmit only those jobs in the
stack that have not been completely spooled.
If the user's process, NCP, or host, or the Network itself fails
during input, RJS will discard the job being transmitted. A message
informing the user that this job was discarded will be generated and
sent to him the next time he signs on. On the other hand, those jobs
whose receipt have been acknowledged on the operator's console will
not be affected by the failure, but will be executed by the server.
Braden [page 4]^L
RFC 740 RTB 42423 22 Nov 77
NETRJS Protocol
E. Output Operations
The VRBT may wait to set up a virtual printer or punch and open its
channel until a STATUS message from NETRJS indicates output is ready;
or it may leave the output channel(s) open during the entire session,
ready to receive output whenever it becomes available. The VRBT can
also control which one of several available jobs is to be returned by
entering appropriate operator commands.
To be prepared to receive printer (or punch) output from its jobs,
the VRBT issues an Init for foreign socket S+3 or S+5 for printer or
punch output, respectively. NETRJS is listening on these sockets and
should immediately return an STR. However, it is possible that
because of a buffer shortage, NETRJS will refuse the connection by
returning a CLS; in this case, try again later.
When NETRJS has job output for a particular virtual terminal and a
corresponding open output channel, it will send the output as a
series of logical records using the protocol in Appendix A. The
first record will consist of the job name (8 characters) followed by
a comma and then the ID string from the JOB card, if any. In the
printer stream, the first column of each record after the first will
be an ASA carriage control character (see Appendix C). A virtual
printer in NETRJS has 254 columns, exclusive of carriage control;
NETRJS will send up to 255 characters of a logical record it finds in
a SYSOUT data set. If the user wishes to reject or fold records
longer than some smaller record size, he can do so in his VRBT
process.
NETRJS will send an End-of-Data transaction and then close an output
channel at the end of the output for each complete batch job; the
remote site must then send a new RFC to start output for another job.
This gives the remote site a chance to allocate a new file for each
job without breaking the output within a job.
If the batch user wants to cancel (or backspace or defer) the output
of a particular job, he can enter appropriate NETRJS commands on the
operator input channel (see Appendix D).
If NETRJS encounters a permanent I/O error in reading the disk data
set, it will notify the user via his console, skip forward to the
next set of system messages or SYSOUT data set in the same job, and
continue. If the user process stops accepting bits for 5 minutes, the
server will abort the channel. In any case, the user will receive
notification of termination of output data transfer for each job via
a remote console message.
Braden [page 5]^L
RFC 740 RTB 42423 22 Nov 77
NETRJS Protocol
If the user detects an error in the stream, he can issue a Backspace
(BSP) command from his console to repeat the last "page" of output,
or a Restart (RST) command to repeat from the last SYSOUT data set or
the beginning of the job, or he can abort the channel by closing his
socket. If he aborts the channel, NETRJS will simulate a Backspace
command, and when the user re-opens the channel the job will begin
transmission again from an earlier point in the same data set. This
is true even if the user terminates the current session first and
reopens the channnel in a later session; RJS saves the state of every
incomplete output stream. However, before re-opening the channel he
can defer this job for later output, restart it at the beginning, or
cancel its output (see Appendix D). Note that aborting the channel
is only effective if NETRJS has not yet sent the End-of-Data
transaction.
If the user's process, NCP, or host or the Network itself fails
during an output operation, NETRJS will act as if the channel had
been aborted and the user signed off. NETRJS will discard the output
of a job only after receiving the RFNM from the last data transfer
message (containing an End-of-Data). In no case should a NETRJS user
lose output from a batch job.
Braden [page 6]^L
RFC 740 RTB 42423 22 Nov 77
NETRJS Protocol
APPENDIX A
Data Transfer Protocol in NETRJS
1. Introduction
The records in the data transfer channels (for virtual card
reader, printer, and punch) are generally grouped into
transactions preceded by headers. The transaction header includes
a sequence number and the length of the transaction. Network byte
size must be 8 bits in these data streams.
A transaction is the unit of buffering within the server software,
and is limited to 880 8-bit bytes. Transactions can be as short as
one record; however, those sites which are concerned with
efficiency should send transactions as close as possible to the
880 byte limit.
There is no necessary connection between physical message
boundaries and transactions ("logical messages"); the NCP can
break a transaction arbitrarily into physical messages. The CCN
server starts each transaction at the beginning of a new physical
message, but this is not a requirement of the protocol.
Each logical record within a transaction begins with an "op code"
byte which contains the channel identification, so its value is
unique to each channel but constant within a channel. This choice
provides the receiver with a convenient way to verify
bit-synchronization, and it also allows an extension in the future
to true "multi-leaving" (i.e., multiplexing all channels within
one connection in each direction).
The only provisions for transmission error detection in the
current NETRJS protocol are (1) the "op code" byte to verify bit
synchronization and (2) the transaction sequence number. Under the
NETRJS protocol, a data transfer error must abort the entire
transmission; there is no provision for restart.
Braden [page 7]^L
RFC 740 RTB 42423 22 Nov 77
NETRJS Protocol
2. Meta-Notation
The following description of the NETRJS data transfer protocol
uses a formal notation derived from that proposed in RFC 31 by
Bobrow and Sutherland. The notation consists of a series of
productions for bit string variables. Each variable name which
represents a fixed length field is followed by the length in bits
(e.g., SEQNUMB(16)). Numbers enclosed in quotes are decimal,
unless qualified by a leading X meaning hex. Since each hex digit
is 4 bits, the length is not shown explicitly in hex numbers. For
example, '255'(8) and X'FF' both represent a string of 8 one bits.
The meta-syntactic operators are:
| :alternative string
[ ] :optional string
( ) :grouping
+ :catenation of bit strings
The numerical value of a bit string (interpreted as an integer) is
symbolized by a lower case identifier preceding the string
expression and separated by a colon. For example, in
"i:FIELD(8)", i symbolizes the numeric value of the 8 bit string
FIELD.
Finally, we use Bobrow and Sutherland's symbolism for iteration of
a sub-string: (STRING-EXPRESSION = n); denotes n occurrences of
STRING-EXPRESSION, implicitly catenated together. Here any n
greater or equal to 0 is assumed unless n is explicitly
restricted.
3. Protocol Definition
STREAM ::= (TRANSACTION = n) + [END-OF-DATA]
That is, STREAM, the entire sequence of data on a particular
open channel, is a sequence of n TRANSACTIONS followed by an
END-OF-DATA marker (omitted if the sender aborts the channel).
TRANSACTION ::= THEAD(72) + (RECORD = r) + ('0'(1) = f)
That is, a transaction consists of a 72 bit header, r records,
and f filler bits; it may not exceed 880*8 bits.
Braden [page 8]^L
RFC 740 RTB 42423 22 Nov 77
NETRJS Protocol
THEAD ::= X'FF'+f:FILLER(8)+SEQNUMB(16)+LENGTH(32)+X'00'
Transactions are to be consecutively numbered in the SEQNUMB
field, starting with 0 in the first transaction after the
channel is (re-) opened. The 32 bit LENGTH field gives the
total length in bits of the r RECORD's which follow. For
convenience, the using site may add f additional filler bits at
the end of the transaction to reach a convenient word boundary
on his machine; the value f is transmitted in the FILLER field
of THEAD.
RECORD ::= COMPRESSED | TRUNCATED
RJS will accept intermixed RECORD's which are COMPRESSED or
TRUNCATED in an input stream. RJS will send one or the other
format in the printer and punch streams to a given VRBT; the
choice is determined for each terminal id.
COMPRESSED ::= '2'(2) + DEVID(6) + (STRING = p) + '0'(8)
STRING ::= ('6'(3) + i:DUPCOUNT(5)) |
This form represents a string of i consecutive blanks
('7'(3) + i:DUPCOUNT(5) + TEXTBYTE(8)) |
This form represents string of i consecutive duplicates of
TEXTBYTE.
('2'(2) + j:LENGTH(6) + (TEXTBYTE(8) = j))
This form represents a string of j characters.
TRUNCATED ::= '3'(2) + DEVID(6) + n:COUNT(8) + (TEXTBYTE(8)=n)
DEVID(6) ::= DEVNO(3) + t:DEVTYPE(3)
DEVID identifies a particular virtual device, i.e., it
identifies a channel. DEVTYPE specifies the type of device, as
follows:
t = 1: Output to remote operator console
2: Input from remote operator console
3: Input from card reader
4: Output to printer
5: Output to card punch
6,7: Unused
Braden [page 9]^L
RFC 740 RTB 42423 22 Nov 77
NETRJS Protocol
DEVNO identifies the particular device of type t at this remote
site; at present only DEVNO = 0 is possible.
END-OF-DATA ::=X'FE'
Signals end of job (output) or job stack (input).
Braden [page 10]^L
RFC 740 RTB 42423 22 Nov 77
NETRJS Protocol
APPENDIX B
Telnet for VRBT Operator Console
The remote operator console connections use the ASCII Telnet
protocol. Specifically:
1. The following one-to-one character mappings are used for the
three EBCDIC graphics not in ASCII:
ASCII in Telnet | NETRJS
----------------------------------------------------
broken vertical bar | solid vertical bar
tilde | not sign
back slash | cent sign
2. Telnet controls are ignored.
3. An operator console input line which exceeds 133 characters
(exclusive of CR LF) is truncated by NETRJS.
4. NETRJS accepts BS (Control-H) to delete a character and CAN
(Control-X) to delete the current line. The sequence CR LF
terminates each input and output line. HT (Control-I) is
translated to a single space. An ETX (Control-C) terminates
(aborts) the session. All other ASCII control characters are
ignored.
5. NETRJS translates the six ASCII graphics with no equivalent in
EBCDIC into the character question mark ("?") on input.
Braden [page 11]^L
RFC 740 RTB 42423 22 Nov 77
NETRJS Protocol
APPENDIX C
Carriage Control
The carriage control characters sent in a printer channel by NETRJS
conform to IBM's extended USASI code, defined by the following table:
CODE ACTION BEFORE WRITING RECORD
---- ----------------------------
Blank Space one line before printing
0 Space two lines before printing
- Space three lines before printing
+ Suppress space before printing
1 Skip to channel 1
2 Skip to channel 2
3 Skip to channel 3
4 Skip to channel 4
5 Skip to channel 5
6 Skip to channel 6
7 Skip to channel 7
8 Skip to channel 8
9 Skip to channel 9
A Skip to channel 10
B Skip to channel 11
C Skip to channel 12
Braden [page 12]^L
RFC 740 RTB 42423 22 Nov 77
NETRJS Protocol
APPENDIX D
Network/RJS Command Summary
This section presents an overview of the RJS Operator Commands, for
the complete form and parameter specifications please see references
2 and 3.
Terminal Control and Information Commands
SIGNON First command of a session; identifies VRBT by giving
its terminal id.
SIGNOFF Last command of a session; RJS waits for any data
transfer in progress to complete and then closes all
connections.
STATUS Outputs on the remote operator console a complete
list, or a summary, of all jobs in the system for
this VRBT, with an indication of their processing
status in the batch host.
ALERT Outputs on the remote operator console an "Alert"
message, if any, from the computer operator. The
Alert message is also automatically sent when the
user does a SIGNON, or whenever the message changes.
MSG Sends a message to the computer operator or to any
other RJS terminal (real or virtual). A message from
the computer operator or another RJS terminal will
automatically appear on the remote operator console.
Job Control and Routing Commands
Under CCN's job management system, the default destination for
output is the input source. Thus, a job submitted under a given
VRBT will be returned to that VRBT (i.e., the same terminal id),
unless the user's JCL overrides the default destination.
RJS places print and punch output destined for a particular remote
terminal into either an Active Queue or a Deferred Queue. When
the user opens his print or punch output channel, RJS immediately
starts sending job output from the Active Queue, and continues
until this queue is empty. Job output in the Deferred Queue, on
the other hand, must be called for by job name, (via a RESET
command from the remote operator) before RJS will send it. The
Active/Deferred choice for output from a job is determined by the
Braden [page 13]^L
RFC 740 RTB 42423 22 Nov 77
NETRJS Protocol
deferral status of the VRBT when the job is entered; the deferral
status, which is set to the Active option when the user signs on,
may be changed by the SET command.
SET Allows the remote user to change certain properties
of his VRBT for the duration of the current session;
(a) May change the default output destination to be
another (real or virtual) RJS terminal or the
central facility.
(b) May change the deferral status of the VRBT.
DEFER Moves the print and punch output for a specified job
or set of jobs from the Active Queue to the Deferred
Queue. If the job's output is in the process of
being transmitted over a channel, RJS aborts the
channel and saves the current output location before
moving the job to the Deferred Queue. A subsequent
RESET command will return it to the Active Queue
with an implied Backspace (BSP).
RESET Moves specified job(s) from Deferred to Active Queue
so they may be sent to user. A specific list of job
names or all jobs can be moved with one RESET
command.
ROUTE Re-routes output of specified jobs (or all jobs)
waiting in the Active and Deferred Queues for the
VRBT. The new destination may be any other RJS
terminal or the central facility.
ABORT Cancels a job which was successfully submitted and
awaiting execution or is currently executing.
Output Stream Control Commands
BSP (BACKSPACE) "Backspaces" output stream within current sysout
data set. Actual amount backspaced depends upon
sysout blocking but is roughly equivalent to a page
on the line printer.
CAN (CANCEL) (a) On an output channel, CAN causes the rest of
the output in the sysout data set currently being
transmitted to be omitted. Alternatively, may omit
the rest of the sysout data sets for the job
currently being transmitted; however, the remaining
Braden [page 14]^L
RFC 740 RTB 42423 22 Nov 77
NETRJS Protocol
system and accounting messages will be sent.
(b) On an input channel, CAN causes RJS to ignore
the job currently being read. However, the channel
is not aborted as a result, and RJS will continue
reading in jobs on the channel.
(c) CAN can delete all sysout data sets for
specified job(s) waiting in Active or Deferred
Queue.
RST (RESTART) (a) Restarts a specified output stream at the
beginning of the current sysout data set or,
optionally, at the beginning of the job.
(b) Marks as restarted specified job(s) whose
transmission was earlier interrupted by system
failure or user action (e.g., DEFER command or
aborting the channel). When RJS transmits these
jobs again it will start at the beginning of the
partially transmitted sysout data set or,
optionally, at the beginning of the job. This
function may be applied to jobs in either the Active
or the Deferred Queue; however, if the job was in
the Deferred Queue then RST also moves it to the
Active Queue. If the job was never transmitted, RST
has no effect other than this queue movement.
REPEAT Sends additional copies of the output of specified
jobs.
EAM Echoes the card reader stream back in the printer
and/or punch stream.
Braden [page 15]^L
RFC 740 RTB 42423 22 Nov 77
NETRJS Protocol
APPENDIX E
NETRJS TERMINAL OPTIONS
When a new NETRJS virtual terminal is defined, certain options are
available; these options are listed below.
1. Truncated/Compressed Data Format
A VRBT may use either the truncated data format (default) or
the compressed format for printer and punch output. See
Reference 9 for discussion of the virtues of compression.
2. Automatic Coldstart Job Resubmission
If "R" (Restart) is specified in the accounting field on the
JOB card and if this option is chosen, RJS will automatically
resubmit the job from the beginning if the server operating
system should be "coldstarted" before all output from the job
is returned. Otherwise, the job will be lost and must be
resubmitted from the remote terminal in case of a coldstart.
3. Automatic Output RESTART
With this option, transmission of printer output which is
interrupted by a broken connection always starts over at the
beginning. Without this option, the output is backspaced
approximately one page when restarted, unless the user forces
the output to start over from the beginning with a RESTART
command when the printer channel is re-opened and before
printing begins.
4. Password Protection
This option allows a password to be supplied when a terminal is
signed on, preventing unauthorized use of the terminal ID.
5. Suppression of Punch Separator and Large Letters.
This option suppresses both separator cards which RJS normally
puts in front of each punched output deck, and separator pages
on printed output containing the job name in large block
letters. These separators are an operational aid when the
ouptut is directed to a real printer or punch, but generally
undesirable for an ARPA user who is saving the output in a file
for on-line examination.
Braden [page 16]^L
RFC 740 RTB 42423 22 Nov 77
NETRJS Protocol
APPENDIX F
Character Translation by CCN Server
A VRBT declares its character set for job input and output by the
initial connection socket it chooses. A VRBT can have the ASCII-68,
the ASCII-63, or the EBCDIC character set. The ASCII-63 character
mapping was added to NETRJS at the request of users whose terminals
are equipped with keyboards like those found on the model 33
Teletype.
Since CCN operates an EBCDIC machine, its NETRJS server translates
ASCII input to EBCDIC and translates printer output back to ASCII.
The details of this translation are described in the following.
For ASCII-68, the following rules are used:
1. There is one-to-one mapping between the three ASCII characters
broken vertical bar, tilde, and back slash, which are not in
EBCDIC, and the three EBCDIC characters vertical bar, not
sign, and cent sign (respectively), which are not in ASCII.
2. The other six ASCII graphics not in EBCDIC are translated on
input to unused EBCDIC codes, shown in the table below.
3. The ASCII control DC4 is mapped to and from the EBCDIC control
TM.
4. The other EBCDIC characters not in ASCII are mapped in the
printer stream into the ASCII question mark.
For ASCII-63, the same rules are used except that the ASCII-63 codes
X'60' and X'7B' - X'7E' are mapped as in the following table.
EBCDIC | ASCII-68 VRBT | ASCII-63 VRBT
---------------------------------------------------------------
vertical bar X'4F' | vertical bar X'7C' | open bracket X'5B'
not sign X'5F' | tilde X'7E' | close bracket X'5D'
cent sign X'4A' | back slash X'5C' | back slash X'5C'
underscore X'6D' | underscore X'5F' | left arrow X'5F'
. X'71' | up arrow X'5E' | up arrow X'5E'
open bracket X'AD' | open bracket X'5B' | . X'7C'
close bracket X'BD' | close bracket X'5D' | . X'7E'
. X'8B' | open brace X'7B' | . X'7B'
. X'9B' | close brace X'7D' | . X'7D'
. X'79' | accent X'60' | . X'60'
Braden [page 17]^L
RFC 740 RTB 42423 22 Nov 77
NETRJS Protocol
APPENDIX G
REFERENCES
1. "Interim NETRJS Specifications", R. T. Braden. RFC #189: NIC
#7133, July 15, 1971.
This was the basic system programmer's definition document. The
proposed changes mentioned on the first page of RFC #189 were
never implemented, since the DTP then in vogue became obsolete.
2. "NETRJS Remote Operator Commands", R. T. Braden. NIC #7182,
August 9, 1971
This document together with References 3 and 8 define the remote
operator (i.e. user) command language for NETRJS, and form the
basic user documentation for NETRJS at CCN.
3. "Implementation of a Remote Job Service", V. Martin and T. W.
Springer. NIC #7183, July, 1971.
4. "Remote Job Entry to CCN via UCLA Sigma 7; A scenario", UCLA/CCN.
NIC #7748, November 15, 1971.
This document described the first NETRJS user implementation
available on a server host. This program is no longer of general
interest.
5. "Using Network Remote Job Entry", E. F. Harslem. RFC #307: NIC
#9258, February 24, 1972.
This document is out of date, but describes generally the Tenex
NETRJS user process "RJS".
6. "EBCDIC/ASCII Mapping for Network RJS", R. T. Braden. RFC #338:
NIC #9931, May 17, 1972.
The ASCII-63 mapping described here is no longer correct, but
CCN's standard ASCII-68/EBCDIC mapping is described correctly.
This information is accurately described in Appendix F of the
current document.
Braden [page 18]^L
RFC 740 RTB 42423 22 Nov 77
NETRJS Protocol
7. "NETRJT--Remote Job Service Protocol for TIP's", R. T. Braden. RFC
#283: NIC 38165, December 20, 1971.
This was an attempt to define an rje protocol to handle TIPs.
Although NETRJT was never implemented, many of its features are
incorporated in the current Network standard RJE protocol.
8. "CCN NETRJS Server Messages to Remote User", R. T. Braden. NIC
#20268, November 26, 1973.
9. "FTP Data Compression", R. T. Braden. RFC #468: NIC #14742,
March 8, 1973.
10. "Update on NETRJS", R. T. Braden. RFC #599: NIC #20854, December
13, 1973.
This updated reference 1, the current document combines the two.
11. "Network Remote Job Entry -- NETRJS", G. Hicks. RFC #325: NIC
9632, April 6, 1972.
12. "CCNRJS: Remote Job Entry between Tenex and UCLA-CCN", D.
Crocker. NUTS Note 22, [ISI]<DOCUMENTATION>CCNRJS.DOC, March 5,
1975.
13. "Remote Job Service at UCSB", M. Krilanovich. RFC #477: NIC
#14992, May 23, 1973.
Braden [page 19]^L
|