RFC 360

Proposed Remote Job Entry Protocol

๐Ÿ“… published June 1972, from ietf

PROPOSED REMOTE JOB ENTRY PROTOCOL ๐ŸŽ€

Okay bestie, first the vital stats ๐Ÿ“‹ This is RFC 360 from the Network Working Group, written by C. Holland of UCSD-CC, dated June 1972. Its category is Protocols, RJE, and it's a proposed protocol with NIC number 10602. It doesn't list any RFCs it obsoletes or updates, so it's coming in totally fresh ๐Ÿ’…

Remote job entry is when a user in one place makes a batch-processing job run somewhere else ๐Ÿงš This protocol is the Network standard for how that user talks over the Network to a remote batch-processing server. The server then goes and grabs a job-input file, processes the job, and delivers the job's output file(s) to a remote location ๐Ÿฆ‹ The control chat runs over TELNET, but it's a special standardized logger, not socket 1 ๐Ÿ™ˆ Then the server site uses the File Transfer Protocol to pull the job-input file and send back the output file(s). It's giving teamwork โœจ

There are two kinds of users: direct users (actual people) and user processes ๐Ÿ’œ A direct user types from an interactive terminal attached to a TIP or any host. They can make the input and/or output go to a specific socket on a specified host (think card readers or printers on a TIP), or they can have the files moved by pathname using File Transfer Protocol. The other kind is an RJE User-process in one remote host talking to the RJE Server-process in another host. This one gets its instructions from a human, just through some unspecified indirect means ๐ŸŒˆ The command and response streams are designed so that both the human user and the user process can easily use and interpret them ๐Ÿซถ

A user location can choose to open a TELNET control connection for each logical job, or leave it open for a long time ๐Ÿ“ If it stays open, multiple job-files can be told to get retrieved. Or, if the server can figure out where one logical job ends by reading the input stream and make several jobs out of one input file, you can do one continuous retrieval (like from a TIP card reader) ๐Ÿ”ฅ That makes a "hot" card reader pointed at a particular server, with the TELNET connection acting as a "job monitor". Output always goes back one job at a time per connection to the output socket, so output from this "hot" reader shows up when it's ready, like a "hot" printer ๐Ÿ˜ญ For fancier hosts, you can attach an RJE User-process to a card reader and have it take instructions from a lead control card. That opens an RJE control TELNET to the right host with the right logon and input retrieval commands. To the human user, this card reader looks like a Network "host" card reader ๐Ÿ‘‘ The details of that RJE User-process are out of scope for this protocol, so don't worry about them here ๐Ÿ’…

GENERAL SPECIFICATIONS โœจ

  1. User - A human user at a real terminal, or a process that supplies the command control stream that gets a job submitted remotely, is called the User. How a process user gets its instructions is out of scope for this protocol.
  2. User TELNET - The User sends its commands over the Network in Network Virtual Terminal code, through a User TELNET process in the User's Host. That User TELNET process starts up by sending an ICP to the standard "RJE logger" socket (socket 5) at the desired RJE-server Host ๐Ÿ’–
  3. RJE-server TELNET - The RJE-server process gets its command stream from the TELNET channel, and sends its response stream back through it, via an RJE-server TELNET process in the server host. This process must listen for the ICP on the "RJE logger" socket, and cause the appropriate ICP socket shifting.
  4. TELNET Connection - The command and response streams for the RJE mechanism run over a TELNET-like connection to a special socket, with full specifications according to the current NWG TELNET protocol ๐Ÿงš
  5. RJE-Server - The RJE-Server process lives in the Host providing the Remote Batch Job Entry service ๐ŸŒธ It takes input from the RJE-Server TELNET, controls access through the "logon" procedure, retrieves input job files, queues jobs for execution by the batch system, responds to status inquiries, and sends job output files when they're available.
  6. User FTP - All input and output files get transferred under control of the RJE-server process, on its own initiative. Files can be transferred directly via Request-for-connection to a specific Host/socket, or via File Transfer Protocol. If it's the latter, the RJE-server acts through its local User FTP process to make the transfer happen. That process starts by making an active Request-for-connection to the "FTP Logger" in the foreign host ๐Ÿฆ‹
  7. Server FTP - This process in a remote host (remote from the RJE-server) listens for an ICP from the User FTP, then acts on the commands from the User FTP to carry out the appropriate file transfer.
  8. FTP - When File Transfer Protocol is used for RJE files, the standard FTP mechanism is used, as fully specified by the current NWG FTProtocol ๐Ÿ’…
  9. RJE Command Language - The RJE system is controlled by a command stream from the User over the TELNET connection. That stream specifies the user's identity (logon), the source of the job input file, the status, and any changes to job status or output disposition. Extra commands that affect output disposition can also be included in the job input file. This command language gets its own explicit specification in a later section of this protocol ๐ŸŽ€
  10. RJE Command Replies - Every command the User inputs via TELNET, plus certain other conditions, calls for a response message from the RJE-server back to the User over the TELNET connection ๐ŸŒˆ These messages are formatted in a standard way so that both human Users and User processes can interpret them easily. A later section of this protocol specifies the response messages.

