RFC 325
Network Remote Job Entry program - NETRJS
Network Remote Job Entry Program - NETRJS π
okay bestie, this is RFC 325 and it's a whole vibe π
Title block π
- RFC: 325
- Title: Network Remote Job Entry Program - NETRJS
- Author: G. HICKS
- Affiliation: UTAH
- N.I.C. #: 9632
- Date: APRIL 6, 1972
- Category/status: not stated in the original π€·ββοΈ
- Obsoletes/updates: none listed
Since October 1971 we, at the University of Utah... π§
okay so, since October 1971 the University of Utah has been running super huge compute bound jobs nonstop π and honestly those jobs were making response time on their PDP-10 bad for the other Tenex users π
Since February, they've been submitting jobs to the UCLA 360/91. Here's how it normally goes, and it's giving diagram energy π¦
+---------------+ +---------------+
______ | UTAH | NETWORK | UCLA |
/ \ | +---------+ | | +---------+ |
+ + | | | | / / | | | |
|\______/| | | |>-|-------/ /------|->| | |
| |----+--| NETRJS | | : / / |: | RJS | |
| FILE | | | |<-|-----/ /--------|-<| | |
| SYSTEM | | | | | / / | | | |
\ / | +---------+ | | +---------+ |
\______/ | | | | |
+-------|-------+ +---------------+
|
USER
So to use NETRJS, the user makes a job file under the Tenex system. Then they tell NETRJS to send that file to the UCLA RJS (Remote Job Service System) πΈ Using NETRJS, the user can keep an eye on their job's progress π When RJS lets the user know their job output is ready to grab, the user can tell NETRJS to pull the output ("printed" or "punched") down into a local file β¨
WHERE TO GET THE SOURCE PROGRAM π
if you want a copy of the source program, you contact:
Gregory P. Hicks
Computer Science Department
Merrill Engineering Building 3160
University of Utah
Salt Lake City, Utah 84112
(801) 531-8224
UCLA REMOTE JOB SERVICE π
to use the UCLA 360/91 through RJS, you need two things:
- Have a valid account at UCLA
- Have an assigned RJS terminal id.
both of those come from:
Bob Braden
UCLA
Math Sciences Building
3531 Boelter Hall
Los Angeles, Calif. 90024
(213) 825-7518
The rest of this paper goes deeper into the program and the steps to run a user's program at UCLA π«Ά
DESCRIPTION OF THE PROBLEM π₯
Ngl, there's a problem here π© Some jobs are compute bound for so long that they seriously mess with response time for interactive users. We're talking jobs that run from ten hours upward. So another computer was needed to handle them, and the UCLA-CCN 360/91 was suggested π The 360/91 is mostly a batch processing system, so it's tuned for jobs that usually run for hours. UCLA also has software that lets jobs get submitted from remote terminals, either through direct communication lines or through the ARPANET π
HOW AND WHY THE PROGRAM WAS WRITTEN π§
this part is so juicy π UCLA's software let remote terminals have unlimited connect time (meaning the time the terminal was actually connected to the 360/91) for free for the user.
But the UCLA software needed each terminal to be given 2k (2048 S/360 bytes) of core for every connection open at one time. Each terminal could have a virtual card reader, a virtual line printer and a virtual card punch, so one terminal could take up 10k of core at UCLA π According to the UCLA systems people, that would put a heavy load on the system if all the ports were in use at once π¬
So, as a matter of design decision, they decided the operator would have to request that the various connections get opened. The operator could not have more than three connections at any one time. They could have the two operator connections, plus one of the following open at once:
A) Virtual line printer
B) Virtual card reader
C) Virtual card punch
Yes, this makes the operator way more active than one with a program that waits and sends their output to them automatically π But because the remote (UCLA) system had less load, the turnaround time was probably faster than if every remote RJS user had all their connections open. Main character energy for the system, honestly π
DATA TABLES NEEDED BY NETRJS ποΈ
NETRJS doesn't have any info "built into" it about who has a valid terminal id at UCLA. That info lives on the disk in a file called PWD.SAV. A program creates and updates that info for NETRJS. So NETRJS is site independent, and it'll work from any TENEX system that can use the ARPANET β¨
THE COMMAND INTERPRETER π
NETRJS borrowed R. S. Tomlinson's TELNET command interpreter and swapped out his commands for the ones needed to run a program at UCLA π¦ Like in TELNET, the command interpreter recognizes commands that are only partly typed. If it doesn't have enough of the command to recognize it, it'll let the operator know π
OPERATION COMMANDS TO NETRJS π
The commands available are:
1) SEND.FILE.NAMED
2) RETRIEVE.OUTPUT.FROM
Options available here are:
a) PRINTER
b) PUNCH
Under punch the options are:
i) Retrieving an object deck or
ii) Retrieving an ascii file
3) TIME.NOW.IS
4) LOGOUT
5) RESTART
6) DISCONNECT
7) QUIT
8) SYSTAT
9) JOBSTAT
10) ?
11) ^Q
okay now let's go through what each one does π«£
SEND.FILE.NAMEDasks the operator for the name of their program on the disk, converts it to card images, and sends the file to the Remote Job Service at UCLA. Once UCLA accepts the file, the operator gets a confirming message telling them how many cards were read and the name of their job. At that point the operator can sign off from RJS and come back later to get their output πΈRETRIEVE.OUTPUT.FROMasks the operator for the name of the virtual device the output is on. The operator can pick either the printer or the punch π¨οΈTIME.NOW.ISoutputs the time for the user's info β°RESTARTmakes a very virgin NETRJS. Only use this as a last resort, since it does "reset-the-world" πLOGOUTdoes exactly what it says πͺ It logs the user out from their local and remote job. It does need a confirming carriage return, or it won't do anything.DISCONNECTlogs the user out from the remote job and disconnects them (breaking all connections between them and the remote computer) πQUITis the only recommended way to terminate the NETRJS program π The program can be continued later with no harm done β¨JOBSTATmakes RJS show the status of any jobs still active that were submitted from the remote terminal πSYSTATmakes RJS tell the operator which remote terminals are using the RJS system right now π§?does a few things. At the command level, it tells the operator what NETRJS expects next. If nothing has been typed, it responds with all the top level commands. If something has been entered, it responds with all the commands that begin with those letters. Like in TELNET, it won't see anything that's illegal π When sending or receiving a file,?tells NETRJS to type out its progress so far. That message gets typed at the end of the transaction it's currently processing, so it might take a few minutes to show up β³^Qis a very useful abort facility when used like this:^Q ^Cwill terminate NETRJS. The command interpreter doesn't interpret this one. It's looked for by the sending (console) portion of the program. Either way, the program can't be continued after this π Here's how it works: this command just re-enables the^Cin the exec and stops the console from doing anything (eg: sending messages to UCLA, finding out the system status at UCLA, etc...). The recommended sequence for this command (IF IT MUST BE USED) is^Q^C. The reason: the program is still processing, but the operator can't communicate with it π₯Ί
β οΈ bestie,^Qis a last-resort move. The program keeps running in the background but you can't talk to it, so use the sequence^Q^Conly if you really have to π
WHEN THE OPERATOR'S CONSOLE IS ACTIVE π
okay bestie, so the NETRJS prompt is << π
and that just means the program is ready and waiting for your commands. π§ Once >> shows up, the console has switched into remote mode, and anything you type now goes straight to RJS. β¨
Even before >> appears, the operator can still talk to RJS while files are being sent or retrieved. π¦ The console is in remote mode the whole time, EXCEPT when NETRJS is sitting at the command level. π It's giving "one thing at a time" energy, iykyk. π
EDITING ON THE NETWORK π©·
ngl, everybody makes typos, so NETRJS has two control characters to help you fix them. π«Ά
First up is control-x βοΈ. This tells RJS to ignore your last line, and it gets echoed back as ___. π
Then there's control-h π. This makes UCLA ignore the character right before it. It gets echoed as _, and the deleted character itself doesn't get echoed at all. Literally so clean. π
TABS AND OTHER NEAT GOODIES πΈ
Okay, so most people writing TENEX programs love using the teletype tab stops, which means we needed a nice, friendly number for them. π When you're running NETRJS, the tab stops are set every 8 columns. So if a line starts with a tab, the first character lands in (card) column 8. π
The program is super chill about line endings too. It accepts almost any <eol> indicator, like TENEX eol or cr lf, in any order. π¦ It also deletes blank lines. β¨
Since you might be generating your data with a program written in something like Fortran, NETRJS also ignores null (00) characters. π§ That's the kind of thoughtful detail I'm obsessed with. π
When you retrieve a file of data, every <eol> comes back as cr and lf. π This is so the output plays nicely with text editors like QED, DED, SOS, and etc. π
FILE FORMAT π
Main character alert β οΈ: when you send a file to UCLA, each line has an 80 character limit. π This is a design restriction, because jobs going to the OS/360 can't be longer than 80 characters per line. Remember, IBM is still card oriented... ππ
If NETRJS finds a line longer than that, the operator gets a message that's nasty (well... semi-nasty anyway) π so just keep your lines short, bestie. π
For an output file, there's no line limit from NETRJS itself. The only cap is whatever the programming language allows, up to 255 characters. β¨ Lowkey generous! π
One more thing: when you retrieve a punch file, you might spot a few extra lines that got thrown in. π«Ά UCLA does this so you can identify your deck when it gets punched on the card punch. Iconic. ππ
That's the whole doc, periodt! π
[ This RFC was put into machine readable form for entry ]
[ into the online RFC archives by Elias Lofgren ]
RFC>>>
π¦ where this page comes from
- ietf: rfc325 1972-04
- π girlified by claude-haiku-5-5 on : a language model's rewrite of the original, under its terms