4-May-1982 05:26:43 VAX-11 FORTRAN V2.5-66 Page 1 30-Apr-1982 13:12:06 _DRC0:[XRB]XRB.FOR;13 0001 PROGRAM XRB C----------------------------------------------------------------------* C PROGRAM: XRB * C----------------------------------------------------------------------* C LANGUAGE: VAX-11 FORTRAN V2.4 * C SYSTEM: VAX-11/780 VAX/VMS V2.4 * C MOSTEK CORPORATION * C COMPUTER AIDS TO DESIGN DEPARTMENT * C 1215 WEST CROSBY ROAD * C CARROLLTON, TEXAS 75006 * C (214) 323-8813 * C----------------------------------------------------------------------* C PROGRAMMER: KEVIN KLUGHART * C----------------------------------------------------------------------* C DATE: 04-30-82 @ 13:00 CDST * C----------------------------------------------------------------------* C PURPOSE: THIS PROGRAM IS DESIGNED AS A NON-PRIVILEGED * C UTILITY TO ENABLE ORDINARY USERS TO QUEUE FILES * C FOR SUBMISSION ON ONE NODE ON THE DECNET NETWORK * C TO A REMOTE CDC HOST. IN ADDITION TO THIS ABILITY * C THE USER IS CAPABLE OF ENTERING A DIALOGUE WITH * C THE REMOTE HOST AS A WORKSTATION CONSOLE. THIS * C CAPABILITY IS PROVIDED THROUGH A LOCAL LINK TO * C THE REMOTE SERVER NODE. THIS PROGRAM REQUIRES THE * C NETMBX AND TMPMBX PRIVILEGES FOR PROPER OPERATION. * C----------------------------------------------------------------------* C NOTES: DEFINE THE FOLLOWING SYMBOL IN THE SYSTEM USER * C LOGIN COMMAND PROCEDURE: * C * C $ XRB :== $XRB * C * C THIS WILL ENABLE USER SYNTAX OF THE FORM: * C * C $ XRB command [cmd-data] [/HOST=host] * C * C WHERE host IS THE REMOTE HOST TO WHICH THE FILE * C IS TO BE SUBMITTED, filespec IS THE FILE TO BE * C SUBMITTED. NO QUALIFIERS ARE ALLOWED. EXAMPLE: * C * C $ XRB SUBMIT TEST.RJE /HOST=203 * C * C THE ABOVE COMMAND LINE QUEUES THE FILE TEST.RJE * C FOR SUBMISSION TO REMOTE HOST "203". * C----------------------------------------------------------------------* C COMMANDS: VALID COMMANDS ARE AS FOLLOWS: * C * C TALK /HOST=host - Enter dialogue mode with * C remote host * C * C SUBMIT filespec - Submit file to remote host * C /DELETE - delete job deck * C /HOST=host - specify remote host * C /ROUTE - route file back to user disk * C /SPOOL - spool file on server node * C----------------------------------------------------------------------* C EXTERNALS: STRING LIBRARY * C----------------------------------------------------------------------* 4-May-1982 05:26:43 VAX-11 FORTRAN V2.5-66 Page 2 30-Apr-1982 13:12:06 _DRC0:[XRB]XRB.FOR;13 C PARAMETERS * C----------------------------------------------------------------------* 0002 PARAMETER BATCH_UNIT = 1 ! REMOTE BATCH FILE UNIT 0003 PARAMETER BLANK = ' ' ! DEFINE SPACE CHARACTER 0004 PARAMETER BYTCNT = 2 ! I/O STATUS BLOCK BYTE CNT 0005 PARAMETER COMMA = ',' ! UIC SEPARATOR 0006 PARAMETER DELETE_SWITCH = '/DELETE' ! DELETE JOB DECK 0007 PARAMETER FIVE = 5 ! USEFUL CONSTANT 0008 PARAMETER FOUR = 4 ! USEFUL CONSTANT 0009 PARAMETER FULL = '0000000F'X ! FULL MESSAGE DISPLAY 0010 PARAMETER HOST_PREFIX = 'XRB$' ! SERVER NODE PREFIX 0011 PARAMETER HOST_DEFAULT = 'HOST' ! DEFAULT HOST ID NAME 0012 PARAMETER HOST_SWITCH = '/HOST=' ! HOST ID PARAMETER 0013 PARAMETER IOSTAT = 1 ! I/O STATUS BLOCK STATUS 0014 PARAMETER LEFT = '[' ! LEFT BRACKET (DIRECTORY) 0015 PARAMETER LOCAL_NODE = 'SYS$NODE' ! DEFINED IF DECNET RUNNING 0016 PARAMETER MAX = 255 ! MAXIMUM INPUT RECORD 0017 PARAMETER NETNOD = '::' ! INDICATES NETWORK NODE 0018 PARAMETER ONE = 1 ! USEFUL CONSTANT 0019 PARAMETER PERIOD = '.' ! FILE EXTENSION DELIMITER 0020 PARAMETER PRINTER = 'LP:' ! LIST FILE OUTPUT DEFAULT 0021 PARAMETER PROMPT = '> ' ! HOST TALK PROMPT 0022 PARAMETER RIGHT = ']' ! RIGHT BRACKET (DIRECTORY) 0023 PARAMETER RJE_MSG_TASK = '"TASK=RJEMSG"'! RJE MESSAGE TASK NAME 0024 PARAMETER RJE_UIC = '[200,140]' ! BATCH INPUT UIC 0025 PARAMETER ROUTE = -1 ! ROUTE FLAG OFFSET 0026 PARAMETER ROUTE_EXTENSION = 'RJO' ! ROUTE FILE EXTENSION 0027 PARAMETER ROUTE_SWITCH = '/ROUTE' ! ROUTE FILE BACK TO USER 0028 PARAMETER SEMICOLON = ';' ! SEMICOLON (VERSION) 0029 PARAMETER SPOOL = -2 ! SPOOL FLAG OFFSET 0030 PARAMETER SPOOL_FLAG = '*' ! INDICATES SPOOLED LIST FILE 0031 PARAMETER SPOOL_SWITCH = '/SPOOL' ! SPOOL LISTING 0032 PARAMETER THREE = 3 ! USEFUL CONSTANT 0033 PARAMETER TWO = 2 ! USEFUL CONSTANT 0034 PARAMETER WID = 080 ! MAXIMUM NAME LENGTH 0035 PARAMETER ZERO = 0 ! USEFUL CONSTANT XRB 4-May-1982 05:26:43 VAX-11 FORTRAN V2.5-66 Page 3 30-Apr-1982 13:12:06 _DRC0:[XRB]XRB.FOR;13 C----------------------------------------------------------------------* C STATUS DEFINITIONS * C----------------------------------------------------------------------* C QIO FUNCTION CODES * C----------------------------------------------------------------------* 0036 EXTERNAL IO$_READVBLK 0037 EXTERNAL IO$_WRITEVBLK C----------------------------------------------------------------------* C JPI JOB PROCESS INFORMATION PARAMETERS * C----------------------------------------------------------------------* 0038 EXTERNAL JPI$_UIC 0039 EXTERNAL JPI$_USERNAME C----------------------------------------------------------------------* C RMS STATUS CODES * C----------------------------------------------------------------------* 0040 EXTERNAL RMS$_EOF 0041 EXTERNAL RMS$_FNF 0042 EXTERNAL RMS$_NMF 0043 EXTERNAL RMS$_NORMAL C----------------------------------------------------------------------* C SYSTEM SERVICES STATUS CODES * C----------------------------------------------------------------------* 0044 EXTERNAL SS$_NORMAL 0045 EXTERNAL SS$_REMOTE XRB 4-May-1982 05:26:43 VAX-11 FORTRAN V2.5-66 Page 4 30-Apr-1982 13:12:06 _DRC0:[XRB]XRB.FOR;13 C----------------------------------------------------------------------* C CHARACTER * C----------------------------------------------------------------------* 0046 CHARACTER*(MAX) BATCH_FILE 0047 CHARACTER*(MAX) ERRMSG 0048 CHARACTER*(MAX) FILE 0049 CHARACTER*(MAX) HOST 0050 CHARACTER*(MAX) LINE 0051 CHARACTER*(MAX) LIST 0052 CHARACTER*(WID) NODE 0053 CHARACTER*(WID) SERVER 0054 CHARACTER*(MAX) STRING 0055 CHARACTER*(WID) USER 0056 CHARACTER*(WID) VUIC C----------------------------------------------------------------------* C INTEGER*2 * C----------------------------------------------------------------------* 0057 INTEGER*2 IO_STATUS (FOUR) 0058 INTEGER*2 MSG_STATUS (FOUR) 0059 INTEGER*2 UICVAL (TWO) C----------------------------------------------------------------------* C INTEGER*4 * C----------------------------------------------------------------------* 0060 INTEGER*4 BATLEN 0061 INTEGER*4 ERRLEN 0062 INTEGER*4 FILLEN 0063 INTEGER*4 FIRST 0064 INTEGER*4 HSTLEN 0065 INTEGER*4 IO$_READVBLK 0066 INTEGER*4 IO$_WRITEVBLK 0067 INTEGER*4 JPI$_UIC 0068 INTEGER*4 JPI$_USERNAME 0069 INTEGER*4 LENGTH 0070 INTEGER*4 LIB$DO_COMMAND 0071 INTEGER*4 LIB$GET_FOREIGN 0072 INTEGER*4 LIB$GET_INPUT 0073 INTEGER*4 LIB$PUT_OUTPUT 0074 INTEGER*4 LIMIT 0075 INTEGER*4 LINLEN 0076 INTEGER*4 LSTFLG 0077 INTEGER*4 LSTLEN 0078 INTEGER*4 MSG_CHANNEL 0079 INTEGER*4 MSG_DESCRIPTOR (TWO) 0080 INTEGER*4 MSGLEN 0081 INTEGER*4 NODLEN 0082 INTEGER*4 POINTER 0083 INTEGER*4 RMS$_EOF 0084 INTEGER*4 RMS$_FNF 0085 INTEGER*4 RMS$_NMF 0086 INTEGER*4 RMS$_NORMAL 0087 INTEGER*4 RMS$PARSE 0088 INTEGER*4 RMS$SEARCH 0089 INTEGER*4 SRVLEN 0090 INTEGER*4 SS$_NORMAL 0091 INTEGER*4 SS$_REMOTE 0092 INTEGER*4 STATUS 0093 INTEGER*4 SYS$ASSIGN XRB 4-May-1982 05:26:43 VAX-11 FORTRAN V2.5-66 Page 5 30-Apr-1982 13:12:06 _DRC0:[XRB]XRB.FOR;13 0094 INTEGER*4 SYS$DASSGN 0095 INTEGER*4 SYS$GETMSG 0096 INTEGER*4 SYS$JPI 0097 INTEGER*4 SYS$QIOW 0098 INTEGER*4 SYS$TRNLOG 0099 INTEGER*4 UICGRP 0100 INTEGER*4 UICLEN 0101 INTEGER*4 UICMEM 0102 INTEGER*4 USRLEN C----------------------------------------------------------------------* C LOGICAL * C----------------------------------------------------------------------* 0103 LOGICAL*4 DELETE_FLAG 0104 LOGICAL*1 MSG_BUFFER (MAX) XRB 4-May-1982 05:26:43 VAX-11 FORTRAN V2.5-66 Page 6 30-Apr-1982 13:12:06 _DRC0:[XRB]XRB.FOR;13 C----------------------------------------------------------------------* C * C NETWORK MESSAGE COMMON BLOCK * C * C----------------------------------------------------------------------* 0105 COMMON / NETMSG / MSG_BUFFER 0106 COMMON / NETMSG / MSG_CHANNEL 0107 COMMON / NETMSG / MSG_DESCRIPTOR 0108 COMMON / NETMSG / MSG_STATUS XRB 4-May-1982 05:26:43 VAX-11 FORTRAN V2.5-66 Page 7 30-Apr-1982 13:12:06 _DRC0:[XRB]XRB.FOR;13 C----------------------------------------------------------------------* C SECTION 000 * C----------------------------------------------------------------------* C * C INITIALIZATION * C * C----------------------------------------------------------------------* C DETERMINE LOCAL NODE NAME AND ABORT IF NETWORK IS DOWN * C----------------------------------------------------------------------* 0109 STATUS=SYS$TRNLOG(LOCAL_NODE,NODLEN,NODE,,,) 0110 IF (STATUS .NE. %LOC(SS$_NORMAL)) GO TO 800 0111 CALL DELETE_CONTROL(NODE) 0112 NODLEN=LENGTH(NODE) C----------------------------------------------------------------------* C DETERMINE DEFAULT HOST NAME * C----------------------------------------------------------------------* 0113 STATUS=SYS$TRNLOG(HOST_PREFIX//HOST_DEFAULT,HSTLEN,HOST,,,) 0114 IF (STATUS .NE. %LOC(SS$_NORMAL)) GO TO 800 0115 CALL DELETE_CONTROL(HOST) 0116 HSTLEN=LENGTH(HOST) C----------------------------------------------------------------------* C DETERMINE USER IDENTIFICATION (ALPHANUMERIC USERNAME) * C----------------------------------------------------------------------* 0117 STATUS=SYS$JPI(,,%LOC(JPI$_USERNAME),USER,USRLEN) 0118 IF (STATUS .NE. %LOC(SS$_NORMAL)) GO TO 800 0119 CALL DELETE_CONTROL(USER) 0120 USRLEN=LENGTH(USER) C----------------------------------------------------------------------* C DETERMINE USER IDENTIFICATION (LONGWORD UIC) * C----------------------------------------------------------------------* 0121 STATUS=SYS$JPI(,,%LOC(JPI$_UIC),UICVAL,) 0122 IF (STATUS .NE. %LOC(SS$_NORMAL)) GO TO 800 0123 UICMEM=UICVAL(ONE) 0124 UICGRP=UICVAL(TWO) 0125 CALL OCTFMT(UICGRP,VUIC,THREE) 0126 CALL OCTFMT(UICMEM,STRING,THREE) 0127 VUIC=LEFT//VUIC(ONE:THREE)//COMMA//STRING(ONE:THREE)//RIGHT 0128 UICLEN=LENGTH(VUIC) C----------------------------------------------------------------------* C CREATE REMOTE BATCH FILENAME * C----------------------------------------------------------------------* C FILENAME IS OF THE FORM: USERNAME.NOD * C----------------------------------------------------------------------* 0129 POINTER=USRLEN 0130 IF (POINTER .GT. 9) POINTER=9 0131 BATCH_FILE=USER(ONE:POINTER)//'.'//NODE((NODLEN-4):(NODLEN-2)) 0132 BATLEN=LENGTH(BATCH_FILE) XRB 4-May-1982 05:26:43 VAX-11 FORTRAN V2.5-66 Page 8 30-Apr-1982 13:12:06 _DRC0:[XRB]XRB.FOR;13 C----------------------------------------------------------------------* C SECTION 100 * C----------------------------------------------------------------------* C * C REQUEST COMMAND LINE OF FORM: $XRB command cmd-data [/HOST=host]* C * C----------------------------------------------------------------------* C ENTER SUBSYSTEM COMMAND * C----------------------------------------------------------------------* 0133 100 CONTINUE 0134 STATUS=LIB$GET_FOREIGN(LINE,' Type HELP for assistance: ',LINLEN) 0135 IF (STATUS .EQ. %LOC(RMS$_EOF)) GO TO 900 0136 IF (STATUS .NE. %LOC(SS$_NORMAL)) GO TO 800 0137 CALL DELETE_CONTROL(LINE) 0138 CALL UPPER_CASE(LINE) 0139 LINLEN=LENGTH(LINE) 0140 IF (LINLEN .EQ. ZERO) GO TO 100 C----------------------------------------------------------------------* C PARSE OUT REMOTE HOST NAME IF USER HAS OVERRIDDEN DEFAULT * C----------------------------------------------------------------------* 0141 POINTER=INDEX(LINE,HOST_SWITCH) 0142 IF (POINTER .EQ. ZERO) GO TO 110 0143 STRING=LINE(POINTER:) 0144 CALL GET_WORD(STRING,HOST) 0145 HSTLEN=LENGTH(HOST) 0146 IF (HSTLEN .EQ. LEN(HOST_SWITCH)) GO TO 840 0147 LINE(POINTER:)=LINE((POINTER+HSTLEN):) 0148 HOST=HOST((LEN(HOST_SWITCH)+ONE):) 0149 HSTLEN=LENGTH(HOST) C----------------------------------------------------------------------* C TRANSLATE LOGICAL HOST NAME TO PHYSICAL SERVER NODE * C----------------------------------------------------------------------* 0150 110 CONTINUE 0151 STATUS=SYS$TRNLOG(HOST_PREFIX//HOST(ONE:HSTLEN),SRVLEN,SERVER,,,) 0152 IF (STATUS .NE. %LOC(SS$_NORMAL)) GO TO 800 0153 CALL DELETE_CONTROL(SERVER) 0154 SRVLEN=LENGTH(SERVER) XRB 4-May-1982 05:26:43 VAX-11 FORTRAN V2.5-66 Page 9 30-Apr-1982 13:12:06 _DRC0:[XRB]XRB.FOR;13 C----------------------------------------------------------------------* C * C * C HELP COMMAND - SUPPLY OPERATIONAL HELP ON USE OF XRB * C * C * C----------------------------------------------------------------------* C CLEAR SCREEN AND DISPLAY HELP PAGE * C----------------------------------------------------------------------* 0155 200 CONTINUE 0156 IF (LINE(ONE:THREE) .NE. 'HEL') GO TO 300 0157 PRINT 2000 0158 GO TO 900 XRB 4-May-1982 05:26:43 VAX-11 FORTRAN V2.5-66 Page 10 30-Apr-1982 13:12:06 _DRC0:[XRB]XRB.FOR;13 C----------------------------------------------------------------------* C SECTION 300 * C----------------------------------------------------------------------* C * C * C SUBMIT COMMAND - SUBMIT FILE TO REMOTE HOST * C * C * C----------------------------------------------------------------------* C CHECK FOR PROPER COMMAND * C----------------------------------------------------------------------* 0159 300 CONTINUE 0160 IF (LINE(ONE:THREE) .NE. 'SUB') GO TO 400 C----------------------------------------------------------------------* C PARSE JOB DELETION SWITCH IF USER HAS ENABLED JOB DELETION * C----------------------------------------------------------------------* 0161 POINTER=INDEX(LINE,DELETE_SWITCH) 0162 IF (POINTER .EQ. ZERO) THEN 0163 DELETE_FLAG=.FALSE. 0164 ELSE 0165 DELETE_FLAG=.TRUE. 0166 LINE(POINTER:)=LINE((POINTER+LEN(DELETE_SWITCH)):) 0167 ENDIF C----------------------------------------------------------------------* C PARSE ROUTING SWITCH IF USER HAS ENABLED ROUTEBACK * C----------------------------------------------------------------------* 0168 LSTFLG=ZERO 0169 POINTER=INDEX(LINE,ROUTE_SWITCH) 0170 IF (POINTER .EQ. ZERO) GO TO 310 0171 LSTFLG=ROUTE ! ENABLE ROUTEBACK FLAG 0172 LINE(POINTER:)=LINE((POINTER+LEN(ROUTE_SWITCH)):) C----------------------------------------------------------------------* C PARSE SPOOL SWITCH IF USER HAS ENABLED LOCAL FILE SPOOLING * C----------------------------------------------------------------------* 0173 310 CONTINUE 0174 POINTER=INDEX(LINE,SPOOL_SWITCH) 0175 IF (POINTER .EQ. ZERO) GO TO 320 0176 LSTFLG=SPOOL ! ENABLE SPOOL FLAG 0177 LINE(POINTER:)=LINE((POINTER+LEN(SPOOL_SWITCH)):) C----------------------------------------------------------------------* C NOW PARSE OUT FILE SPECIFICATION * C----------------------------------------------------------------------* 0178 320 CONTINUE 0179 CALL GET_WORD(LINE,FILE) 0180 CALL GET_WORD(LINE,FILE) 0181 FILLEN=LENGTH(FILE) 0182 STATUS=%LOC(RMS$_FNF) 0183 IF (FILLEN .EQ. ZERO) GO TO 800 C----------------------------------------------------------------------* C PARSE THE FILE SPECIFICATION IN PREPARATION FOR WILDCARD SEARCH * C----------------------------------------------------------------------* 0184 STATUS=RMS$PARSE(FILE(ONE:FILLEN)) 0185 IF (STATUS .NE. %LOC(RMS$_NORMAL)) GO TO 800 XRB 4-May-1982 05:26:43 VAX-11 FORTRAN V2.5-66 Page 11 30-Apr-1982 13:12:06 _DRC0:[XRB]XRB.FOR;13 C----------------------------------------------------------------------* C SEARCH FOR FIRST FILE SPECIFICATION IN WILDCARD SEARCH * C----------------------------------------------------------------------* 0186 STATUS=RMS$SEARCH(FILE) 0187 FILLEN=LENGTH(FILE) 0188 CALL LIB$PUT_OUTPUT(BLANK) 0189 CALL LIB$PUT_OUTPUT(' Submit via server node '// 1 SERVER(ONE:SRVLEN)//' to host '//HOST(ONE:HSTLEN)) 0190 CALL LIB$PUT_OUTPUT(' File '//FILE(ONE:FILLEN)// 1 ' on node '//NODE(ONE:NODLEN)) 0191 IF (STATUS .NE. %LOC(RMS$_NORMAL)) GO TO 800 C----------------------------------------------------------------------* C CONSTRUCT ROUTEBACK LISTING FILE NAME * C----------------------------------------------------------------------* 0192 IF (LSTFLG .EQ. ZERO) GO TO 350 0193 LIST=PRINTER 0194 LSTLEN=LENGTH(LIST) 0195 POINTER=INDEX(FILE,RIGHT) 0196 IF (POINTER .LE. ZERO) GO TO 350 0197 LSTLEN=POINTER+INDEX(FILE(POINTER:),PERIOD)-ONE 0198 LIST=FILE(ONE:LSTLEN)//ROUTE_EXTENSION 0199 LSTLEN=LENGTH(LIST) 0200 IF (LSTFLG .EQ. SPOOL) LIST(ONE:ONE)=SPOOL_FLAG XRB 4-May-1982 05:26:43 VAX-11 FORTRAN V2.5-66 Page 12 30-Apr-1982 13:12:06 _DRC0:[XRB]XRB.FOR;13 C----------------------------------------------------------------------* C SECTION 350 * C----------------------------------------------------------------------* C * C OPEN BATCH COMMAND FILE ON REMOTE HOST * C * C----------------------------------------------------------------------* C OPEN FILE WITH LIST CARRIAGE CONTROL * C----------------------------------------------------------------------* 0201 350 CONTINUE 0202 OPEN (UNIT=BATCH_UNIT, 1 NAME=HOST_PREFIX//HOST(ONE:HSTLEN)//NETNOD//RJE_UIC// 2 BATCH_FILE(ONE:BATLEN), 3 CARRIAGECONTROL='LIST',TYPE='NEW',ERR=820) 0203 INQUIRE (UNIT=BATCH_UNIT,NAME=BATCH_FILE) 0204 CALL DELETE_CONTROL(BATCH_FILE) 0205 BATLEN=LENGTH(BATCH_FILE) C----------------------------------------------------------------------* C BUILD REMOTE RJE BATCH COMMAND PROCEDURE * C----------------------------------------------------------------------* 0206 WRITE (BATCH_UNIT,3000) '.ENABLE GLOBAL' 0207 WRITE (BATCH_UNIT,3000) '.ENABLE QUIET' 0208 WRITE (BATCH_UNIT,3000) '.ENABLE SUBSTITUTION' 0209 WRITE (BATCH_UNIT,3000) '.SETS $USER "'//USER(ONE:USRLEN)//'"' 0210 WRITE (BATCH_UNIT,3000) '.SETS $VUIC "'//VUIC(ONE:UICLEN)//'"' 0211 WRITE (BATCH_UNIT,3000) '.SETS $HOST "'//HOST(ONE:HSTLEN)//'"' 0212 WRITE (BATCH_UNIT,3000) '.SETS $NODE "'//NODE(ONE:NODLEN)//'"' 0213 WRITE (BATCH_UNIT,3000) '.SETS $FILE "'//FILE(ONE:FILLEN)//'"' 0214 IF (LSTFLG .NE. ZERO) WRITE (BATCH_UNIT,3000) 1 '.SETS $LIST "'//LIST(ONE:LSTLEN)//'"' 0215 IF (DELETE_FLAG) WRITE (BATCH_UNIT,3000) '.SETT $KILL' 0216 WRITE (BATCH_UNIT,3000) '@LB:'//RJE_UIC//'XRB' C----------------------------------------------------------------------* C CLOSE REMOTE BATCH COMMAND FILE AND REPORT QUEUE REQUEST TO USER * C----------------------------------------------------------------------* 0217 CLOSE (UNIT=BATCH_UNIT) 0218 CALL LIB$PUT_OUTPUT(BLANK) 0219 CALL LIB$PUT_OUTPUT(' Job '//BATCH_FILE(ONE:BATLEN)// 1 ' queued to server node') C----------------------------------------------------------------------* C SUBMIT THE REMOTE BATCH COMMAND PROCEDURE * C----------------------------------------------------------------------* 0220 STATUS=LIB$DO_COMMAND('$SUBMIT '//BATCH_FILE(ONE:BATLEN)// 1 ' /REMOTE') 0221 GO TO 800 XRB 4-May-1982 05:26:43 VAX-11 FORTRAN V2.5-66 Page 13 30-Apr-1982 13:12:06 _DRC0:[XRB]XRB.FOR;13 C----------------------------------------------------------------------* C SECTION 400 * C----------------------------------------------------------------------* C * C * C TALK COMMAND: LINK TO REMOTE HOST AND ENTER TALK MODE * C * C * C----------------------------------------------------------------------* C CHECK FOR VALID COMMAND * C----------------------------------------------------------------------* 0222 400 CONTINUE 0223 IF (LINE(ONE:THREE) .NE. 'TAL') GO TO 830 C----------------------------------------------------------------------* C OPEN DECNET COMMUNICATIONS CHANNEL TO REMOTE RSX SERVER NODE * C----------------------------------------------------------------------* 0224 STATUS=SYS$ASSIGN(SERVER(ONE:SRVLEN)//RJE_MSG_TASK, 1 MSG_CHANNEL,,) 0225 IF (STATUS .NE. %LOC(SS$_REMOTE)) GOTO 850 C----------------------------------------------------------------------* C PRIME RJE NETWORK MESSAGE READ PROCESSOR * C----------------------------------------------------------------------* C ISSUE INITIAL NETWORK READ TO GET MESSAGES FROM THE REMOTE SERVER* C----------------------------------------------------------------------* 0226 CALL XRB_GET_MSG C----------------------------------------------------------------------* C GET USER COMMAND AND TRANSMIT IT TO THE REMOTE RSX SERVER NODE * C----------------------------------------------------------------------* 0227 410 CONTINUE 0228 STATUS=LIB$GET_INPUT(LINE,HOST(ONE:HSTLEN)//PROMPT,LINLEN) 0229 IF ((STATUS .NE. %LOC(SS$_NORMAL)) .AND. 1 (STATUS .NE. %LOC(RMS$_EOF))) GO TO 800 0230 CALL UPPER_CASE(LINE) C----------------------------------------------------------------------* C IF COMMAND LENGTH IS ZERO OR USER HAS REQUESTED EXIT THEN QUIT * C----------------------------------------------------------------------* 0231 IF ((LINLEN .NE. ZERO) .AND. (INDEX(LINE,'EXI') .EQ. ZERO)) 1 GO TO 420 0232 STATUS=SYS$DASSGN(%VAL(MSG_CHANNEL)) 0233 IF (STATUS .NE. %LOC(SS$_NORMAL)) GO TO 800 0234 GO TO 900 C----------------------------------------------------------------------* C TRANSMIT MESSAGE TO REMOTE RSX SERVER NODE (MESSAGE PROCESSOR) * C----------------------------------------------------------------------* 0235 420 CONTINUE 0236 STATUS=SYS$QIOW(,%VAL(MSG_CHANNEL), 1 %VAL(%LOC(IO$_WRITEVBLK)),IO_STATUS,,, 2 %REF(LINE),%VAL(LENGTH(LINE)),,,,) 0237 IF (STATUS .NE. %LOC(SS$_NORMAL)) GO TO 850 0238 STATUS=IO_STATUS(IOSTAT) 0239 IF (STATUS .EQ. %LOC(SS$_NORMAL)) GO TO 410 0240 GO TO 850 XRB 4-May-1982 05:26:43 VAX-11 FORTRAN V2.5-66 Page 14 30-Apr-1982 13:12:06 _DRC0:[XRB]XRB.FOR;13 C----------------------------------------------------------------------* C SECTION 800 * C----------------------------------------------------------------------* C ERROR TRAP: DISPLAY SYSTEM ERROR MESSAGE AND ABORT EXECUTION * C----------------------------------------------------------------------* 0241 800 CONTINUE 0242 CALL LIB$PUT_OUTPUT(' *** Fatal Error Encountered ***') 0243 810 CONTINUE 0244 CALL SYS$GETMSG(%VAL(STATUS),MSGLEN,ERRMSG,%VAL(FULL),) 0245 CALL LIB$PUT_OUTPUT(BLANK//BLANK//ERRMSG(ONE:MSGLEN)) 0246 GO TO 900 C----------------------------------------------------------------------* C ERROR TRAP: PREPROCESS FILE ACCESS ERRORS * C----------------------------------------------------------------------* 0247 820 CONTINUE 0248 CALL LIB$PUT_OUTPUT(' *** Fatal File Error Encountered ***') 0249 CALL ERRSNS(,STATUS,,,) 0250 GO TO 810 C----------------------------------------------------------------------* C ERROR TRAP: INVALID SUBSYSTEM COMMAND * C----------------------------------------------------------------------* 0251 830 CONTINUE 0252 CALL LIB$PUT_OUTPUT(' *** Invalid subsystem command ***') 0253 GO TO 900 C----------------------------------------------------------------------* C ERROR TRAP: COMMAND SYNTAX ERROR * C----------------------------------------------------------------------* 0254 840 CONTINUE 0255 CALL LIB$PUT_OUTPUT(' *** Command syntax error ***') 0256 GO TO 900 C----------------------------------------------------------------------* C ERROR TRAP: REMOTE SERVER MESSAGE LOGICAL LINK ERROR * C----------------------------------------------------------------------* 0257 850 CONTINUE 0258 CALL LIB$PUT_OUTPUT(' *** DECNET Network I/O error ***') 0259 GO TO 810 XRB 4-May-1982 05:26:43 VAX-11 FORTRAN V2.5-66 Page 15 30-Apr-1982 13:12:06 _DRC0:[XRB]XRB.FOR;13 C----------------------------------------------------------------------* C SECTION 900 * C----------------------------------------------------------------------* C PROGRAM TERMINATION * C----------------------------------------------------------------------* 0260 900 CONTINUE C----------------------------------------------------------------------* C FORMATS * C----------------------------------------------------------------------* 0261 2000 FORMAT('0 XRB - Extended Remote Batch Subsystem V01.04'/// 1 ' The XRB subsystem has the following commands:'// 2 ' 1. XRB HELp'/ 3 ' Types this display'// 2 ' 2. XRB SUBmit filespec [/DELETE] [/HOST=host]'/ 3 ' [/ROUTE] [/SPOOL]'/ 4 ' Where FILESPEC is any single file specification'/ 5 ' and HOST is the remote host to which the job is to'/ 6 ' be directed. Current valid host names are 7600 and'/ 7 ' 203. If the HOST parameter is omitted, the logical'/ 8 ' name XRB$HOST is searched to determine the default'/ 9 ' remote host to be used. In this manner, each user'/ A ' may define the default remote host to which his'/ 1 ' job decks will be transmitted. To locally define'/ 2 ' this symbol, use the following DCL command:'// 3 ' $ ASSIGN host XRB$HOST'// 4 ' The /DELETE switch forces deletion of the input job'/ 5 ' deck after submission to the remote host.'/ 6 ' The /ROUTE switch forces listing file output'/ 7 ' received from the remote host back to the user'/ 8 ' disk. The default is to have listing files printed'/ 9 ' on the local node system printer.'/ B ' The /SPOOL switch forces the listing file to be'/ 1 ' printed on the local server node as well as being'/ 2 ' routed back to the users directory.'// 3 ' 3. XRB TALK [/HOST=host]'/ 4 ' This command enables interactive RJE workstation'/ 5 ' commands to be directed to the selected remote host') 0262 3000 FORMAT(A) C----------------------------------------------------------------------* C END OF MAIN PROGRAM XRB * C----------------------------------------------------------------------* 0263 END XRB 4-May-1982 05:26:43 VAX-11 FORTRAN V2.5-66 Page 16 30-Apr-1982 13:12:06 _DRC0:[XRB]XRB.FOR;13 PROGRAM SECTIONS Name Bytes Attributes 0 $CODE 2693 PIC CON REL LCL SHR EXE RD NOWRT LONG 1 $PDATA 1956 PIC CON REL LCL SHR NOEXE RD NOWRT LONG 2 $LOCAL 3100 PIC CON REL LCL NOSHR NOEXE RD WRT LONG 3 NETMSG 275 PIC OVR REL GBL SHR NOEXE RD WRT LONG ENTRY POINTS Address Type Name 0-00000000 XRB VARIABLES Address Type Name Address Type Name Address Type Name Address Type Name 2-0000000C CHAR BATCH_FILE 2-00000848 I*4 BATLEN 2-00000890 L*4 DELETE_FLAG 2-0000084C I*4 ERRLEN 2-0000010B CHAR ERRMSG 2-0000020A CHAR FILE 2-00000850 I*4 FILLEN 2-00000854 I*4 FIRST 2-00000309 CHAR HOST 2-00000858 I*4 HSTLEN 2-0000085C I*4 LIMIT 2-00000408 CHAR LINE 2-00000860 I*4 LINLEN 2-00000507 CHAR LIST 2-00000864 I*4 LSTFLG 2-00000868 I*4 LSTLEN 2-0000086C I*4 MSGLEN 3-000000FF I*4 MSG_CHANNEL 2-00000606 CHAR NODE 2-00000870 I*4 NODLEN 2-00000874 I*4 POINTER 2-00000656 CHAR SERVER 2-00000878 I*4 SRVLEN 2-0000087C I*4 STATUS 2-000006A6 CHAR STRING 2-00000880 I*4 UICGRP 2-00000884 I*4 UICLEN 2-00000888 I*4 UICMEM 2-000007A5 CHAR USER 2-0000088C I*4 USRLEN 2-000007F5 CHAR VUIC ARRAYS Address Type Name Bytes Dimensions 2-00000000 I*2 IO_STATUS 8 (4) 3-00000000 L*1 MSG_BUFFER 255 (255) 3-00000103 I*4 MSG_DESCRIPTOR 8 (2) 3-0000010B I*2 MSG_STATUS 8 (4) 2-00000008 I*2 UICVAL 4 (2) LABELS Address Label Address Label Address Label Address Label Address Label Address Label 0-00000160 100 0-00000233 110 ** 200 0-000002AE 300 0-00000339 310 0-00000373 320 0-00000542 350 0-000008CE 400 0-0000092D 410 0-000009B5 420 0-000009FE 800 0-00000A07 810 0-00000A4C 820 0-00000A60 830 0-00000A6B 840 0-00000A76 850 0-00000A81 900 1-00000000 2000' 1-00000584 3000' XRB 4-May-1982 05:26:43 VAX-11 FORTRAN V2.5-66 Page 17 30-Apr-1982 13:12:06 _DRC0:[XRB]XRB.FOR;13 FUNCTIONS AND SUBROUTINES REFERENCED DELETE_CONTROL FOR$CLOSE FOR$ERRSNS FOR$INQUIRE FOR$OPEN GET_WORD IO$_WRITEVBLK JPI$_UIC JPI$_USERNAME LENGTH LIB$DO_COMMAND LIB$GET_FOREIGN LIB$GET_INPUT LIB$INDEX LIB$PUT_OUTPUT OCTFMT RMS$PARSE RMS$SEARCH RMS$_EOF RMS$_FNF RMS$_NORMAL SS$_NORMAL SS$_REMOTE SYS$ASSIGN SYS$DASSGN SYS$GETMSG SYS$JPI SYS$QIOW SYS$TRNLOG UPPER_CASE XRB_GET_MSG Total Space Allocated = 8024 Bytes 4-May-1982 05:26:43 VAX-11 FORTRAN V2.5-66 Page 18 30-Apr-1982 13:12:06 _DRC0:[XRB]XRB.FOR;13 0001 SUBROUTINE XRB_GET_MSG C----------------------------------------------------------------------* C SUBROUTINE: XRB_GET_MSG * C----------------------------------------------------------------------* C LANGUAGE: VAX-11 FORTRAN V2.4 * C SYSTEM: VAX-11/780 VAX/VMS V2.4 * C MOSTEK CORPORATION * C COMPUTER AIDS TO DESIGN DEPARTMENT * C 1215 WEST CROSBY ROAD * C CARROLLTON, TEXAS 75006 * C (214) 323-8813 * C----------------------------------------------------------------------* C PROGRAMMER: KEVIN KLUGHART * C----------------------------------------------------------------------* C DATE: 03-17-82 @ 09:00 CDST * C----------------------------------------------------------------------* C PURPOSE: THIS SUBROUTINE QUEUES A READ REQUEST FROM THE * C NETWORK SERVER MAILBOX. THIS MAILBOX IS THE * C LOGICAL LINK BETWEEN THE REMOTE SERVER NODE AND * C THE INTERACTIVE VAX USER COMMAND INTERFACE. * C----------------------------------------------------------------------* 4-May-1982 05:26:43 VAX-11 FORTRAN V2.5-66 Page 19 30-Apr-1982 13:12:06 _DRC0:[XRB]XRB.FOR;13 C----------------------------------------------------------------------* C SUBROUTINE PARAMETERS * C----------------------------------------------------------------------* 0002 PARAMETER BYTCNT = 2 ! I/O STATUS BLOCK BYTE CNT 0003 PARAMETER CRT = 'TT' ! USER TERMINAL NAME 0004 PARAMETER FULL = 'F'X ! FULL ERROR MESSAGES 0005 PARAMETER FOUR = 4 ! USEFUL CONSTANT 0006 PARAMETER IOSTAT = 1 ! I/O STATUS BLOCK STATUS 0007 PARAMETER MAX = 255 ! MAXIMUM INPUT RECORD 0008 PARAMETER ONE = 1 ! USEFUL CONSTANT 0009 PARAMETER TWO = 2 ! USEFUL CONSTANT 0010 PARAMETER ZERO = 0 ! USEFUL CONSTANT XRB_GET_MSG 4-May-1982 05:26:43 VAX-11 FORTRAN V2.5-66 Page 20 30-Apr-1982 13:12:06 _DRC0:[XRB]XRB.FOR;13 C----------------------------------------------------------------------* C STATUS DEFINITIONS * C----------------------------------------------------------------------* C QIO FUNCTION CODES * C----------------------------------------------------------------------* 0011 EXTERNAL IO$_READVBLK C----------------------------------------------------------------------* C SYSTEM SERVICE STATUS CODES * C----------------------------------------------------------------------* 0012 EXTERNAL SS$_NORMAL C----------------------------------------------------------------------* C EXTERNAL AST PROCESSING ROUTINES * C----------------------------------------------------------------------* 0013 EXTERNAL XRB_MSG_AST C----------------------------------------------------------------------* C CHARACTER * C----------------------------------------------------------------------* 0014 CHARACTER*(MAX) ERRMSG C----------------------------------------------------------------------* C INTEGER*2 * C----------------------------------------------------------------------* 0015 INTEGER*2 MSG_STATUS (FOUR) C----------------------------------------------------------------------* C INTEGER*4 * C----------------------------------------------------------------------* 0016 INTEGER*4 IO$_READVBLK 0017 INTEGER*4 MSG_CHANNEL 0018 INTEGER*4 MSG_DESCRIPTOR (TWO) 0019 INTEGER*4 MSGLEN 0020 INTEGER*4 SS$_NORMAL 0021 INTEGER*4 STATUS 0022 INTEGER*4 SYS$BRDCST 0023 INTEGER*4 SYS$GETMSG 0024 INTEGER*4 SYS$QIO C----------------------------------------------------------------------* C LOGICAL*1 * C----------------------------------------------------------------------* 0025 LOGICAL*1 MSG_BUFFER (MAX) XRB_GET_MSG 4-May-1982 05:26:43 VAX-11 FORTRAN V2.5-66 Page 21 30-Apr-1982 13:12:06 _DRC0:[XRB]XRB.FOR;13 C----------------------------------------------------------------------* C * C NETWORK MESSAGE COMMON BLOCK * C * C----------------------------------------------------------------------* 0026 COMMON / NETMSG / MSG_BUFFER 0027 COMMON / NETMSG / MSG_CHANNEL 0028 COMMON / NETMSG / MSG_DESCRIPTOR 0029 COMMON / NETMSG / MSG_STATUS XRB_GET_MSG 4-May-1982 05:26:43 VAX-11 FORTRAN V2.5-66 Page 22 30-Apr-1982 13:12:06 _DRC0:[XRB]XRB.FOR;13 C----------------------------------------------------------------------* C SECTION 100 * C----------------------------------------------------------------------* C REISSUE NETWORK MESSAGE READ REQUEST * C----------------------------------------------------------------------* 0030 100 CONTINUE 0031 STATUS=SYS$QIO(,%VAL(MSG_CHANNEL), 1 %VAL(%LOC(IO$_READVBLK)),MSG_STATUS, 2 XRB_MSG_AST,, 3 MSG_BUFFER,%VAL(MAX),,,,) 0032 IF (STATUS .EQ. %LOC(SS$_NORMAL)) GO TO 900 C----------------------------------------------------------------------* C SECTION 800 * C----------------------------------------------------------------------* 0033 800 CONTINUE 0034 CALL SYS$GETMSG(%VAL(STATUS),MSGLEN,ERRMSG,%VAL(FULL),) 0035 CALL SYS$BRDCST(ERRMSG(ONE:MSGLEN),CRT) C----------------------------------------------------------------------* C SECTION 900 * C----------------------------------------------------------------------* C SUBROUTINE TERMINATION * C----------------------------------------------------------------------* 0036 900 CONTINUE C----------------------------------------------------------------------* C END OF SUBROUTINE XRB_GET_MSG * C----------------------------------------------------------------------* 0037 RETURN 0038 END XRB_GET_MSG 4-May-1982 05:26:43 VAX-11 FORTRAN V2.5-66 Page 23 30-Apr-1982 13:12:06 _DRC0:[XRB]XRB.FOR;13 PROGRAM SECTIONS Name Bytes Attributes 0 $CODE 78 PIC CON REL LCL SHR EXE RD NOWRT LONG 1 $PDATA 3 PIC CON REL LCL SHR NOEXE RD NOWRT LONG 2 $LOCAL 376 PIC CON REL LCL NOSHR NOEXE RD WRT LONG 3 NETMSG 275 PIC OVR REL GBL SHR NOEXE RD WRT LONG ENTRY POINTS Address Type Name 0-00000000 XRB_GET_MSG VARIABLES Address Type Name Address Type Name Address Type Name Address Type Name 2-00000000 CHAR ERRMSG 2-00000100 I*4 MSGLEN 3-000000FF I*4 MSG_CHANNEL 2-00000104 I*4 STATUS ARRAYS Address Type Name Bytes Dimensions 3-00000000 L*1 MSG_BUFFER 255 (255) 3-00000103 I*4 MSG_DESCRIPTOR 8 (2) 3-0000010B I*2 MSG_STATUS 8 (4) LABELS Address Label Address Label Address Label ** 100 ** 800 0-0000004D 900 FUNCTIONS AND SUBROUTINES REFERENCED IO$_READVBLK SS$_NORMAL SYS$BRDCST SYS$GETMSG SYS$QIO XRB_MSG_AST Total Space Allocated = 732 Bytes 4-May-1982 05:26:43 VAX-11 FORTRAN V2.5-66 Page 24 30-Apr-1982 13:12:06 _DRC0:[XRB]XRB.FOR;13 0001 SUBROUTINE XRB_MSG_AST C----------------------------------------------------------------------* C SUBROUTINE: XRB_MSG_AST * C----------------------------------------------------------------------* C LANGUAGE: VAX-11 FORTRAN V2.4 * C SYSTEM: VAX-11/780 VAX/VMS V2.4 * C MOSTEK CORPORATION * C COMPUTER AIDS TO DESIGN DEPARTMENT * C 1215 WEST CROSBY ROAD * C CARROLLTON, TEXAS 75006 * C (214) 323-8813 * C----------------------------------------------------------------------* C PROGRAMMER: KEVIN KLUGHART * C----------------------------------------------------------------------* C DATE: 03-17-82 @ 09:00 CDST * C----------------------------------------------------------------------* C PURPOSE: THIS SUBROUTINE ACTS AS THE RECEIVE HOST MESSAGE * C NETWORK AST WHICH GATHERS MESSAGES FROM THE XRB * C SERVER ON THE REMOTE RSX NODE. MESSAGES RECEIVED * C FROM THE REMOTE CDC HOST ARE ROUTED THROUGH THE * C SERVER NODE TO THIS AST AND THEN TO THE USER. * C----------------------------------------------------------------------* 4-May-1982 05:26:43 VAX-11 FORTRAN V2.5-66 Page 25 30-Apr-1982 13:12:06 _DRC0:[XRB]XRB.FOR;13 C----------------------------------------------------------------------* C AST PARAMETERS * C----------------------------------------------------------------------* 0002 PARAMETER BYTCNT = 2 ! I/O STATUS BLOCK BYTE CNT 0003 PARAMETER CRT = 'TT' ! USER TERMINAL 0004 PARAMETER FULL = 'F'X ! FULL ERROR MESSAGES 0005 PARAMETER FOUR = 4 ! USEFUL CONSTANT 0006 PARAMETER IOSTAT = 1 ! I/O STATUS BLOCK STATUS 0007 PARAMETER MAX = 255 ! MAXIMUM INPUT RECORD 0008 PARAMETER ONE = 1 ! USEFUL CONSTANT 0009 PARAMETER TWO = 2 ! USEFUL CONSTANT 0010 PARAMETER ZERO = 0 ! USEFUL CONSTANT XRB_MSG_AST 4-May-1982 05:26:43 VAX-11 FORTRAN V2.5-66 Page 26 30-Apr-1982 13:12:06 _DRC0:[XRB]XRB.FOR;13 C----------------------------------------------------------------------* C STATUS DEFINITIONS * C----------------------------------------------------------------------* C QIO FUNCTION CODES * C----------------------------------------------------------------------* 0011 EXTERNAL IO$_READVBLK C----------------------------------------------------------------------* C SYSTEM SERVICE STATUS CODES * C----------------------------------------------------------------------* 0012 EXTERNAL SS$_NORMAL C----------------------------------------------------------------------* C CHARACTER * C----------------------------------------------------------------------* 0013 CHARACTER*(MAX) ERRMSG C----------------------------------------------------------------------* C INTEGER*2 * C----------------------------------------------------------------------* 0014 INTEGER*2 MSG_STATUS (FOUR) C----------------------------------------------------------------------* C INTEGER*4 * C----------------------------------------------------------------------* 0015 INTEGER*4 IO$_READVBLK 0016 INTEGER*4 MSG_CHANNEL 0017 INTEGER*4 MSG_DESCRIPTOR (TWO) 0018 INTEGER*4 MSGLEN 0019 INTEGER*4 SS$_NORMAL 0020 INTEGER*4 STATUS 0021 INTEGER*4 SYS$BRDCST 0022 INTEGER*4 SYS$GETMSG C----------------------------------------------------------------------* C LOGICAL*1 * C----------------------------------------------------------------------* 0023 LOGICAL*1 MSG_BUFFER (MAX) XRB_MSG_AST 4-May-1982 05:26:43 VAX-11 FORTRAN V2.5-66 Page 27 30-Apr-1982 13:12:06 _DRC0:[XRB]XRB.FOR;13 C----------------------------------------------------------------------* C * C NETWORK MESSAGE COMMON BLOCK * C * C----------------------------------------------------------------------* 0024 COMMON / NETMSG / MSG_BUFFER 0025 COMMON / NETMSG / MSG_CHANNEL 0026 COMMON / NETMSG / MSG_DESCRIPTOR 0027 COMMON / NETMSG / MSG_STATUS XRB_MSG_AST 4-May-1982 05:26:43 VAX-11 FORTRAN V2.5-66 Page 28 30-Apr-1982 13:12:06 _DRC0:[XRB]XRB.FOR;13 C----------------------------------------------------------------------* C SECTION 100 * C----------------------------------------------------------------------* C CHECK I/O COMPLETION STATUS TO INSURE THAT MESSAGE IS GOOD * C----------------------------------------------------------------------* 0028 100 CONTINUE 0029 STATUS=MSG_STATUS(IOSTAT) 0030 IF (STATUS .NE. %LOC(SS$_NORMAL)) GO TO 800 C----------------------------------------------------------------------* C LOAD THE REMOTE HOST MESSAGE DESCRIPTOR WITH LENGTH AND ADDRESS * C----------------------------------------------------------------------* 0031 MSG_DESCRIPTOR(ONE)=MSG_STATUS(BYTCNT) 0032 MSG_DESCRIPTOR(TWO)=%LOC(MSG_BUFFER) C----------------------------------------------------------------------* C ISSUE MESSAGE TO USER * C----------------------------------------------------------------------* 0033 CALL SYS$BRDCST(MSG_DESCRIPTOR,CRT) C----------------------------------------------------------------------* C REISSUE THE NETWORK SERVER READ REQUEST TO GET NEXT HOST MESSAGE * C----------------------------------------------------------------------* 0034 CALL XRB_GET_MSG 0035 GO TO 900 C----------------------------------------------------------------------* C SECTION 800 * C----------------------------------------------------------------------* 0036 800 CONTINUE 0037 CALL SYS$GETMSG(%VAL(STATUS),MSGLEN,ERRMSG,%VAL(FULL),) 0038 CALL SYS$BRDCST(ERRMSG(ONE:MSGLEN),CRT) C----------------------------------------------------------------------* C SECTION 900 * C----------------------------------------------------------------------* C AST TERMINATION * C----------------------------------------------------------------------* 0039 900 CONTINUE C----------------------------------------------------------------------* C END OF AST XRB_MSG_AST * C----------------------------------------------------------------------* 0040 RETURN 0041 END XRB_MSG_AST 4-May-1982 05:26:43 VAX-11 FORTRAN V2.5-66 Page 29 30-Apr-1982 13:12:06 _DRC0:[XRB]XRB.FOR;13 PROGRAM SECTIONS Name Bytes Attributes 0 $CODE 90 PIC CON REL LCL SHR EXE RD NOWRT LONG 1 $PDATA 3 PIC CON REL LCL SHR NOEXE RD NOWRT LONG 2 $LOCAL 336 PIC CON REL LCL NOSHR NOEXE RD WRT LONG 3 NETMSG 275 PIC OVR REL GBL SHR NOEXE RD WRT LONG ENTRY POINTS Address Type Name 0-00000000 XRB_MSG_AST VARIABLES Address Type Name Address Type Name Address Type Name Address Type Name 2-00000000 CHAR ERRMSG 2-00000100 I*4 MSGLEN 3-000000FF I*4 MSG_CHANNEL 2-00000104 I*4 STATUS ARRAYS Address Type Name Bytes Dimensions 3-00000000 L*1 MSG_BUFFER 255 (255) 3-00000103 I*4 MSG_DESCRIPTOR 8 (2) 3-0000010B I*2 MSG_STATUS 8 (4) LABELS Address Label Address Label Address Label ** 100 0-00000040 800 0-00000059 900 FUNCTIONS AND SUBROUTINES REFERENCED SS$_NORMAL SYS$BRDCST SYS$GETMSG XRB_GET_MSG Total Space Allocated = 704 Bytes COMMAND QUALIFIERS FORTRAN XRB/CONT=30/LIST /CHECK=(NOBOUNDS,OVERFLOW) /DEBUG=(NOSYMBOLS,TRACEBACK) /F77 /NOG_FLOATING /I4 /OPTIMIZE /WARNINGS /NOD_LINES /NOMACHINE_CODE /CONTINUATIONS=30 XRB_MSG_AST 4-May-1982 05:26:43 VAX-11 FORTRAN V2.5-66 Page 30 30-Apr-1982 13:12:06 _DRC0:[XRB]XRB.FOR;13 COMPILATION STATISTICS Run Time: 9.14 seconds Elapsed Time: 10.06 seconds Page Faults: 1462 Dynamic Memory: 133 pages