RJE COMMANDS OVER TELNET CONNECTION ๐Ÿ“

GENERAL CONVENTIONS

  1. All commands are contained in one input line, terminated by the standard TELNET "crlf". The line can be any length the user wants (explicitly not restricted to a physical terminal line width). The characters "cr" and "lf" are ignored by the RJE-server, except in the explicit order "crlf", and they can be used as needed for local terminal control ๐Ÿ’–
  2. All commands begin with a recognized command name, and may then contain recognized syntactic element strings and free-form variable strings (for userid, pathnames, etc.) โœจ Recognized words are alphanumeric strings (letters and digits) or punctuation. Recognized alphanumeric string elements must be separated from each other, and from unrecognizable strings, by at least one blank or a syntactically permitted punctuation. Other blanks can be used freely before or after any syntactic element. The "=" after the command name is optional in all commands except OUT and CHANGE.
  3. Recognized alphanumeric strings can mix upper case and lower case letters in any combination, with no syntactic difference. Unrecognizable strings are used exactly as presented, with full upper and lower case distinction, unless the host that finally uses the string defines otherwise ๐Ÿซถ
  4. There are two types of unrecognizable strings: final and imbedded ๐Ÿงš Final strings appear as the last syntactic element of a command. They're parsed as starting at the next non-blank character of the input stream, and continuing to the last non-blank character before the "crlf".

Imbedded strings include "job-id" and "job-file-id" in the OUT, CHANGE, and ALTER commands. For now these fields are left undelimited, since they only need to be recognizable by the server host, which hopefully can recognize its own job-ids and file-names ๐Ÿ™ˆ

SYNTAX

The following command descriptions are written in a BNF-like syntax ๐Ÿ”ฅ Parenthesized names are non-terminal syntactic elements, which get expanded in the equations that follow. Each equation has the defined name on the left of the ::=, and a set of alternative definitions on the right, separated by slashes /. The equations for (host-file) and (disp) use the characters / and ( ) explicitly in their definitions. In those cases, the quotes aren't part of the definition. They surround literal text that is part of it ๐Ÿ’…

USER ๐Ÿ‘‘

USER = (user-id)

This command must be the first command over a new TELNET connection ๐Ÿ’– As such, it starts a "logon" sequence. The response to this command is one of the following:

a) User code in error. b) Enter password (if usercode ok) c) Log-on ok, proceed. (if no password required)

Another USER command can be sent by the User at any time to change Users. Further input is then charged to the new user. A server may refuse to honor a new user command if it can't process it in its current state (during input file transfer, for example). But the protocol permits the USER command at any time without altering previous activity ๐Ÿฆ‹ An incorrect later USER command, or its following PASS command, is ignored with an error response, and the original User stays logged in.

It's permissible for a server to close the TELNET connection if the initial USER/PASS commands aren't completed within a server-specified time period โฐ

