From:	SMTP%"rlboyd@rock.concert.net"  9-FEB-1994 15:55:55.94
To:	EVERHART
CC:	
Subj:	SLMOD part 4/5

From: Bob Boyd <rlboyd@rock.concert.net>
X-Disclaimer-1: rock.concert.net is a CONCERT-CONNECT public access host.
X-Disclaimer-2:     Opinions expressed are not necessarily
X-Disclaimer-3:     those of MCNC or the CONCERT Network.
Message-Id: <9402092051.AA24168@rock.concert.net>
Subject: SLMOD part 4/5
To: ADAMSE@LETT.KUN.NL (Hans Adamse), 8004slb@vmsf.csd.mu.edu (Sandy Berger),
        Everhart@arisia.gce.com (Glenn Everhart),
        bolson@u.washington.edu (Ed Bolson),
        jkraft@mccoy.fhcrc.org (John Kraft)
Date: Wed, 9 Feb 94 15:51:30 EST
X-Mailer: ELM [version 2.3 PL11]

-+-+-+-+-+-+-+-+ START OF PART 4 -+-+-+-+-+-+-+-+
X$!  Date:`0915-Nov-1990
X$! Change History
X$!--------------------------------------------------------------------------
V-
X$! 15-Nov-1990`09R.L.Boyd`09Original Version
X$!
X$! 03-Feb-1994`09R.L.Boyd`09added delete tests, unified error reports
X$!`09`09`09`09added tests for disallows
X$!
X$!--------------------------------------------------------------------------
V-
X$! `20
X$!  Subroutine(s)
X$!
X$SUCCESS_FAIL: subroutine
X$status_code = p1
X$counter_name = p2
X$test_descrip = 'p3'
X$logical_name = p4
X$symbol_name = p5
X$table_name = p6
X$ if table_name.nes.null then $ table_name = "/"+table_name
X$if p3.eqs.null then $ test_descrip = test_name
X$ 'counter_name' == &'counter_name'+1
X$ if 'status_code'
X$ then say f$fao( result_format, 'counter_name',test_descrip,"SUCCEEDED")
X$ else say f$fao( result_format, 'counter_name',test_descrip,"FAILED")
X$`09slmod_failures == 'slmod_failures'+1
X$`09if logical_name.nes.null then -
X$ `09`09show logical 'logical_name'/full'table_name'
X$`09if symbol_name.nes.null then -
X$`09if f$type('symbol_name').nes.null then -
X$`09`09show symbol 'symbol_name'
X$ endif
X$endsubroutine
X$!--------------------------------------------------------------------------
V-
X$!
X$ set noon
X$!
X$ who_am_i = f$element(0,";",f$environment("procedure")) ! latest version
X$ who_am_i_exactly = f$environment("procedure") ! this very procedure
X$ where_am_i = f$parse("a.b;0",who_am_i,,,"syntax_only")-"A.B;0"
X$ proc_name = f$parse(who_am_i,,,"name")
X$!
X$ say= "write sys$output"
X$ null = ""
X$ lnm = proc_name+"1"
X$ lnm2 = proc_name+"2"
X$ lnm3 = proc_name+"3"
X$ test_privs = "SYSNAM,CMKRNL,GRPNAM,CMEXEC"
X$!
X$
X$ define slmod_exe 'where_am_i'/process
X$ result_format = "Step !SL of test '!AS' !AS"
X$
X$!
X$ say proc_name,"-I-BEGIN, beginning SLMOD test procedure"
X$!
X$! Try FOREIGN command interface 1st
X$!
X$ slmod = "$slmod_exe:slmod"
X$!
X$! Do some house cleaning before we start
X$!
X$ if f$trnlnm(lnm,"lnm$job").nes.null`20
X$ then`20
X$`09sho logical 'lnm'/full/job
X$`09if f$trnlnm(lnm,"lnm$job",,"supervisor") .nes."" then -
X$ `09`09deassign/job`09'lnm'
X$`09if f$trnlnm(lnm,"lnm$job",,"user") .nes."" then -
X$`09`09deassign/job/user 'lnm'
X$`09sho logical 'lnm'
X$ endif
X$ if f$trnlnm(lnm,"lnm$process").nes.null then $ deassign 'lnm'
X$!
X$ test_name = "Create/Insert (JOB&PROCESS)(Foreign)"
X$ slmod 'lnm'- !/job
X`09/output_table=(name=lnm$job)-
X`09/name_att=confine/user -
X`09a/tran=conc,b/insert/before/log/sym='lnm'
X$ status = 'lnm'.eqs."A/TRANSLATION=(CONCEALED),B/NAME=(CONFINE)/USER_MODE"`
V20
X$ call success_fail status slmod_insert_count test_name 'lnm' 'lnm' job
X$!
X$ slmod 'lnm'/input=(name=lnm$job,mode=user)/job/user -
X`09c/tran=term,d/tran=conc/insert/before=2-
X`09/log/name_att=(no_alias,confine)/symbol='lnm'
X$ status = 'lnm'.eqs."A/TRANSLATION=(CONCEALED),C/TRANSLATION=(TERMINAL)"+-
X`09",D/TRANSLATION=(CONCEALED),B/NAME=(CONFINE,NO_ALIAS)/USER_MODE"`20
X$ call success_fail status slmod_insert_count test_name 'lnm' 'lnm' JOB`20
X$!
X$! Switch to DCL VERB`20
X$!
X$ del/sym/local SLMOD
X$ if f$type(slmod).nes.null then $ del/sym/global SLMOD
X$ set command slmod_exe:slmod
X$!
X$ test_name = "Create/Insert (JOB&PROCESS)"
X$!
X$ slmod 'lnm'/input=(name=lnm$job,mode=user)/job/user -
X`09a,c/delete/symbol='lnm'/log/before=2
X$ status = 'lnm'.eqs."D/TRANSLATION=(CONCEALED),B/NAME=(NO_ALIAS)/USER_MODE"
X$ call success_fail status slmod_insert_count test_name 'lnm' 'lnm' JOB
X$!
X$ slmod 'lnm'/input_table=(name=lnm$job,mode=user)-
X`09/user/output_table=name=lnm$job -
X`09c,a/after=2/log/symbol='lnm'
X$ status = 'lnm'.eqs."D/TRANSLATION=(CONCEALED),B,C,A/NAME=(NO_ALIAS)/USER_M
VODE"`20
X$ call success_fail status slmod_insert_count test_name 'lnm' 'lnm' JOB
X$!
X$ slmod 'lnm'/log/sym='lnm2'-
X`09/input_table=(name=lnm$job,mode=user)-
X`09/output=(name=lnm$process,mode=super)-
X`09z,y,x/tran=conc/insert/before=2/NAME=CONFINE
X$ status = 'lnm2'.eqs."D/TRANSLATION=(CONCEALED),Z,Y,X/TRANSLATION=(CONCEALE
VD)"+-
X`09",B,C,A/NAME=(CONFINE,NO_ALIAS)/SUPERVISOR_MODE"`20
X$ call success_fail status slmod_insert_count test_name 'lnm' 'lnm2' process
X$!
X$ slmod 'lnm'/delete/item=(2,4)/input=(name=lnm$process,mode=super)-
X`09/log/symbol='lnm2'/name_attributes=noconfine-
X`09/output=(name=lnm$process,mode=super)
X$ status = 'lnm2'.eqs."D/TRANSLATION=(CONCEALED),Y"+-
X`09",B,C,A/NAME=(NO_ALIAS)/SUPERVISOR_MODE"`20
X$ call success_fail status slmod_insert_count test_name 'lnm' 'lnm2' process
X$!
X$ slmod 'lnm'/delete/item=(3,5)/input=(name=lnm$process,mode=super)-
X`09/log/symbol='lnm2'/name_attributes=nono_alias-
X`09/output=(name=lnm$process,mode=super)
X$ status = 'lnm2'.eqs."D/TRANSLATION=(CONCEALED),Y,C/SUPERVISOR_MODE"`20
X$ call success_fail status slmod_insert_count test_name 'lnm' 'lnm2' process
X$!
X$ if f$priv("GRPNAM").or.f$priv("SYSNAM").or.f$priv("SETPRV")
X$ then`09!`09they have privileges necessary to do priv mode tests
X$ save_privs = f$setprv(test_privs)
X$!
X$ test_name = "Create/Insert (GROUP&SYSTEM)"
X$!
X$ slmod 'lnm2'-!/input_table=(name=lnm$job,mod=user)
X`09/log/sym='lnm2'-
X`09/name=no_alias/tran=conc-
X`09x/tran=noconc,y/tran=term,z/tran=(noconc,noterm)-
X`09/output=(name=lnm$group,mode=executive)
X$ status = 'lnm2'.eqs."X,Y/TRANSLATION=(CONCEALED,TERMINAL)"+-
X`09",Z/NAME=(NO_ALIAS)/EXECUTIVE_MODE"`20
X$ call success_fail status slmod_insert_count test_name 'lnm2' 'lnm2' group
X$!
X$ slmod 'lnm2'/input_table=(name=lnm$group,mod=exec)/log/sym='lnm2'-
X`09/name=no_alias/tran=conc/after=1-
X`09w/tran=(noconc,term),v/tran=term,u/tran=(noconc,noterm)-
X`09/output=(name=lnm$system,mode=kernel)
X$ status = 'lnm2'.eqs."X,W/TRANSLATION=(TERMINAL)"+-
X`09",V/TRANSLATION=(CONCEALED,TERMINAL)"+-
X`09",U,Y/TRANSLATION=(CONCEALED,TERMINAL)"+-
X`09",Z/NAME=(NO_ALIAS)/KERNEL_MODE"`20
X$ call success_fail status slmod_insert_count test_name 'lnm2' 'lnm2'`20
X$!
X$! delete tests
X$!
X$ test_name = "DELETE from GROUP table"
X$!
X$ slmod 'lnm2'/group/executive/delete X,Y,Z/sym='lnm2'
X$ status = f$trnlnm(lnm2,"LNM$GROUP",,"KERNEL").eqs.null`20
X$ call success_fail status slmod_delete_count test_name 'lnm2' 'lnm2' group
X$!
X$ test_name = "DELETE from SYSTEM table"
X$!
X$ slmod 'lnm2'/system/kernel/delete/item=(2,4-5,6-*)/symbol='lnm2'
X$ status = 'lnm2'.eqs."X,V/TRANSLATION=(CONCEALED,TERMINAL)"+-
X`09"/NAME=(NO_ALIAS)/KERNEL_MODE"
X$ call success_fail status slmod_delete_count test_name 'lnm2' 'lnm2' system
X$!
X$ slmod 'lnm2'/system/kernel/delete=ALL/log/sym='lnm2'
X$ status = f$trnlnm(lnm2,"LNM$SYSTEM",,"KERNEL").eqs.null`20
X$ call success_fail status slmod_delete_count test_name 'lnm2' 'lnm2' system
X$!
X$ save_privs = f$setprv(save_privs)
X$ endif`09! privileged mode tests
X$!
X$! non-privileged delete tests
X$!
X$ test_name = "DELETE from PROCESS table"
X$!
X$ slmod 'lnm'/process/supervisor/delete/item=*/sym='lnm3'
X$ status = f$trnlnm(lnm,"LNM$PROCESS",,"SUPERVISOR").eqs.null
X$ call success_fail status slmod_delete_count test_name 'lnm' 'lnm3' process
X$!
X$ test_name = "DELETE name from JOB table"
X$!
X$ slmod 'lnm'/job/user/delete/sym='lnm3'
X$ status = f$trnlnm(lnm,"LNM$JOB",,"USER").eqs.null
X$ call success_fail status slmod_delete_count test_name 'lnm3' 'lnm3' job
X$!`20
X$! Test invalid qualifier combinations
X$!
X$ test_name = "Invalid Qualifier Combination"
X$!
X$ slmod 'lnm'/item=*/insert
X$ status = .not.$status
X$ call success_fail status slmod_invalid_count test_name
X$!
X$ slmod 'lnm'/before=3/after=4/item=5/delete
X$ status = .not.$status
X$ call success_fail status slmod_invalid_count test_name
X$!
X$ slmod 'lnm'/after=4/item=5/delete
X$ status = .not.$status
X$ call success_fail status slmod_invalid_count test_name
X$!
X$ slmod 'lnm'/delete=all/noempty_delete
X$ status = .not.$status`20
X$ call success_fail status slmod_invalid_count test_name
X$!
X$ slmod 'lnm'/delete=all junk_equivalence
X$ status = .not.$status`20
X$ call success_fail status slmod_invalid_count test_name
X$!
X$EXIT:
X$ say ""
X$ say "Results:"
X$ if f$type(slmod_failures).nes.null
X$ then
X$   say ""
X$   say "*******************************************************************
V"
X$   say f$FAO("!AS-F-FAILED, there were !SL failures",proc_name,slmod_failur
Ves)
X$   say "PLease review the output listing to determine which step(s) failed"
X$   say "*******************************************************************
V"
X$   delete/symbol/global slmod_failures
X$ else
X$   say ""
X$   say "*******************************************************************
V"
X$   say f$FAO("!AS-I-PASSED, SLMOD passed all of the tests",proc_name)
X$   say "*******************************************************************
V"
X$ endif
X$ delete/symbol/global slmod_insert_count
X$ delete/symbol/global slmod_delete_count
X$ delete/symbol/global slmod_invalid_count
X$ exit
X$!Last Modified:   4-FEB-1994 12:31:42.76, By: RLB14162`20
$ CALL UNPACK SLMOD_TEST.COM;41 469790835
$ create 'f'
XC Last Modified:  15-APR-1991 09:48:59.66, By: RBN`20
Xc*   Cli.For - command line interface routines           Pat Rankin, May'88
Xc*                                               (adapted for VNews, Apr'90)
Xc*  i*4  Cli_Present ( label )
Xc*  i*4  Cli_Get_Value ( label, result, reslen )
Xc*  i*4  Cli_Parse_Command ( tables, verb, prompt )
Xc*  i*4  Cli_Get_Number ( key, result )          !`5Bnot used`5D
Xc*  sub  SLMOD_Cli_Init ( )
Xc*
X
X
X      INTEGER *4 FUNCTION  Cli_Present ( label )
X`09!   Call CLI$PRESENT with signalling disabled.
X`09implicit none
XC     input:
X`09CHARACTER *(*)  label
XC     functions:
X`09INTEGER *4      CLI$PRESENT
X`09EXTERNAL        LIB$SIG_TO_RET
X
X`09CALL LIB$ESTABLISH( LIB$SIG_TO_RET)
X`09Cli_Present = CLI$PRESENT( label)
X`09RETURN
X      END !of Cli_Present
X
X
X
X
X      INTEGER *4 FUNCTION  Cli_Get_Value ( label, result, reslen )
X`09!   Call CLI$GET_VALUE with signalling disabled.
X`09implicit none
XC     input:
X`09CHARACTER *(*)  label
XC     output:
X`09CHARACTER *(*)  result
X`09INTEGER *2      reslen
XC     functions:
X`09INTEGER *4      CLI$GET_VALUE
X`09EXTERNAL        LIB$SIG_TO_RET
X
X`09CALL LIB$ESTABLISH( LIB$SIG_TO_RET)
X`09reslen = 0
X`09Cli_Get_Value = CLI$GET_VALUE( label, result, reslen)
X`09RETURN
X      END !of Cli_Get_Value
X
X
X
X
X      INTEGER *4 FUNCTION  Cli_Parse_Command ( tables, verb, prompt )
X`09!
X`09!   Fetch user's command line and parse it.  If he used "RUN",
X`09!   there was no chance to supply one, so prompt for it now.
X`09!
X`09implicit none
XC     constant:
X`09INCLUDE '($FSCNdef)/nolist'             !filescan defs
X`09INCLUDE '($CliVERBdef)/nolist'          !cli verb defs
X*-      INCLUDE '($CliSERVdef)/nolist'          !cli service defs
X`09PARAMETER       CLI$K_GETCMD = '00000001'x  !get command line
XC-------INCLUDE 'f_inc:Dsc.F'                   !descriptor defs
X`09INCLUDE '($DSCdef)/nolist'              !descriptor defs
X`09STRUCTURE /dsc_d/               !dynamic string descriptor
X`09    INTEGER *2  d_len  /0/
X`09    BYTE        d_typ  /DSC$K_DTYPE_T/      !ascii text
X`09    BYTE        d_cls  /DSC$K_CLASS_D/      !dynamic
X`09    INTEGER *4  d_adr  /0/
X`09END STRUCTURE !dsc_d
X`09STRUCTURE /dsc_z/               !unspecified string descriptor
X`09    INTEGER *2  d_len  /0/
X`09    BYTE        d_typ  /0/,  d_cls  /0/     !type & class unspecified
X`09    INTEGER *4  d_adr  /0/
X`09END STRUCTURE !dsc_d
XC-------
X`09STRUCTURE /clirq/               !cli request block
X`09    BYTE            rqtype/0/, rqindx/0/, rqflags/0/, rqstat /0/
X`09    INTEGER *4     %FILL(1) /0/
X`09    RECORD /dsc_z/  rdesc               !descriptor initialized to 0's
X`09    INTEGER *4     %FILL(3) /3*0/
X`09END STRUCTURE !clirq
X`09STRUCTURE /fscn/                !short itemlist for $filescan
X`09    INTEGER *2      len /0/,  code /0/
X`09    INTEGER *4      adr /0/,  end_of_list /0/
X`09END STRUCTURE !fscn
XC     input:
X`09EXTERNAL        tables          !command tables `5Bset command/obj`5D
X`09CHARACTER *(*)  verb,  prompt   !command verb and prompt strings
XC     local:
X`09RECORD /dsc_d/  parse           !descriptor for dynamic string
X`09RECORD /clirq/  cmd             !command interface request block
X`09RECORD /fscn/   fscn            !item list for $filescan
X`09INTEGER *4      sts             !return status value
XC     functions:
X`09INTEGER *4      SYS$CLI,  CLI$DCL_PARSE
X`09EXTERNAL        LIB$SIG_TO_RET,  LIB$GET_INPUT
X
X`09CALL LIB$ESTABLISH( LIB$SIG_TO_RET)     !suppress error signals
X
XC     get command line
X`09cmd.rqtype = CLI$K_GETCMD       !request is 'get command line'
X`09sts = SYS$CLI( cmd,,)
X`09IF ( sts ) THEN         !ok => cli available & verb wasn't "RUN"
XC         invoked via symbol => have command line (which might be empty)
XC             `5Bmight also be invoked via mcr or dcl; that's ok`5D
X`09    IF ( cmd.rqstat .EQ. CLI$K_VERB_MCR ) THEN  !strip image name -
X`09`09fscn.code = FSCN$_FILESPEC              !+ from MCR invocation
X`09`09CALL SYS$FILESCAN( cmd.rdesc, fscn,)
X`09`09cmd.rdesc.d_len = cmd.rdesc.d_len - fscn.len  !shrink size
X`09`09cmd.rdesc.d_adr = cmd.rdesc.d_adr + fscn.len  !advance ptr
X`09    END IF
XC         prepend verb and parse the command line
X`09    CALL STR$CONCAT( parse, verb, ' ', cmd.rdesc)
X`09    sts = CLI$DCL_PARSE( parse, tables)
X`09ELSE        ! RUN (might be "no cli present" `5BCLI$_INVREQTYP`5D)
XC         invoked via run => get a substitute command line from the user
X`09    sts = CLI$DCL_PARSE(, tables, LIB$GET_INPUT,
X     &                          LIB$GET_INPUT, prompt)
X`09END IF
X
X`09Cli_Parse_Command = sts
X`09RETURN
X      END !of Cli_Parse_Command
X
X
X
X
X      INTEGER *4 FUNCTION  Cli_Get_Number ( key, result )
X`09!
X`09!   Use CLI routine to obtain a parameter or qualifier value
X`09!   and convert the resulting string into a binary integer.
X`09!
X`09implicit none
XC     input:
X`09CHARACTER *(*)  key
XC     output:
X`09INTEGER *4      result
XC     local:
X`09CHARACTER *32   value
X`09INTEGER *2      ln
X`09INTEGER *4      sts
XC     functions:
X`09INTEGER *4      Cli_Get_Value,  OTS$CVT_TI_L
X
X`09result = 0
X`09sts = Cli_Get_Value( key, value, ln)
X`09IF ( sts )  sts = OTS$CVT_TI_L( value(:ln), result)
X
X`09Cli_Get_Number = sts
X`09RETURN
X      END !of Cli_Get_Number
X
X
X
X
X      subroutine  SLMOD_Cli_Init ( )
X`09!
X`09!   Make sure that DCL has parsed our command line.
X`09!   `5BPatched together from some similar routines;
X`09!   signal code moved in-line.`5D
X`09!
X`09implicit none
Xc     constant:
X`09include '($SHRdef)/nolist'              !shared message status codes
X`09parameter       CLI$_SYNTAX = '000310FC'x       !cli-f-syntax
X`09character *(*)  fACILITY_NAME,  fACILITY_PROMPT
X`09parameter     ( fACILITY_NAME = 'SLMOD' )
X`09parameter     ( fACILITY_PROMPT = fACILITY_NAME // ' args> ' )
X`09external        SLMOD_Cmd               !from SET COMMAND/OBJECT
Xc     local:
X`09integer *4      msgvec(0:7)     !message vector
X`09integer *4      arg_dsc(2)      !simplified string descriptor
X`09integer *4      sts
XC     functions:
X`09integer *4      Cli_Present,  Cli_Parse_Command
X`09integer         LIB$MATCH_COND
X
XC     check for a parameter or qualifier that isn't part of the RUN verb.
X`09sts = Cli_Present( 'HEADER')
X
XC     did we get a syntax error?
X`09if ( LIB$MATCH_COND( sts, CLI$_SYNTAX) .gt. 0 ) then
XC         syntax error indicates we weren't invoked as a native dcl command,
XC             so we now want to generate a command and parse it
X`09    sts = Cli_Parse_Command( SLMOD_Cmd,      !command table
X     &                              fACILITY_NAME, fACILITY_PROMPT)
X
X`09    if ( .not. sts ) then
XC             if there's a problem, give up with error message
XC                 "%SLMOD-F-PARSEFAIL, error parsing SLMOD command"
XC                 "-CLI-W-IVfoo, unrecognized foo - check documentation"
X`09`09arg_dsc(1) =  LEN( fACILITY_NAME // ' command' )
X`09`09arg_dsc(2) = %LOC( fACILITY_NAME // ' command' )
X
X`09`09msgvec(0) = 4           !vector contains 4 longwords
XC                 set primary condition:  severity=fatal, facility=non-syste
Vm
X`09`09msgvec(1) = SHR$_PARSEFAIL .or. '08000004'x
X`09`09msgvec(2) = 1           !1 fao arg follows
X`09`09msgvec(3) = %LOC(arg_dsc)   !(pointer to "SLMOD command")
X`09`09msgvec(4) = sts         !secondary condition (CLI error)
X`09`09msgvec(5) = 0           !dummy entries (just in case)
X`09`09msgvec(6) = 0
X`09`09msgvec(7) = 0
X
X`09`09call SYS$PUTMSG( msgvec,, fACILITY_NAME,)
X`09`09sts = msgvec(1) .or. '10000000'x    !set message inhibit bit
X`09`09call SYS$EXIT(%VAL(sts))
X`09    end if
X`09end if
X
X`09return
X      end !of SLMOD_Cli_Init
$ CALL UNPACK CLI_FRONT_END.FOR;4 1464011606
$ create 'f'
XC Last Modified:   2-FEB-1994 11:12:58.75, By: RLB14162`20
X
Xc/*`09CLIMSGDEF - V3.0`09*/
X
Xc/*
Xc *`09CLI Error Message Code Definitions.
Xc */
X
X`09parameter`09CLI$_ABVERB =`09'00038008'X
X`09parameter`09CLI$_ABKEYW =`09'00038010'X
X`09parameter`09CLI$_BUFOVF =`09'00038018'X
X`09parameter`09CLI$_COMPLX =`09'00038020'X
X`09parameter`09CLI$_DEFOVF =`09'00038028'X
X`09parameter`09CLI$_DIRECT =`09'00038030'X
X`09parameter`09CLI$_EXPSYN =`09'00038038'X
X`09parameter`09CLI$_IMCHNG =`09'00038040'X
X`09parameter`09CLI$_INSFPRM =`09'00038048'X
X`09parameter`09CLI$_IVCHAR =`09'00038050'X
X`09parameter`09CLI$_SPARE =`09'00038058'X
X`09parameter`09CLI$_IVKEYW =`09'00038060'X
X`09parameter`09CLI$_IVOPER =`09'00038068'X
X`09parameter`09CLI$_IVPROT =`09'00038070'X
X`09parameter`09CLI$_IVQLOC =`09'00038078'X
X`09parameter`09CLI$_IVSYMB =`09'00038080'X
X`09parameter`09CLI$_IVVALU =`09'00038088'X
X`09parameter`09CLI$_IVVERB =`09'00038090'X
X`09parameter`09CLI$_MAXPARM =`09'00038098'X
X`09parameter`09CLI$_NOATFIL =`09'000380A0'X
X`09parameter`09CLI$_NOCCAT =`09'000380A8'X
X`09parameter`09CLI$_NOCOMD =`09'000380B0'X
X`09parameter`09CLI$_NOKEYW =`09'000380B8'X
X`09parameter`09CLI$_NOLIST =`09'000380C0'X
X`09parameter`09CLI$_NOQUAL =`09'000380C8'X
X`09parameter`09CLI$_NOVALU =`09'000380D0'X
X`09parameter`09CLI$_NOTNEG =`09'000380D8'X
X`09parameter`09CLI$_NULFIL =`09'000380E0'X
X`09parameter`09CLI$_NUMBER =`09'000380E8'X
X`09parameter`09CLI$_ONCOMD =`09'000380F0'X
X`09parameter`09CLI$_ONERR =`09'000380F8'X
X`09parameter`09CLI$_ONLEVL =`09'00038100'X
X`09parameter`09CLI$_ONOVF =`09'00038108'X
X`09parameter`09CLI$_PARMDEL =`09'00038110'X
X`09parameter`09CLI$_RSLOVF =`09'00038118'X
X`09parameter`09CLI$_SKPDAT =`09'00038120'X
X`09parameter`09CLI$_STKOVF =`09'00038128'X
X`09parameter`09CLI$_SYMDEL =`09'00038130'X
X`09parameter`09CLI$_SYMOVF =`09'00038138'X
X`09parameter`09CLI$_UNDSYM =`09'00038140'X
X`09parameter`09CLI$_USGOTO =`09'00038148'X
X`09parameter`09CLI$_VALREQ =`09'00038150'X
X`09parameter`09CLI$_ONEVAL =`09'00038158'X
X`09parameter`09CLI$_OVRFLW =`09'00038160'X
X`09parameter`09CLI$_UNPROQUAL =`09'00038168'X
X`09parameter`09CLI$_UNPROPARM =`09'00038170'X
X`09parameter`09CLI$_INVKEY =`09'00038178'X
X`09parameter`09CLI$_INVRSP =`09'00038180'X
X`09parameter`09CLI$_UNDFIL =`09'00038188'X
X`09parameter`09CLI$_FILOPN =`09'00038190'X
X`09parameter`09CLI$_BADRET =`09'00038198'X
X`09parameter`09CLI$_ABSYMD =`09'000381A0'X
X`09parameter`09CLI$_INVUIC =`09'000381A8'X
X`09parameter`09CLI$_BADTEXT =`09'000381B0'X
X`09parameter`09CLI$_ABFNAM =`09'000381B8'X
X`09parameter`09CLI$_IVFNAM =`09'000381C0'X
X`09parameter`09CLI$_BLKOVRFLOW =`09'000381C8'X
X`09parameter`09CLI$_BLKUNDFLOW =`09'000381D0'X
X`09parameter`09CLI$_BADBLK =`09'000381D8'X
X`09parameter`09CLI$_NOLBLS =`09'000381E0'X
X`09parameter`09CLI$_NOCHANGE =`09'000381E8'X
X`09parameter`09CLI$_ABSENT =`09'000381F0'X
X`09parameter`09CLI$_NEGATED =`09'000381F8'X
X`09parameter`09CLI$_INVFILSPE =`09'00038200'X
X`09parameter`09CLI$_INVLOGFIL =`09'00038208'X
X`09parameter`09CLI$_NOTHEN =`09'00038210'X
X`09parameter`09CLI$_SYMTOOLNG =`09'00038218'X
X`09parameter`09CLI$_ASTDCL =`09'00038220'X
X`09parameter`09CLI$_INVRANGE =`09'00038228'X
X`09parameter`09CLI$_LOCNEG =`09'00038230'X
X`09parameter`09CLI$_CMDNOTFND =`09'00038238'X
X`09parameter`09CLI$_IVQUAL =`09'00038240'X
X`09parameter`09CLI$_CMDSEG =`09'00038248'X
X`09parameter`09CLI$_NOTIFY =`09'00038250'X
X`09parameter`09CLI$_CONFLICT =`09'00038258'X
X`09parameter`09CLI$_UNDKEY =`09'00038260'X
X`09parameter`09CLI$_ARGREQ =`09'00038268'X
X`09parameter`09CLI$_SYMLNG =`09'00038270'X
X`09parameter`09CLI$_SYMABR =`09'00038278'X
X`09parameter`09CLI$_IVKEYNAM =`09'00038280'X
X`09parameter`09CLI$_NOPAREN =`09'00038288'X
X`09parameter`09CLI$_IVATIME =`09'00038290'X
X`09parameter`09CLI$_IVDTIME =`09'00038298'X
X`09parameter`09CLI$_TKNOVF =`09'000382A0'X
X`09parameter`09CLI$_CMDFILERR =`09'000382A8'X
X`09parameter`09CLI$_CONFQUAL =`09'00038802'X
X`09parameter`09CLI$_INVQUAL =`09'0003880A'X
X`09parameter`09CLI$_REQPRMABS =`09'00038812'X
X`09parameter`09CLI$_INVQUALNUM =`09'0003881A'X
X`09parameter`09CLI$_INVREQTYP =`09'00038822'X
X`09parameter`09CLI$_NOVALUE =`09'0003882A'X
X`09parameter`09CLI$_VALCNVERR =`09'00038832'X
X`09parameter`09CLI$_ILLVAL =`09'0003883A'X
X`09parameter`09CLI$_NOOPTPRS =`09'00038842'X
X`09parameter`09CLI$_CREQUEJOB =`09'0003884A'X
X`09parameter`09CLI$_SUBMITERR =`09'00038852'X
X`09parameter`09CLI$_DEVALSPL =`09'0003885A'X
X`09parameter`09CLI$_DEVNOTSPL =`09'00038862'X
X`09parameter`09CLI$_IVDEVTYPE =`09'0003886A'X
X`09parameter`09CLI$_IMGFNF =`09'00038872'X
X`09parameter`09CLI$_DEVNOTFOR =`09'0003887A'X
X`09parameter`09CLI$_PWDNOTVAL =`09'00038882'X
X`09parameter`09CLI$_PWDNOTVER =`09'0003888A'X
X`09parameter`09CLI$_PWDLOCKED =`09'00038892'X
X`09parameter`09CLI$_NOTFR =`09'0003889A'X
X`09parameter`09CLI$_PWDSYNTAX =`09'000388A2'X
X`09parameter`09CLI$_IMGNAME =`09'000388AA'X
X`09parameter`09CLI$_IMAGEFNF =`09'000388B2'X
X`09parameter`09CLI$_BADSTRLVL =`09'000388BA'X
X`09parameter`09CLI$_REFUSED =`09'000388C2'X
X`09parameter`09CLI$_BADCTLMSK =`09'000388CA'X
X`09parameter`09CLI$_INVRFM =`09'000388D2'X
X`09parameter`09CLI$_NOCLINT =`09'000388DA'X
X`09parameter`09CLI$_NOSPAWN =`09'000388E2'X
X`09parameter`09CLI$_SPWNIO =`09'000388EA'X
X`09parameter`09CLI$_TRMMBX =`09'000388F2'X
X`09parameter`09CLI$_STRTOOLNG =`09'000388FA'X
X`09parameter`09CLI$_CMDGONE =`09'00038902'X
X`09parameter`09CLI$_NOCMDPROC =`09'0003890A'X
X`09parameter`09CLI$_INVROUT =`09'00038912'X
X`09parameter`09CLI$_OLDTAB =`09'0003891A'X
X`09parameter`09CLI$_INVTAB =`09'00038922'X
X`09parameter`09CLI$_NOTDISCON =`09'0003892A'X
X`09parameter`09CLI$_ENTNF =`09'00038932'X
X`09parameter`09CLI$_DEFKEY =`09'0003DDC3'X
X`09parameter`09CLI$_DELKEY =`09'0003DDCB'X
X`09parameter`09CLI$_SETKEY =`09'0003DDD3'X
X`09parameter`09CLI$_SPARE1 =`09'0003DDDB'X
X`09parameter`09CLI$_ALLOC =`09'0003DDE3'X
X`09parameter`09CLI$_SUPERSEDE =`09'0003DDEB'X
X`09parameter`09CLI$_INSPRIV =`09'0003DDF3'X
X`09parameter`09CLI$_NODIRCHG =`09'0003DDFB'X
X`09parameter`09CLI$_IGNQUAL =`09'0003DE03'X
X`09parameter`09CLI$_TABEXIST =`09'0003DE0B'X
X`09parameter`09CLI$_TABSUPER =`09'0003DE13'X
X`09parameter`09CLI$_TABNOTFND =`09'0003DE1B'X
X`09parameter`09CLI$_DELSYM =`09'0003DE23'X
X`09parameter`09CLI$_SYMTRUNC =`09'0003DE2B'X
X`09parameter`09CLI$_KEYCNV =`09'0003DE33'X
X`09parameter`09CLI$_SPAWNED =`09'0003FD01'X
X`09parameter`09CLI$_ATTACHED =`09'0003FD09'X
X`09parameter`09CLI$_RETURNED =`09'0003FD11'X
X`09parameter`09CLI$_PRESENT =`09'0003FD19'X
X`09parameter`09CLI$_DEFAULTED =`09'0003FD21'X
X`09parameter`09CLI$_CONCAT =`09'0003FD29'X
X`09parameter`09CLI$_LOCPRES =`09'0003FD31'X
X`09parameter`09CLI$_COMMA =`09'0003FD39'X
X`09parameter`09CLI$_OKTAB =`09'0003FD41'X
X`09parameter`09CLI$_UPGTAB =`09'0003FD49'X
X`09parameter`09CLI$_PROC_ID =`09'0003FFF1'X
X`09parameter`09CLI$_QUEJOBCRE =`09'0003FFF9'X
X`09parameter`09CLI$_NORMAL =`09'00030001'X
X
$ CALL UNPACK CLIMSGDEF.INC;1 343904079
$ create 'f'
X!Last Modified:   2-FEB-1994 09:55:28.97, By: RLB14162`20
X!
X! Command definition for Search LIST Modification image SLMOD
X!
X! TYPE definitions for various attributes and modes
X!
X
Xdefine TYPE NAME_ATTR
X   keyword CONFINE, negatable
X   keyword NO_ALIAS, negatable
X
Xdefine TYPE TRAN_ATTR
X   keyword CONCEALED, negatable
X   keyword TERMINAL, negatable
X
Xdefine TYPE ACCESS_MODE
X   keyword USER_MODE,nonnegatable
X   keyword SUPERVISOR_MODE, DEFAULT,nonnegatable
X   keyword EXECUTIVE_MODE,nonnegatable
X   keyword KERNEL_MODE,nonnegatable
X
Xdefine TYPE DELETE_MODE
X   keyword ALL,nonnegatable
X
Xdefine TYPE LNM_TABLE
X   keyword NAME,nonnegatable
X`09DEFAULT, value (DEFAULT=LNM$PROCESS,TYPE=$infile)
X   keyword MODE,nonnegatable
X`09DEFAULT, value (TYPE=ACCESS_MODE)
X
Xdefine TYPE LNM_IN_TABLE
X   keyword NAME,nonnegatable
X`09value (REQUIRED,TYPE=$infile)
X   keyword MODE,nonnegatable
X`09value (TYPE=ACCESS_MODE), DEFAULT
X
X!
X! Verb definition, if you don't want the synonyms, comment those out
X!
Xdefine verb SLMOD
X   synonym sldefine
X   synonym lnmmod
X   image slmod_exe:slmod
X
X! command parameters
X
X   parameter P1, LABEL=Logical_Name, prompt="Log name"
X      value (REQUIRED,TYPE=$outlog)
X   parameter P2, LABEL=Equivalence_Name, prompt="Equ name"
X      value (LIST,TYPE=$infile)
X
X! Qualifiers that specify where to affect the search list
X
X   qualifier ITEM, nonnegatable
X`09value(REQUIRED,LIST)
X   qualifier AFTER, nonnegatable
X`09DEFAULT, value(TYPE=$number,DEFAULT=127)
X   qualifier BEFORE, nonnegatable
X`09value(TYPE=$number,DEFAULT=1)
X
X! Operation control qualifiers
X
X   qualifier REMOVE, nonnegatable
X`09value(LIST,TYPE=DELETE_MODE)
X   qualifier DELETE, nonnegatable
X`09value(LIST,TYPE=DELETE_MODE)
X   qualifier INSERT, nonnegatable, DEFAULT
X
X! Logical name table and access qualifiers
X
X   qualifier INPUT_TABLE, nonnegatable
X`09value (LIST,REQUIRED,TYPE=lnm_in_table)
X   qualifier OUTPUT_TABLE, nonnegatable
X`09DEFAULT, value (LIST,REQUIRED,TYPE=lnm_table)
X
X! global logical name table qualifiers
X
X   qualifier JOB, nonnegatable
X   qualifier PROCESS, nonnegatable
X   qualifier SYSTEM, nonnegatable
X   qualifier GROUP, nonnegatable
X
X! global access mode qualifiers
X
X   qualifier USER_MODE, nonnegatable
X   qualifier SUPERVISOR_MODE, nonnegatable
X   qualifier EXECUTIVE_MODE, nonnegatable
X   qualifier KERNEL_MODE, nonnegatable
X
X! global/positional name and translation attributes
X
X   qualifier NAME_ATTRIBUTES, nonnegatable
X      value (LIST,TYPE=NAME_ATTR)
X   qualifier TRANSLATION_ATTRIBUTES, nonnegatable
X      value (LIST,TYPE=TRAN_ATTR)
X      placement=positional
X
X! If the /DELETE empties the list, then permit delete of the logical name
X
X   qualifier EMPTY_DELETE, negatable, DEFAULT
X
X! log/nolog controls feedback to sys$output
X
X   qualifier LOG, negatable
X
X! provide for returning the resulting translation to a local symbol
X
X   qualifier SYMBOL, nonnegatable
X`09value (TYPE=$outfile,DEFAULT=SLMOD_SYMBOL)
X!
X! What Momma don' allow roun' here:
X!
X! Only 1 global table specifier allowed
X!
X   disallow ( ANY2(PROCESS,JOB,GROUP,SYSTEM) )
X!
X! Only 1 global access mode specifier allowed
X!
X   disallow ( ANY2(USER_MODE,SUPERVISOR_MODE,EXECUTIVE_MODE,KERNEL_MODE) )
X!
X! only 1 delete specifier
X!
X   disallow (DELETE and REMOVE)
X!
X! can't delete and insert at the same time
X!
X   disallow (INSERT and (DELETE or REMOVE))
X!
X! Item is only permitted with DELETE
X!
X   disallow (ITEM and INSERT)
X!
X! Do not allow mixing ITEM with BEFORE or AFTER.
X! Also don't allow mixing BEFORE with AFTER
X!
X   disallow ((BEFORE and (AFTER or ITEM)) or (AFTER and ITEM))
X!
X! can't have it both ways...delete=all can't go with /NOEMPTY_DELETE
X!
X   disallow ( (REMOVE.ALL or DELETE.ALL) and (neg EMPTY_DELETE)  )
X!
X! No equivalence names allowed when deleting
X!
X   disallow ( (REMOVE.ALL or DELETE.ALL) and (Equivalence_Name) )
$ CALL UNPACK SLMOD.CLD;32 755849046
$ create 'f'
X!Last Modified:   2-FEB-1994 09:54:53.63, By: RLB14162`20
X!
XModule SLMOD_CMD
XIDENT "V01-01"
X!
X! Command definition for Search LIST Modification image SLMOD
X!
X! TYPE definitions for various attributes and modes
X!
Xdefine TYPE NAME_ATTR
X   keyword CONFINE, negatable
X   keyword NO_ALIAS, negatable
X
Xdefine TYPE TRAN_ATTR
X   keyword CONCEALED, negatable
X   keyword TERMINAL, negatable
X
Xdefine TYPE ACCESS_MODE
X   keyword USER_MODE,nonnegatable
X   keyword SUPERVISOR_MODE, DEFAULT,nonnegatable
X   keyword EXECUTIVE_MODE,nonnegatable
X   keyword KERNEL_MODE,nonnegatable
X
Xdefine TYPE DELETE_MODE
X   keyword ALL,nonnegatable
X
Xdefine TYPE LNM_TABLE
X   keyword NAME,nonnegatable
X`09DEFAULT, value (DEFAULT=LNM$PROCESS,TYPE=$infile)
X   keyword MODE,nonnegatable
X`09DEFAULT, value (TYPE=ACCESS_MODE)
X
Xdefine TYPE LNM_IN_TABLE
X   keyword NAME,nonnegatable
X`09value (REQUIRED,TYPE=$infile)
X   keyword MODE,nonnegatable
X`09value (TYPE=ACCESS_MODE), DEFAULT
X
X!
X! Verb definition, if you don't want the synonyms, comment those out
X!
Xdefine verb SLMOD
X`09synonym sldefine
X`09synonym lnmmod
X!`09image slmod_exe:slmod
+-+-+-+-+-+-+-+-  END  OF PART 4 +-+-+-+-+-+-+-+-
