!Last Modified:   2-FEB-1994 09:54:53.63, By: RLB14162 
!
Module SLMOD_CMD
IDENT "V01-01"
!
! Command definition for Search LIST Modification image SLMOD
!
! TYPE definitions for various attributes and modes
!
define TYPE NAME_ATTR
   keyword CONFINE, negatable
   keyword NO_ALIAS, negatable

define TYPE TRAN_ATTR
   keyword CONCEALED, negatable
   keyword TERMINAL, negatable

define TYPE ACCESS_MODE
   keyword USER_MODE,nonnegatable
   keyword SUPERVISOR_MODE, DEFAULT,nonnegatable
   keyword EXECUTIVE_MODE,nonnegatable
   keyword KERNEL_MODE,nonnegatable

define TYPE DELETE_MODE
   keyword ALL,nonnegatable

define TYPE LNM_TABLE
   keyword NAME,nonnegatable
	DEFAULT, value (DEFAULT=LNM$PROCESS,TYPE=$infile)
   keyword MODE,nonnegatable
	DEFAULT, value (TYPE=ACCESS_MODE)

define TYPE LNM_IN_TABLE
   keyword NAME,nonnegatable
	value (REQUIRED,TYPE=$infile)
   keyword MODE,nonnegatable
	value (TYPE=ACCESS_MODE), DEFAULT

!
! Verb definition, if you don't want the synonyms, comment those out
!
define verb SLMOD
	synonym sldefine
	synonym lnmmod
!	image slmod_exe:slmod

! command parameters

   parameter P1, LABEL=Logical_Name, prompt="Log name"
      value (REQUIRED,TYPE=$outlog)
   parameter P2, LABEL=Equivalence_Name, prompt="Equ name"
      value (LIST,TYPE=$infile)

! Qualifiers that specify where to affect the search list

   qualifier ITEM, nonnegatable
	value(REQUIRED,LIST)
   qualifier AFTER, nonnegatable
	DEFAULT, value(TYPE=$number,DEFAULT=127)
   qualifier BEFORE, nonnegatable
	value(TYPE=$number,DEFAULT=1)

! Operation control qualifiers

   qualifier REMOVE, nonnegatable
	value(LIST,TYPE=DELETE_MODE)
   qualifier DELETE, nonnegatable
	value(LIST,TYPE=DELETE_MODE)
   qualifier INSERT, nonnegatable, DEFAULT

! Logical name table and access qualifiers

   qualifier INPUT_TABLE, nonnegatable
	value (LIST,REQUIRED,TYPE=lnm_in_table)
   qualifier OUTPUT_TABLE, nonnegatable
	DEFAULT, value (LIST,REQUIRED,TYPE=lnm_table)

! global logical name table qualifiers

   qualifier JOB, nonnegatable
   qualifier PROCESS, nonnegatable
   qualifier SYSTEM, nonnegatable
   qualifier GROUP, nonnegatable

! global access mode qualifiers

   qualifier USER_MODE, nonnegatable
   qualifier SUPERVISOR_MODE, nonnegatable
   qualifier EXECUTIVE_MODE, nonnegatable
   qualifier KERNEL_MODE, nonnegatable

! global/positional name and translation attributes

   qualifier NAME_ATTRIBUTES, nonnegatable
      value (LIST,TYPE=NAME_ATTR)
   qualifier TRANSLATION_ATTRIBUTES, nonnegatable
      value (LIST,TYPE=TRAN_ATTR)
      placement=positional

! If the /DELETE empties the list, then permit delete of the logical name

   qualifier EMPTY_DELETE, negatable, DEFAULT

! log/nolog controls feedback to sys$output

   qualifier LOG, negatable

! provide for returning the resulting translation to a local symbol

   qualifier SYMBOL, nonnegatable
	value (TYPE=$outfile,DEFAULT=SLMOD_SYMBOL)
!
! What Momma don' allow roun' here:
!
! Only 1 global table specifier allowed
!
   disallow ( ANY2(PROCESS,JOB,GROUP,SYSTEM) )
!
! Only 1 global access mode specifier allowed
!
   disallow ( ANY2(USER_MODE,SUPERVISOR_MODE,EXECUTIVE_MODE,KERNEL_MODE) )
!
! only 1 delete specifier
!
   disallow (DELETE and REMOVE)
!
! can't delete and insert at the same time
!
   disallow (INSERT and (DELETE or REMOVE))
!
! Item is only permitted with DELETE
!
   disallow (ITEM and INSERT)
!
! Do not allow mixing ITEM with BEFORE or AFTER.
! Also don't allow mixing BEFORE with AFTER
!
   disallow ((BEFORE and (AFTER or ITEM)) or (AFTER and ITEM))
!
! can't have it both ways...delete=all can't go with /NOEMPTY_DELETE
!
   disallow ( (REMOVE.ALL or DELETE.ALL) and (neg EMPTY_DELETE)  )
!
! No equivalence names allowed when deleting
!
   disallow ( (REMOVE.ALL or DELETE.ALL) and (Equivalence_Name) )