It is not required or implied that the "logged-on" User be the user-id used for file transfer or job execution. The logged-on User only identifies the submitter of the command stream ๐ŸŒธ Servers establish their own rules relating User-id to the job-execution user for Job or Output alteration commands.

A successful "log-on" always clears any previous Input or Output default parameters (INID, etc.) โœจ

PASS ๐ŸŒˆ

PASS = (password)

This command immediately follows a USER command and completes the "log-on" procedure ๐ŸŽ€ Even though a particular Server may not require a password, and has already said "log-on ok" after the USER command, every Server must permit a PASS command (and may ignore it), and acknowledge it with a "log-on ok" if the log-on is completed ๐Ÿซถ

BYE ๐Ÿ“

BYE

This command terminates a USER. If input transfer isn't in progress, it closes the TELNET connection. If input is in progress, the connection stays open for the result response, and then closes. In the meantime, a new USER command (and no other command) is acceptable ๐Ÿ’œ

An unexpected close on the TELNET connection causes the server to take the effective action of an ABORT and BYE ๐Ÿ˜ญ

INID/INPASS ๐Ÿงš

INID = (user-id)
INPASS = (password)

The specified Userid and Password are sent in the File Transfer request to retrieve the input file ๐Ÿ’– These parameters aren't used by the Server in any other way. If this command doesn't appear, the USER/PASS parameters are used instead โœจ

INPATH/INPUT ๐Ÿฆ‹

(part 2 is coming, babe ๐Ÿ’…)

      INPATH = (pathname)
      INPUT = (pathname)
      INPUT

      NOTE: The following syntax will also be used for output
      (pathname).

      (pathname)::= (host-socket) / (host-file)
      (host-socket)::= (host),(socket) / (socket)
           no (host) part implies the User-site host
      (host)::= (decimal-integer) / (standard-host-name)
      (socket)::= (decimal-integer) / PORT (decimal-integer)
           (decimal-integer) implies explicit socket, lower bit
                will be set appropriately for the direction
           PORT implies the specified port-sockets for a TIP
                Tip-Socket = Port * 2**16 + (2 or 3)
      (host-file)::= (host)(attributes)"/"(file-name)
      (attributes)::= (empty) / : (transmission)(code)
      (transmission)::= (empty) / T / A / N
           (empty) implies default which is
                N for Input files
                A for output files
           T specifies TELNET-like coding with imbedded "crlf"
                for new-line, "ff" for new-page
           N specifies FTP blocked transfer with record marks
                but without other carriage-control
           A specifies FTP blocked records with ASA carriage-
                control (column 1 of image is forms control)
      (code)::= (empty) / E
            (empty) specifies NVT ASCII code
            E specifies EBCDIC (TE not allowed)
      (file-name)::= (any string recognized by the
                 FTP Server at the site of the file)

okay so the (pathname) thing is the general RJE way to say where a file comes from or goes to ๐Ÿ’–๐ŸŽ€ it's giving very flexible energy. If you use the (host-socket) form, the RJE-Server does a direct transfer to the named socket using TELNET-like ASCII ๐Ÿฆ‹. If you use the (host-file) form, the RJE-server calls up its local FTP-user process to do the actual transfer ๐Ÿงš. In that mode the data is either TELNET-like ASCII or blocked records, and blocked records might use column 1 for ASA carriage-control ๐Ÿ’…. A mode is allowed on input (column 1 gets deleted), but honestly the usual choice would be the default N ๐ŸŒธ. The output default A supplies carriage-control in the first character of each record ("blank" means single-space, "1" means new-page, and so on), while the optional N mode only transfers the data, like sending it to a card punch ๐Ÿ˜ญ๐Ÿซถ.

The (file-name) is an arbitrary Unrecognized string that the RJE-server saves and then sends back over FTP to the FTP-server so it can retrieve or store the right files ๐Ÿ“.

INPATH or INPUT commands first store the specified (pathname) if you give one, and then the INPUT command starts the input โœจ. The INPATH name can be used to set a pathname for a later INPUT, and an INPUT without a pathname will start input over a pathname you already set ๐ŸŽ€. An INPUT "crlf" command with no previous (pathname) specified is illegal ๐Ÿ’€.

