.title CREMBX Create a mailbox in supervisor mode .library "SYS$LIBRARY:LIB" $PSLDEF $DSCDEF $SSDEF .psect CREMBX_RO, long,noexe,wrt,noshr promsk = ^XFF00 ; S:RWLP,O:RWLP,G:,W: chan: .blkw prompt: .ascid "Mailbox name: " ask_mbxname: .word 0 ; Dynamic string for mbx name .byte DSC$K_DTYPE_T, DSC$K_CLASS_D .long 0 mbxname: .blkq ; Place to put modified descriptor itmlst: .long 0 ; null itemlist to keep $GETDVI happy crembx_args: $CREMBX chan=chan, - promsk=promsk, - lognam=mbxname, - acmode=PSL$C_SUPER .psect CREMBX_RE, long,exe,nowrt,shr .entry CREMBX, ^M<> ; ; Get name of mailbox from keyboard or command line ; pushaq ask_mbxname pushaq prompt pushaq ask_mbxname calls #3, g^LIB$GET_FOREIGN blbc R0, end ; ; Check that device doesn't exists (so we can rely on the reference count) ; $GETDVI_S devnam=ask_mbxname, itmlst=itmlst cmpl R0, #SS$_NOSUCHDEV bneq end ; ; Strip any trailing colons on device name (valid to $GETDVI, but inclined ; to get placed in the logical name) ; movq ask_mbxname, mbxname cvtwl mbxname, R0 addl2 mbxname+4, R0 cmpb -1(R0), #^A":" bneq 1$ decw mbxname 1$: ; ; Call $CREMBX in executive mode to create the mailbox ; $CMEXEC_S routin=g^SYS$CREMBX, arglst=crembx_args ; ; Come here on exit ; end: ret .end CREMBX