Google
 

Trailing-Edge - PDP-10 Archives - BB-KL11L-BM_1990 - galsrc/oprcmd.mac
There are 40 other files named oprcmd.mac in the archive. Click here to see a list.
	TITLE	OPRCMD - command tables for ORION
	SUBTTL	Preliminaries

;	COPYRIGHT (c) DIGITAL EQUIPMENT CORPORATION 1975, 1988.
;	ALL RIGHTS RESERVED.
;
;	THIS SOFTWARE IS FURNISHED UNDER A  LICENSE AND MAY BE USED AND  COPIED
;	ONLY IN  ACCORDANCE  WITH  THE  TERMS OF  SUCH  LICENSE  AND  WITH  THE
;	INCLUSION OF THE ABOVE  COPYRIGHT NOTICE.  THIS  SOFTWARE OR ANY  OTHER
;	COPIES THEREOF MAY NOT BE PROVIDED  OR OTHERWISE MADE AVAILABLE TO  ANY
;	OTHER PERSON.  NO  TITLE TO  AND OWNERSHIP  OF THE  SOFTWARE IS  HEREBY
;	TRANSFERRED.
;
;	THE INFORMATION IN THIS  SOFTWARE IS SUBJECT  TO CHANGE WITHOUT  NOTICE
;	AND SHOULD  NOT  BE CONSTRUED  AS  A COMMITMENT  BY  DIGITAL  EQUIPMENT
;	CORPORATION.
;
;	DIGITAL ASSUMES NO  RESPONSIBILITY FOR  THE USE OR  RELIABILITY OF  ITS
;	SOFTWARE ON EQUIPMENT THAT IS NOT SUPPLIED BY DIGITAL.

	SALL
	SEARCH	GLXMAC
	SEARCH	ORNMAC
	SEARCH	NEBMAC			;[245]SEARCH NEBULA'S SYMBOLS
	SEARCH  MONSYM,MACSYM
	PROLOG(OPRCMD)

;Version numbers

	CMDMAN==:275			;Maintenance edit number
	CMDDEV==:261			;Development edit number
	VERSIN (CMD)			;Generate edit number

	.DIRECTIVE FLBLST
	Subttl	Table of Contents

;		     Table of Contents for OPRCMD
;
;				  Section		      Page
;
;
;    1. Revision history . . . . . . . . . . . . . . . . . . .   4
;    2. Special Macro Definitions  . . . . . . . . . . . . . .   5
;    3. $EXPL Macro Definition . . . . . . . . . . . . . . . .   6
;    4. SNADST Macro Definition  . . . . . . . . . . . . . . .   7
;    5. Remote Printing Macro Definitions  . . . . . . . . . .   8
;    6. Tables and ACTION routine for /CLUSTER-NODE: processin   9
;    7. Command Dispatch . . . . . . . . . . . . . . . . . . .  10
;    8. Argument Subroutines . . . . . . . . . . . . . . . . .  11
;    9. Argument subroutines for printers  . . . . . . . . . .  12
;   10. START command tables . . . . . . . . . . . . . . . . .  17
;   11. CONTINUE command tables  . . . . . . . . . . . . . . .  18
;   12. STOP command tables  . . . . . . . . . . . . . . . . .  19
;   13. ABORT command tables . . . . . . . . . . . . . . . . .  20
;   14. HOLD command tables  . . . . . . . . . . . . . . . . .  21
;   15. DEFINE command tables  . . . . . . . . . . . . . . . .  22
;   16. CANCEL command tables  . . . . . . . . . . . . . . . .  23
;   17. MODIFY command tables  . . . . . . . . . . . . . . . .  24
;   18. SHOW command tables  . . . . . . . . . . . . . . . . .  25
;   19. SHOW STATUS command tables . . . . . . . . . . . . . .  28
;   20. SHWNOD SHOW STATUS/PARAMETERS FOR NODE . . . . . . . .  29
;   21. RESPOND command tables . . . . . . . . . . . . . . . .  30
;   22. REQUEUE command tables . . . . . . . . . . . . . . . .  31
;   23. BACKCSPACE command tables . . . . . . . . . . . . . . .  32
;   24. ALIGN command table  . . . . . . . . . . . . . . . . .  33
;   25. SUPPRESS command tables  . . . . . . . . . . . . . . .  34
;   26. ROUTE command tables . . . . . . . . . . . . . . . . .  35
;   27. SEND command tables  . . . . . . . . . . . . . . . . .  36
;   28. SET command tables . . . . . . . . . . . . . . . . . .  37
;   29. SET STRUCTURE command tables . . . . . . . . . . . . .  38
;   30. SET TAPE command tables  . . . . . . . . . . . . . . .  39
;   31. SET DISK command tables  . . . . . . . . . . . . . . .  40
;   32. SET ONLINE command tables  . . . . . . . . . . . . . .  41
;   33. SET USAGE command tables . . . . . . . . . . . . . . .  42
;   34. SET TAPE INITIALIZE command tables . . . . . . . . . .  43
;   35. SET NODE command tables  . . . . . . . . . . . . . . .  44
;   36. SET SCHEDULER command tables (TOPS20)  . . . . . . . .  45
;   37. SET PORT command tables  . . . . . . . . . . . . . . .  46
;   38. ENABLE/DISABLE command tables  . . . . . . . . . . . .  47
;   39. ENACLS ENABLE CLASS SCHEDULER command tables . . . . .  49
;   40. CLOSE command tables . . . . . . . . . . . . . . . . .  50
;   41. ENABLE/DISABLE NEBULA CONNECTIONS  . . . . . . . . . .  51
;   42. REPORT command tables  . . . . . . . . . . . . . . . .  52
;   43. MOUNT command tables . . . . . . . . . . . . . . . . .  53
;   44. NEXT - NEXT COMMAND  . . . . . . . . . . . . . . . . .  54
;   45. IDENTIFY command tables  . . . . . . . . . . . . . . .  55
;   46. SWITCH command tables (TOPS20) . . . . . . . . . . . .  56
;   47. DISMOUNT command tables  . . . . . . . . . . . . . . .  57
	Subttl	Table of Contents (page 2)

;		     Table of Contents for OPRCMD
;
;				  Section		      Page
;
;
;   48. PUSH command tables  . . . . . . . . . . . . . . . . .  58
;   49. HELP command tables  . . . . . . . . . . . . . . . . .  59
;   50. SHOW ALLOCATION command tables . . . . . . . . . . . .  60
;   51. UNDEFINE command tables  . . . . . . . . . . . . . . .  61
SUBTTL	Revision history

COMMENT \

*****  Release 4.2 -- begin maintenance edits  *****

146	4.2.1484	9-Aug-82
	Allow secondary ports to work on MODIFY commands.

147	4.2.1555	24-Oct-83
	Add some range checking stuff to prevent too many objects at
a time from being started.

*****  Release 5.0 -- begin development edits  *****

160	5.1003		4-Jan-83
	Move to new development area.  Add version vector.  Clean up
edit organization.  Update TOC.

161	5.1021		5-Apr-83
	Add SET STR SHARED/EXCLUSIVE.  Add SET PORT CI ONLINE/OFFLINE.

162	5.1026		6-May-83
	Add new ENABLE/DISABLE OUTPUT options for BUGCHK, BUGINF and SYSTEM
messages.

163	5.1027		10-May-83
	Change SET PORT CI ONLINE/OFFLINE to AVAILABLE/UNAVAILABLE.

164	5.1035		18-Jul-83
	Add support for new DISMOUNT (with) REMOVAL/NOREMOVAL.  While here,
clearify a SET ONLINE help message.

165	5.1058		23-Nov-83
	Make the SET TERMINAL command invisible for this release.  Remove
it in next release.

166	5.1069		23-Jan-84
	Add SHOW STATUS STRUCTURE command.

167	5.1075		3-Feb-84
	Add structure name to SHOW STATUS STRUCTURE command if desired.

170	5.1080		5-Feb-84
	Add UNDEFINE STRUCTURE FOO: command.

171	5.1111		1-Mar-84
	Add MOUNT STRUCTURE alias: /STRUCTURE-ID:structure name command

172	5.1124		2-Apr-84
	Add controller number to the SET DISK UNAVAILABLE.

173	5.1162		21-Sep-84
	Add changes to support SNA Workstations

174	5.1169		19-Oct-84
	Correct problems due to new SNA Workstations functionality.

175	5.1179		20-Nov-84
	Add support to allow disabling/enabling of two new display types,
DECNET-EVENT messages and DECNET-LINK messages.

176	5.1184		3-Dec-84
	Include an additional argument in the "X" macro - used in conjunction
with LCPTAB support.

177	5.1186		5-Dec-84
	Add NI AVAILABLE/UNAVAILABLE.

200	5.1203		26-Feb-85
	Add support for SHOW CONFIGURATION DISK-DRIVE.

*****  Release 5.0 -- begin maintenance edits  *****

205	Increment maintenance edit level for GALAXY 5.

206	5.1236		22-Apr-86
	Wrong $KEYxxx macro used in ENA105 for the ENABLE/DISABLE
OUTPUT-DISPLAY OPR command.

*****  Release 6.0 -- begin development edits  *****

230	6.1009		6-Oct-87
	Add support for remote printing. The syntax of the OPR commands:
ABORT, CONTINUE, REQUEUE, ROUTE, SET, SHOW STATUS, SHOW PARAMETER, SHUTDOWN,
START and STOP have changed.

231 	6.1010		8-Oct-87
	Change the Cluster printer help message (n:m)(/NODE:) to (n:m)(NODE)

232	6.1011		8-Oct-87
	Have CHKLAC scan the command message buffer rather than the atom buffer
when checking for validity and raising any lower case letters.

233	6.1015		13-Oct-87
	Do the following cleanup: ensure that the node specified in a remote
printing command is not the local node, make "$" and "_" illegal as the first
character of a DQS VMS queue name, or the LAT PORT, SERVICE or SERVER name.
Also, change the LAT SERVER name block from .CMFLD to .CMNOD in the message
passed to ORION. Lastly, remove Cluster printers from the SET PRINTER 
command.

234	6.1018		15-Oct-87
	Remove keywords FORMS-TYPE and DESTINATION in the SET PRINTER command
for DQS and LAT printers.

235	6.1019		18-Oct-87
	Allow routing between printers of different types

236	6.1034		23-Oct-87
	Add new keyword, SEMI-OPR, to the ENABLE/DISABLE command.  Add new
FDB for SEMI-OPR.  Add new command tables for SEMI-OPR.

237	6.1041		29-Oct-87
	Change SHOW STATUS PRINTER and SHOW PARAMETERS PRINTER to support
remote printing. Remove the /NODE: switch from commands dealing with
local printers.

240	6.1058		5-Nov-87
	Help for SET STRUCTURE command shows STRUCTURE STRUCTURE after ?
mark is typed.  There were two entries for the set structure command in the 
command table.  Delete one.

241	6.1078		15-Nov-87
	Add support for the /CLUSTER-NODE: switch.

242	6.1072		16-Nov-87
	Add the /TERMINAL-CHARACTERISTIC switch to the START PRINTER LAT and 
START PRINT 0/DEVICE:  command.