ABORT โœจ

ABORT

This command aborts any input retrieval in progress, discards already received records, and closes the retrieval connection ๐Ÿ™ˆ.

Note: ABORT with parameters is an Output Transmission control. ๐Ÿ”ฅ

OUTUSER/OUTPASS ๐Ÿงš

OUTUSER = (user-id) OUTPASS = (password)

The specified Userid and Password get sent in the File Transfer request to send the output file(s) ๐ŸŒˆ. These parameters aren't used by the Server in any other way ๐Ÿ’œ. If this command doesn't show up, then the USER/PASS parameters get used instead ๐Ÿฆ‹.

OUT ๐ŸŒธ

OUT (out-file) = (disp)(pathname)

(out-file)::= (empty) / (job-file-id)
     (empty) implies the primary print file of the job
(job-file-id)::= (string representing a specific output file
          from the job as recognized by the Server)
(disp)::= (empty) / "(H)" / "(S)" / "(D)"
     (empty) specifies Transmit then discard
     (H) specifies Hold-only, do not transmit
     (S) specifies Transmit and Save
     (D) specified discard without transmitting
   Note: Parentheses are part of the above elements.
(pathname)  see INPUT command

This command sets the disposition of output file(s) the job produces ๐Ÿ‘‘. Files you don't specify are Hold-only by default ๐Ÿซถ. The OUTUSER, OUTPASS, and OUT commands must be specified before the INPUT command to work ๐Ÿ’…. They affect any following jobs this USER submits over this RJE-TELNET connection โœจ. A particular job can override them with NET control cards at the front of its input file ๐ŸŽ€.

Once the output disposition is set by this OUT command or by a NET OUT card, the info stays with the job until final output disposition, and you can still change it with the CHANGE command ๐ŸŒˆ.

OUTPUT RE-ROUTE ๐Ÿฆ‹

CHANGE (job-id)(out-file) = (disp)(pathname)

This command changes the output disposition that came with the job submission โญ. The (job-id) is assumed to be recognizable by the RJE-server, which may check whether this USER is allowed to modify that job ๐Ÿ”ฅ. Once the job is identified, the rest has the same syntax and meaning as the original OUT command ๐Ÿ’–. A CHANGE command can name a job-file-id that wasn't mentioned at submission time, and it works the same as an original OUT command would ๐Ÿงš.

OUTPUT CONTROLS DURING TRANSMISSION ๐Ÿ’œ

(command)(count)(what)

(command)::= RESTART / RECOVER / BACK / SKIP / ABORT / HOLD
     these commands specify
          Restart the transmission (new RFC, etc.)
          Recover restarts transmission from last
             FTP Restart-marker-reply (see FTP).
          Back up the output "count" blocks
          Skip the output forward "count" blocks
          Abort the output, discarding it
          Hold the output after Aborting it
(count)::= (empty) / (decimal-integer)
     (empty) implies  1 where defined
(what)::= @(pathname) / (job-id)(job-file-id)
     (pathname) is as in the INP command
(job-id)::= (server recognized job identifier which was
          supplied at INP completion by the server)
(job-file-id)::= (server recognized file identifier or
          if missing then the prime printer output
          of the specified job)

These commands change the transmission of output that's in progress or was recently aborted ๐ŸŒธ. If output transmission gets cut off before it finishes, the RJE-server will either try to resend the whole file (if the file's (disp) was Transmit-and-discard) or Hold the file for more User control (if the (disp) was (S) transmit-and Save) ๐Ÿ˜ญ. These commands work during transmission, during the Save part of a transmit-and-Save, or for a Hold-only file ๐Ÿ“. The @(pathname) form of (what) is only allowed if transmission is actually in progress ๐Ÿ’€.

If the file's state doesn't match the command, then the command is illegal and gets ignored with a reply ๐Ÿ™ˆ.

STATUS ๐ŸŒˆ

STATUS
STATUS (job-id)

