!
! WHO.CLD -- define the WHO command for DCL
!
define type privs
  keyword all,		negatable		! All possible privileges
  keyword cmkrnl,	negatable
  keyword cmexec,	negatable
  keyword sysnam,	negatable
  keyword grpnam,	negatable
  keyword allspool,	negatable
  keyword detach,	negatable
  keyword diagnose,	negatable
  keyword log_io,	negatable
  keyword group,	negatable
  keyword acnt,		negatable
  keyword prmceb,	negatable
  keyword prmmbx,	negatable
  keyword pswapm,	negatable
  keyword altpri,	negatable
  keyword setprv,	negatable
  keyword tmpmbx,	negatable
  keyword world,	negatable
  keyword mount,	negatable
  keyword oper,		negatable
  keyword exquota,	negatable
  keyword netmbx,	negatable
  keyword volpro,	negatable
  keyword phy_io,	negatable
  keyword bugchk,	negatable
  keyword prmgbl,	negatable
  keyword sysgbl,	negatable
  keyword pfnmap,	negatable
  keyword shmem,	negatable
  keyword sysprv,	negatable
  keyword bypass,	negatable
  keyword syslck,	negatable
  keyword share,	negatable
  keyword upgrade,	negatable
  keyword downgrade,	negatable
  keyword grpprv,	negatable
  keyword readall,	negatable
  keyword security,	negatable

define type cliflags
  keyword all,		negatable		! All possible flags
  keyword disctly,	negatable
  keyword defcli,	negatable
  keyword lockpwd,	negatable
  keyword captive,	negatable
  keyword disuser,	negatable
  keyword diswelcome,	negatable
  keyword disnewmail,	negatable
  keyword dismail,	negatable
  keyword genpwd,	negatable
  keyword pwd_expired,	negatable
  keyword pwd2_expired,	negatable
  keyword audit,	negatable
  keyword disreport,	negatable
  keyword disreconnect,	negatable
  keyword autologin,	negatable
  keyword disforce_pwd_change, negatable
  keyword restricted,	negatable
  keyword disimage,	negatable
  keyword dispwddic,	negatable
  keyword dispwdhis,	negatable

define type coll_opts				! What can we collect?
  keyword privileges,	value(type=privs,list,default="TMPMBX,NETMBX"),default
  keyword defprivileges,value(type=privs,list,default="TMPMBX,NETMBX"),default
  keyword flags,	value(type=cliflags,list,default="DEFCLI"),default

define type show_opts				! What we can output ( & width)
  keyword header,					default
  keyword owner,	value(type=$number,default=24),	default
  keyword username,	value(type=$number,default=12),	default
  keyword uic,		value(type=$number,default=11),	default
  keyword account,	value(type=$number,default=8),	default
  keyword directory,	value(type=$number,default=21),	default
  keyword identifier,	value(type=$number,default=14)
  keyword nodes,	value(type=$number,default=12)
  keyword priority,	value(type=$number,default=4)
  keyword quota,	value(type=$number,default=6)
  keyword usage,	value(type=$number,default=6)
  keyword lgicmd,	value(type=$number,default=16)
  keyword defcli,	value(type=$number,default=3)
  keyword clitables,	value(type=$number,default=10)
  keyword logfails,	value(type=$number,default=11)
  keyword pwdminimum,	value(type=$number,default=10)
  keyword expiration,	value(type=$number,default=23)
  keyword pwdlifetime,	value(type=$number,default=8)
  keyword pwddate,	value(type=$number,default=23)
  keyword pwd2date,	value(type=$number,default=23)
  keyword lastlogin,	value(type=$number,default=23)
  keyword lastnonint,	value(type=$number,default=23)
  keyword quepri,	value(type=$number,default=6)
  keyword maxjobs,	value(type=$number,default=7)
  keyword maxdetach,	value(type=$number,default=9)
  keyword prclm,	value(type=$number,default=5)
  keyword biolm,	value(type=$number,default=5)
  keyword diolm,	value(type=$number,default=5)
  keyword tqelm,	value(type=$number,default=5)
  keyword astlm,	value(type=$number,default=5)
  keyword enqlm,	value(type=$number,default=5)
  keyword fillm,	value(type=$number,default=5)
  keyword wsquota,	value(type=$number,default=7)
  keyword wsdefault,	value(type=$number,default=9)
  keyword wsextent,	value(type=$number,default=8)
  keyword pgflquota,	value(type=$number,default=9)
  keyword bytlm,	value(type=$number,default=6)
  keyword pbytlm,	value(type=$number,default=6)
  keyword jtquota,	value(type=$number,default=7)
  keyword costcenter,	value(type=$number,default=11)
  keyword phone,	value(type=$number,default=12)
  keyword mailstop,	value(type=$number,default=9)
  keyword employee,	value(type=$number,default=8)
  keyword flags,	value(type=$number,default=12)
  keyword privileges,	value(type=$number,default=16)
  keyword defprivileges,value(type=$number,default=16)
  keyword manager,	value(type=$number,default=25)
  keyword class,	value(type=$number,default=12)
  keyword network_access,value(type=$number,default=9)
  keyword batch_access,	value(type=$number,default=9)
  keyword local_access,	value(type=$number,default=9)
  keyword dialup_access,value(type=$number,default=9)
  keyword remote_access,value(type=$number,default=9)
  keyword primedays,	value(type=$number,default=20)

define verb who					! Define the WHO command
  image "XCC_EXE:WHO.EXE"
  parameter P1,					! What should be processed
    label=userlist,
    prompt="Who",
    value(required,list,type=$quoted_string)
  qualifier output,				! Where output should go
    negatable,
    default,
    placement=global,
    value(type=$outfile,default="SYS$OUTPUT")
  qualifier symbol,				! Place output in symbol?
    negatable,
    placement=global,
    value(default="WHO_RECORD")			! Name of symbol to use
  qualifier show,				! What should be shown
    nonnegatable,
    default,
    placement=global,
    value(type=show_opts,list)
  qualifier full,				! Full-screen output
    negatable,
    placement=global
  qualifier filter,				! What should be smashed
    nonnegatable,
    placement=global,
    value(type=coll_opts,list)
  qualifier statistics,				! Output runtime stats?
    negatable,
    placement=global
  qualifier database,				! Search another database?
    nonnegatable,
    placement=global,
    value(required,type=$infile)
  disallow (show and full)			! One output format only
  disallow (symbol and full)			! This doesn't make sense
!  disallow not (symbol or output)		! Output must be generated
