Network Working Group M. Krilanovich Request for Comments: 477 UCSB NIC: 14922 23 May 1973 References: RFCs 354, 407, NIC 16306 Remote Job Service at UCSB Introduction This RFC is the follow-on document to RFC #436, which briefly described UCSB'S RJS. This document restates the essence of the official RJE protocol (RFC #407), and documents in detail UCSB's implementation of it. The program described here is available under socket 5 at UCSB, and supports a subset of the official protocol. Specifically, no checks are made for RJE control cards in the input file, jobs may not be batched in the input file, only output file dispositions of discard and transmit-and-discard are implemented, no restart markers are sent on output in FTP blocked mode, and several of the commands are not implemented. There are also other ways in which RJS is known to be less than ideal. For example, whenever any error is detected while processing a job, such as the output's destination host being dead, the job is abandoned, and any further output deleted. A re-write of RJS is scheduled for the near future (in about six months), and many of these deficiencies will be corrected at that time. (Any suggestions for further improvements are more than welcome, and may be made through the Journal to MCK, by mail to the author at the UCSB Computer Center, or by telephone at (8O5) 961-3454.) In addition to the deviations from the protocol stated above, several modifications have been made to increase user convience. Specifically, the INACCT, OUTACCT, and ACCT commands have been added to accommodate users of TENEX and other systems requiring an account number, OUTPATH has been added as a synonym for OUT and INUSER for INID, and the BYE command does not cause an ABORT. Also, in recognition of the fact that the official protocol is biased heavily toward use by programs, and is therefore rather cumbersome for human users, an alternate, optional, command syntax has been provided. An attempt was made to make this alternate syntax, called 'local syntax', as 'natural' as possible to a human user. It also provides some features not available with the standard syntax. Krilanovich [Page 1] RFC 477 Remote Job Service at UCSB 23 May 1973 Service Provided The UCSB Computer Center operates an IBM 360/75 and runs OS MVT release 21.0 and HASP. All batch jobs at UCSB enter the system through HASP, and therefore RJS acts as an interface between the user and HASP. RJS's function is to provide the user with a HASP virtual RJE terminal, consisting of card reader, card punch, line printer and operator's console, and to manage the first three of these for the user in response to commands issued by him. By virtue of the fact that RJS maintains the correspondence between a particular user and the HASP RJE terminal owned by him, the user may issue commands to alter the status of those jobs submitted by him through his RJE terminal. This may be done even if the user has logged out of RJS and back in again, possibly from another site. The sequence of events involved in using RJS are as follows. First, the user logs in, specifying a user name, password, and account number. In addition to indicating how subsequent use of RJS is to be billed, this accounting information identifies the owner of a particular RJE terminal. That is, the association between user name and HASP virtual RJE terminal is unique, and only one individual is allowed logged in under a given user name at a time. At present, billing within RJS is not implemented, and therefore the login account number is completely arbitrary, and user name and password are relatively so. The first time a given user name is used, any password may be chosen; thereafter, as long as the user name is known to RJS, the same password must be used. A user name remains known to RJS while he is logged in, and when he is not, as long as he owns at least one job known to PJS. Otherwise, the user name is discarded. After a user is logged in, he specifies input and output file information and requests input retrieval be initiated. He may then log out or not as he wishes; specifically he is not required to remain logged in during source file retrieval. A job can completed abnormally at any stage of processing, or normally, after storage of the last of its output. In any case, the circumstances of the final disposition of the job are displayed to the user immediately if he is logged in, saved for a period after its completion, and are available to him on request the next time he logs in. This status information is retained for at least a fixed period (currently two days), but will be retained longer as long as sufficient storage space is available for it. Krilanovich [Page 2] RFC 477 Remote Job Service at UCSB 23 May 1973 RJS Commands - General Information In order to simplify specification of job parameters, RJS maintains a set of accumulators for these parameters. Each accumulator is initially empty, and may have its contents set or referred to by various commands. The following parameter accumulators are maintained for each user (user name, password, and account together are termed accounting parameters): login accounting parameter (those specified either in the LOGIN or the USER, PASS, and ACCT commands), source pathname, print pathname, punch pathname, source accounting parameter, print accounting parameter, and punch accounting parameter. In addition, associated with each job are the parameters source, print, and punch pathname, and source, print, and punch accounting parameters. When the TELNET connections are first opened, RJS sends the user a herald message of the form '300 UCSB RJS (VER.) TTY .', where identifies the current version of RJS, and identifies the user's terminal in the sense that each TELNET connection is assigned a unique TTY number. During the process of running a job, any of several spontaneous job status messages may be displayed to the user. They are '240 INPUT RETRIEVAL FOR JOB HAS BEGUN.', displayed when the input connection(s) have been established, '261 JOB HAS COMPLETED EXECUTION.', when the first of the job's printed output has been received from HASP, '466 PRINTED [or PUNCHED] OUTPUT FROM UNKNOWN JOB (HASP JOB NUMBER ) IS BEING DISCARDED.', if printed or punched output is received from HASP over the user's line for a job not known to RJS, and messages explaining errors such as ICP/RFC failure, invalid job card, null source deck, missing pathname, and data transfer network errors (see Appendix B for for a list of possible reply id's). In addition, while in local syntax, the user may receive messages from HASP over his virtual operator's console. Some are responses to HASP commands issued by the user, and others are spontaneous messages. All, however, are asynchronous to the entering of other RJS commands. Certain general rules hold for both sets of syntax. They are as follows: 1. The character pair CR-LF is used as command accept to terminate commands. Other occurrences of these two characters are ignored, and may be used as desired for local carriage control. 2. Any number of blanks are permitted before or after any syntactic unit (including the first and last). Krilanovich [Page 3] RFC 477 Remote Job Service at UCSB 23 May 1973 3. Upper and lower case alphabetics are treated identically everywhere except in . 4. Whenever a switch is made to the syntax not in effect, the current TELNET modes (full or halfduplex, character or line at a time) are saved, and reinstated when the current syntax is again entered. In the syntactic descriptions below, the following notation is used: 'text' denotes literal text (quotes not part of text) denotes name of syntactic unit _ denotes choice of syntactic units or [] denotes optional syntactic unit ( ) denotes group of syntactic units treated as a whole = syntactic unit at left defined by statement on right The following general syntactic definitions are hereby made: = command accept = a string of 1 to 8 alphameric characters = a string of 1 to 8 alphameric characters = a string of 1 to 6 alphameric characters = a string of 1 to 8 alphameric characters, the first of which is alphabetic. Krilanovich [Page 4] RFC 477 Remote Job Service at UCSB 23 May 1973 Description of RJS Commands, Standard Syntax The following is a list of the commands supported in the standard syntax. Where not specified, the command's response is '200 OK'. In those cases where it is stated that the user must be logged in, the response '504 LOGIN PLEASE.' is displayed if the user is not logged in. 'USER' ['='] Specifies the user's user name for accounting purposes, initiates login, and initializes the source, print, and punch user name accumulators to . To complete login, this command must be followed by a successful PASS command. The only other command allowed before the user is logged in is BYE. The response to a syntactically valid USER command is always '330 ENTER PASSWORD' 'PASS' ['='] (password> Specifies the user's password to gain access to the user's account, completes the login initiated by a previous USER command, and initializes the source, print, and punch password accumulators to . The response to a successful PASS command is '230 USER OWNS REMOTE TERMINAL .', where is the number of the HASP virtual RJE terminal owned by the user. The following error replies are possible: '431 NEW USERS ARE NOT BEING ACCEPTED AT THIS TIME.' if there is no free HASP terminal to assign to the user (there is currently a maximum of 10), or if there are insufficient other resources available to support another user; '431 INCORRECT PASSWORD.' if the specified is not that assigned to the previously specified ; '431 ANOTHER USER IS LOGGED IN AS .' - only one user is allowed logged in with a given at a time. 'ACCT' ['='] Specifies the UCSB Computer Center account number to which the user's use of RJS is to be billed, and initializes the source, print, and punch account accumulators to . The response to a syntactically correct ACCT command is '200 OK'. As previously stated, RJS billing is yet to be implemented, and therefore the ACCT command is optional. Users and writers of user processes are warned, however, that it will eventually be required, and that at that point, the PASS command will return a reply id of 330, and the ACCT command will have those replies listed above under PASS. Krilanovich [Page 5] RFC 477 Remote Job Service at UCSB 23 May 1973 'BYE' Logs the user out and closes the TELNET connections to him, regardless of whether there are any file transfers in progress; if there are, they continue unaltered. The response to a BYE Command is always '231 LOGOUT C0MPLETED; TRANSFERS (IF ANY) CONTINUE.', followed by a continuation line of 'TTY IS DISCONNECTED.' 'STATUS' Lists the user names of those users currently known to RJS. The response is either '100 NO USERS ARE KNOWN TO RJS' or '10O THE FOLLOWING USERS ARE KNOWN TO RJS:', followed by one or more lines, each beginning with a continuation reply id of four blanks, giving a remote terminal number, the user name of the user who owns that terminal, and the name of the site from which he last logged in. 'SYNTAX' Causes the current command syntax to become local syntax. The TELNET modes (full or half duplex, character or line at a time) most recently in effect in local syntax again become effective. RJS responds with the local syntax prompt character (currently number sign, '#'). The remaining commands require the user to be logged in. 'REINIT' Resets to empty the source, print, and punch accounting parameter, the source, print, and punch pathname, and the login accounting parameter accumulators. The response to a REINIT command is always '204 OK'. ('INUSER' _ 'INID') ['='] Sets the source user name accumulator to (user name>. 'INPASS' ['='] Sets the source password accumulator to . 'INACCT' ['='] Sets the source account accumulator to . Krilanovich [Page 6] RFC 477 Remote Job Service at UCSB 23 May 1973 'OUTUSER' ['='] Sets the print and punch user name accumulators to . 'OUTPASS' ['='] Sets the print and punch password accumulators to . 'OUTACCT' Sets the print and punch account accumulators to . 'INPATH' ['='] = _ = [ ','] = '/' = = = _ ('D' ) _ ('H' ) _ ('X' ) _ ('O' ) = ':T' _ ':A' _ ':N' _ ':' _ _ ':E' _ ':TE' _ ':AE' _ ':NE' = 1 to 16 ASCII characters, excluding CR and LF (codes 0 through 127, excluding 10 and 13) Sets the source pathname accumulator to . The is the means for specifying a file's source or destination; its semantics are as follows: 1. Specification of indicates that RJS will establish a simplex connection to the stated socket (RJS issuing the CONNECT, user issuing a LISTEN). The data is then transferred over this connection, with CLOSE signaling end of file. 2. If in is defaulted, the host containing the TELNET user will be assumed. 3. Specification of indicates that RJS will contact the standard FTP server socket (currently socket 3) at the stated host, and transfer the data according to the File Transfer Protocol. The referred to here corresponds to the term used in the FTP specification document, RFC #354. Krilanovich [Page 7] RFC 477 Remote Job Service at UCSB 23 May 1973 4. The type of carriage control and the data code used are determined by . The meaning of this parameter is as follows: ':T' ASCII code, TELNET carriage control ':A' ASCII code, ASA carriage control ':N' ASCII code, no carriage control ':' identical to ':N' for input, ':A' for output identical to ':N' for input, ':A' for output ':E' identical to ':NE' for input, ':AE' for output ':TE' EBCDIC code, TELNET carriage control ':AE' EBCDIC code, ASA carriage control ':NE' EBCDIC code, no carriage control Detailed descriptions of the transfer modes may be found below under 'RJS File Transfer.' ('OUTPATH' _ 'OUT')
RFC, FYI, BCP