These commands ask for the status of the RJE-server or of one particular job, respectively ๐Ÿงš. What the Status reply contains depends on the site โœจ.

CANCEL/ALTER ๐Ÿ”ฅ

CANCEL (job-id)
ALTER  (job-id) (site dependent options)

These commands change the course of a submitted job ๐Ÿ’…. CANCEL means the job gets terminated right away and any output is discarded ๐Ÿ’€. ALTER handles system dependent options, like changing job priority, process limits, Terminate without Cancel, and so on ๐Ÿ‘‘.

OP ๐ŸŽ€

OP (any string)

The string you give gets displayed to the Server site operator when any following job starts being serviced from the Server's batch queue ๐Ÿฆ‹. This command usually shows up in the input file as a NET OP control card, but it can also be a TELNET command ๐Ÿซถ. It's cancelled as an all-jobs command by an OP "crlf" command (no text supplied) ๐ŸŒธ.

RJE CONTROL CARDS IN THE INPUT FILE โญ

Certain RJE commands can be specified by control cards at the front of the input file ๐Ÿ’–. If these controls show up, they win over the same command given through the RJE-TELNET connection, and they only affect this specific job ๐Ÿ’….

All these RJE control cards have to be the first records of the job's input-file ๐Ÿ“. They all contain the control word NET in columns 1-2 ๐Ÿงš. Scanning for these controls stops when the first card without NET in col 1-3 is encountered ๐Ÿ™ˆ.

The control commands go in individual records and end with the end-of-record (usually an 80 column card-image) ๐ŸŒˆ. You can continue onto the next record by putting NET+ in columns 1-4 of that next record ๐Ÿ’œ. Column 5 of the next record immediately follows the last character of the previous record ๐ŸŽ€.

NET OUTUSER = (userid)

NET OUTPASS = (password)

NET OUT (out-file) = (disp)(pathname)

NET OP (any string)

See the corresponding TELNET commands for details ๐Ÿซถ. One option the NET OUTUSER and NET OUT controls allow, which isn't possible over the TELNET connection, is specifying different OUTUSERs for different OUTs ๐Ÿ”ฅ. That's because TELNET only stores and supplies one initial OUTUSER, but the controls can change OUTUSERs before each OUT control is encountered ๐Ÿ’….

RJE USE OF FILE TRANSFER PROTOCOL ๐Ÿงš

Most non-TIP files get transferred to or from the RJE-server through the FTP process ๐ŸŒธ. The RJE-server calls up its local FTP-user and supplies the Host, File-pathname, User-id, Password, and Mode of the transfer it wants โœจ. The FTP-user then connects to its FTP-server counterpart on the specified host and sets up a transfer path ๐Ÿ‘‘. Data then flows through the RJE-FTP interface in the Server, over the Network, to or from the foreign FTP-server, and then to or from the specified File-pathname in the foreign host's file storage space ๐Ÿ˜ญ. For output files, the file-pathname might be recognized by the foreign host as directions to a printer, or the file might just get stored ๐Ÿ“. A User-RJE-process can supply the output (pathname) by default, which its own Server-FTP recognizes as routing to a printer ๐Ÿฆ‹.