243	6.1081		17-Nov-87
	Add support for setting structures DUMPABLE/NONDUMABLE.

244	6.1078		18-Nov-87
	Make the SEND ALL command cluster-wide.

245	6.1098		22-Nov-87
	Add the /CLUSTER-NODE switch to the MOUNT STRUCTURE command.

246	6.1078		25-Nov-87
	Change the $CLUNOD macro to accept the next FDB after the /CLUSTER-NODE
switch.

247	6.1114		3-Dec-87
	Add support for the SHOW CLUSTER-GALAXY-LINK-STATUS, ENA/DIS
REPORT-CONNECTION-FAILURES and DECNET-CONNECTION-ATTEMPTS commands.

250	6.1117		3-Dec-87
	Remove the definitions of $URANGE, $SRANGE, $ORANGE and $NODE and
place them in ORNMAC so that OPRSCM will also have access to their definitions.

251	6.1173		27-Jan-88
	Add the FORMS-TYPE keyword for the SET command for LAT printers.

252	6.1177		11-Feb-88
	Add commands LOGFILES-TO-SPECIFIC-PRINTERS and PRINT-LOGFILES.

253	6.1182		15-Feb-88
	Add ENABLE/DISABLE UNPRIVILEGED-USER-ENTIRE-REMOTE-OUTPUT-DISPLAY
	commands.

254	6.1183		16-Feb-88
	Conitionalize tables according to CLUSTER and SINGLE in support of
ENABLE/DISABLE Cluster GALAXY.

255	6.1206		2-Mar-88
	Allow "." and "-" in LAT PORT, SERVICE and server names. Also, allow
".", "-", "_" and "$" as the first character of these names.

256	6.1225		8-Mar-88
	Update copyright notice.

257	6.1235		14-Apr-88
	Move symbol definitions MAXNOD, CLNNAM, CLNTAB and SBNNAM to OPRPAR
so that non-GALAXY programs that link in only OPRPAR link successfully.

260	6.1237		21-Apr-88
	Move macro definitions $UNIT, $STNUM, $STREAM, $EXPL, SNADST, $CLUSPL,
$DQSSPL, $LATSPL and $CLUNOD to ORNMAC so that OPRSCM may also use them.
Add printer type LAT for the BACKWARD, FORWARD, ALIGN and SUPPRESS commands.

261	6.1260		31-May-88
	Remove invalid ")" in ALI03A:

262	6.1267		8-Aug-88
	Reinstalled /NODE: switch into several OPR commands.

263	6.1269		18-Oct-88
	Implement the /CLUSTER-NODE: switch in the command tables.

264	6.1276		25-Apr-89
	Parse first for a number then for a structure name in the CANCEL
MOUNT-REQUEST command. Correct the way the CANCEL MOUNT-REQUEST command
is terminated for a non-cluster GALAXY to prevent OPR from crashing.

265	6.1286		19-Oct-89
	Check for minimum lengths for LAT port, service, server names;
and for DQS queue names. This is necessary because the $FIELD PDB accepts
null length strings.

266	6.1287		21-Oct-89
	If a LAT port or service name, or a DQS queue name is terminated
with a carriage return, then consider the name to be valid. An invalid
server or node name error will be returned instead of an invalid character
error.

267	6.1300		12-Jan-90
	Change the order of the /REASON and /CLUSTER-NODE switches in the
ABORT command so that it can be forwarded to the indicated remote node.

270	6.1305		19-Jan-90
	Add the /CLUSTER-NODE switch to BACKSPACE and ALIGN.

271	6.1307		1-Feb-90
	Add the /CLUSTER-NODE switch to CLOSE LOG.

272	6.1312		16-Feb-90
	Add the /CLUSTER-NODE switch to the ENABLE and DISABLE commands.

273	6.1313		20-Feb-90
	Add the /CLUSTER-NODE switch to the DISMOUNT command.

274	6.1314		10-Mar-90
	Add the ENABLE/DISABLE BROADCAST-MESSAGES and ENABLE/DISABLE
RECEIVE-REMOTE-MESSAGES commands. Define macro $ODTYP. Add the NODE
keyword to the ENABLE/DISABLE OUTPUT-DISPLAY commands.

275	6.1318		3-Jun-90
	Add alias printer support.

\   ;End of Revision History
	SUBTTL	Macro Support

	INTERN	CHKVAL,DSTBRK,CHKNOD,DQSCHK,LPTMSK,DQSSHO	 ;[260]
	INTERN	LATSRV,LATSAP,LATSHO,SHOMSK,CLUMSK,CHGBLK	 ;[260]
	INTERN	FIXIT,CHKPOS					 ;[260]
	INTERN	RLSCHK						 ;[275]
;**;[275]At INTERN FIXIT :+1L add 2 lines  PMM  6/3/90
	INTERN  CHGAKA,CHKAKA,CHGLST,CHKLST,LSTCHK		;[275]
	EXTERNAL AKATBL						;[275]

DSTBRK:	BRMSK. (EOLB0.,EOLB1.,EOLB2.,EOLB3.,,</>);[260]Break set

BRINI.						;[260]
BRKCH. (0,40)					;[260]
BRKCH. (57)					;[260]
BRKCH. (77)					;[260]
BRKCH. (177)					;[260]

LPTMSK: BRMSK. (W0.,W1.,W2.,W3.)		;[260]

BRINI.						;[260]
BRKCH. (0,14)					;[260]
BRKCH. (16,40)					;[260]
BRKCH. (57)					;[260]
BRKCH. (77)					;[260]
BRKCH. (177)					;[260]

SHOMSK: BRMSK. (W0.,W1.,W2.,W3.)		;[260]

BRINI.						;[260]
BRKCH. (0,40)					;[260]
BRKCH. (77)					;[260]
BRKCH. (177)					;[260]

CLUMSK: BRMSK. (W0.,W1.,W2.,W3.)		;[260]
SUBTTL	Command Dispatch

	INTERN	OPRCMD	;MAKE VECTOR ADDRESS AVAILABLE
	INTERN	STOBTH,STOHGH,STOOHG	;[247]

OPRCMD:	EXP	2	;SIZE
	EXP	INITCM	;POINTER TO THE INI FUNCTION
	EXP	CMDFDB	;TOP LEVEL DISPATCH