A lot of the RJE-Server/User-FTP interface details are going to be site dependent ๐Ÿ’–. But there are several FTP options that RJE-Servers will use in a standard way ๐Ÿ’…:

  1. A new FTP connection gets initiated for each file to be transferred. The connection gets opened with the RJE User supplied User-id (OUTUSER or INUSER) and Password. ๐ŸŽ€
  2. The data bytesize will be 8 bits. ๐ŸŒˆ
  3. The FTP Type, Structure, and Mode parameters are determined by the RJE transfer direction (I/O) and the (transmission and (code) options the User supplied: ๐Ÿซถ
I/O   (TRANS)   (CODE)   FTP TYPE   STRUCTURE   MODE
----------------------------------------------------
I*      N        -       Ascii         R       Hasp
I       N        E       Image         R       Hasp
I       T        -       Ascii         F       Ascii
I       A        -       Ascii         R       Hasp
I       A        E       Image         R       Hasp

O*      A        -       Ascii-print   R       Hasp
O       A        E       Ebcdic-print  R       Hasp
O       N        -       Ascii         R       Hasp
O       N        E       Image         R       Hasp
O       T        -       Ascii-print   F       Ascii

 Note: The I* and O* are the default cases.
  1. Okay so the service commands are Retrieve for input and Append (with create) for output ๐Ÿ“‚โœจ. The FTP pathname is the (filename) the RJE User gives us ๐Ÿ’Œ.
  2. On output in Hasp form, the User-FTP at the RJE-Server site sends Restart-markers at periodic intervals (like every 100 lines or so) and remembers the latest Restart-marker-reply for the file ๐Ÿ”–. If the transfer doesn't finish and the (disp) is (S), the file gets held until the User steps in ๐Ÿซถ. The User can then use the RECOVER command to restart FTP from that last remembered Restart-marker-reply ๐Ÿ”๐Ÿ’–.
  3. The FTP Abort command handles the ABORT and CANCEL commands for RJE ๐Ÿ›‘.

The exact FTP commands an RJE-Server site uses, and the order it uses them in, aren't specified in this protocol ๐Ÿคทโ€โ™€๏ธโœจ.

Errors from FTP fall into three buckets: a) access errors or no storage space errors, b) command format errors, and c) transfer failure errors ๐Ÿšจ. Since the RJE-Server process builds the commands, an error is a programming problem, so it should be logged for attention and handled as safely as possible ๐Ÿ’…. A transmission failure or access failure on input causes an effective ABORT and a user notification ๐Ÿ™…โ€โ™€๏ธ. A transmission failure on output causes either a RESTART or a Save, depending on (disp). See the OUT command for that ๐Ÿ“ฎ. Access failure on output is the tricky one because the User might not be reachable ๐Ÿ˜ญ. In that case a status response should be queued for that user in case they ask later, a (disp)=(S) file should be Held, and a (disp)=(empty) transmit-and-discard file should be kept around for a bit and then discarded after a reasonable time if nobody claims it ๐Ÿงš.

REPLIES OVER THE TELNET CONNECTION ๐Ÿ’ฌโœจ

Every action the RJE-server takes, including every TELNET command that comes in, gets noted over the TELNET connection to the User ๐Ÿ“ก. These RJE-server replies are formatted so that a human or a program can read them. Each one starts with a 3-digit numeric code, then a blank, then a text explanation ๐ŸŽ€. The numbers are grouped on purpose so there's room to grow and maybe cover other protocols besides RJE, like FTP ๐ŸŒˆ. The code is built to be easy for programs to read, and the three digits break down like this:

a) The first digit tells you the "type" of response:

000 These "replies" are purely informative, and are issued
    voluntarily by the Server to inform a User of some state of
    the server's system.

100 Replies to a specific status inquiry.  These replies server as
    both information and as acknowledgement of the status request.

200 Positive acknowledgement of some previous command/request.
    The reply 200 is a generalized "ok" for commands which require
    no other comment.  Other 2xx replies are specified for
    specific successful actions.

300 Incomplete information supplied so far.  No major problem, but
    activity can not proceed with the input supplied.

400 Unsuccessful reply.  A request was correctly specified, but
    could not be correctly completed.  Further attempts will
    require User commands.

    500 Incorrect or illegal command.  The command or its
    parameters were invalid or incomplete from a syntactic view,
    or the command is inconsistent with a previous command.  The
    command in question has been totally ignored.

600-900 Reserved for expansion.

b) The second digit tells you the general subject the response is about:

x00-x29 General purpose replies, not assignable to other subjects.

x30 Primary access.  There replies refer to the attempt to "log-
    on" to a Server service (RJE, FTP, etc.).

x40 Secondary access.  The primary Server is commenting on its
    ability to access a secondary service (RJE must log-on to a
    remote FTP service).

x50 FTP results.

x60 RJE results.

x70-x99 Reserved for expansion.

c) The last digit picks out a specific message type ๐Ÿ”. Since a program is the one reading these codes, not every variation of a reply needs its own number. The basic meaning just needs a unique number. The text can explain the specific reason to the human User ๐Ÿ™ˆ.

Each TELNET line from the Server, ended by "crlf", is meant to be one complete reply message ๐Ÿ’Œ. If a reply has to run onto more lines, those continuation lines begin with a special reply code made of three blanks ๐Ÿ“.

The assigned reply codes for RJE are:

000 General information message (time of day, etc.)
030 Server availability information
050 FTP commentary or user information
060 RJE or Batch system commentary or information
100 System status reply
150 File status reply
151 Directory listing reply
160 RJE system general status reply
161 RJE job status reply
200 Last command received ok
201 An ABORT has terminated activity, as requested
202 ABORT request ignored, no activity in progress
203 The requested Transmission Control has taken effect
230 LOG-on completed
231 Log-off completed, goodbye.
232 Log-off noted, will complete when transfer done
240 File transfer has started
250 FTP file transfer started ok
251 FTP Restart-marker-reply
      Text is: MARK yyyy = mmmm
       where yyyy is data stream marker value (yours)
        and mmmm is receiver's equivalent mark (mine)
252 FTP transfer completed ok
253 Rename completed
254 Delete completed
260 Job (job-id) accepted for processing
261 Job (job-id) completed, awaiting output transfer
262 Job (job-id) Cancelled as requested
263 Job (job-id) Altered as requested to state (status)
300 Connection greeting message, awaiting input
301 Current command not completed
       (may be sent after suitable delay, if no "crlf")
330 Enter password
       (may be sent with hide-your-input mode)
360 INPUT has never specified an INPATH
400 This service is not implemented
401 This service is not accepting log-on now, goodbye.
430 Log-on time or tries exceeded, goodbye.
431 Log-on unsuccessful, user and/or password invalid
432 User not valid for this service
434 Log-out forced by operator action, please phone site
435 Log-out forced by system problem
436 Service shutting down, goodbye.
440 RJE could not log-on to remote FTP for input transfer
441 RJE could not access the specified input file through FTP
442 RJE could not establish (host-socket) input connection
443 RJE could not log-on to remote FTP for output delivery
444 RJE could not access file space given for output
445 RJE could not establish (host-socket) output connection
450 FTP: The named file does not exist (or access denied)
451 FTP: The named file space not accessible by YOU
452 FTP: Transfer not completed, data connection closed
453 FTP: Transfer not completed, insufficient storage space
460 Job input not completed, ABORT performed
461 Job format not acceptable for processing, Cancelled
462 Job previously accepted has mysteriously been lost
463 Job previously accepted did not complete
464 Job-id referenced by STATUS, CANCEL, ALTER, CHANGE, or
      Transmission Control is not known (or access denied)
465 Requested Alteration not permitted for the specified job
466 Un-deliverable, un-claimed output for (job-id) discarded
500 Last command line completely unrecognized
501 Syntax of the last command is incorrect
502 Last command incomplete, parameters missing
503 Last command invalid, illegal parameter combination
504 Last command invalid, action not possible at this time
505 Last command conflicts illegally with previous command(s)
506 Requested action not implemented by this Server

SEQUENCING OF COMMANDS AND REPLIES ๐ŸŽฌ

The User and the Server are supposed to take turns, like a little dialogue ๐Ÿ—ฃ๏ธ๐Ÿ’•. The User sends an RJE command and the Server answers with a prompt primary reply. The User waits for that first success-or-failure reply before sending anything else ๐Ÿ›‘โณ.

The Server also sends a second kind of reply, and it doesn't wait for User commands to arrive first ๐Ÿš€. These replies track how a job submission is going when it was kicked off by the INPUT command, so they count as secondary replies to that command ๐Ÿ“ˆ.

The last class of Server "replies" is purely informational and can show up at any time ๐ŸŒธ. These are listed below as spontaneous โœจ.

COMMAND-REPLY CORRESPONDENCE TABLE ๐Ÿ—‚๏ธ