INITCM:: $INIT(CMDFDB)
CMDFDB:: $KEYDSP(CMDTAB,<$ACTION(CMDACT##),$ERROR(BADCOM)>)

CMDTAB:	$STAB
	ORNDSP(ABOFDB,ABORT,CNC)
	ORNDSP(ALIFDB,ALIGN,ALI)
	ORNDSP(BKSFDB,BACKSPACE,BKS)
	ORNDSP(CANFDB,CANCEL,DEL)
	ORNDSP(CLOFDB,CLOSE,CLO)
	ORNDSP(UNVFDB,CONTINUE,CNT)
IFN	FTDN60,<
	ORNDSP(DEFFDB,DEFINE,DEF)
>;END FTDN60
	ORNDSP(ENAFDB,DISABLE,DIS)
	ORNDSP(DSMFDB,DISMOUNT,DSM) 
	ORNDSP(ENAFDB,ENABLE,ENA)
IFN	NUMAPL,<			;CHECK IS ANY APPLICATION TABLES
	ORNDSP(ENTFDB##,ENTER,ENT)
>;END NUMAPL
	ORNDSP(EXTFDB##,EXIT,EXT)
	ORNDSP(BKSFDB,FORWARDSPACE,FWS)
	ORNDSP(HLPFDB,HELP,HLP)
	ORNDSP(HLDFDB,HOLD,HLD)
	ORNDSP(IDNFDB,IDENTIFY,IDN)
	ORNDSP(MODFDB,MODIFY,MOD)
	ORNDSP(MTNFDB##,MOUNT,MTN)		;[260]
	ORNDSP(NXTFDB##,NEXT,NXT)		;[260]
	ORNDSP(PUSFDB##,PUSH,PUS)		;[260]
	ORNDSP(HLDFDB,RELEASE,REL)	
	ORNDSP(RPTFDB##,REPORT,RPT)		;[260]
	ORNDSP(REQFDB##,REQUEUE,REQ)		;[260]
	ORNDSP(RSPFDB##,RESPOND,RSP)		;[260]
	ORNDSP(RTEFDB##,ROUTE,RTE)		;[260]
	ORNDSP(SNDFDB##,SEND,SND)		;[260]
	ORNDSP(SETFDB##,SET,SET)		;[260]
	ORNDSP(SHWFDB##,SHOW,SHW)		;[260]
	ORNDSP(SHDFDB,SHUTDOWN,SHD)	
	ORNDSP(STAFDB##,START,STA)		;[260]
	ORNDSP(STPFDB##,STOP,PAU)		;[260]
	ORNDSP(SUPFDB##,SUPPRESS,SUP)		;[260]
	ORNDSP(SWIFDB##,SWITCH,SWI)		;[260]
	ORNDSP(TAKOPR##,TAKE,TAK)		
	ORNDSP(UNDFDB##,UNDEFINE,UDF)		;[260]
	ORNDSP(WAIOPR##,WAIT,WAI)		
	$ETAB

BADCOM:	MOVEI	S2,[ASCIZ/Invalid OPR command specified/]
	$RETF				;BAD COMMAND
SUBTTL	Argument Subroutines

;ACTION ROUTINE CALLED ON $UNIT MACRO TO BARF ON NEGATIVE UNIT
;NUMBER ARGUMENTS.
CHKVAL:	SKIPL	CR.RES(S2)	;CHECK THAT NUMBER
	$RETT			;IT'S GOOD
	PUSHJ	P,FIXIT
	MOVEI	S2,[ASCIZ/Negative number improper/]
	$RETF

CHKPOS:	SKIPLE	CR.RES(S2)	;CHECK THE NUMBER
	$RETT			;O.K..RETURN
	PUSHJ	P,FIXIT		;FIXUP COMMAND
	MOVEI	S2,[ASCIZ/Number must be positive/]
	$RETF			;RETURN FALSE

; ACTION ROUTINE TO CHECK PRIORITY RANGES
CHKPRI:	SKIPLE	T1,CR.RES(S2)	;CHECK THAT NUMBER
	CAILE	T1,^D63
	SKIPA
	$RETT			;IT'S GOOD
	PUSHJ	P,FIXIT
	MOVEI	S2,[ASCIZ/Priority not in range/]
	$RETF

;TEMPORARY STORAGE FOR RANGE ARGUMENT
	$DATA	LSTARG,1		;LAST PARSED ARGUMENT ADDRESS
	$GDATA	CMDCOD,1		;COMMAND FUNCTION CODE

STOBTH:	SKIPGE	T1,CR.RES(S2)
	PJRST	CHKVAL		;ABORT COMMAND
	MOVEM	T1,LSTARG
	$RETT

;  Routine STOOHG to check width of range for object commands as well as
;  the stuff checked by STOHGH.

STOOHG:	SKIPGE	T1,CR.RES(S2)		;Is the range at least positive?
	PJRST	CHKVAL			;No, abort command
	SUB	T1,LSTARG		;Subtract the beginning of range
	JUMPL	T1,STOH.1		;Bad range
	CAIGE	T1,MXOBJR		;Too big?
	$RETT				;Just fine
	JRST STOH.1			;Bad range

;  Action routine STOHGH to check range validity based on bottom and top
;  of range.

STOHGH:	SKIPGE	T1,CR.RES(S2)
	PJRST	CHKVAL		;ABORT COMMAND
	CAMGE	T1,LSTARG
	SKIPA			;SKIP AND LOAD ERROR
	$RETT

STOH.1:	PUSHJ	P,FIXIT
	MOVEI	S2,[ASCIZ /Improper range specification/]
	$RETF

FIXIT:	HRRZ	T4,CR.FLG(S2)	;GET ADR OF CMDBLK
	MOVE	T1,.CMPTR(T4)	;GET COMMAND POINTER
	MOVE	T2,.CMABP(T4)	;GET BP TO ATOM BUFFER
FIXI.1:	ILDB	T3,T2
	JUMPE	T3,FIXI.2	;DONE.. ALL FIXED UP
	PUSHJ	P,DBP		;DECREMENT THE BP
	AOS	.CMCNT(T4)
	JRST	FIXI.1		;TRY NEXT CHARACTER
FIXI.2:	MOVEM	T1,.CMPTR(T4)	;STORE ADJUSTED BP
	POPJ	P,0

;LOCAL ROUTINE TO DECREMENT BYTE POINTER IN T1
DBP:	SOS	T1
	IBP	T1
	IBP	T1
	IBP	T1
	IBP	T1
	$RETT
	SUBTTL	Argument subroutines for printers

;**;[230]ROUTINES DQSCHK, LATSAP,LATSRV HAVE BEEN ADDED AS PART OF THIS EDIT

	EXTERNAL STRADR,G$NODE,ATMBFR,CMDRET,ARGFRE ;[237]
	EXTERNAL CLNTAB,BLDCNT			    ;[263]
	EXTERNAL P$PNXT				;***PMM
MAXDQS==^D31				;MAX LENGTH OF A DQS QUEUE NAME
MAXSAP==^D16				;MAX LENGTH OF SERVICE/PORT NAME
MAXSVR==^D6				;MAX LENGTH OF LAT SERVER NAME
AKALEN==^D6				;MAX LENGTH OF ALIAS NAME ***pmm

DQSCHK:	$CALL	CHKLAC			;CHECK LENGTH AND VALID CHARACTERS
	JUMPF	.POPJ			;INVALID CHARACTER DETECTED
;**;[265]At DQSCHK:+2L replace 4 lines with 5 lines  JCR  10/19/89
	MOVEI	S2,[ASCIZ/VMS printer queue name has an invalid length/] ;[265]
	SKIPLE	S1			;[265]Valid minimum length?
	CAILE	S1,MAXDQS		;[265]Yes, valid maximum length?
	$RETF				;[265]No, indicate invalid length
	$RET				;[265]Indicate success

LATSAP:	$CALL	CHKSTR			;[255]CHECK LENGTH AND VALID CHARACTERS
	JUMPF	.POPJ			;INVALID CHARACTER DETECTED
;**;[265]At LATSAP:+2L replace 4 lines with 5 lines  JCR  10/19/89
	MOVEI	S2,[ASCIZ/Service or port name has an invalid length/] ;[265]
	SKIPLE	S1			;[265]Valid minimum length?
	CAILE	S1,MAXSAP		;[265]Yes, valid maximum length?
	$RETF				;[265]No, indicate failure
	$RET				;[265]Yes, indicate success

LATSRV:	$CALL	CHKSTR			;[255]CHECK LENGTH AND VALID CHARACTERS
	JUMPF	.POPJ			;INVALID CHARACTER DETECTED
;**;[265]At LATSRV:+2L replace 1 line with 2 lines  JCR  10/19/89
	SKIPLE	S1			;[265]Valid minimum length?
	CAILE	S1,MAXSVR		;[265]Yes, valid maximum length?
	JRST	LATSR1			;[233]NO, INDICATE AN ERROR
	$CALL	CHKNOD			;[233]CHECK IF NODE IS LOCAL
	JUMPF	.POPJ			;[233]QUIT, IF SPECIFIED NODE IS LOCAL
	MOVX	S2,.CMNOD		;[233]PICK UP THE NODE BLOCK TYPE
	MOVE	S1,STRADR		;[233]PICK UP SERVER BLOCK ADDRESS
	STORE	S2,PFD.HD(S1),PF.TYP	;[233]CHANGE TO A NODE BLOCK
	$RET				;[233]PRESERVE THE TRUE/FALSE FLAG
LATSR1:	MOVEI	S2,[ASCIZ/Server name has an invalid length/]
	$RETF				;INDICATE ERROR
	

;**;[237]ROUTINE DQSSHO HAS BEEN ADDED AS PART OF THIS EDIT

;DQSSHO is used during the SHOW PRINTER processing for the cases of determining
;if the command is for all the printers of a particular class or for a
;specific printer of that class.

DQSSHO:	TDZA	S1,S1			;INDICATE FROM DQS PROCESSING
LATSHO: MOVEI	S1,1			;INDICATE FROM LAT PROCESSING
	$SAVE	<P1>			;SAVE THIS AC
	MOVE	P1,STRADR		;PICK UP THE LATEST MESSAGE BLOCK
	AOS	P1			;POINT PASS THE HEADER
	HRLI	P1,(POINT 7,,6)		;MAKE IT INTO A POINTER
	LDB	S2,P1			;PICK UP THE FIRST CHARACTER
	CAIE	S2,.CHCRT		;IS THIS A CARRIAGE RETURN?
	JRST	@DQSTAB(S1)		;A NAME HAS BEEN SPECIFIED

	ILDB	S2,P1			;PICK UP THE NEXT CHARACTER
	SKIPE	S2			;IS THERE ANY MORE?
	JRST	DQSS.3			;YES, INVALID CHARACTER SPECIFIED
	MOVEI	S2,DUMPDB+1		;PICK UP ADDRESS OF DUMMY FDB
	STORE	S2,CMDRET+CR.PDB,RHMASK	;STORE AS THE CURRENT PDB
	EXCH	T1,ARGFRE		;BACK OFF .CMFLD BLOCK FROM MESSAGE
	$RETT				;INDICATE SUCCESS

DQSS.1:	SETZ	S1,			;INITIALIZE CHARACTER COUNT
	$CALL	CHKLA0			;CHECK FOR VALID CHARACTERS
	JUMPF	.POPJ			;INVALID CHARACTER DETECTED
;**;[265]At DQSS.1:+3L replace 4 lines with 5 lines  JCR  10/19/89
	MOVEI	S2,[ASCIZ/VMS printer queue name has an invalid length/] ;[265]
	SKIPLE	S1			;[265]Valid minimum length?
	CAILE	S1,MAXDQS		;[265]Yes, valid maximum length?
	$RETF				;[265]No, indicate invalid length
	$RET				;[265]Indicate valid length
DQSS.2:	SETZ	S1,			;INITIALIZE CHARACTER COUNT
	$CALL	CHKST1			;[255]CHECK FOR VALID CHARACTERS
	JUMPF	.POPJ			;INVALID CHARACTER DETECTED
;**;[265]At DQSS.2:+3L replace 4 lines with 5 lines  JCR  10/19/89
	MOVEI	S2,[ASCIZ/Service or port name has an invalid length/]
	SKIPLE	S1			;[265]Valid minimum length?
	CAILE	S1,MAXSAP		;[265]Yes, valid maximum length?
	$RETF				;[265]Indicate invalid length
	$RET				;[265]Indicate valid length

DQSS.3:	MOVEI	S2,[ASCIZ/Invalid character specified in name/]
	$RETF				;INDICATE ERROR

DQSTAB:	DQSS.1				;CHECK DQS NAME CHARACTER VALIDITY
	DQSS.2				;CHECK LAT NAME CHARACTER VALIDITY

DUMPDB:	$FIELD	(CONFRM,<used to force $CRLF>) ;FORCE AN END TO THIS COMMAND

;**;[230]ROUTINE CHKLAC HAS BEEN ADDED AS PART OF THIS EDIT

;CHKLAC determines the length of an unquoted string. It also checks to ensure
;that the string contains only alphanumber characters, "$" and "_". This
;routine is used to validate DQS VMS printer queue names.
;
;Call is: No Arguments
;Returns true: All the characters specified in the name are valid
;              S1/Length of the name
;Returns false: An invalid character was detected in the name
;               S2/Address of the ASCIZ error string

CHKLAC:	$SAVE	<P1>			;SAVE THIS AC
	SETZ	S1,			;NUMBER OF CHARACTERS
	MOVE	P1,STRADR		;[232]PICK UP THE STRING ADDRESS
	AOS	P1			;[232]POINT PASS THE HEADER
	HRLI	P1,(POINT 7,,6)		;[232]MAKE IT INTO A POINTER
CHKLA0:	LDB	S2,P1			;[237]PICK UP THE FIRST CHARACTER
	CAIE	S2,"$"			;[233]IS IT A "$"?
	CAIN	S2,"_"			;[233]NO, IS IT AN "_"?
	JRST	CHKLA7			;[233]YES, AN INVALID FIRST CHARACTER
	SKIPA				;[233]GO CHECK THE VALIDITY
CHKLA1:	LDB	S2,P1			;PICK UP THE NEXT CHARACTER
	SKIPN	S2			;IS THIS THE LAST CHARACTER?
	JRST	CHKLA6			;YES, GO RETURN SUCCESS
	AOS	S1			;NO, COUNT THIS CHARACTER

	CAILE	S2,"9"			;IS THIS A DIGIT?
	JRST	CHKLA2			;NO, CHECK FOR A LETTER
	CAIL	S2,"0"			;IS THIS A DIGIT?
	JRST	CHKLA5			;YES, CHECK THE NEXT CHARACTER

	CAIE	S2,"$"			;IS THIS A "$"?
	JRST	CHKLA7			;NO, SO IT IS INVALID
	JRST	CHKLA5			;GO CHECK THE NEXT CHARACTER

CHKLA2:	CAILE	S2,"Z"			;IS THIS AN UPPER CASE LETTER?
	JRST	CHKLA3			;NO, CHECK FOR LOWER CHASE LETTER
	CAIL	S2,"A"			;IS THIS AN UPPER CASE LETTER?
	JRST	CHKLA5			;YES, CHECK THE NEXT CHARACTER
	JRST	CHKLA7			;THIS CHARACTER IS INVALID

CHKLA3:	CAILE	S2,"z"			;IS THIS A LOWER CASE LETTER?
	JRST	CHKLA7			;NO, IT IS INVALID
	CAIL	S2,"a"			;IS THIS A LOWER CASE LETTER?
	JRST	CHKLA4			;YES, CONVERT TO UPPER CASE

	CAIE	S2,"_"			;IS THIS AN UNDERSCORE?
	JRST	CHKLA7			;NO, IT IS INVALID
	JRST	CHKLA5			;YES, CHECK THE NEXT CHARACTER

CHKLA4:	SUBI	S2,<"a"-"A">		;CONVERT TO UPPER CASE
	DPB	S2,P1			;STORE THE CHARACTER
CHKLA5:	IBP	P1			;POINT TO THE NEXT CHARACTER
	JRST	CHKLA1			;CHECK THE NEXT CHARACTER
CHKLA6:	$RETT				;INDICATE ALL CHARACTERS VALID
;**;[266]Replace 2 lines with 5 lines  JCR  10/20/89
CHKLA7:	SOS	S1			;[266]Assume a carriage return
	CAIN	S2,.CHCRT		;[266]A carriage return?
	$RETT				;[266]Yes, indicate success
	MOVEI	S2,[ASCIZ/Invalid character specified in name/] ;[266]
	$RETF				;[266]Indicate invalid character

ILLAKA:	4,,4
	[ASCIZ/CLUSTER/],,0
	[ASCIZ/DQS/],,0
	[ASCIZ/LAT/],,0
	[ASCIZ/LOCAL/],,0
	SUBTTL	CHKAKA	Alias Name Validity Checker

;[275]CHKAKA determines the validity of an alias name. It checks to ensure
;[275]that the alias name contains only alphanumeric characters, "$", "." 
;[275]and "_". It also checks to ensure that an alias name does not begin
;[275]with a number and that an alias name does not contain a subset of
;[275]CLUSTER, DQS, LAT or LOCAL.
;[275]
;[275]Call is:       No Arguments
;[275]Returns true:  All the characters specified in the name are valid
;[275]               S1/Length of the name
;[275]Returns false: An invalid character was detected in the name
;[275]               S2/Address of the ASCIZ error string

$DATA	STRING,2			;[275]String

CHKAKA:	$SAVE	<T1,T2,P1,P2>		;[275]Save these ACs
	SETZM	T1			;[275]Clear string pointer
	SETZ	P2,			;[275]Number of characters
	MOVE	P1,STRADR		;[275]Pick up the string address
	AOS	P1			;[275]Point pass the header
	HRLI	P1,(POINT 7,,6)		;[275]Make it into a pointer

CHKAK0:	LDB	S2,P1			;[275]Pick up the first character
	AOS	P2			;[275]Count this character
	CAIN	S2,"C"			;[275]Is this an invalid character?
	JRST	CHKAK9			;[275]Yes, invalid first character
	CAIN	S2,"c"			;[275]Is this an invalid character?	
	JRST	CHKAK9			;[275]Yes, invalid first character
	CAIN	S2,"D"			;[275]Is this an invalid character?	
	JRST	CHKAK9			;[275]Yes, invalid first character
	CAIN	S2,"d"			;[275]Is this an invalid character?	
	JRST	CHKAK9			;[275]Yes, invalid first character
	CAIN	S2,"L"			;[275]Is this an invalid character?	
	JRST	CHKAK9			;[275]Yes, invalid first character
	CAIN	S2,"l"			;[275]Is this an invalid character?	
	JRST	CHKAK9			;[275]Yes, invalid first character
	CAILE	S2,"9"			;[275]Is this a digit?
	JRST	CHKAK2			;[275]No, try for a letter
	CAIL	S2,"0"			;[275]Is this a digit?
	JRST	CHKAK9			;[275]Yes, invalid first character
	JRST	CHKAK2			;[275]No, try for a letter

CHKA1A:	LDB	S2,P1			;[275]Pick up the next character
	SKIPN	S2			;[275]Is this the last character?
	JRST	CHKAK6			;[275]Yes, go check length
	AOS	P2			;[275]No, count this character

	CAILE	S2,"9"			;[275]Is this a digit?
	JRST	CHKAK2			;[275]No, check for a letter
	CAIL	S2,"0"			;[275]Is this a digit?
	JRST	CHKAK5			;[275]Yes, check the next character

CHKAK2:	CAILE	S2,"Z"			;[275]Is this an upper case letter?
	JRST	CHKAK3			;[275]No, check for lower case letter
	CAIL	S2,"A"			;[275]Is this an upper case letter?
	JRST	CHKAK5			;[275]Yes, check the next character


CHKAK3:	CAILE	S2,"z"			;[275]Is this a lower case letter?
	JRST	CHKA3A			;[275]No, check special characters
	CAIL	S2,"a"			;[275]Is this a lower case letter?
	JRST	CHKAK4			;[275]Yes, convert to upper case

CHKA3A:	CAIE	S2,"_"			;[275]Is this an underscore?
	CAIN	S2,"."			;[275]Is this a period?
	JRST	CHKAK5			;[275]Yes, Check the next character	
	CAIE	S2,"$"			;[275]Is it a dollar sign?
	JRST	CHKAK8			;[275]No, it is invalid
	JRST	CHKAK5			;[275]Yes, check the next character
CHKAK4:	SUBI	S2,<"a"-"A">		;[275]Convert to upper case
	DPB	S2,P1			;[275]Store the character
CHKAK5:	IBP	P1			;[275]Point to the next character
	JRST	CHKA1A			;[275]Check the next character
CHKAK6: CAILE	P2,AKALEN		;[275]Is alias name too long?
	JRST	CHKA10			;[275]Yes, invalid alias length
	MOVEI	S1,ILLAKA		;[275]Get address of table
	MOVE	S2,STRADR		;[275]Get address of string
	AOS	S2			;[275]Bump past header
	HRROI	S2,0(S2)		;[275]Make it a pointer
	TBLUK%				;[275]Is it in illegal alias table?
	TLNE	S2,400000		;[275]Subset of an illegal word?
	JRST 	CHKA11			;[275]No, it's okay


CHKAK7:	MOVEI	S2,[ASCIZ/Illegal alias name/] ;[275]
	$RETF				;[275]Return false

CHKAK8:	MOVEI	S2,[ASCIZ/Invalid character specified in alias name/] ;[275]
	$RETF				;[275]Indicate invalid character

CHKAK9: MOVEI	S2,[ASCIZ/Invalid first character in alias name/] ;[275]
	$RETF				;[275]Indicate invalid character

CHKA10:	MOVEI	S2,[ASCIZ/Alias name too long/] ;[275]
	$RETF				;[275]]Indicate invalid character

CHKA11:	$CALL	CHKLST			;[275]Skip an FDB if needed
	$RETT				;[275]Return
	SUBTTL	CHGLST	Checks is the Alias Printer Name Keyword Table is Empty

;[275]CHGLST determines if the alias keyword table is empty. If it isn't, 
;[275]]it does not do anything.  If the alias keyword table is empty,
;[275]CHGLST will change the current FDB to be equal to the $ALTERNATE FDB.  

CHGLST:	HLRZ	S1,AKATBL		;[275]Get the number of aliases	
	SKIPE	S1			;[275]Empty?
	$RET				;[275]No, so return

;[275]Get the alternate FDB 

	LOAD	S1,CMDRET+CR.PDB,RHMASK	;[275]Get the used PDB from parse
	LOAD	S1,.CMFNP(S1),CM%LST	;[275]Get alternate FDB
	STORE 	S1,CMDRET+CR.PDB,RHMASK	;[275]Store where expected by P$PNXT
	$RET

	SUBTTL	CHKST	Checks if the Alias Printer Name Keyword Table is Empty

;[275]Routine CHKLST determines if the alias keyword table is empty.
;[275]If it is, it does not do anything.  If the alias keyword table is
;[275]not empty, CHKLST will change the current FDB to be equal to the 
;[275]next FDB.

CHKLST:	HLRZ	S1,AKATBL		;[275]Get the number of aliases	
	SKIPN	S1			;[275]Empty?
	$RET				;[275]Yes, so return

;[275]Skip an FDB

	LOAD	S1,CMDRET+CR.PDB,RHMASK	;[275]Get the used PDB from parse
	$CALL	P$PNXT			;[275]Get the next PDB
	AOS	S1			;[275]Bump to FDB address
	STORE 	S1,CMDRET+CR.PDB,RHMASK	;[275]Store where expected by P$PNXT
	$RET

	SUBTTL	LSTCHK	Checks if the Alias List is Empty

;[275]LSTCHK determines whether or not the alias list is empty. If the list
;[275]is empty, LSTCHK skips to the next FDB's alternate FDB. If the list
;[275]is not empty, LSTCHK skips one FDB.

LSTCHK:

;[275]Skip an FDB

	LOAD	S1,CMDRET+CR.PDB,RHMASK	;[275]Get the used PDB from parse
	$CALL	P$PNXT			;[275]Get the next PDB
	AOS	S1			;[275]Bump to FDB address
	STORE 	S1,CMDRET+CR.PDB,RHMASK	;[275]Store where expected by P$PNXT
	HLRZ	S1,AKATBL		;[275]Get the number of aliases	
	SKIPE	S1			;[275]Empty?
	$RET				;[275]No, return now

;[275]Skip to alternate FDB

	LOAD	S1,CMDRET+CR.PDB,RHMASK	;[275]Get the used PDB from parse
	LOAD	S1,.CMFNP(S1),CM%LST	;[275]Get alternate fdb
	STORE 	S1,CMDRET+CR.PDB,RHMASK	;[275]Store where expected by p$pnxt
	$RET

	SUBTTL	RLSCHK	Checks if the Alias List is Empty

;[275]RLSCHK determines whether or not the alias list is empty. If the list
;[275]is empty, RLSCHK skips to the next FDB's alternate FDB. If the list
;[275]is not empty, RLSCHK simply returns.

RLSCHK:

;[275]Skip an FDB

	HLRZ	S1,AKATBL		;[275]Pick up the number of aliases
	SKIPE	S1			;[275]Empty?
	$RET				;[275]No, just return
	LOAD	S1,CMDRET+CR.PDB,RHMASK	;[275]Get the used PDB from parse
	$CALL	P$PNXT			;[275]Get the next PDB
	AOS	S1			;[275]Bump to FDB address

	LOAD	S1,.CMFNP(S1),CM%LST	;[275]Get alternate FDB
	STORE 	S1,CMDRET+CR.PDB,RHMASK	;[275]Store where expected by COMND%
	AOS	0(P)			;[275]Skip return
	$RET

;**;[255]ROUTINE CHKSTR HAS BEEN ADDED AS PART OF THIS EDIT

;CHKSTR determines the length of an unquoted string. It also checks to ensure
;that the string contains only alphanumeric characters, "$", "-", "." and "_".
;This routine is used to validate LAT port, service and server names.
;
;Call is:       No Arguments
;Returns true:  All the characters specified in the name are valid
;               S1/Length of the name
;Returns false: An invalid character was detected in the name
;               S2/Address of the ASCIZ error string

CHKSTR:	$SAVE	<P1>			;SAVE THIS AC
	SETZ	S1,			;NUMBER OF CHARACTERS
	MOVE	P1,STRADR		;PICK UP THE STRING ADDRESS
	AOS	P1			;POINT PASS THE HEADER
	HRLI	P1,(POINT 7,,6)		;MAKE IT INTO A POINTER

CHKST1:	LDB	S2,P1			;PICK UP THE NEXT CHARACTER
	SKIPN	S2			;IS THIS THE LAST CHARACTER?
	JRST	CHKST6			;YES, GO RETURN SUCCESS
	AOS	S1			;NO, COUNT THIS CHARACTER

	CAILE	S2,"9"			;IS THIS A DIGIT?
	JRST	CHKST2			;NO, CHECK FOR A LETTER
	CAIL	S2,"0"			;IS THIS A DIGIT?
	JRST	CHKST5			;YES, CHECK THE NEXT CHARACTER

	CAIN	S2,"$"			;IS THIS A "$"?
	JRST	CHKST5			;YES, CHECK THE NEXT CHARACTER
	CAIN	S2,"-"			;IS THIS A "-"?
	JRST	CHKST5			;YES, CHECK THE NEXT CHARACTER
	CAIN	S2,"."			;IS THIS A "."?
	JRST	CHKST5			;YES, CHECK THE NEXT CHARACTER

CHKST2:	CAILE	S2,"Z"			;IS THIS AN UPPER CASE LETTER?
	JRST	CHKST3			;NO, CHECK FOR LOWER CHASE LETTER
	CAIL	S2,"A"			;IS THIS AN UPPER CASE LETTER?
	JRST	CHKST5			;YES, CHECK THE NEXT CHARACTER
	JRST	CHKST7			;THIS CHARACTER IS INVALID

CHKST3:	CAILE	S2,"z"			;IS THIS A LOWER CASE LETTER?
	JRST	CHKST7			;NO, IT IS INVALID
	CAIL	S2,"a"			;IS THIS A LOWER CASE LETTER?
	JRST	CHKST4			;YES, CONVERT TO UPPER CASE

	CAIE	S2,"_"			;IS THIS AN UNDERSCORE?
	JRST	CHKST7			;NO, IT IS INVALID
	JRST	CHKST5			;YES, CHECK THE NEXT CHARACTER

CHKST4:	SUBI	S2,<"a"-"A">		;CONVERT TO UPPER CASE
	DPB	S2,P1			;STORE THE CHARACTER
CHKST5:	IBP	P1			;POINT TO THE NEXT CHARACTER
	JRST	CHKST1			;CHECK THE NEXT CHARACTER
CHKST6:	$RETT				;INDICATE ALL CHARACTERS VALID
;**;[266]Replace 2 lines with 5 lines  JCR  10/20/89
CHKST7:	SOS	S1			;[266]Assume a carriage return
	CAIN	S2,.CHCRT		;[266]A carriage return?
	$RETT				;[266]Yes, indicate success
	MOVEI	S2,[ASCIZ/Invalid character specified in name/] ;[266]
	$RETF				;[266]Indicate invalid character
	

;[233]ROUTINE CHKNOD HAS BEEN ADDED AS PART OF THIS EDIT
;CHKNOD is called to ensure that the node specified in remote printing
;commands is not the local node

;**;[263]At CHKNOD:+0L change 1 line  JYCW  Oct-18-88
CHKNOD:	$RETT				;[263]No need
;CHKNOD:HRROI	S1,ATMBFR		;PICK UP THE ATOM BUFFER
	$CALL	S%SIXB			;CONVERT TO SIXBIT
	CAME	S2,G$NODE		;SPECIFIED NODE THE LOCAL NODE?
	$RETT				;NO, INDICATE TO THE CALLER
	MOVEI	S2,[ASCIZ/Cannot specify the local node name/]
	$RETF				;INDICATE ERROR TO THE CALLER

CHGBLK:	MOVE	S1,ARGFRE		;[260]PICK UP ADDRESS OF NEXT BLOCK
	MOVE	S2,[2,,.NDENM]		;[260]PICK UP CLUSTER-NODE NAME HEADER
	EXCH	S2,-2(S1)		;[260]REPLACE BLOCK HEADER WORD
	CAME	S2,[2,,.CMKEY]		;[260]A KEYWORD BLOCK?
	JRST	CHGB.2			;[260]NO, GO INDICATE AN ERROR
	MOVE	S2,@-1(S1)		;[260]PICK UP THE SIXBIT NODE NAME
	MOVEM	S2,-1(S1)		;[260]REPLACE ITS ADDRESS
	$RETT				;[260]RETURN TO OPRPAR VALIDATION

CHGB.2:	MOVEI	S2,[ASCIZ/Illegal node specification/]
	$RETF				;[260]RETURN TO OPRPAR VALIDATION

CHGAKA:	MOVE	S1,ARGFRE		;[260]PICK UP ADDRESS OF NEXT BLOCK
	MOVE	S2,[2,,.AKANM]		;[260]Pick up Alias Name Header***pmm
	EXCH	S2,-2(S1)		;[260]REPLACE BLOCK HEADER WORD
	CAME	S2,[2,,.CMKEY]		;[260]A KEYWORD BLOCK?
	JRST	CHGB.2			;[260]NO, GO INDICATE AN ERROR
	MOVE	S2,@-1(S1)		;[260]PICK UP THE SIXBIT alias NAME
	MOVEM	S2,-1(S1)		;[260]REPLACE ITS ADDRESS
	$RETT				;[260]RETURN TO OPRPAR VALIDATION

CHGA.2:	MOVEI	S2,[ASCIZ/Illegal alias specification/]
	$RETF				;[260]RETURN TO OPRPAR VALIDATION
SUBTTL	CONTINUE command tables

SUBTTL	SHUTDOWN command tables

COMMENT	\
NOTE: SHOULD IT BECOME DESIRABLE FOR THE SHUTDOWN AND
CONTINUE COMMANDS TO BE NO LONGER SYNTACTICALLY IDENTICAL THEN THE
COMMON USE OF THIS PDB CHAIN DEFINITION IS NO LONGER VALID.
\

SHDFDB:	$NOISE	(SHD010,<scheduling for>)

UNVFDB:	$NOISE (UNVF01,<object>)

UNVF01:	$KEYDSP(UNVF02)

UNVF02:	$STAB
	ORNDSP(UNVF03,BATCH-STREAM,BAT)
	ORNDSP(UNVF04,<CARD-PUNCH>,CDP)
IFN FTFTS,<
	ORNDSP(UNVF03,<FAL-STREAM>,FAL)
	ORNDSP(UNVF03,<FTS-STREAM>,FTS)
> ;End FTFTS conditional
	ORNDSP(UNVF04,<PAPER-TAPE-PUNCH>,PTP)
	ORNDSP(UNVF04,<PLOTTER>,PLT)
;**;[275]At UNVF02:+8L add 1 line  PMM  6/3/90
	ORNDSP(UNVF08,PRINTER,LPT)		;[275]
	ORNDSP(UNVF04,READER,RDR)
	$ETAB
;**;[263]At UNVF02:+10L change 2 lines  JYCW  Oct-18-88
UNVF03:	$SRANGE(UNVCLU)		;[263]
UNVF04:	$URANGE(UNVCLU)		;[263]

;**;[275]At UNVF04:+0L add 2 lines  PMM  6/3/90

UNVF08:	$NOISE(UNVF09,<specify printer>,<$ACTION(LSTCHK),$FLAGS(CM%SDH)>) ;[275]
UNVF09:	$AKAMAC	(UNVCLU,UNVF11)					;[275]

;[262]Change 1 line At UNVF11:+0L   JYCW 8-Aug-88
UNVF11:	$ORANGE	(UNVF20,<number or range (n:m) (/NODE:)>,<$ALTERNATE(<UNVF12>)>) ;[237][262]

;[262]Add 1 line UNVF11:+1L    JYCW 8-Aug-88
;**;[263]at UNVF20:+0L Change 1 line  JYCW  OCT-18-88
UNVF20:	$NODE	(UNVCLU)	;[262][263]/NODE:

;[230]REMOTE PRINTERS

UNVF12:	$KEYDSP	(UNVF13)
UNVF13:	$STAB
CLUSTER<  ORNDSP (UNVF14,CLUSTER,CLU)> ;[254]
	  ORNDSP (UNVF15,DQS,DQS)
	  ORNDSP (UNVF16,LAT,LAT)
	$ETAB
CLUSTER<
;**;[263]At UNVF14:+0L change 1 line  JYCW  Oct-18-88
UNVF14:	$CLUSPL(UNVCLU)		;[263]
> ;[254]End of CLUSTER
;**;[263]At UNVF15:+0L change 2 lines  JYCw  Oct-18-88
UNVF15:	$DQSSPL(UNVCLU)		;[263]
UNVF16:	$LATSPL(UNVCLU)		;[263]

;**;[263]At UNVF16:+0L Add 4 lines  JYCW  Oct-18-88
CLUSTER<
UNVCLU:	$CLUNOD (CONFRM)	;[263]
>
SINGLE<
;**;[264]At UNVCLU:+0L change 1 line  JCR 4/25/89
UNVCLU: $CRLF				;[264]Terminate the command.
>
CONFRM:	$CRLF

SHD010:	$KEYDSP(SHD020)

SHD020:	$STAB
	ORNDSP(UNVF03,BATCH-STREAM,BAT)
	ORNDSP(UNVF04,<CARD-PUNCH>,CDP)
	ORNDSP(SHD030,NODE,NOD)
	ORNDSP(UNVF04,<PAPER-TAPE-PUNCH>,PTP)
	ORNDSP(UNVF04,<PLOTTER>,PLT)
	ORNDSP(UNVF08,PRINTER,LPT)
	ORNDSP(UNVF04,READER,RDR)
	$ETAB

SHD030:	$NODNM(CONFRM,<node name>,<$FLAGS(CM%PO!CM%NSF)>)
SUBTTL	ABORT command tables

ABOFDB:	$NOISE	(ABO010,<current job on>)

ABO010:	$KEYDSP	(ABO020)
ABO020:	$STAB
	ORNDSP	(ABO060,<BATCH-STREAM>,BAT)
	ORNDSP	(ABO030,<CARD-PUNCH>,CDP)
IFN FTFTS,<
	ORNDSP	(ABO060,<FAL-STREAM>,FAL)
	ORNDSP	(ABO060,<FTS-STREAM>,FTS)
> ;End FTFTS conditional
	ORNDSP	(ABO030,<PAPER-TAPE-PUNCH>,PTP)
	ORNDSP	(ABO030,<PLOTTER>,PLT)
;**;[275]At ABOO20:+8L change 1 line  PMM  6/3/90
	ORNDSP	(ABO025,<PRINTER>,LPT)	;[275]
	ORNDSP	(ABO090,<READER>,RDR)
	$ETAB

; Output device tables

;**;[275]At ABOO31:+0L replace 1 line with 2 lines  PMM  6/3/90

ABO025:	$NOISE(ABO027,<specify printer>,<$ACTION(LSTCHK),$FLAGS(CM%SDH)>) ;[275]
ABO027:	$AKAMAC(ABO040,ABO032)		;[275]

ABO030:	$UNIT	(ABO040)

ABO031:	$NOISE	(ABO032,<unit number or remote printer type>)
;[262]Change 1 line at ABO032:+1L    JYCW 8-Aug-88
ABO032:	$NUMBER	(ABO033,^D10,<unit number (/NODE:)>,<$ACTION(CHKVAL),$ALTERNATIVE(ABO034)>)
;[262]add 1 line at ABO032:+1L    JYCW 8-Aug-88
ABO033:	$NODE	(ABO040)	;[262]
;[230]REMOTE PRINTERS

ABO034:	$KEYDSP	(ABO035)
ABO035:	$STAB
CLUSTER<  ORNDSP (ABO036,CLUSTER,CLU)>	;[254]
	  ORNDSP (ABO037,DQS,DQS)
	  ORNDSP (ABO038,LAT,LAT)
	$ETAB
CLUSTER<
ABO036:	$CLUSPL (ABO040)
>;[254]End of CLUSTER
ABO037:	$DQSSPL	(ABO040)
ABO038:	$LATSPL	(ABO040)

ABO040:	$SWITCH	(ABO100,ABO050,<$ALTERNATE(ABO100)>)
ABO050:	$STAB
	ORNSWI	(<PURGE>,PUR)
	$ETAB


; Batch tables
;
ABO060:	$STREAM	(ABO070)
ABO070:	$SWITCH	(ABO100,ABO080,<$ALTERNATE(ABO100),$DEFAULT(</ERROR-PROCESSING>)>)
ABO080:	$STAB
	ORNSWI	(<ERROR-PROCESSING>,ERR)
	ORNSWI	(<NOERROR-PROCESSING>,NER)
	ORNSWI	(<PURGE>,PUR)
	$ETAB


; Card reader tables
;
ABO090:	$UNIT	(ABO100)

;**;[267]At ABO10:-1L replace 1 line with 7 lines  JCR  1/12/90
;**;[263]at ABO100:+0L change 1 line JYCW Oct-18-88
SINGLE<						 ;[267]
ABO100:	$EXPL	(UNVCLU,<$ALTER(UNVCLU)>)        ;[267]
>					         ;[267]
CLUSTER<                                         ;[267]
ABO100:		$CLUNOD	(ABO110,ABO110)          ;[267]
ABO110:		$EXPL	(CONFRM,<$ALTER(CONFRM)>);[267]
>                                                ;[267]
SUBTTL	HOLD command tables
SUBTTL	RELEASE command tables

HLDFDB:	$KEY	(HLD030,HLD010)

HLD010:	$STAB
	ORNKEY	(<BATCH-JOBS>,BAT)
	ORNKEY	(<CARD-PUNCH-JOBS>,CDP)
IFN FTFTS,<
	ORNKEY	(<FTS-JOBS>,FTS)
> ;End FTFTS conditional
	ORNKEY	(<PAPER-TAPE-PUNCH-JOBS>,PTP)
	ORNKEY	(<PLOTTER-JOBS>,PLT)
	ORNKEY	(<PRINTER-JOBS>,LPT)
	$ETAB

;**;[263]At HLD030:+0L change 1 line JYCW Oct-18-88
HLD030:	$NUMBER(UNVCLU,^D10,<request-id>,<$ACTION(CHKPOS),$ALTERNATE(HLD035)>)

;**;[263]At HLD035:+0L change 1 line  JYCW  OCT-18-88
HLD035:	$USER(UNVCLU,<$ALTERNATE(HLD040)>)	;[263]

HLD040:	$TOKEN(HLD050,<*>,<$HELP(<* to specify all requests>)>)

;**;[263] AT HLD050:+0L change 1 line JYCW OCT-18-88
HLD050:	$NODE(UNVCLU)
SUBTTL	DEFINE command tables

IFN	FTDN60,<
;**;[275]At DEFFDB:+0L replace 3 lines with 4 lines  PMM  6/3/90
DEFFDB:	$KEYDSP(DEF010)   		;[275]Make it a keyword display

DEF010:	$STAB				;[275]
	ORNDSP(DEF210,<ALIAS>,AKA)	;[275]Add ALIAS keyword
	ORNDSP(DEF020,<NODE>,NOD)
	$ETAB

DEF020:	$NOISE(DEF030,<name>)

DEF030:	$NODNM(DEF040,<node name for IBM emulation/termination>,<$FLAGS(CM%PO!CM%NSF)>)

DEF040:	$NOISE(DEF050,<type>)

DEF050:	$KEYDSP(DEF060,<$DEFAULT(<HASP>)>)

DEF060:	$STAB
	ORNDSP(DEF063,<2780>,278)
	ORNDSP(DEF063,<3780>,378)
	ORNDSP(DEF063,<HASP>,HSP)
	ORNDSP(DEF140,<SNA-WORKSTATION>,SNA)
	$ETAB

DEF063:	$SWITCH	(DEF070,DEF065,<$ALTERNATE(DEF080),$DEFAULT(</SIGNON-REQUIRED>)>)
DEF065:	$STAB
	ORNSWI(<NO-SIGNON-REQUIRED>,NSN)
	ORNSWI(<SIGNON-REQUIRED>,SON)
	$ETAB

DEF070:	$NOISE(DEF080,<mode>)

DEF080:	$KEY(DEF100,DEF090,<$DEFAULT(<TERMINATION>)>)

DEF090:	$STAB
	ORNKEY(EMULATION,EMU)
	ORNKEY(TERMINATION,TRM)
	$ETAB

DEF100:	$NOISE(DEF110,<port>)

DEF110:	$NUMBER(DEF120,^D8,<port number for DN60>)

DEF120:	$NOISE(DEF130,<line>)

DEF130:	$NUMBER(CONFRM,^D8,<line number for DN60>)

DEF140:	$KEYDSP(DEF142,<$DEFAULT(<GATEWAY>)>)

DEF142:	$STAB
	ORNDSP(DEF180,<ACCESS-NAME>,ACC)
	ORNDSP(DEF150,<GATEWAY>,GWY)
	$ETAB

DEF150:	$NODNM(DEF160,<node name for SNA Gateway>,<$FLAGS(CM%PO!CM%NSF)>)
DEF160:	$KEY(DEF170,DEF162,<$DEFAULT(<ACCESS-NAME>)>)

DEF162:	$STAB
	ORNKEY(<ACCESS-NAME>,ACC)
	$ETAB

DEF170:	$FIELD(CONFRM,<access name>)

DEF180:	$FIELD(DEF190,<access name>)

DEF190:	$KEY(DEF200,DEF192,<$DEFAULT(<GATEWAY>)>)

DEF192:	$STAB
	ORNKEY(<GATEWAY>,GWY)
	$ETAB

DEF200:	$NODNM(CONFRM,<node name for SNA Gateway>,<$FLAGS(CM%PO!CM%NSF)>)
;**;[275]At DEF200:+1L add ALIAS tables  PMM  6/3/90
DEF210:	$ALIAS(DEF220)				;[275]

DEF220:	$AKAMAC(DEFCLU,DEF230)			;[275]

DEF230:	$NUMBER(DEF235,^D10,<unit number>,<$ACTION(CHKVAL),$ALTERNATE(DEF280)>) ;[275]
DEF235:	$SWITCH (DEF245,DEF240,<$ALTERNATE(DEFCLU)>) ;[275]
DEF240:	$STAB					;[275]
	ORNSWI(NODE:,NOD)			;[275]
	$ETAB					;[275]

DEF245:	$NODNM	(DEFCLU,<node name>,<$FLAGS(CM%PO!CM%NSF)>) ;[275]

;[275]Physical Printers

DEF280:	$KEYDSP (DEF290,<$alternate(DEFCLU)>)	;[275]
DEF290:	$STAB					;[275]
	  ORNdsp (DEF300,CLUSTER,CLU)		;[275]
	  ORNdsp (DEF315,DQS,DQS)		;[275]
	  ORNdsp (DEF320,LAT,LAT)		;[275]
	$ETAB					;[275]	

DEF300:	$NOISE	(DEF305,<unit number>)		;[275]
DEF305:	$NUMBER(DEF307,^D10,<unit number (NODE)>) ;[275]
DEF307:	$KEY	(DEF309,DEF308)			;[275]	
DEF308:	$STAB					;[275]
	  ORNKEY (<NODE>,NOD)			;[275]
	$ETAB					;[275]
DEF309:	$NOISE	(DEF310,<cluster node name>)	;[275]
DEF310:	$NODNM	(DEFCLU,<cluster node name>,<$FLAGS(CM%PO!CM%NSF),$ACTION(CHKNOD)>) ;[275]

DEF315:	$DQSSPL	(DEFCLU)		;[275]
DEF320:	$LATSPL	(DEFCLU)		;[275]			

CLUSTER<				;[275]
DEFCLU:	$CLUNOD (CONFRM)		;[275]
>					;[275]
SINGLE<					;[275]
DEFCLU: $CRLF				;[275]
>					;[275]

>;END FTDN60
SUBTTL	CANCEL command tables

CANFDB:	$KEYDSP(CAN010)

CAN010:	$STAB
	ORNDSP	(CAN020,<BATCH-REQUEST>,BAT)
	ORNDSP	(CAN020,<CARD-PUNCH-REQUEST>,CDP)
IFN FTFTS,<
	ORNDSP	(CAN020,<FTS-REQUEST>,FTS)
> ;End FTFTS conditional
	ORNDSP	(CAN040,<MOUNT-REQUEST>,MNT)
	ORNDSP	(CAN020,<PAPER-TAPE-PUNCH-REQUEST>,PTP)
	ORNDSP	(CAN020,<PLOTTER-REQUEST>,PLT)
	ORNDSP	(CAN020,<PRINTER-REQUEST>,LPT)
	$ETAB

;**;[263]AT CAN020:+0L Change 1 line JYCW OCT-18-88
CAN020:	$NUMBER(UNVCLU,^D10,<request number to cancel in queue or if active>,<$ACTION(CHKPOS),$ALTERNATE(CAN030)>) ;[263]

TOPS20 <
;**;[263]AT CAN030:+0L Change 1 line JYCW OCT-18-88
CAN030:	$USER(UNVCLU,<$HELP(<user name whose jobs will be canceled>),$ALTERNATE(HLD040)>)
>;END TOPS20

;**;[264]At CAN030:+0L Replace 11 lines with 2 lines  JCR 5/25/89
CAN040:	$NUMBER(CAN060,^D10,<mount request number to cancel>,<$ACTION(CHKPOS),$ALTERNATE(CAN050)>) ;[264]
CAN050:	$DEV(CAN060,<$HELP(<structure name to cancel all mount requests for>)>) ;[264]

;**;[263]At CAN060:+0L Change 1 line JYCW  Oct-18-88
CAN060:	$EXPL(UNVCLU,<$ALTERNATE(UNVCLU)>) ;[263]
SUBTTL	MODIFY command tables

MODFDB:
	$KEYDSP	(MOD010)

MOD010:	$STAB
TOPS10<	ORNDSP	(MOD300,<ACTIVE-SWAPPING-LIST>,ASL) >
	ORNDSP	(MOD020,<BATCH-REQUEST>,BAT)
	ORNDSP	(MOD020,<CARD-PUNCH-REQUEST>,CDP)
TOPS10<	ORNDSP	(MOD200,<CRASH-DUMP-LIST>,CDL) >
IFN FTFTS,<
	ORNDSP	(MOD020,<FTS-REQUEST>,FTS)
> ;End FTFTS conditional
	ORNDSP	(MOD020,<PAPER-TAPE-PUNCH-REQUEST>,PTP)
	ORNDSP	(MOD020,<PLOTTER-REQUEST>,PLT)
	ORNDSP	(MOD020,<PRINTER-REQUEST>,LPT)
TOPS10<	ORNDSP	(MOD200,<SYSTEM-SEARCH-LIST>,SSL) >
	$ETAB

MOD020:	$NUMBER(MOD030,^D10,<request number to modify in queue>,<$ACTION(CHKPOS),$ALTERNATE(MOD070)>)

MOD030:	$KEYDSP(MOD040)

MOD040:	$STAB
	ORNDSP(MOD050,<PRIORITY>,PRI)
	$ETAB

MOD050:	$NOISE(MOD060,<to be>)

;**;[263]at MOD060:+0L change 1 line JYCW OCT-18-88
MOD060:	$NUMBER(UNVCLU,^D10,<priority for request in range 1 to 63>,<$ACTION(CHKPRI)>)		;[263]

MOD070:	$USER(MOD030,<$ALTERNATE(MOD080)>)
MOD080:	$TOKEN(MOD090,<*>,<$HELP(<* to specify all requests>)>)

MOD090:	$NODE(MOD030)

TOPS10<

;More of the MODIFY command tables

;Here if MODIFYing lists pertaining to file structures
MOD200:	$NOISE	(MOD210,<to>)

MOD210:	$KEY	(MOD230,MOD220)

MOD220:	$STAB
	ORNKEY	(EXCLUDE,EXC)
	ORNKEY	(INCLUDE,INC)
	$ETAB

MOD230:	$DEV	(CONFRM,$HELP(<file structure name>))

;Here if MODIFYing lists pertaining to disk drives (units)
MOD300:	$NOISE	(MOD310,<to>)

MOD310:	$KEY	(MOD320,MOD220)

MOD320:	$DEV	(CONFRM,<$HELP(<disk unit name>),$FLAGS(CM%PO)>)

>;END TOPS10
SUBTTL	BACKSPACE command tables

SUBTTL	FORWARDSPACE command tables

BKSFDB::$KEY (BKS02A,BKS001,<$DEFAULT(<PRINTER>)>)

BKS001:	$STAB
	ORNKEY (<PRINTER>,LPT)
	$ETAB

BKS002:	$NOISE	(BKS003,<unit number or remote printer type>)	;[260]

;**;[275]At BKS002:+1L add 2 lines  PMM  6/3/90
BKS02A: $NOISE(BKS02B,<specify printer>,<$ACTION(LSTCHK),$FLAGS(CM%SDH)>);[275]
BKS02B: $AKAMAC(BKS009,BKS003)					;[275]

;[262]Change 1 line BKS003:+0L    JYCW 8-Aug-88
BKS003:	$NUMBER	(BKS090,^D10,<unit number (/NODE:)>,<$ACTION(CHKVAL),$ALTERNATE(BKS006)>)		;[262]/NODE:
BKS006:	$KEYDSP	(BKS007)					;[260]
BKS007:	$STAB							;[260]
	  ORNDSP (BKS008,LAT,LAT)				;[260]
	$ETAB							;[260]
BKS008:	$LATSPL	(BKS009)					;[260]


BKS009:	$SWITCH(,BKS010)					;[260]
;[262]Add 1 line at BKS080:+1L  JYCW 8-Aug-88
BKS090:	$NODE	(BKS009)	;[262]/NODE:

BKS010:	$STAB							;[260]
	ORNSDP(BKS011,<COPIES:>,CPY)				;[260]
;**;[270]At BKS010:+2L change 1 line  JCR  1/19/90
	ORNSDP(UNVCLU,<FILE>,FIL)				;[270]
	ORNSDP(BKS012,<PAGES:>,PAG)				;[260]
	$ETAB							;[260]

;**;[270]At BKS011:+0L change 2 lines  JCR  1/19/90
BKS011:	$NUMBER	(UNVCLU,^D10,<number of copies>,$ACTION(CHKVAL));[270]
BKS012:	$NUMBER	(UNVCLU,^D10,<number of pages>,$ACTION(CHKVAL))	;[270]
SUBTTL	ALIGN command table

ALIFDB::$NOISE (ALI001,<forms on>)

ALI001:	$KEY (ALI03F,ALI002,<$DEFAULT(<PRINTER>)>)

ALI002:	$STAB
	ORNKEY (<PRINTER>,LPT)
	$ETAB

;**;[275]At ALI002:+2L add 2 lines  PMM  6/3/90
ALI03F:	$NOISE(ALI03G,<specify printer>,<$ACTION(LSTCHK),$FLAGS(CM%SDH)>);[275]
ALI03G:	$AKAMAC	(ALI010,ALI03A)					;[275]
		
ALI003:	$NOISE	(ALI03A,<unit number or remote printer type>)	;[260]
;[262]Change 1 line at ALI03A:+0L    JYCW 8-Aug-88
ALI03A:	$NUMBER	(ALI01A,^D10,<unit number (/NODE:)>,<$ACTION(CHKVAL),$ALTERNATE(ALI03C)>) ;[261][262]
ALI03C:	$KEYDSP	(ALI03D)					;[260]
ALI03D:	$STAB							;[260]
	  ORNDSP (ALI03E,LAT,LAT)				;[260]
	$ETAB							;[260]
ALI03E:	$LATSPL	(ALI010)					;[260]

ALI004:	$IFILE	(ALI005,<alignment file>,<$ALTER(ALI005)>)

;**;[270]At ALI005:+0L change 1 line  JCR  1/19/90
ALI005:	$SWITCH(,ALI006,<$ALTER(UNVCLU),$ACTION(SHRSWT)>)	;[270]

ALI006:	$STAB
	ORNSDP(ALI007,<PAUSE:>,PAU)
	ORNSDP(ALI008,<REPEAT-COUNT:>,RPT)
	$ETAB

ALI007:	$NUMBER (NEXT,^D10,<seconds to pause>,$ACTION(CHKVAL))

ALI008:	$NUMBER (NEXT,^D10,<times to print>,$ACTION(CHKVAL))

ALI009:	$STAB
	ORNSWI(STOP,STP)
	$ETAB
;[262]Add 1 line at ALI009:+1L    JYCW 8-Aug-88
ALI01A:	$NODE	(ALI010) ;[262]/NODE:
;**;[270]At ALI010:+0L change 1 line  JCR  1/19/90
ALI010:	$SWITCH(UNVCLU,ALI009,<$ALTER(ALI004)>) ;[270]
SUBTTL	ENABLE/DISABLE command tables

ENAFDB:	$KEYDSP	(ENA001,<$DEFAULT(OUTPUT-DISPLAY)>)

ENA001:	$STAB
TOPS20<	ORNDSP(ENA050,<AUTOMATIC-VOLUME-RECOGNITION>,AVR)>
;**;[274]At ENA001:+1L add 1 line  JCR  3/10/90
CLUSTER<ORNDSP(ENABCM,<BROADCAST-MESSAGES>,BCM)>		;[274]
TOPS20<	ORNDSP(ENACLS,<CLASS-SCHEDULER>,CLS)>
CLUSTER<ORNDSP(ENADCA,<DECNET-CONNECTION-ATTEMPTS>,DCA)>	;[254]
;**;[272]At ENA001:+4L change 3 lines  JCR  2/16/90
TOPS20<	ORNDSP(UNVCLU,<FILE-RETRIEVAL-WAITS>,RET)>		;[272]
	ORNDSP(UNVCLU,<LOGFILES-TO-SPECIFIC-PRINTERS>,LSP)	;[272]
	ORNDSP(UNVCLU,<LOGGING>,LGG)				;[272]
	ORNDSP(ENA100,<OUTPUT-DISPLAY>,OPD)
	ORNDSP(ENA180,<PRINT-LOGFILES>,LFS)
;**;[272]At ENA001:+10L change 4 lines  JCR  2/16/90
	ORNDSP(UNVCLU,<QUEUE-REQUESTS>,QUE)			;[272]
;**;[274]At ENA001:+14L add 1 line  JCR  3/1/90
CLUSTER<ORNDSP(ENARCF,<REPORT-CONNECTION-FAILURES>,RCF)>	;[272]
	ORNDSP(UNVCLU,<SEMI-OPR>,SEM)	;[236]ENABLE/DISABLE SEMI-OPR ;[272]
CLUSTER<ORNDSP(UNVCLU,<UNPRIVILEGED-USER-ENTIRE-REMOTE-OUTPUT-DISPLAY>,UNP)>;[272]
TOPS10<	ORNDSP(CONFRM,<STRUCTURE-RECOGNITION>,ASR)>
TOPS10< ORNDSP(ENA050,<VOLUME-RECOGNITION>,AVR)>
	$ETAB

ENA050:	$NOISE(ENA065,<for>)

;**;[272]AT ENA065:+0L change 1 line  JCR  2/16/90
ENA065:	$KEY(UNVCLU,ENA070,<$ALTERNATE(ENA075)>)	;[272]

ENA070:	$STAB
TOPS10< ORNKEY(<DISK-DRIVES>,DSK)>
	ORNKEY(<TAPE-DRIVES>,TAP)
	$ETAB
TOPS20<
;**;[272]At ENA075:+0L change 1 line  JCR  2/16/90
ENA075:	$DEV(UNVCLU,$HELP(tape drive name))	;[272]
>;END TOPS20
TOPS10<
ENA075:	$DEV(CONFRM,<$HELP(<tape or disk drive name>)>)
>;END TOPS10

;continued on next page
;continued from previous page
;**;[274]At ENA075:+4L add $ODTYP definition  JCR  3/1/90

SUBTTL	$ODTYP Macro

DEFINE $ODTYP (ARG1,%OD010,%OD020,%OD030,%OD040,%OD050), <

IFG	NUMAPL,<
	$KEYDSP(%OD010,<$ALTERNATE(%OD020)>)
>;End NUMAPL
IFLE	NUMAPL,<
	$KEYDSP(%OD010)		;;If no application program show list
>;End NUMAPL

%OD010:	$STAB
	ORNDSP(%OD040,<ALL-MESSAGES>,ALM)
	ORNDSP(%OD040,<BATCH-MESSAGES>,BAT)
	ORNDSP(ARG1,<BUGCHK-MESSAGES>,CHK)		
	ORNDSP(ARG1,<BUGINF-MESSAGES>,INF)		
	ORNDSP(%OD040,<CARD-PUNCH-MESSAGES>,CDP)
	ORNDSP(%OD040,<CARD-READER-INTERPRETER-MESSAGES>,BIN)
	ORNDSP(ARG1,<DECNET-EVENT-MESSAGES>,EVT)	
	ORNDSP(ARG1,<DECNET-LINK-MESSAGES>,DLK)	
IFN FTFTS,<
	ORNDSP(%OD040,<FAL-MESSAGES>,FAL)
>  ; End of FTFTS conditional
	ORNDSP(%OD040,<FILE-RETRIEVAL-MESSAGES>,RET)
IFN FTFTS,<
	ORNDSP(%OD040,<FTS-MESSAGES>,FTS)
>  ; End of FTFTS conditional
	ORNDSP(%OD040,<MOUNT-MESSAGES>,MNT)
	ORNDSP(%OD040,<PAPER-TAPE-PUNCH-MESSAGES>,PTP)
	ORNDSP(%OD040,<PLOTTER-MESSAGES>,PLT)
	ORNDSP(%OD040,<PRINTER-MESSAGES>,LPT)
	ORNDSP(%OD040,<READER-MESSAGES>,RDR)
	ORNDSP(ARG1,<SYSTEM-MESSAGES>,SYM)		
	ORNDSP(%OD040,<USER-MESSAGES>,USR)
	$ETAB

IFG	NUMAPL,<
%OD020:	$KEY(ARG1,%OD030)				

	DEFINE	X(A,B,C,D),<ORNKEY(<A'-MESSAGES>,<B>)>

%OD030:	$STAB
	TABAPL
	$ETAB
>;END NUMAPL

%OD040:	$SWITCH(NEXT(%OD040),%OD050,<$ACTION(SHRSWT),$ALTERNATE(ARG1)>)

%OD050:	$STAB
	ORNSWI(<INFORMATION-MESSAGES>,OTH)
	ORNSWI(<JOB-MESSAGES>,JOB)
	ORNSWI(<OPR-ACTION-MESSAGES>,OAM)
	$ETAB
>; End of the $ODTYP definition
;  Here on ENABLE/DISABLE OUTPUT-DISPLAY
;**;[274]At ENA100:+0L replace 52 lines with 12 lines  JCR  3/1/90

ENA100:	$NOISE	(ENA105,<of>)				;[274]
ENA105:	$ODTYP	(ENA110)				;[274]

ENA110:	$KEY	(ENA130,ENA120,<$ALTERNATE(CONFRM)>)	;[274]

ENA120:	$STAB						;[274]
	ORNKEY	(<NODE>,NOD)				;[274]
	$ETAB						;[274]

ENA130:	$NOISE	(ENA140,<name>,<$ACTION(BLDCNT)>)	;[274]
ENA140:	$KEY	(CONFRM,CLNTAB,<$ACTION(CHGBLK),$FLAGS(CM%BRK),$BREAK(CLUMSK)>);[274]

;**;[275]]AT ENA180:+0L replace 1 line with 2 lines  PMM  6/3/90
ENA180: $NOISE(ENA182,<to local printer>,<$ACTION(LSTCHK),$FLAGS(CM%SDH)>) ;[275]
ENA182:	$AKAMAC	(UNVCLU,ENA185)					;[275]

;**;[272]At ENA185:+0L change 1 line  JCR  2/16/90
ENA185:	$ORANGE	(UNVCLU,<local printer number or range (n:m)>) ;[272]
SUBTTL	ENACLS	ENABLE CLASS SCHEDULER command tables

TOPS20 <

;**;[272]At ENACLS:+0L change 1 line  JCR  2/16/90
ENACLS:	$SWITCH(,ENAC10,<$ALTERNATE(UNVCLU),$ACTION(SHRSWT),$PREFILL(ENAACT)>)


ENAC10:	$STAB
	ORNSDP(ENAC30,<CLASS-ASSIGNMENTS:>,CAS)
	ORNSDP(ENAC20,<WINDFALL:>,WFL)
	$ETAB

ENAC20:	$KEY(NEXT(ENAC10),ENAC25,<$DEFAULT(<ALLOCATED>)>)

ENAC25:	$STAB
	ORNKEY(<ALLOCATED>,ALO)
	ORNKEY(<WITHHELD>,WHD)
	$ETAB

ENAC30:	$KEY(NEXT(ENAC10),ENAC35,<$DEFAULT(<ACCOUNT>)>)

ENAC35:	$STAB
	ORNKEY(ACCOUNT,ACT)
	ORNKEY(<POLICY-PROGRAM>,PPR)
	$ETAB

ENAACT:	MOVE	S1,CMDCOD			;GET THE COMMAND CODE
	CAIE	S1,.KYDIS			;WAS IT DISABLE?
	$RETT					;NO..RETURN O.K.
;**;[272]At ENAACT:+2L change 1 line  JCR  2/16/90
	MOVEI	S1,UNVCLU			;[272]Get UNVCLU address
	AOS	S1				;BUMP TO NEXT PDB
	STORE	S1,CR.PDB(S2),RHMASK		;RESET NEXT PDB
	$RETT					;RETURN
>;END TOPS20
SUBTTL	CLOSE command tables
SUBTTL	DEFINE command tables


CLOFDB:	$KEYDSP	(CLO001,<$DEFAULT(<LOG>)>)
CLO001:	$STAB
;**;[271]At CLO001:+1L change 1 line  JCR  2/1/90
	ORNDSP	(UNVCLU,LOG,LOG)		;[271]
	$ETAB
	SUBTTL	ENABLE/DISABLE NEBULA CONNECTIONS

CLUSTER<
ENARCF:
;**;[272]At ENADCA:+0L change 1 line  JCR  2/16/90
ENADCA:	$SWITCH(ENAD20,ENAD10,<$ALTER(UNVCLU)>)	;[272]

ENAD10:	$STAB					;[247]
	  ORNSWI(<NODE:>,NOD)			;[247]
	$ETAB					;[247]

;**;[272]At ENAD20:+0L change 1 line  JCR  2/16/90
ENAD20:	$NODNM(UNVCLU,<node name>,<$FLAGS(CM%PO!CM%NSF),$ACTION(CHKNOD)>);[272]

> ;[254]End of CLUSTER

;**;[274]At ENAD20:+1L add ENABCM:  JCR  3/10/90
SUBTTL	ENABLE/DISABLE BROADCAST-MESSAGES Command tables

ENABCM:	$NOISE	(BCM010,<for>)				;[274]

BCM010:	$ODTYP	(BCM020)				;[274]

BCM020:	$KEY	(BCM040,BCM030)				;[274]

BCM030:	$STAB						;[274]
	ORNKEY	(<NODE>,NOD)				;[274]
	$ETAB						;[274]

BCM040:	$NOISE	(BCM050,<name>,<$ACTION(BLDCNT)>)	;[274]
BCM050:	$KEY	(UNVCLU,CLNTAB,<$ACTION(CHGBLK),$FLAGS(CM%BRK),$BREAK(CLUMSK)>);[274]
SUBTTL	IDENTIFY command tables

TOPS20 <
IDNFDB::$NOISE(IDN010,<tape on drive>)>

TOPS10 <
IDNFDB:	$NOISE(IDN010,<device>)>

TOPS20 <
IDN010:	$DEV(IDN020,<$HELP(<tape drive name>)>)>

TOPS10 <
IDN010:	$DEV(IDN020,<$HELP(<device name>)>)>

IDN020:	$NOISE(IDN030,<with>)

IDN030:	$KEYDSP(IDN040,<$DEFAULT(<REQUEST-ID>)>)

IDN040:	$STAB
	ORNDSP(IDN050,<REQUEST-ID>,RQN)
;**;[263]at IDN040:+2L change 4 lines JYCW OCT-18-88
TOPS20<	ORNDSP(UNVCLU,<SCRATCH>,SCR) >	;[263]ONLY VALID ON TOPS20
	ORNDSP(IDN060,<VOLUME-ID>,VID)
	$ETAB

IDN050:	$NUMBER(UNVCLU,^D10,<request number of the mount request>,<$ACTION(CHKPOS)>)					;[263]

IDN060:	$QUOTE(UNVCLU,<volume-id in quotes if has non-alphanumeric characters>,<$ALTERNATE(IDN070)>)			;[263]

IDN070:	$FIELD(UNVCLU,<volume-id without quotes>) ;[263]
SUBTTL	DISMOUNT command tables

DSMFDB:$KEYDSP(DSM010)

DSM010:	$STAB
	ORNDSP(DSM020,<STRUCTURE>,STR)
	ORNDSP(DSM030,<TAPE-DRIVE>,TAP)
	$ETAB

TOPS20 <

DSM020:	$DEV	(DSM060,<$HELP(<structure name to dismount>)>)

DSM060:	$NOISE (DSM070,<with>,<$ALTERNATE(CONFRM)>)

;**;[273]At DSM070 Change 1 line  JYCW 2/20/90
DSM070:	$KEY (UNVCLU,DSM080,<$ALTERNATE(UNVCLU)>)	;[273]

DSM080:	$STAB
	ORNKEY (<NO-REMOVAL>,NRM)
	ORNKEY (<REMOVAL>,REM)
	$ETAB

> ;End TOPS20

;**;[273]At DSM030 change 1 line JYCW 2/20/90
DSM030:	$DEV	(UNVCLU,<$HELP(<tape drive from which to dismount tape>)>) ;[273]

TOPS10 <

DSM020:	$DEV	(DSM040,<$HELP(<structure name to dismount>),$FLAGS(CM%PO)>)

DSM040:	$SWITCH(,DSM050,<$ACTION(SHRSWT),$ALTERNATE(CONFRM)>)

DSM050:	$STAB
	ORNSDP(NEXT(DSM040),<NOCHECK>,NCK)
	ORNSDP(NEXT(DSM040),<REMOVE>,REM)
	$ETAB

> ;End TOPS10

	comment \
	;removed on July 11,1979
SUBTTL	UNLOAD	command tables (removed)

UNLFDB:	$NOISE(UNL010,<tape drive>)

UNL010:	$DEV	(CONFRM,<$HELP(<tape drive to unload>)>)

;	UNDEFINED FOR NOW
	\;end of comment


SUBTTL	RECOGNIZE command tables


TOPS10 <
RECFDB:	$NOISE(REC010,<labels on>)

REC010:	$DEV (CONFRM,<$HELP(<tape or disk drive to recognize>),$FLAGS(CM%PO)>)
>;END TOPS10
SUBTTL	HELP command tables

	ND	CR.ADR,4		;Address of current argument

HLPFDB:: $NOISE	(HLPFD1,<with>)

HLPFD1:	$CTEXT(,<command>,<$ACTION(HLPACT),$DEFAULT(HELP)>)

HLPACT:	MOVE	T1,CR.ADR(S2)		;Get the data
	HRROI	T1,ARG.DA(T1)		;Point to the string
	$CALL	SETOUT##		;Setup proper $TEXT defaults
	MOVEI	S1,HEPFD		;Point to help file
	MOVE	S2,T1			;Point to string
	$CALL	P$HELP##
	$CALL	SNDOUT##		;Send the output
	$CALL	P$NPRO##		;Mark no processing
	$RETT				;Return

;File descriptor for help file for OPR

TOPS20	<
HEPFD:	XWD	HSIZ,0
	ASCIZ /HLP:OPR.HLP/
HSIZ==.-HEPFD
>

TOPS10	<
HLPFD:	$BUILD	FDMSIZ
	$SET(.FDLEN,FD.LEN,FDMSIZ)
	$SET(.FDSTR,,<SIXBIT/HLP/>)
	$SET(.FDNAM,,<SIXBIT/OPR/>)
	$SET(.FDEXT,,<SIXBIT/HLP/>)
	$EOB
>
SUBTTL	SHOW ALLOCATION command tables

TOPS10<
ALC000:	$KEYDSP	(ALC010)

ALC010:	$STAB
	ORNDSP	(CONFRM,<ALL-REQUESTS>,ALL)
	ORNDSP	(ALC020,<BATCH-REQUEST>,BRQ)
	ORNDSP	(ALC030,JOB,JOB)
	$ETAB

ALC020:	$NUMBER	(CONFRM,^D10,<request-id for batch job>,<$ALTERNATE(ALC040)>)

ALC030:	$NUMBER	(CONFRM,^D10,<job number>)

ALC040:	$CRLF	($HELP(<confirm for all batch requests>))
>;END TOPS10
	END