COMMAND                  Success        Fail
-------                  -------        ----
USER                     230,330        430,431,432,500-505
PASS                     230            430,431,432,500-505
BYE                      231,232        500-505
INID                     200            500-505
INPASS                   200            500-505
INPATH                   200            500-505
INPUT                    240            360,440-442,500-505
  sec. Input retrieval   260            460,461
  sec. Job execution     261            462,463
  sec. Output Transmission --           443,444,445,446
ABORT (input)            201,202        500-505
OUTUSER                  200            500-505
OUTPASS                  200            500-505
OUT                      200            500-505
CHANGE                   200            500-505
RESTART/RECOVER/BACK/
 SKIP/ABORT(output)/HOLD 203            464,500-506
STATUS                   1xx            464,500-505
CANCEL                   262            464,500-506
ALTER                    263            464,465,500-506
OP                       200            500-505
Spontaneous              0xx,300,301    434-436

Heads up ๐Ÿ‘€: for commands that come in on cards, the 200 isn't sent, but the 500-505 errors may still be sent asynchronously ๐Ÿ’€.

TYPICAL RJE SCENARIOS ๐Ÿงšโ€โ™€๏ธ๐ŸŽ€

  1. TIP USER WANTING HOT CARD READER TO HOSTX
a) TIP user opens TELNET connection to HOSTX socket 5
b) Commands sent over TELNET to RJE
   USER=myself
   PASS=dorwssap
   OUT=PORT 7
   INPUT=PORT 5
c) RJE-server connects to the User's host port 5 and begins
   reading.  When end-of-job card is recognized, the job is queued
   to run.  The connection to the card reader is still open for
   more input as another job
d) The first job finishes.  A connection to the Users host port 7
   is established by RJE-server and the output is sent as an NVT
   stream.
e) Continue at any time with another deck at step c).
  1. TIP WITH JOB-AT-A-TIME CARD READER
a) thru d) the same but User closes Reader after the deck
e) The output finishes and the printer connection closes.
f) INPUT may be typed any time after step c) finishes and another
   job will be entered starting at c).

3. HOSTA USER RUNS JOB AT HOSTC, INPUT FROM HOSTB โœจ

okay so this one is a whole scenario bestie ๐Ÿงš a user at HOSTA runs a job on HOSTC, but the input comes from HOSTB. main character energy fr ๐Ÿ’…

a) the user's TELNET connects to HOSTC socket 5 for RJE ๐ŸŽ€ and they log in with these details:

USER=roundabout
PASS=aaabbbc
OUTUSER=roundab1
OUT=:E/.sysprinter
OUT puncher = (s)HOSTB:NE/my.savepunch
INUSER=rounder
INPASS=x.x.x
INPUT=HOSTB:E/my.jobinput

b) the RJE-server has FTP grab the input from HOSTB ๐Ÿ“ฅ using the Userid of rounder and the Password of x.x.x for the file named my.jobinput. it's giving organized.

c) the job finishes ๐ŸŽ‰ and the RJE-server uses FTP to send two files back. the print output goes to HOSTA in EBCDIC with ASA carriage control, into the file .sysprinter ๐Ÿ–จ๏ธ. meanwhile, the file known as puncher goes to HOSTB in EBCDIC without carriage control, into the file my.savepunch ๐Ÿ“

d) when the outputs are done, the RJE-server at HOSTC discards the print file but keeps the puncher file ๐Ÿ—‘๏ธโœจ the puncher file is literally the one that survives, iykyk.

e) the user signed out after submitting the job, so now they've got their output and have checked my.savepunch at HOSTB ๐Ÿฅน to delete the saved copy at HOSTC, they call RJE at HOSTC again:

USER=roundabout
PASS=aaabbbcc
ABORT job123 puncher
  or by
CHANGE job123 puncher = (D)
eagle eyes ๐Ÿ‘€ the password in e) is aaabbbcc, one extra c compared to step a). copy it exactly, bestie ๐Ÿ’–

and that's the whole arc, from submit to cleanup ๐Ÿฆ‹

๐Ÿ“ฆ where this page comes from