B9~ MBX_VAX012.Aj` MBX_VAX012.ABACKUP/LOG/VERIFY/INTERCHANGE EXE:MBX*.EXE,INT:MBX_*.PEN,INT:MBX_MESSAGES.SDL,SRC:MBX_DECLARATIONS.SDL,SRC:MBX.HLP,SRC:MBX.CLD,DOC:MBX.LNI,SRC:MBX$STARTUP.COM,SRC:KITINSTAL.COM,INT:KITDATA.COM KIT:MBX_VAX012.A/SAVE_SET 590116169  &V5.5 _DVP01::  _DSA2: V5.5-2 ~ *[012.EXE]MBX_CLI.EXE;1+,I:`.$/ 4$#-0123 KPWO%56Nvc97nc989;G HJD0D`0205Ic9J DMBX_CLIMBX V1.2.Ic905-13 $!% " ?%!dMBX_ROUTINES_001+g PASRTL_001! LIBRTL_001MBXPERMANENTMESSAGE_SIZEPOSITIONSPROTECTIONSYSTEMOWNERGROUPWORLDFILTERLOG_MBAxxxx:MBXEOFSYMBOLSYMBOLMSGWAITWAITPID00000000FILTERLOG_MBAxxxx:MBXSYMWAITWAITPID00000000FILTERLOG_MBAxxxx:MBXFILTERLOG_MBAxxxx:MBXFILTERLOG_MBAxxxx:MBXFILTERLOG_MBAxxxx:ACTION '.5<CHACTIONCREATEDELETEATTACHDETACHSENDRECEIVE^ЬP`(`^( (X,n JPPPVWˆˆˆˆˆˆˆˆXY1/XXY- n Y Y XYY XP1=l(nf^ЏR԰֞W؟N2PP14φ1\^(nn~^^P[d+P1<PPVV\^^W(VnVWЏ <VVW^^X(VnVXЏ Ԛ'+11u 4^^\Џ?PXRIݏ tЏh\PL<3PPVV\^^W(V#nV䰏W螭Џ I(nߏ䰏蟭PUOOԭC&Pݏ J PPa1w1e MSGRDWAIT)Waiting for read operation on mailbox !AS> MSGWRWAIT*Waiting for write operation on mailbox !ASB MBXALRATT-Mailbox !AS already attached with channel !UL2MBXMKDELMailbox !AS marked for deletion.EOFRCVEOF marker received from !ASJ TRCMSGSNT5Message truncated, !UL byte!%S out of !UL sent to !ASP TRCMSGRCV;Message truncated, !UL byte!%S out of !UL received from !ASN TIMMSGSNT:Time-out expired while waiting for a reader on mailbox !ASP TIMMSGRCV;Time-out expired while waiting for a message on mailbox !ASB MBXINTERR.Internal error detected - please submit an SPR6 DEVNOTMBX!Device specified is not a mailboxF MBXINVPRT2Invalid mailbox protection specification :!/ \!AS\D MBXINVTIM0Invalid mailbox time-out specification :!/ \!AS\2 MSGINVCNTInvalid message count:!/ \!AS\2 MSGINVSIZInvalid message size :!/ \!AS\F MBXTOOBIG2Resultant mailbox size too large : !UL (!UL * !UL)0 NAMALRXTSLogical name already exists4 NOCHANATTMailbox has no channel attached. MBXNOTCRECannot create mailbox !AS. MBXNOTDELCannot delete mailbox !AS0 MBXNOTATTCannot attach to mailbox !AS2 MBXNOTDETCannot detach from mailbox !AS6 MSGNOTSNT"Cannot send message to mailbox !AS< MSGNOTRCV'Cannot receive message from mailbox !AS MBX= MBX_MESSAGESMBX V1.217-JUN-1999 11:0217-JUN-1999 11:02VAX-11 Linker V05-13 .$$ABS$$.*[012.EXE]MBX_ROUTINES.EXE;1+,4:7.-/ 4-+-0123 KPWO.56Nca97Qb989;G HJ&0D`0205dP+ MBX_ROUTINESMBX V1.2N%a905-13 ( *+g PASRTL_001! LIBRTL_001"%,LNM$PERMANENT_MAILBOXLNM$TEMPORARY_MAILBOX_CHANNELLNM$PROCESS_TABLELNM$FILE_DEVLNM$PROCESS_TABLELNM$FILE_DEVLNM$PROCESS_TABLELNM$FILE_DEVLNM$PROCESS_TABLE.00****************LNM$FILE_DEVLNM$PROCESS_TABLELNM$FILE_DEVLNM$PROCESS_TABLE|^ЬP`(`o@P`(`aA(n[AЬP`(n` 0 0=A00A000@@P<)PXX{xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx1Ь P9`(9`9VЬ P8`(8`<VXVVP|^ЬP`(`ЬP`(n`3P`(`4(n48(n8ߏߏ"Џ% Y4J3ϙPRR RV1)"")}"{"w"a"22PRR~ MBX_VAX012.A3=S[012.INT]MBX_DECLARATIONS.PEN;1 b;*[012.INT]MBX_DECLARATIONS.PEN;1+,3=. / 4 -S0123KPWO 561R97kYR989;G HJqarX17-Jun-1999 11:02:133MBX V1.2MBX_DECLARATIONSDEC Pascal V5.6-644MAX_MBX_NAME_LENGTH(5 MBX_NAME_TYPE( PERM_FLAG_TYPE( MSG_SIZE_TYPE( MSG_COUNT_TYPE(:@PROTECTION_TYPE(:@ MBX_CHAN_TYPE<DEV_NAME_LENGTH(=X DEV_NAME_TYPE( SENDEOF_FLAG( SYNCH_FLAG( TIME_OUT_TYPEBMAX_MESSAGE_LENGTH(C MESSAGE_TYPE(:@ STRING_LENGTH( PID_TYPEI H MBX_CREATEQ P MBX_DELETEU T MBX_ATTACHY X MBX_DETACH] \MBX_SENDi h MBX_RECEIVEMBX_DECLARATIONS17-Jun-1999 11:02:13MBX V1.2 678(,93 MBX_NAME_TYPE((;3$UWORD X >?@( ,H A3 DEV_NAME_TYPE(   DEF(, G3 MESSAGE_TYPE(  - MBX_CREATE $J5NAME $K  PERMANENT $L MSG_SIZE $M  MSG_COUNT $N:@ PROTECTION $O: @IOCHAN $= XDEVICE  . MBX_DELETE $R5NAME $S: @IOCHAN $= XDEVICE  / MBX_ATTACH $V5NAME $W: @IOCHAN $= XDEVICE  0 MBX_DETACH $Z5NAME $[: @IOCHAN $= XDEVICE  1MBX_SEND $^5NAME $_`SEND_EOF $ab SYNCHRONIZE  $c dTIME_OUT  $eC MESSAGE  $f: @SENDLEN $g= XDEVICE $  PID  2 MBX_RECEIVE $j5NAME $kl SYNCHRONIZE $m nTIME_OUT  $oC  MESSAGE  $p: @RECLEN $q= XDEVICE $  PID&`HN V| 2ht$ L ^ l  ( D l & T  : Z * V &FrHT"T"*[012.INT]MBX_MESSAGES.PEN;1+,"#. / 4 -S0123KPWO 56M97n_EM989;G HJ ]  anX17-Jun-1999 11:02:04=MBX V1.2 MBX_MESSAGESDEC Pascal V5.6-64> MBX_FACILITY? MBX_MBXCRE@ MBX_MBXDELA MBX_MBXATTB MBX_MBXDETC MBX_MSGSNTD MBX_MSGRCVE MBX_EOFSNTF MBX_MSGRDWAITG MBX_MSGWRWAITH MBX_MBXALRATTI MBX_MBXMKDELJ MBX_EOFRCVK MBX_TRCMSGSNTL MBX_TRCMSGRCVM MBX_TIMMSGSNTN MBX_TIMMSGRCVO MBX_MBXINTERRP MBX_DEVNOTMBXQ MBX_MBXINVPRTR MBX_MBXINVTIMS MBX_MSGINVCNTT MBX_MSGINVSIZU MBX_MBXTOOBIGV MBX_NAMALRXTSW MBX_NOCHANATTX MBX_MBXNOTCREY MBX_MBXNOTDELZ MBX_MBXNOTATT[ MBX_MBXNOTDET\ MBX_MSGNOTSNT] MBX_MSGNOTRCV MBX_MESSAGES17-Jun-1999 11:02:04MBX V1.2  Q  Y  a  i  q  y        B  J  R  Z        ā  ́  ԁ  ܁        <Xt&Fd"Bb"Bb ,8DP\ht   ( 4 @ L X d p | ^3Z~ MBX_VAX012.AVS[012.INT]MBX_MESSAGES.SDL;1a *[012.INT]MBX_MESSAGES.SDL;1+,V. / 4a ^-S0123KPWO 56_H97N?H989;G HJ  MODULE $MBDEF; /*N/* This SDL File Generated by VAX-11 Message V04-00 on 17-JUN-1999 11:01:58.64/*/*3/* MESSAGE AND STATUS CODES USED IN THE MBX UTILITY/*/* MARC VAN DYCK, 01-JUN-1999/* CONSTANT< "FACILITY" EQUALS 3049 PREFIX "MBX" TAG "" ;/*S/* SUCCESS MESSAGES, DISPLAYED ONLY IF EXPLICITELY REQUESTED BY THE /LOG QUALIFIER.$/* EXIT STATUS IN DCL IS SS$_NORMAL./* CONSTANT@ "MBXCRE" EQUALS %X0BE98051 PREFIX "MBX" TAG ""@ ,"MBXDEL" EQUALS %X0BE98059 PREFIX "MBX" TAG ""@ ,"MBXATT" EQUALS %X0BE98061 PREFIX "MBX" TAG ""@ ,"MBXDET" EQUALS %X0BE98069 PREFIX "MBX" TAG ""@ ,"MSGSNT" EQUALS %X0BE98071 PREFIX "MBX" TAG ""@ ,"MSGRCV" EQUALS %X0BE98079 PREFIX "MBX" TAG ""@ ,"EOFSNT" EQUALS %X0BE98081 PREFIX "MBX" TAG "" ;/*W/* INFORMATION MESSAGES, DISPLAYED ONLY IF EXPLICITELY REQUESTED BY THE /LOG QUALIFIER.V/* THEY ARE INFORMATIONAL BECAUSE THEY INFORM THE USER ABOUT AN 'ALTERNATE' SITUATION.a/* EXIT STATUS IN DCL IS STILL SS$_NORMAL. NOTE THAT THE TWO FIRST MESSAGE ARE ONLY INTERMEDIATE./* CONSTANT@ "MSGRDWAIT" EQUALS %X0BE980A3 PREFIX "MBX" TAG ""@ ,"MSGWRWAIT" EQUALS %X0BE980AB PREFIX "MBX" TAG ""@ ,"MBXALRATT" EQUALS %X0BE980B3 PREFIX "MBX" TAG ""@ ,"MBXMKDEL" EQUALS %X0BE980BB PREFIX "MBX" TAG "" ;/*K/* THE OPERATION REQUESTED HAS BEEN DONE, BUT AN UNXEPECTED RESULT OCCURED.)/* EXIT STATUS FROM DCL IS SS$_ENDOFFILE./* CONSTANT@ "EOFRCV" EQUALS %X0BE980F0 PREFIX "MBX" TAG "" ;/*H/* THE OPERATION REQUESTED HAS BEEN DONE, BUT DID NOT CONCLUDE CORRECTLY&/* EXIT SEVERITY FROM DCL IS ERROR (2)/* CONSTANT@ "TRCMSGSNT" EQUALS %X0BE98142 PREFIX "MBX" TAG ""@ ,"TRCMSGRCV" EQUALS %X0BE9814A PREFIX "MBX" TAG ""@ ,"TIMMSGSNT" EQUALS %X0BE98152 PREFIX "MBX" TAG ""@ ,"TIMMSGRCV" EQUALS %X0BE9815A PREFIX "MBX" TAG "" ;/*G/* ALL THOSE SITUATIONS CAUSE THE REQUESTED OPERTION TO FAIL MISERABLY.&/* EXIT SEVERITY FROM DCL IS FATAL (4)/* CONSTANT@ "MBXINTERR" EQUALS %X0BE98194 PREFIX "MBX" TAG ""@ ,"DEVNOTMBX" EQUALS %X0BE9819C PREFIX "MBX" TAG ""@ ,"MBXINVPRT" EQUALS %X0BE981A4 PREFIX "MBX" TAG ""@ ,"MBXINVTIM" EQUALS %X0BE981AC PREFIX "MBX" TAG ""@ ,"MSGINVCNT" EQUALS %X0BE981B4 PREFIX "MBX" TAG ""@ ,"MSGINVSIZ" EQUALS %X0BE981BC PREFIX "MBX" TAG ""@ ,"MBXTOOBIG" EQUALS %X0BE981C4 PREFIX "MBX" TAG ""@ ,"NAMALRXTS" EQUALS %X0BE981CC PREFIX "MBX" TAG ""@ ,"NOCHANATT" EQUALS %X0BE981D4 PREFIX "MBX" TAG "" ;/*J/* THOSE SIX MESSAGES ARE NORMALLY FOLLOWED BY A MORE DETAILED EXPLANATION&/* EXIT SEVERITY FROM DCL IS FATAL (4)/* CONSTANT@ "MBXNOTCRE" EQUALS %X0BE981DC PREFIX "MBX" TAG ""@ ,"MBXNOTDEL" EQUALS %X0BE981E4 PREFIX "MBX" TAG ""@ ,"MBXNOTATT" EQUALS %X0BE981EC PREFIX "MBX" TAG ""@ ,"MBXNOTDET" EQUALS %X0BE981F4 PREFIX "MBX" TAG ""@ ,"MSGNOTSNT" EQUALS %X0BE981FC PREFIX "MBX" TAG ""@ ,"MSGNOTRCV" EQUALS %X0BE98204 PREFIX "MBX" TAG "" ; END_MODULE;mzۀ~ MBX_VAX012.A/e[012.SRC]MBX_DECLARATIONS.SDL;2I*[012.SRC]MBX_DECLARATIONS.SDL;2+,/e./ 4I@-0123KPWO56¦Е7¦Е89;G HJ {A{ Declaration of all public items of the MBX callable interface :3{ constants, datatypes, and procedure entry points.{{ Marc Van Dyck, 01-JUN-1999{*MODULE mbx_declarations IDENT "MBX V1.2" ;)CONSTANT max_mbx_name_length EQUALS 247 ;IITEM mbx_name_type CHARACTER LENGTH max_mbx_name_length VARYING TYPEDEF ;/ITEM perm_flag_type LONGWORD UNSIGNED TYPEDEF ;.ITEM msg_size_type LONGWORD UNSIGNED TYPEDEF ;/ITEM msg_count_type LONGWORD UNSIGNED TYPEDEF ;,ITEM protection_type WORD UNSIGNED TYPEDEF ;*ITEM mbx_chan_type WORD UNSIGNED TYPEDEF ;#CONSTANT dev_name_length EQUALS 9 ;EITEM dev_name_type CHARACTER LENGTH dev_name_length VARYING TYPEDEF ;#ITEM sendeof_flag BOOLEAN TYPEDEF ;!ITEM synch_flag BOOLEAN TYPEDEF ;.ITEM time_out_type LONGWORD UNSIGNED TYPEDEF ;)CONSTANT max_message_length EQUALS 1024 ;GITEM message_type CHARACTER LENGTH max_message_length VARYING TYPEDEF ;*ITEM string_length WORD UNSIGNED TYPEDEF ;)ITEM pid_type LONGWORD UNSIGNED TYPEDEF ;:ENTRY mbx_create PARAMETER ( mbx_name_type NAMED name IN ,' perm_flag_type NAMED permanent IN ,% msg_size_type NAMED msg_size IN ,' msg_count_type NAMED msg_count IN ,) protection_type named protection IN ,$ mbx_chan_type NAMED iochan OUT ,$ dev_name_type NAMED device OUT ) RETURNS LONGWORD UNSIGNED ;:ENTRY mbx_delete PARAMETER ( mbx_name_type NAMED name IN ,$ mbx_chan_type NAMED iochan OUT ,$ dev_name_type NAMED device OUT ) RETURNS LONGWORD UNSIGNED ;:ENTRY mbx_attach PARAMETER ( mbx_name_type NAMED name IN ,$ mbx_chan_type NAMED iochan OUT ,$ dev_name_type NAMED device OUT ) RETURNS LONGWORD UNSIGNED ;:ENTRY mbx_detach PARAMETER ( mbx_name_type NAMED name IN ,$ mbx_chan_type NAMED iochan OUT ,$ dev_name_type NAMED device OUT ) RETURNS LONGWORD UNSIGNED ;8ENTRY mbx_send PARAMETER ( mbx_name_type NAMED name IN ,. sendeof_flag NAMED send_eof DEFAULT 0 IN ,/ synch_flag NAMED synchronize DEFAULT 0 IN ,/ time_out_type NAMED time_out DEFAULT 0 IN ,# message_type NAMED message IN ,& string_length NAMED sendlen OUT , $ dev_name_type NAMED device OUT , pid_type NAMED pid OUT ) RETURNS LONGWORD UNSIGNED ;;ENTRY mbx_receive PARAMETER ( mbx_name_type NAMED name IN ,/ synch_flag NAMED synchronize DEFAULT 0 IN ,/ time_out_type NAMED time_out DEFAULT 0 IN ,$ message_type NAMED message OUT ,% string_length NAMED reclen OUT , $ dev_name_type NAMED device OUT , pid_type NAMED pid OUT ) RETURNS LONGWORD UNSIGNED ; END_MODULE ;owHx~ MBX_VAX012.A5:[012.SRC]MBX.HLP;2F$*[012.SRC]MBX.HLP;2+,5:.$/ 4F$.-0123KPWO%56%mJ+7%mJ+89;G HJ*1 MBX Marc Van Dyck, 27-MAY-1999?MBX is a package that helps to work with mailboxes. It offers a@DCL interface and a callable interface. The DCL interface allows@to use mailboxes in command procedures, so that many independent>processes can echange information, synchronize, and cooperate.BThe callable interface allows to write programs that use mailboxes>very easily. The DCL interface is described in the help below.9The callable interface is documented in the release notes=(SYS$HELP:MBX.LNI). Both interfaces can perform six different@operations : create, delete, attach, detach, send, and receive. AThe first process that will use the mailbox must create it. OtherBprocesses will only have to attach it. Send and receive operationsCcan then be performed. Once finished, all processes must detach the8mailbox. If the mailbox is temporary, it will be deleted@automatically when the last attached process detaches. PermanentAmailboxes have to be deleted explicitely. The delete operation is<however deferred until there are no more processes attached.ACreation of permanent mailboxes require special attention becauseDthey are created using system resources that are not checked against;any quota; if used on a large scale, it could deplete thoseCresources until the system operations are seriously compromised. As;such, this operation is reserved to users having the PRMMBX>privilege. In addition, the SYSNAM privilege is also required,Cunless the logical LNM$PERMANENT_MAILBOX is redefined to point to a2less-protected logical name table than LNM$SYSTEM. 2 /CREATEBThis command creates a mailbox and attaches it to the process that created it. 3 Parameters?This command accepts only one parameter : the name that will beAgiven to the mailbox. This will be a logical name, entered in the=logical name table referenced by LNM$TEMPORARY_MAILBOX if theCmailbox is temporary, or by LNM$PERMANENT_MAILBOX if the mailbox is permanent.This parameter is required. 3 Qualifiers*4 /MESSAGE_SIZE = {positive integer value}DThis qualifier defines the size of one message in the mailbox. There>can be many messages in the mailbox, all of the same size. The#maximum size allowed is 1024 bytes.This qualifier is required.'4 /POSITIONS = {positive integer value}>This qualifier defines the maximum amount of messages that theCmailbox can hold simultaneously. There is no maximum value for thisDqualifier, but the product <_# of messages> * may notAexceed 60.000. The size of temporary mailboxes is also limited by:the available BYTLM quota of the process that creates it. This qualifier is required.4 /[NO]PERMANENTCThis qualifier specifies whether the mailbox should be temporary orCpermanent. The creation of permanent mailboxes requires the PRMMBXDprivilege, as well as write access to the logical name table pointed.by LNM$PERMANENT_MAILBOX (usually LNM$SYSTEM).7This qualifier is optional; the default is NOPERMANENT.=4 /PROTECTION = ([S:[R][W]],[O:[R][W]],[G:[R][W]],[W:[R][W]])/Specifies the protection mask for the mailbox. CThis qualifier is optional; if not specified, the system default is@applied. The system default can be obtained via the DCL command1"$ SHOW SECURITY /CLASS = SECURITY_CLASS DEVICE". 4 /[NO]LOG?If specified, success and/or informational confirmation messageFwill be displayed to SYS$OUTPUT at the end of a successful operation. @If not specified, informational messages only will be displayed.<If explicitely negated, messages will appear only in case of"error (warning, error, and fatal). 2 /DELETEBThis command deletes an existing mailbox. Note that this action is=only needed for permanent mailboxes : temporary mailboxes are>deleted by VMS automatically as soon as there are no processesDconnected to it anymore, i.e. after all processes that have issued aD$MBX/CREATE or $ MBX/ATTACH command have also issued a $ MBX/DETACH Dcommand for that mailbox. The deletion of a permanent mailbox can beArequested in advance : it will anyway be deleted only after there(are no processes attached to it anymore. 3 ParametersCThis command only accepts one parameter : the logical name that has+been used for the creation of this mailbox.This parameter is required. 3 Qualifiers 4 /[NO]LOG?If specified, success and/or informational confirmation messageFwill be displayed to SYS$OUTPUT at the end of a successful operation. @If not specified, informational messages only will be displayed.<If explicitely negated, messages will appear only in case of"error (warning, error, and fatal). 2 /ATTACH?This commands establishes a connection between the process thatBissued the command and the mailbox designated by the parameter P1.:The mailbox can be connected only if the logical name thatCdesignates it is visible; that is, temporary mailboxes, by default,Acan only be connected to by processes that are in the same job asthe mailbox creator. 3 ParametersCThis command only accepts one parameter : the logical name that has+been used for the creation of this mailbox. 3 Qualifiers 4 /[NO]LOG?If specified, success and/or informational confirmation messageFwill be displayed to SYS$OUTPUT at the end of a successful operation. @If not specified, informational messages only will be displayed.<If explicitely negated, messages will appear only in case of"error (warning, error, and fatal). 2 /DETACHDThis commands deletes the connection between the process that issued<the command and the mailbox designated by the parameter P1. 3 ParametersCThis command only accepts one parameter : the logical name that has+been used for the creation of this mailbox. 3 Qualifiers 4 /[NO]LOG?If specified, success and/or informational confirmation messageFwill be displayed to SYS$OUTPUT at the end of a successful operation. @If not specified, informational messages only will be displayed.<If explicitely negated, messages will appear only in case of"error (warning, error, and fatal). 2 /RECEIVEBThis command extracts a message from the mailbox designated by theAparameter P1 and places it in the symbol passed as argument P2. AAconnection between the process and the mailbox, created by either>MBX/CREATE or by MBX/ATTACH, must exist before this command isissued. 3 Parameters&This command accepts two parameters : CThe first one is the logical name that designates the mailbox; thisparameter is mandatory.AThe second parameter is the symbol into which the message must beAwritten. The symbol specified in the second parameter will remainBundefined (i.e. it will not be an empty string) if the mailbox isCempty and the read performed without /WAIT , or if the message readis an end of file marker. 3 Qualifiers4 /WAIT [ = {seconds} ]BThis qualifier, when specified, forces the process to wait until aCmessage is available for reading in the mailbox. The process readsBand exits directly is a message is already waiting, or waits for a0message to be deposited if the mailbox is empty.CIf a value is entered for the qualifier, the process will wait onlyBfor the number of seconds specified. If after the delay no message=has entered the mailbox, the read request will abort, and theAcontrol will return to DCL. In that case, an error status will bereturned in $STATUS.4 /PID = {symbol name}CIf specified, the symbol specified as value for this qualifier will>contain the PID of the process that wrote the message into theDmailbox. Also valid if the message read is an end of file marker. If=the mailbox is empty, and the read operation is done without 6specifying /WAIT, the returned pid will be "00000000". 4 /[NO]LOG?If specified, success and/or informational confirmation messageFwill be displayed to SYS$OUTPUT at the end of a successful operation. @If not specified, informational messages only will be displayed.<If explicitely negated, messages will appear only in case of"error (warning, error, and fatal).2 /SENDDThis command inserts in the mailbox designated by the parameter P1 a?message equal to the symbol passed as argument P2. A connectionaDbetween the process and the mailbox, created by either MBX/CREATE or8by MBX/ATTACH, must exist before this command is issued. 3 Parameters$This command accepts two parameters.DThe first parameter is the logical name that designates the mailbox;this parameter is mandatory.BThe second parameter is a quoted string and represents the messageto be sent to the mailbox.CThe parameter P2 may not be specified if either /EOF or /SYMBOL aretpresent. 3 Qualifiers4 /EOF@Instead of writing a message, the process deposits a end of fileBmark into the mailbox. If this qualifier is specified, the commandBmay not contain a P2 parameter. The process that will read the endBof file marker will signal a warning SS$_ENDOFFILE and this status0will be returned to it in $STATUS at DCL level. CThe qualifier /EOF may not be specified if either P2 or /SYMBOL areepresent.4 /WAIT [ = {seconds} ]p@This qualifier, when specified, forces the process to wait until>another process reads the messsage deposited into the mailbox.CIf a value is entered for the qualifier, the process will wait onlylBfor the number of seconds specified. If after the delay no processChas read the mailbox, the write request will abort, and the controltBwill return to DCL. In that case, an error status will be returned in $STATUS.s4 /PID = {symbol name}CIf specified, the symbol specified as value for this qualifier will =contain the PID of the process that read the message from thex-mailbox. It is valid only if used with /WAIT.t4 /SYMBOL = {symbol name}mAIf specified, takes the message to be sent from the symbol rathereCthan from the parameter P2. This allows to send longer messages : at@symbol can be up to 1024 characters long, much longer than a DCL command line.$<This qualifier may not be specified if either /EOF or P2 arepresent. 4 /[NO]LOG?If specified, success and/or informational confirmation messageiFwill be displayed to SYS$OUTPUT at the end of a successful operation. @If not specified, informational messages only will be displayed.<If explicitely negated, messages will appear only in case of"error (warning, error, and fatal).>This qualifier defines the maximum amount of messages that theCmailbox can hold simultaneously. There is no maximum value for thisDqualifier, but the product <_# of messages> * may notAexQI~ MBX_VAX012.AJ.0[012.SRC]MBX.CLD;2\*[012.SRC]MBX.CLD;2+,J.0./ 4\-0123KPWO56՗7՗89;G HJ! ! MBX utility DCL command syntax!! Marc Van Dyck, 01-JUN-1999!DEFINE VERB mbx IMAGE MBX_CLIE DISALLOW ANY2 ( create , delete , attach , detach , send , receive ): OR ( ( NOT create ) AND ( NOT delete ) AND ( NOT attach ); AND ( NOT detach ) AND ( NOT send ) AND ( NOT receive ) )8 QUALIFIER create , SYNTAX = mbx_create , NONNEGATABLE8 QUALIFIER delete , SYNTAX = mbx_delete , NONNEGATABLE8 QUALIFIER attach , SYNTAX = mbx_attach , NONNEGATABLE8 QUALIFIER detach , SYNTAX = mbx_detach , NONNEGATABLE8 QUALIFIER receive , SYNTAX = mbx_receive , NONNEGATABLE8 QUALIFIER send , SYNTAX = mbx_send , NONNEGATABLEDEFINE SYNTAX mbx_create3 DISALLOW ( NOT positions ) OR ( NOT message_size )\ PARAMETER p1 , LABEL = mbx , PROMPT = "Mailbox name " , VALUE ( REQUIRED , TYPE = $OUTLOG ) QUALIFIER permanent , NEGATABLEL QUALIFIER message_size , NONNEGATABLE , VALUE ( REQUIRED , TYPE = $NUMBER )J QUALIFIER positions , NONNEGATABLE , VALUE ( REQUIRED , TYPE = $NUMBER )Q QUALIFIER protection , NONNEGATABLE , VALUE( REQUIRED , LIST , TYPE = mbx_prot ) QUALIFIER log , NEGATABLE QUALIFIER filter, NEGATABLEQ QUALIFIER action , DEFAULT , NONNEGATABLE , VALUE ( REQUIRED , TYPE = k_create )DEFINE TYPE k_create( KEYWORD create , DEFAULT , NONNEGATABLEDEFINE TYPE mbx_prot& KEYWORD system , NONNEGATABLE , VALUE& KEYWORD owner , NONNEGATABLE , VALUE& KEYWORD group , NONNEGATABLE , VALUE& KEYWORD world , NONNEGATABLE , VALUEDEFINE SYNTAX mbx_delete[ PARAMETER p1 , LABEL = mbx , PROMPT = "Mailbox name " , VALUE ( REQUIRED , TYPE = $INLOG ) QUALIFIER log , NEGATABLE QUALIFIER filter, NEGATABLEQ QUALIFIER action , DEFAULT , NONNEGATABLE , VALUE ( REQUIRED , TYPE = k_delete )DEFINE TYPE k_delete( KEYWORD delete , DEFAULT , NONNEGATABLEDEFINE SYNTAX mbx_attach[ PARAMETER p1 , LABEL = mbx , PROMPT = "Mailbox name " , VALUE ( REQUIRED , TYPE = $INLOG ) QUALIFIER log , NEGATABLE QUALIFIER filter, NEGATABLEQ QUALIFIER action , DEFAULT , NONNEGATABLE , VALUE ( REQUIRED , TYPE = k_attach )DEFINE TYPE k_attach( KEYWORD attach , DEFAULT , NONNEGATABLEDEFINE SYNTAX mbx_detach[ PARAMETER p1 , LABEL = mbx , PROMPT = "Mailbox name " , VALUE ( REQUIRED , TYPE = $INLOG ) QUALIFIER log , NEGATABLE QUALIFIER filter, NEGATABLEQ QUALIFIER action , DEFAULT , NONNEGATABLE , VALUE ( REQUIRED , TYPE = k_detach )DEFINE TYPE k_detach( KEYWORD detach , DEFAULT , NONNEGATABLEDEFINE SYNTAX mbx_receive[ PARAMETER p1 , LABEL = mbx , PROMPT = "Mailbox name " , VALUE ( REQUIRED , TYPE = $INLOG )V PARAMETER p2 , LABEL = sym , PROMPT = "Symbol " , VALUE ( REQUIRED , TYPE = $OUTSYM )6 QUALIFIER wait , NEGATABLE , VALUE ( TYPE = $NUMBER )C QUALIFIER pid , NONNEGATABLE , VALUE ( REQUIRED , TYPE = $OUTSYM ) QUALIFIER log , NEGATABLE QUALIFIER filter, NEGATABLER QUALIFIER action , DEFAULT , NONNEGATABLE , VALUE ( REQUIRED , TYPE = k_receive )DEFINE TYPE k_receive) KEYWORD receive , DEFAULT , NONNEGATABLEDEFINE SYNTAX mbx_send< DISALLOW ( ( NOT eof ) AND ( NOT msg ) AND ( NOT symbol ) ) OR ANY2 ( eof , msg , symbol ) OR ( pid AND ( NOT wait ) )[ PARAMETER p1 , LABEL = mbx , PROMPT = "Mailbox name " , VALUE ( REQUIRED , TYPE = $INLOG )S PARAMETER p2 , LABEL = msg , PROMPT = "Message " , VALUE ( TYPE = $QUOTED_STRING )E QUALIFIER symbol , NONNEGATABLE , VALUE ( REQUIRED , TYPE = $INSYM ) QUALIFIER eof , NEGATABLE6 QUALIFIER wait , NEGATABLE , VALUE ( TYPE = $NUMBER )C QUALIFIER pid , NONNEGATABLE , VALUE ( REQUIRED , TYPE = $OUTSYM ) QUALIFIER log , NEGATABLE QUALIFIER filter, NEGATABLEO QUALIFIER action , DEFAULT , NONNEGATABLE , VALUE ( REQUIRED , TYPE = k_send )DEFINE TYPE k_send& KEYWORD send , DEFAULT , NONNEGATABLEk~ MBX_VAX012.A:"kw[012.DOC]MBX.LNI;1LuI$*[012.DOC]MBX.LNI;1+,:.u/ 4Luu-"kw0123KPWOv56Pi97Nj989;G HJ67 I11h?20 J3300t1;3300r 1;65536s0d/ The MBX utility- Version V1.25 Marc Van Dyck, 01-JUN-19990 Installation guide- User's guide0 Programmer's guide. Release notes H The MBX utility Page 2/ CONTENTS# CHAPTER 1 INTRODUCTION CHAPTER 2 INSTALLATION CHAPTER 3 DESCRIPTION! CHAPTER 4 COMMAND SYNTAX H 4.1 MBX/CREATE . . . . . . . . . . . . . . . . . . . . 4-1H 4.1.1 Parameters . . . . . . . . . . . . . . . . . . . 4-1H 4.1.2 Qualifiers . . . . . . . . . . . . . . . . . . . 4-1H 4.1.3 Status Codes Returned . . . . . . . . . . . . . 4-2H 4.2 MBX/DELETE . . . . . . . . . . . . . . . . . . . . 4-3H 4.2.1 Parameters . . . . . . . . . . . . . . . . . . . 4-3H 4.2.2 Qualifiers . . . . . . . . . . . . . . . . . . . 4-3H 4.2.3 Status Codes Returned . . . . . . . . . . . . . 4-3H 4.3 MBX/ATTACH . . . . . . . . . . . . . . . . . . . . 4-4H 4.3.1 Parameters . . . . . . . . . . . . . . . . . . . 4-4H 4.3.2 Qualifiers . . . . . . . . . . . . . . . . . . . 4-4H 4.3.3 Status Codes Returned . . . . . . . . . . . . . 4-4H 4.4 MBX/DETACH . . . . . . . . . . . . . . . . . . . . 4-5H 4.4.1 Parameters . . . . . . . . . . . . . . . . . . . 4-5H 4.4.2 Qualifiers . . . . . . . . . . . . . . . . . . . 4-5H 4.4.3 Status Codes Returned . . . . . . . . . . . . . 4-5H 4.5 MBX/RECEIVE . . . . . . . . . . . . . . . . . . . 4-6H 4.5.1 Parameters . . . . . . . . . . . . . . . . . . . 4-6H 4.5.2 Qualifiers . . . . . . . . . . . . . . . . . . . 4-6H 4.5.3 Status Codes Returned . . . . . . . . . . . . . 4-7H 4.6 MBX/SEND . . . . . . . . . . . . . . . . . . . . . 4-8H 4.6.1 Parameters . . . . . . . . . . . . . . . . . . . 4-8H 4.6.2 Qualifiers . . . . . . . . . . . . . . . . . . . 4-8H 4.6.3 Status Codes Returned . . . . . . . . . . . . . 4-9$ CHAPTER 5 CALLABLE INTERFACEH 5.1 MBX_CREATE . . . . . . . . . . . . . . . . . . . . 5-1H 5.1.1 Functionality . . . . . . . . . . . . . . . . . 5-1H 5.1.2 General Syntax . . . . . . . . . . . . . . . . . 5-2H 5.1.3 Pascal Declaration . . . . . . . . . . . . . . . 5-2H 5.1.4 Arguments . . . . . . . . . . . . . . . . . . . 5-2H 5.1.5 Returns . . . . . . . . . . . . . . . . . . . . 5-4H 5.2 MBX_DELETE . . . . . . . . . . . . . . . . . . . . 5-6H 5.2.1 Functionality . . . . . . . . . . . . . . . . . 5-6H 5.2.2 General Syntax . . . . . . . . . . . . . . . . . 5-6H 5.2.3 Pascal Declaration . . . . . . . . . . . . . . . 5-6H 5.2.4 Arguments . . . . . . . . . . . . . . . . . . . 5-6H 5.2.5 Returns . . . . . . . . . . . . . . . . . . . . 5-7 H The MBX utility Page 3H 5.3 MBX_ATTACH . . . . . . . . . . . . . . . . . . . . 5-9H 5.3.1 Functionality . . . . . . . . . . . . . . . . . 5-9H 5.3.2 General Syntax . . . . . . . . . . . . . . . . . 5-9H 5.3.3 Pascal Declaration . . . . . . . . . . . . . . . 5-9H 5.3.4 Arguments . . . . . . . . . . . . . . . . . . . 5-9H 5.3.5 Returns . . . . . . . . . . . . . . . . . . . 5-10H 5.4 MBX_DETACH . . . . . . . . . . . . . . . . . . . 5-11H 5.4.1 Functionality . . . . . . . . . . . . . . . . 5-11H 5.4.2 General Syntax . . . . . . . . . . . . . . . . 5-11H 5.4.3 Pascal Declaration . . . . . . . . . . . . . . 5-11H 5.4.4 Arguments . . . . . . . . . . . . . . . . . . 5-11H 5.4.5 Returns . . . . . . . . . . . . . . . . . . . 5-12H 5.5 MBX_SEND . . . . . . . . . . . . . . . . . . . . 5-13H 5.5.1 Functionality . . . . . . . . . . . . . . . . 5-13H 5.5.2 General Syntax . . . . . . . . . . . . . . . . 5-13H 5.5.3 Pascal Declaration . . . . . . . . . . . . . . 5-13H 5.5.4 Arguments . . . . . . . . . . . . . . . . . . 5-13H 5.5.5 Returns . . . . . . . . . . . . . . . . . . . 5-16H 5.6 MBX_RECEIVE . . . . . . . . . . . . . . . . . . 5-18H 5.6.1 Functionality . . . . . . . . . . . . . . . . 5-18H 5.6.2 General Syntax . . . . . . . . . . . . . . . . 5-18H 5.6.3 Pascal Syntax . . . . . . . . . . . . . . . . 5-18H 5.6.4 Arguments . . . . . . . . . . . . . . . . . . 5-18H 5.6.5 Returns . . . . . . . . . . . . . . . . . . . 5-211 CHAPTER 6 RETURN CODES AND ERROR MESSAGESH 6.1 CALLABLE INTERFACE . . . . . . . . . . . . . . . . 6-1H 6.1.1 Success Codes : . . . . . . . . . . . . . . . . 6-1H 6.1.2 Informational Codes : . . . . . . . . . . . . . 6-1H 6.1.3 Warning Codes : . . . . . . . . . . . . . . . . 6-1H 6.1.4 Error Codes : . . . . . . . . . . . . . . . . . 6-2H 6.1.5 Fatal Codes : . . . . . . . . . . . . . . . . . 6-2H 6.2 DCL INTERFACE . . . . . . . . . . . . . . . . . . 6-2; CHAPTER 7 HISTORY, KNOWN PROBLEMS, AND FUTURE PLANSH 7.1 HISTORY . . . . . . . . . . . . . . . . . . . . . 7-1H 7.1.1 Version 1.0 . . . . . . . . . . . . . . . . . . 7-1H 7.1.2 Version 1.1 . . . . . . . . . . . . . . . . . . 7-1H 7.1.3 Version 1.2 . . . . . . . . . . . . . . . . . . 7-1H 7.2 PLANS . . . . . . . . . . . . . . . . . . . . . . 7-1H 7.3 KNOWN PROBLEMS . . . . . . . . . . . . . . . . . . 7-2 ) CHAPTER 1+ INTRODUCTIONB The MBX utility has been written with three goals in mind :H 1. Offer the possibility to use mailboxes directly from DCL (a? feature which is sorely missed in the standard DCL);H 2. Present a framework in which many VMS programming features@ (CLI, MSG, ...) and tools (DECset) will be exercised.H 3. Offer a small demonstration of the capabilities of the PASCAL language.H Enhancements, remarks and suggestions are welcome. Please mail to Marc.Vandyck@skynet.beH The sources of this package can be distributed free of chargeH provided that the name of the author remains visible in the headerH comments. Modifications and enhancements are ok provided that they1 are duly annotated before further distribution.H The author assumes no liability in case the software would notH perform as expected or described in this documentation. Execution ofH this sofware on any platform takes place under the exclusiveH responsibility of the user, including any damage, loss of data orH revenue that it may cause. There is no warranty that enhancedH versions, maintenance releases, bug fixes, or support will be available.H The current version of MBX, at today's date of 16-JUN-1999, isH V1.2 and has been developped to work on OpenVMS Alpha V6.2 and onH OpenVMS VAX V5.5-2. It won't work on earlier versions, unless theH executables can be successfully rebuilt from the sources under this version. ) CHAPTER 2+ INSTALLATIONH The MBX utility is distributed as a VMSinstal kit (MBX012.A),* which must be installed with the command7 $ @SYS$UPDATE:VMSINSTAL MBX_ H where is VAX or AXP, depending on the system where theH installation takes place, and is the name of the device( and directory where the kit is stored.H Alternatively, on OpenVMS Alpha, MBX is also distributed as a4 PCSI kit, which must be installed with the command0 $ PRODUCT INSTALL MBX /SOURCE = H where is the name of the device and directory where the kit is stored.H If possible, the PCSI installation should be preferred, becauseH PCSI offers many interesting features, and notably the possibility to7 remove this package from your system with the commande $ PRODUCT REMOVE MBXH Those who have installed MBX with VMSINSTAL and whish to remove itH from their system must look at the kit contents below and perform allH deletions manually. That difference aside, both methods are functionnaly equivalent.H Both installations will define a new command MBX in the system'sH DCL tables as well as a new topic MBX in the system's VMS help1 library, and will provide the following files :.2 SYS$COMMON:[SYSHLP]MBX.LNI - (MBX Documentation, e.g. this file) 2 SYS$COMMON:[SYS$STARTUP]MBX$STARTUP.COM $ (MBX startup command file)2 SYS$COMMON:[SYSEXE]MBX_CLI.EXE 0 (MBX executable image , DCL interface)2 SYS$COMMON:[SYSLIB]MBX_ROUTINES.EXE 2 (MBX shareable image, callable routines) uH INSTALLATION Page 2-22 SYS$COMMON:[SYSMSG]MBX_MESSAGES.EXE - (MBX shareable image, message file).2 SYS$COMMON:[SYSLIB]MBX_DECLARATIONS.PEN 5 (Declarations of the MBX callable routines,.@ constants and datatypes in Pascal ENvironment format)2 SYS$COMMON:[SYSLIB]MBX_DECLARATIONS.SDL 5 (Declarations of the MBX callable routines,.1 constants and datatypes in SDL syntax) 2 SYS$COMMON:[SYSLIB]MBX_MESSAGES.PEN 0 (Declarations of the MBX status codes ( in Pascal ENvironment format)2 SYS$COMMON:[SYSLIB]MBX_MESSAGES.SDL 0 (Declarations of the MBX status codes  in SDL syntax)AH The startup file SYS$STARTUP:MBX$STARTUP.COM must be executedH before the MBX package can be used. It is recommended to invoke thisH file from the site specific startup command file. The main purpose ofH this file is to install the images with the right characteristics. It> can be edited by the system manager to suit the local needs. u) CHAPTER 3B* DESCRIPTIONH The MBX utility allows to perform the following manipulations on mailboxes :. 1. Create. 2. Delete. 3. Attach  4. DetachD 5. Send. 6. ReceiveH The first process that will use the mailbox must create it.H Other processes will only have to attach it. Send and receiveH operations can then be performed. Once finished, all processes mustH detach the mailbox. If the mailbox is temporary, it will be deletedH automatically when the last attached process detaches. PermanentH mailboxes have to be deleted explicitely. The delete operation is> however deferred until there are no more processes attached.H Creation of permanent mailboxes require special attention becauseH they are created using system resources that are not checked againstH any quota; if used on a large scale, it could deplete those resourcesH until the system operations are seriously compromised. As such, thisH operation is reserved to users having the PRMMBX privilege. InH addition, the SYSNAM privilege is also required, unless the logicalH LNM$PERMANENT_MAILBOX is redefined to point to a less-protected% logical name table than LNM$SYSTEM.eH The MBX utility creates the mailboxes in supervisor mode. AsH there is no documented way to change a process mode to supervisor, allH operations performed on the mailboxes are done in executive mode.H Also, the logical names that are used to store the channel numberH between the operations are all kernel mode logicals, so that theyH can't be messed up with by DCL users (There is no DEFINE/KERNEL). TheH privilege CMKRNL is therefore required to use MBX. As this is a VH DESCRIPTION Page 3-2H dangerous privilege to give away, the MBX image is installed withH CMKRNL privilege at startup time so that non-privileged users can make use of it.H Error messages have been implemented using the VMS messageH facility. All MBX commands end up with a successful message if /LOGH was requested, and a success code in R0/$STATUS, unless an errorH occured. In that case, an MBX message will be displayed (and aH failure status left in R0/$STATUS), followed if possible by a moreH descriptive message explaining the reason of the failure. The DCLH commands $ SET MESSAGE SYS$MESSAGE:MBX_MESSAGES Dand WRITE SYS$OUTPUTH F$MESSAGE($status) can be used to interpret the numeric values left inH $STATUS. End of file conditions leave a warning completion code,H time-out and buffer truncation leave an error completion code, and all other errors are fatal. H The DCL commands that are used to activate the MBX utility areH implemented with the SET COMMAND utility and integrated in the system's DCL tables.H MBX is entirely coded in PASCAL (there is one macro source forH the transfer vector used to ensure upward compatibility of theH shareable image, under OpenVMS VAX. Under OpenVMS Alpha, the transferH vector is provided by the linker). The undocumented featureH MESSAGE/SDL and the SDL package are used to transcode the messageH global symbols into PASCAL constants. SDL is also used to define theH entry points of the callable interface in a language-independent way.H The code is stored in a CMS library, the build done by MMS, theH editing done with LSE. The analysis data generated by the pascalH compiler are loaded into a SCA library. The functionality of theH package has been described in a suite of DCL test scripts, which areH used as a base for regression tests with DTM each time the sources areH touched. The tests have been screened by PCA to ensure that all code branches have been exercised.t ) CHAPTER 4 , COMMAND SYNTAX 4.1 MBX/CREATE H This command creates a mailbox and attaches it to the process that created it. 4.1.1 ParametersiH This command accepts only one parameter : the name that will beH given to the mailbox. This will be a logical name, entered in theH logical name table referenced by LNM$TEMPORARY_MAILBOX if the mailboxH is temporary, or by LNM$PERMANENT_MAILBOX if the mailbox is permanent. This parameter is required.y 4.1.2 Qualifiersa5 4.1.2.1 /MESSAGE_SIZE = {positive Integer Value} -eH This qualifier defines the size of one message in the mailbox.H There can be many messages in the mailbox, all of the same size. TheB maximum size allowed is 1024 bytes. This qualifier is required.2 4.1.2.2 /POSITIONS = {positive Integer Value} -H This qualifier defines the maximum amount of messages that theH mailbox can hold simultaneously. There is no maximum value for thisH qualifier, but the product <# of messages> * may notH exceed 60.000. The size of temporary mailboxes is also limited by the7 available BYTLM quota of the process that creates it.I" This qualifier is required. H COMMAND SYNTAX Page 4-2 4.1.2.3 /[NO]PERMANENT -lH This qualifier specifies whether the mailbox should be temporaryH or permanent. The creation of permanent mailboxes requires the PRMMBXH privilege, as well as write access to the logical name table pointed0 by LNM$PERMANENT_MAILBOX (usually LNM$SYSTEM).> This qualifier is optional; the default is NOPERMANENT.H 4.1.2.4 /PROTECTION = ([S:[R][W]],[O:[R][W]],[G:[R][W]],[W:[R][W]]) -5 Specifies the protection mask for the mailbox.oH This qualifier is optional; if not specified, the system defaultH is applied. The system default can be obtained via the DCL command "$0 SHOW SECURITY /CLASS = SECURITY_CLASS DEVICE". 4.1.2.5 /LOG -iH If specified, success and/or informational confirmation messageH will be displayed to SYS$OUTPUT at the end of a successful operation.H If not specified, informational messages only will be displayed. IfH explicitely negated, messages will appear only in case of error (warning, error, and fatal). 4.1.3 Status Codes Returned% Successful completion : SS$_NORMALcH Failure : MBX_MBXNOTCRE + a message explaining the cause of the error H COMMAND SYNTAX Page 4-3 4.2 MBX/DELETE H This command deletes an existing mailbox. Note that this actionH is only needed for permanent mailboxes : temporary mailboxes areH deleted by VMS automatically as soon as there are no processesH connected to it anymore, i.e. after all processes that have issued aH $MBX /CREATE or $ MBX /ATTACH command have also issued a $ MBX /DETACHH command for that mailbox. The deletion of a permanent mailbox can beH requested in advance : it will anyway be deleted only after there are& no processes attached to it anymore. 4.2.1 ParametersMH This command only accepts one parameter : the logical name that1 has been used for the creation of this mailbox." This parameter is required. 4.2.2 Qualifiersa 4.2.2.1 /LOG -aH If specified, success and/or informational confirmation messageH will be displayed to SYS$OUTPUT at the end of a successful operation.H If not specified, informational messages only will be displayed. IfH explicitely negated, messages will appear only in case of error (warning, error, and fatal). 4.2.3 Status Codes Returned% Successful completion : SS$_NORMALhH Failure : MBX_MBXNOTDEL + a message explaining the cause of the error H COMMAND SYNTAX Page 4-4 4.3 MBX/ATTACH H This commands establishes a connection between the process thatH issued the command and the mailbox designated by the parameter P1.H The mailbox can be connected only if the logical name that designatesH it is visible; that is, temporary mailboxes, by default, can only beH connected to by processes that are in the same job as the mailbox creator. 4.3.1 ParametersrH This command only accepts one parameter : the logical name that1 has been used for the creation of this mailbox.l 4.3.2 Qualifiersl 4.3.2.1 /LOG -aH If specified, success and/or informational confirmation messageH will be displayed to SYS$OUTPUT at the end of a successful operation.H If not specified, informational messages only will be displayed. IfH explicitely negated, messages will appear only in case of error (warning, error, and fatal). 4.3.3 Status Codes Returned% Successful completion : SS$_NORMALtH Failure : MBX_MBXNOTATT + a message explaining the cause of the error rH COMMAND SYNTAX Page 4-5 4.4 MBX/DETACHsH This commands deletes the connection between the process thatD issued the command and the mailbox designated by the parameter P1. 4.4.1 ParameterseH This command only accepts one parameter : the logical name that1 has been used for the creation of this mailbox.r 4.4.2 Qualifiersl 4.4.2.1 /LOG - H If specified, success and/or informational confirmation messageH will be displayed to SYS$OUTPUT at the end of a successful operation.H If not specified, informational messages only will be displayed. IfH explicitely negated, messages will appear only in case of error (warning, error, and fatal). 4.4.3 Status Codes Returned% Successful completion : SS$_NORMAL H Failure : MBX_MBXNOTDET + a message explaining the cause of the error eH COMMAND SYNTAX Page 4-6 4.5 MBX/RECEIVEH This command extracts a message from the mailbox designated byH the parameter P1 and places it in the symbol passed as argument P2. AH connection between the process and the mailbox, created by eitherH MBX/CREATE or by MBX/ATTACH, must exist before this command is issued. 4.5.1 Parametersl, This command accepts two parameters : 4.5.1.1 P1 -fH The first one is the logical name that designates the mailbox; this parameter is mandatory. 4.5.1.2 P2 -eH The second parameter is the symbol into which the message must beH written. The symbol specified in the second parameter will remainH undefined (i.e. it will not be an empty string) if the mailbox isH empty and the read performed without /WAIT , or if the message read is an end of file marker. 4.5.2 Qualifiers 6 This command accepts the following qualifiers :" 4.5.2.1 /WAIT [ = {seconds} ] -H This qualifier, when specified, forces the process to wait untilH a message is available for reading in the mailbox. The process readsH and exits directly is a message is already waiting, or waits for a2 message to be deposited if the mailbox is empty.H If a value is entered for the qualifier, the process will waitH only for the number of seconds specified. If after the delay noH message has entered the mailbox, the read request will abort, and theH control will return to DCL. In that case, an error status will be returned in $STATUS. H COMMAND SYNTAX Page 4-7! 4.5.2.2 /PID = {symbol Name} -DH If specified, the symbol specified as value for this qualifierH will contain the PID of the process that wrote the message into theH mailbox. Also valid if the message read is an end of file marker. IfH the mailbox was empty, and the read operation done without /WAIT, the" returned pid will be "00000000". 4.5.2.3 /LOG -H If specified, success and/or informational confirmation messageH will be displayed to SYS$OUTPUT at the end of a successful operation.H If not specified, informational messages only will be displayed. IfH explicitely negated, messages will appear only in case of error (warning, error, and fatal). 4.5.3 Status Codes Returned% Successful completion : SS$_NORMAL / End of file marker : SS$_ENDOFFILE (warning) A Time out : SS$_TIMEOUT - 2 (to convert it from fatal to error)lE Truncation : SS$_RESULTOVF - 2 (to convert it from fatal to error) H Failure : MBX_MSGNOTRCV + a message explaining the cause of the error TH COMMAND SYNTAX Page 4-8 4.6 MBX/SENDNH This command inserts in the mailbox designated by the parameterH P1 a message equal to the symbol passed as argument P2. A connectionH between the process and the mailbox, created by either MBX/CREATE orH by MBX/ATTACH, must exist before this command is issued. The messageH passed to MBX must fit in the mailbox message size, otherwise aH truncation error will be reported. Also, if all message positions inH the mailbox are already occupied, a mailbox full error will be, reported and the message will not be sent. 4.6.1 Parameters + This command accepts two parameters.t 4.6.1.1 P1 -xH The first parameter is the logical name that designates the' mailbox; this parameter is mandatory.M 4.6.1.2 P2 -T@ A quoted string : the message to be sent to the mailbox.H The parameter P2 may not be specified if either /EOF or /SYMBOL are present. 4.6.2 Qualifiersa6 This command accepts the following qualifiers : 4.6.2.1 /EOF -sH Instead of writing a message, the process deposits a end of fileH mark into the mailbox. If this qualifier is specified, the commandH may not contain a P2 parameter. The process that will read the end ofH file marker will signal a warning SS$_ENDOFFILE and this status will, be returned to it in $STATUS at DCL level.H The qualifier /EOF may not be specified if either P2 or /SYMBOL are present. lH COMMAND SYNTAX Page 4-9" 4.6.2.2 /WAIT [ = {seconds} ] -H This qualifier, when specified, forces the process to wait until@ another process reads the messsage deposited into the mailbox.H If a value is entered for the qualifier, the process will waitH only for the number of seconds specified. If after the delay noH process has read the mailbox, the write request will abort, and theH control will return to DCL. In that case, an error status will be returned in $STATUS.! 4.6.2.3 /PID = {symbol Name} -RH If specified, the symbol specified as value for this qualifierH will contain the PID of the process that read the message from the0 mailbox. It is valid only if used with /WAIT.$ 4.6.2.4 /SYMBOL = {symbol Name} -H If specified, takes the message to be sent from the symbol ratherH than from the parameter P2. This allows to send longer messages : aH symbol can be up to 1024 characters long, much longer than a DCL command line. H This qualifier may not be specified if either /EOF or P2 are present. 4.6.2.5 /LOG -$H If specified, success and/or informational confirmation messageH will be displayed to SYS$OUTPUT at the end of a successful operation.H If not specified, informational messages only will be displayed. IfH explicitely negated, messages will appear only in case of error (warning, error, and fatal). 4.6.3 Status Codes Returned% Successful completion : SS$_NORMAL A Time out : SS$_TIMEOUT - 2 (to convert it from fatal to error)TE Truncation : SS$_RESULTOVF - 2 (to convert it from fatal to error)sH Failure : MBX_MSGNOTSNT + a message explaining the cause of the error .) CHAPTER 5n. CALLABLE INTERFACEH The image shareable SYS$LIBRARY:MBX_ROUTINES.EXE can be linkedH with any other program that needs mailbox services. This image isH built with a transfer vector, so that future versions can be installedH without relinking the applications using it. The kit provides two SDLH definition files in SYS$LIBRARY, MBX_DECLARATIONS.SDL which containsH every constant, data type, and routine entry point description neededH to use the package, and MBX_MESSAGES.SDL which contains all MBX returnH codes. Using the SDL V3.2 package from the freeware CD, thoseH definitions can be translated into almost any language for which DECH ever made a compiler. PASCAL users don't even need to go through thatH step, because those definitions are also provided by the kit in PascalH Environment (PEN) format, ready to be inherited by other PascalH programs. Those files are MBX_DECLARATIONS.PEN and MBX_MESSAGES.PEN in SYS$LIBRARY.H The usage of those 6 routines requires possession of the CMKRNLH privilege, either as a native process privilege (i.e. from SYSUAF) orH as a privileged inherited from a priv-installed executable image.H Remember that it is not possible to install a shareable image withH privileges. In addition, the creation and deletion of permanentH mailboxes are restricted to users or installed images with the PRMMBX privilege.H Note : reading this chapter might appear cumbersome but willH provide interesting details even for those who will only use the DCL interface ... - The following routines are available :N 5.1 MBX_CREATEX 5.1.1 FunctionalityH Creates a mailbox according to the user specifications, defines aH logical name that points to the mailbox physical name, opens anH executive I/O channel to it, and stores this I/O channel in a kernel mode process logical name. lH CALLABLE INTERFACE Page 5-2 5.1.2 General SyntaxBH status <- mbx_create ( name, permanent, msg_size, msg_count, protection, iochan, device ) 5.1.3 Pascal Declaration:H Note : the types used in the declaration below and in all subsequentH ones are all defined in the Pascal environment file$ SYS$LIBRARY:MBX_DECLARATIONS.PEN .9 [ GLOBAL ] FUNCTION mbx_create ( name : mbx_name_type ;e? permanent : perm_flag_type ;i= msg_size : msg_size_type ;s? msg_count : msg_count_type ;e@ protection : prot_mask_type ;? VAR iochan : mbx_chan_type ;.L VAR device : dev_name_type ) : UNSIGNED ; 5.1.4 Arguments 5.1.4.1 Name -iH 1. Contents : User-chosen name of the mailbox to be created.A Will be used for all future operations on the mailbox. H 2. Structure : Character string, varying length, maximum 247D bytes, actual length in two extra bytes upfront (ASCIC) . 3. Access : Read.- 4. Mechanism : By copy of reference.r0 5. Default : None. Require Y~ MBX_VAX012.A:"kw[012.DOC]MBX.LNI;1LuԽp>d parameter. 5.1.4.2 Permanent -H 1. Contents : Flag defining whether the mailbox must be! temporary or permanent H 2. Structure : Longword, lowest bit only is significant, other ones must be zero.e4 3. Values : 1 is permanent, 0 is temporary. oH CALLABLE INTERFACE Page 5-3 4. Access : Read., 5. Mechanism : By copy of reference0 6. Default : None. Required parameter. 5.1.4.3 Msg_size -/H 1. Contents : The maximum size of each message that will be6 stored in the mailbox. Maximum 1024 bytes.* 2. Structure : Unsigned longword. 3. Access : Read.- 4. Mechanism : By copy of reference.m0 5. Default : None. Required parameter. 5.1.4.4 Msg_count -H 1. Contents : The maximum number of messages that the mailbox2 will contain. Maximum 60.000/msg_size.* 2. Structure : Unsigned longword. 3. Access : Read.- 4. Mechanism : By copy of reference. 0 5. Default : None. Required parameter. 5.1.4.5 Protection -eH 1. Contents : RWLP/SOGW protection bit mask for the mailbox.H Physical protection is irrelevant; Logical protection must beH granted in all cases; Read and write define what can be done on the mailbox.H 2. Structure : Unsigned word. Array of 4 arrays of 4 bits .H Bits 0..3 = System, bits 4..7 = Owner, bits 8..11 = Group,H bits 12..15 = World. First bit=Read, Second bit=Write, ThirdH bit=Logical, Fourth bit=Physical. Access is granted if bit is 0. rH CALLABLE INTERFACE Page 5-4H 3. Values : The 16 bits to 0 causes VMS to apply the system$ default protection mask.. 4. Access : Read.- 5. Mechanism : By copy of reference.e0 6. Default : None. Required parameter. 5.1.4.6 Iochan - H 1. Contents : The I/O channel that must be used to communicateH with the mailbox. This I/O channel will also be stored in a> kernel process logical name _CHANNEL.& 2. Structure : Unsigned word. 3. Access : Write.t% 4. Mechanism : By reference. 0 5. Default : None. Required parameter. 5.1.4.7 Device -dH 1. Contents : Physical name of the mailbox that has been created.sH 2. Structure : Character string, varying length, maximum 8D bytes, actual length in two extra bytes upfront (ASCIC) . 3. Access : Write.r% 4. Mechanism : By reference. 0 5. Default : None. Required parameter. 5.1.5 Returns* 1. Contents : VMS condition code.* 2. Structure : Unsigned longword. H CALLABLE INTERFACE Page 5-5 3. Valuess :B 1. MBX_MBXCRE : Success, the mailbox has been createdE 2. MBX_NAMALXTS : Fatal, the logical name already existstH 3. Any error code returned by $CRELNM, $TRNLNM, $CMKRNL,* $CMEXEC, $CREMBX, $ASSIGN . 4. Access : Write. % 5. Mechanism : By reference., sH CALLABLE INTERFACE Page 5-6 5.2 MBX_DELETE  5.2.1 FunctionalityH Deletes an existing mailbox, and all structures associated to it.H The deletion takes place only after the last I/O channel associated with it has been de-assigned.p 5.2.2 General Syntaxn/ status <- mbx_delete ( name, iochan, device )c 5.2.3 Pascal Declarationn9 [ GLOBAL ] FUNCTION mbx_delete ( name : mbx_name_type ;s? VAR iochan : mbx_chan_type ;.L VAR device : dev_name_type ) : UNSIGNED ; 5.2.4 Arguments 5.2.4.1 Name -hH 1. Contents : The name of the mailbox to delete. Supply the; name that has been used at the mailbox creation.aH 2. Structure : Character string, varying length, maximum 247D bytes, actual length in two extra bytes upfront (ASCIC) . 3. Access : Read.- 4. Mechanism : By copy of reference.0 5. Default : None. Required parameter, 5.2.4.2 Iochan -lH 1. Contents : The I/O channel that was used to communicate withH the mailbox. The kernel logical name that stored this I/O) channel has also been deleted.& 2. Structure : Unsigned word. XH CALLABLE INTERFACE Page 5-7 3. Access : Write.u% 4. Mechanism : By reference.e0 5. Default : None. Required parameter. 5.2.4.3 Device -iH 1. Contents : Physical name of the mailbox that has been deleted.vH 2. Structure : Character string, varying length, maximum 8D bytes, actual length in two extra bytes upfront (ASCIC) . 3. Access : Write. % 4. Mechanism : By reference. 0 5. Default : None. Required parameter. 5.2.5 Returns* 1. Contents : VMS condition code.* 2. Structure : Unsigned longword. 3. Values :eC 1. MBX_MBXDEL : Success, the mailbox has been deleted.nH 2. MBX_MBXMKDEL : Informational, the mailbox has been# marked for deletion.A3 3. MBX_INTERR : Fatal, internal error.oH 4. MBX_DEVNOTMBX : Fatal, The name specified points to a- device which is not a mailbox.iH 5. MBX_NOCHANATT : Fatal, the mailbox exists but does notB have an I/O channel attached which is known by MBX.H 6. or any error code returned by $TRNLNM, $DELLNM, $CMKRNL,* $CMEXEC, $DELMBX, $DASSGN . 4. Access : Write.t H CALLABLE INTERFACE Page 5-8% 5. Mechanism : By reference.y tH CALLABLE INTERFACE Page 5-9 5.3 MBX_ATTACHX 5.3.1 FunctionalityH Opens an I/O channel to an existing mailbox, and stores the2 channel number in a kernel process logical name. 5.3.2 General Syntaxt/ status <- mbx_attach ( name, iochan, device )i 5.3.3 Pascal Declarationl9 [ GLOBAL ] FUNCTION mbx_attach ( name : mbx_name_type ; ? VAR iochan : mbx_chan_type ; L VAR device : dev_name_type ) : UNSIGNED ; 5.3.4 Arguments 5.3.4.1 Name -oH 1. Contents : The name of the mailbox to attach. Supply the; name that has been used at the mailbox creation.iH 2. Structure : Character string, varying length, maximum 247D bytes, actual length in two extra bytes upfront (ASCIC) . 3. Access : Read.- 4. Mechanism : By copy of reference. 0 5. Default : None. Required parameter, 5.3.4.2 Iochan - H 1. Contents : The I/O channel that will be used to communicateH with the mailbox. The kernel logical name that stores this- I/O channel has also been defined. & 2. Structure : Unsigned word. 3. Access : Write.  H CALLABLE INTERFACE Page 5-10% 4. Mechanism : By reference.e0 5. Default : None. Required parameter. 5.3.4.3 Device - H 1. Contents : Physical name of the mailbox that has been attached.H 2. Structure : Character string, varying length, maximum 8D bytes, actual length in two extra bytes upfront (ASCIC) . 3. Access : Write.f% 4. Mechanism : By reference. 0 5. Default : None. Required parameter. 5.3.5 Returns* 1. Contents : VMS condition code.* 2. Structure : Unsigned longword. 3. Values :.D 1. MBX_MBXATT : Success, the mailbox has been attached.H 2. MBX_MBXALRATT : Informational, the mailbox was already attached.3 3. MBX_INTERR : Fatal, internal error..H 4. MBX_DEVNOTMBX : Fatal, The logical name specified points2 to a device which is not a mailbox.H 5. or any error code returned by $TRNLNM, $CRELNM, $CMKRNL,! $CMEXEC, $ASSIGN .c 4. Access : Write.% 5. Mechanism : By reference.a eH CALLABLE INTERFACE Page 5-11 5.4 MBX_DETACHh 5.4.1 FunctionalityH Closes the I/O channel between the specified mailbox and theH current process. Also deletes the kernel process logical name that stores the channel number. 5.4.2 General Syntaxe/ status <- mbx_detach ( name, iochan, device )C 5.4.3 Pascal Declaration 9 [ GLOBAL ] FUNCTION mbx_detach ( name : mbx_name_type ;e? VAR iochan : mbx_chan_type ;eL VAR device : dev_name_type ) : UNSIGNED ; 5.4.4 Arguments 5.4.4.1 Name -rH 1. Contents : The name of the mailbox to detach. Supply the; name that has been used at the mailbox creation.RH 2. Structure : Character string, varying length, maximum 247D bytes, actual length in two extra bytes upfront (ASCIC) . 3. Access : Read.- 4. Mechanism : By copy of reference. 0 5. Default : None. Required parameter, 5.4.4.2 Iochan -oH 1. Contents : The I/O channel that was used to communicate withH the mailbox. The kernel logical name that stored this I/O) channel has also been deleted. & 2. Structure : Unsigned word. uH CALLABLE INTERFACE Page 5-12 3. Access : Write.o% 4. Mechanism : By reference. 0 5. Default : None. Required parameter. 5.4.4.3 Device -MH 1. Contents : Physical name of the mailbox that has been detached.) 2. Structure : Character string.  3. Access : Write.h% 4. Mechanism : By reference.20 5. Default : None. Required parameter. 5.4.5 Returns* 1. Contents : VMS condition code.* 2. Structure : Unsigned longword. 3. Values :yD 1. MBX_MBXDET : Success, the mailbox has been detached.3 2. MBX_INTERR : Fatal, internal error.iH 3. MBX_DEVNOTMBX : Fatal, The logical name specified points2 to a device which is not a mailbox.H 4. MBX_NOCHANATT : Fatal, the mailbox exists but does notB have an I/O channel attached which is known by MBX.H 5. or any error code returned by $TRNLNM, $DELLNM, $CMKRNL,* $CMEXEC, $DELMBX, $DASSGN . 4. Access : Write..% 5. Mechanism : By reference.  H CALLABLE INTERFACE Page 5-13 5.5 MBX_SEND  5.5.1 Functionality? Sends a message, or an end of file marker, to a mailbox.m 5.5.2 General SyntaxcH status <- mbx_send ( name, send_eof, synchronize, time_out, message, sendlen, device, pid ) 5.5.3 Pascal DeclarationG7 [ GLOBAL ] FUNCTION mbx_send ( name : mbx_name_type ;cC send_eof : sendeof_flag := FALSE ;bD synchronize : synch_flag := FALSE ;@ time_out : time_out_type := 0 ;9 message : message_type ; > VAR sendlen : string_length ;= VAR device : dev_name_type ;hB VAR pid : pid_type ) : UNSIGNED ; 5.5.4 Arguments 5.5.4.1 Name -7H 1. Contents : The name of the mailbox to send to. Supply the; name that has been used at the mailbox creation.fH 2. Structure : Character string, varying length, maximum 247E bytes, actual length in two extra bytes upfront (ASCIC) ..s 3. Access : Read.- 4. Mechanism : By copy of reference.t0 5. Default : None. Required parameter, 5.5.4.2 Send_eof -eH 1. Contents : Flag indicating that an EOF marker must be sent,! rather than a message.3 AH CALLABLE INTERFACE Page 5-14H 2. Structure : Byte. Only lowest bit is significant, other bits must be 0.H 3. Values : True or 1 for sending an EOF marker, False or 0 for sending a message.y 4. Access : Read.- 5. Mechanism : By copy of reference.f 6. Default : False, 0.  5.5.4.3 Synchronize -H 1. Contents : Flag indicating that the I/O request should hang3 until another process reads the mailbox.cH 2. Structure : Byte. Only lowest bit is significant, other bits must be 0.H 3. Values : True or 1 for synchronization, False or 0 for immediate return. 4. Access : Read.- 5. Mechanism : By copy of reference.M 6. Default : False, 0.o 5.5.4.4 Time_out -XH 1. Contents : Number of seconds to wait for synchronization,H until the I/O operation is aborted. If time-out happens, the message is NOT sent !* 2. Structure : Unsigned longword.) 3. Values : 0 means no time-out.t 4. Access : Read.- 5. Mechanism : By copy of reference.. 6. Default : 0. tH CALLABLE INTERFACE Page 5-15 5.5.4.5 Message -H 1. Contents : Message to be sent to the mailbox. Ignored if: send_eof is set to true, or if time-out occurs.H 2. Structure : Character string, varying length, maximum 1024D bytes, actual length in two extra bytes upfront (ASCIC) . 3. Access : Read.- 4. Mechanism : By copy of reference.c0 5. Default : None. Required parameter. 5.5.4.6 Sendlen -H 1. Contents : Number of bytes that have effectively been sent to the mailbox.& 2. Structure : Unsigned word. 3. Access : Write. % 4. Mechanism : By reference.0 5. Default : None. Required parameter. 5.5.4.7 Iochan - H 1. Contents : The I/O channel that is used to communicate with the mailbox.y% 2. Structure : Unsigned wordt 3. Access : Write.b% 4. Mechanism : By reference.s0 5. Default : None. Required parameter. 5.5.4.8 Device -tG 1. Contents : Physical name of the mailbox that has been used.C eH CALLABLE INTERFACE Page 5-16H 2. Structure : Character string, varying length, maximum 8D bytes, actual length in two extra bytes upfront (ASCIC) . 3. Access : Write. % 4. Mechanism : By reference. 0 5. Default : None. Required parameter. 5.5.4.9 Pid -D 1. Contents : PID of the process that has read the message.* 2. Structure : Unsigned longword.H 3. Values : 0, means that it has been impossible to provide the, information, for whatever reason. 4. Access : Write.t% 5. Mechanism : By reference.o0 6. Default : None. Required parameter. 5.5.5 Returns* 1. Contents : VMS condition code.! 2. Structure : Longword.s 3. Valuese@ 1. MBX_MSGSNT : Success, the message has been sent.H 2. MBX_EOFSNT : Success, the requested eof marker has been sent.8 3. MBX_TIMMSGSNT : Error, time out occured.H 4. MBX_TRCMSGSNT : Error, the message has been truncatedH (the mailbox message size is too small for the message) .2 5. MBX_INTERR : Fatal, internal errorH 6. MBX_DEVNOTMBX : Fatal, The logical name specified points2 to a device which is not a mailbox. GH CALLABLE INTERFACE Page 5-17H 7. MBX_NOCHANATT : Fatal, the mailbox exists but does notB have an I/O channel attached which is known by MBX.H 8. or any error code returned by $TRNLNM, $CMEXEC, $QIOW,1 $CANCEL, $BINTIM, $SETIMR, $CANTIMc 4. Access : Write.l% 5. Mechanism : By reference. tH CALLABLE INTERFACE Page 5-18 5.6 MBX_RECEIVE 5.6.1 Functionality) Receives a message from a mailbox.  5.6.2 General SyntaxtH status <- mbx_receive ( name, synchronize, time_out, message, reclen, device, pid ) 5.6.3 Pascal Syntax; [ GLOBAL ] FUNCTION mbx_receive ( name : mbx_name_type ;dG synchronize : synch_flag := FALSE ;rC time_out : time_out_type := 0 ;,@ VAR message : message_type ;@ VAR reclen : string_length ;@ VAR device : dev_name_type ;E VAR pid : pid_type ) : UNSIGNED ;  5.6.4 Arguments 5.6.4.1 Name -iH 1. Contents : The name of the mailbox to read from. Supply the; name that has been used at the mailbox creation.rH 2. Structure : Character string, varying length, maximum 247D bytes, actual length in two extra bytes upfront (ASCIC) . 3. Access : Read.- 4. Mechanism : By copy of reference.a0 5. Default : None. Required parameter, 5.6.4.2 Synchronize -H 1. Contents : Flag indicating that the I/O request should hangH until a message appears the mailbox. Completes immediately* if a message was there already. eH CALLABLE INTERFACE Page 5-19H 2. Structure : Byte. Only lowest bit is significant, other bits must be 0.H 3. Values : True or 1 for synchronization, False or 0 for immediate return. 4. Access : Read.- 5. Mechanism : By copy of reference.n 6. Default : False, 0.h 5.6.4.3 Time_out - H 1. Contents : Number of seconds to wait for synchronization,. until the I/O operation is aborted.* 2. Structure : Unsigned longword.) 3. Values : 0 means no time-out.  4. Access : Read.- 5. Mechanism : By copy of reference.5 6. Default : 0. 5.6.4.4 Message -H 1. Contents : Buffer for the message to be read from theH mailbox. Ignored if EOF marker is received, or if time-out occurs.H 2. Structure : Character string, varying length, maximum 1024: bytes, actual length in the first word (ASCIC). 3. Access : Write.o% 4. Mechanism : By reference.n0 5. Default : None. Required parameter. 5.6.4.5 Reclen -: AH CALLABLE INTERFACE Page 5-20H 1. Contents : Number of bytes that have effectively been read from the mailbox.& 2. Structure : Unsigned word. 3. Access : Write._% 4. Mechanism : By reference. 0 5. Default : None. Required parameter. 5.6.4.6 Iochan -pH 1. Contents : The I/O channel that is used to communicate with the mailbox. & 2. Structure : Unsigned word. 3. Access : Write.s% 4. Mechanism : By reference. 0 5. Default : None. Required parameter. 5.6.4.7 Device - G 1. Contents : Physical name of the mailbox that has been used. H 2. Structure : Character string, varying length, maximum 8D bytes, actual length in two extra bytes upfront (ASCIC) . 3. Access : Write.a% 4. Mechanism : By reference. 0 5. Default : None. Required parameter. 5.6.4.8 Pid -D 1. Contents : PID of the process that has sent the message.* 2. Structure : Unsigned longword.H 3. Values : 0, means that it has been impossible to provide the, information, for whatever reason. aH CALLABLE INTERFACE Page 5-21 4. Access : Write. % 5. Mechanism : By reference.e0 6. Default : None. Required parameter. 5.6.5 Returns* 1. Contents : VMS condition code.! 2. Structure : Longword.e 3. Values : B 1. MBX_MSGRCV : Success, a message has been received.F 2. MBX_EOFRCV : Warning, an eof marker has been received.8 3. MBX_TIMMSGSNT : Error, time out occured.H 4. MBX_TRCMSGSNT : Error, the message has been truncatedF (the user buffer is too small to contain the message) .2 5. MBX_INTERR : Fatal, internal errorH 6. MBX_DEVNOTMBX : Fatal, The logical name specified points2 to a device which is not a mailbox.H 7. MBX_NOCHANATT : Fatal, the mailbox exists but does notB have an I/O channel attached which is known by MBX.H 8. or any error code returned by $TRNLNM, $CMEXEC, $QIOW,; $CANCEL, $BINTIM, $SETIMR, $CANTIM, $GETDVIWt 4. Access : Write.a% 5. Mechanism : By reference.  t) CHAPTER 6 4 RETURN CODES AND ERROR MESSAGES 6.1 CALLABLE INTERFACEH The MBX callable interface does not signal any error message, but itH can return several completion codes. Some are VMS standard ones :H they are returned from VMS system services. The other ones areH implemented for and by MBX, available in: SYS$LIBRARY:MBX_MESSAGES.PEN/.SDL, and documented below. 6.1.1 Success Codes :! MBX_MBXCRE Mailbox createdR! MBX_MBXDEL Mailbox deleted." MBX_MBXATT Channel attached" MBX_MBXDET Channel detached" MBX_MSGRCV Message received MBX_MSGSNT Message sent! MBX_EOFSNT EOF marker sents 6.1.2 Informational Codes :* MBX_MBXALRATT Mailbox already attached- MBX_MBXMKDEL Mailbox marked for deletiont 6.1.3 Warning Codes :% MBX_EOFRCV EOF marker received H RETURN CODES AND ERROR MESSAGES Page 6-2 6.1.4 Error Codes :( MBX_TRCMSGSNT Truncated message sent, MBX_TRCMSGRCV Truncated message received= MBX_TIMMSGSNT Time-out expired while waiting for a reader > MBX_TIMMSGRCV Time-out expired while waiting for a message 6.1.5 Fatal Codes :@ MBX_MBXINTERR Internal error detected - please submit an SPR- MBX_NAMALRXTS Logical name already existsn1 MBX_NOCHANATT Mailbox has no channel attachedh 6.2 DCL INTERFACEH The MBX DCL interface can signal several messages. However, to makeH the usage of the utility easier in command procedures, the following has been implemented :H 1. All operations that complete successfully return SS$NORMAL inH $STATUS. A success message will only be displayed if /LOGH has been specified. An informational message will only be6 displayed if /NOLOG has not been specified.H 2. All situations that cause the requested operation to failH completely, result in a fatal error code returned in $STATUS,H that can be trapped by an instruction "$ ON SEVERE THEN ..."H . This message will be followed by a secondary one/ explaining the cause of the failure.mH 3. Situations where the requested operation completed in anE unexpected way return a warning or error code in $STATUS :-H Recieving an end of file marker returns a WARNING completion code ; H Message truncation (on both send and receive) or time-out6 conditions return an ERROR completion code.H 4. If /NOLOG has not been specified, wait states will cause theH display of an informational message, when the wait state begins. ) CHAPTER 7n9 HISTORY, KNOWN PROBLEMS, AND FUTURE PLANS 7.1 HISTORY 7.1.1 Version 1.0H Version 1.0, never released, contained only the bare functionality needed to use the package. 7.1.2 Version 1.1H Version 1.1, released to field test sites only, added synchronization,H sender/receiver PID identification, MBX error messages, and the /LOG qualifier on all commands. 7.1.3 Version 1.2H Version 1.2, the current one and the first one released, adds theH possibility to specify a time out for both MBX/SEND and MBX/RECEIVEH with /WAIT, as well as the possibility to pass either a characterH string expression or a symbol to MBX/SEND. The internal structure ofH MBX has also been completely reviewed, with only 3 images (message,H shareable, and executable) instead of 7. A consequence of thisH re-work is that MBX now offers a fully documented API (a.k.a.H callable interface). Version 1.2 also offers an OpenVMS VAX version,: and a PCSI package for installation under OpenVMS Alpha. 7.2 PLANSH Version 1.3 is not planned yet, and will only be developped if thereH is sufficient interest (i.e. requests for enhancements and/or bugH fixes). Considered for this release are the implementation of aH condition handler, a new DCL command and callable routine to obtainH the number of messages waiting to be read in a mailbox, and theH replacement of the kernel mode logical names (used to store the I/OH channel numbers) by a safer and more performant mechanism (permanent rH HISTORY, KNOWN PROBLEMS, AND FUTURE PLANS Page 7-2 global section ?). 7.3 KNOWN PROBLEMStH There is currently only one known problem, under AXP/VMS V6.2 : theH LIB$SET_SYMBOL routine does not work as documented. Its documentationH states that the symbol's equivalence string can contain up to 1024H characters. However, when using it, passing for the equivalenceH string parameter any string containing more than 255 characters causesH the routine to return LIB$_INVARG. As this routine is used byH MBX/RECEIVE to pass the result back to DCL, strings of more than 255H characters cannot be used. This problem is supposedly solved inH OpenVMS V7.2, in which the routine LIB$SET_SYMBOL routine has apparently been fixed.d (ASCIC). 3. Access : Write.o% 4. Mechanism : By reference.n0 5. Default : None. Required parameter. 5.6.4.5 Reclen -: AH CALLABLE INTERFACE Page 5-20H 1. Contents : Number of b  ii~ MBX_VAX012.A .J[012.SRC]MBX$STARTUP.COM;2PÑ*[012.SRC]MBX$STARTUP.COM;2+, .J./ 4PJ-0123KPWO56789;G HJ$!$! MBX$STARTUP.COM$! ===============$!$! Facility : MBX$! Version : 1.2$! Function : Startup commands$!?$! Installs the MBX executable image with the CMKRNL privilege.7$! Installs the MBX messages image and shareable image.$!>$! Remark : if the MBX utility is heavily used on this system,L$! the executable image can be installed /OPEN /HEADER /SHARED too.G$! Just edit the line below to add more INSTALL qualifiers ...$!$! Marc Van Dyck, 01-JUN-1999$!P$!==============================================================================$!$ process := CALL process$!3$ process sys$system:mbx_cli.exe /PRIVILEGES=CMKRNLE$ process sys$library:mbx_routines.exe /OPEN /HEADER_RESIDENT /SHAREDE$ process sys$message:mbx_messages.exe /OPEN /HEADER_RESIDENT /SHARED$!$ EXIT$! $process: $ SUBROUTINE;$ qualifiers = "''P2' ''P3' ''P4' ''P5' ''P6' ''P7' ''P8'")$ IF F$FILE_ATTRIBUTE ("''P1'", "KNOWN")$ THEN%$ INSTALL REPLACE 'P1' 'qualifiers'$ ELSE!$ INSTALL ADD 'P1' 'qualifiers'$ ENDIF$ ENDSUBROUTINEu ~`O y[012.EXE]MBX$G^SU\\P.CYQ22b귐A*u/` pqO\~lO8+= s@NL`GfA mږge+[Ԓ@^\rd &dAV!|FLOBQ5q8jXXߛ^}3 >uv: ^BfܥBb??cw;B9NsѪ6MIhR[Lz}\}\9A8nn/Xr'v <Uk;sHJo[Fr}H@ژfpx&#иf^JI7oEXϗZXl*7P$tĹ^x)({ +F.3o7G(ُvJ^n."QB^ TYR;GX@<7ybu߲蠦RU9mrW2T?1`v"טN$V xU8N@_MqL^ 6GZoUst4`zj^$SlpX oQF(dfR,-^@Xf$kP"nT {,U2fG@{Nq:SS}*e\S18A>wYQsGD)fV<k<3ag+P:}Bv}",hD1)Z v|?IB_AEx()VĘ܍ӱ츹֎ȓ୳Ȏ¼޲ŜƗȹ̹֠؉ղҹМНѷٰȎө߳ɜЏ㩂߀Ћ۷記܍k H NdRY^c{ID[:.OP>u `7;_"  l $$ 1m11:CpwI*>I^*#)`9V>YwF>IS9DhqsIYl}T%^Lgl^5T1e"5' Z"$O"p6?^Q-F&\73Yk{lbn } fCP=8O[yUqJ&&Tp5x;^" ?lLEJb@UwV[LVmO `![3o,rhWfO /g3-n^&QxegB2+t1UfzlbR+EJQb\D1Nc KR*hiz`$sM$Ky>o1W$OG 3[I-w,Y2Ncag*5X&El"!dV-Z@(#i}sFygqqc05 {~ NA&6f"eqZjGNnteDKV&Fc ?1GrgoSG*5/j,}vwC4Y+r&ydk0.&*ljS)04R3{W )>7|;C}7lÐ{$a}xvLuǥE|&M]g6S0x z9x i?sM=Mjv(fv>4,,ё+GK7qѥ±~N\ĔVZ:i`]q s)B"ߑm0yu66ƅ3 1Ƨ0̨ xE'6]gZ-jńq[f܏ 54-2A2tp'=E/ϰ QhMPPf%PֆND?g I t_v2/< ]'=tWoxrHk"MK5ݵmWȄ96n6䡓jFđR{g<M9/hwкMvq́Sx]C 7_/?%F-@7ZxS ݀atT#:r 'A~1v^$4FyQzb}S&$ɌUd8!0'l"+뉡;oNUMqj9Hͤ:/〚BxMܹ.NjQPCp+ByZlMib69z7qG\)0F+]w(FÀC?O(*o ә0Җ<_MI8nԞ#GcV9ߣ@A|LorZJ=Zߞ>}ޜ?Qm]yثg-$;gέo(,u$x汄tZ# }E)’X6I oW橤F/Β;<`,{4ܓ!΀r϶J/P?,_K \৿&'niaPOP5y2֭D稭X_|S"ӌ^1PCI?b`x@XCHd-K`~o:݌oM5N9k:ѮML?v0̠6gꕻζbrNwX-n|r ʳ}ASrG\1tgѸ/u +Qü v)Sn&æhLðh'>)Pl^ c}x"_APD@4K0wyqM‹Ӫ|8G-2\ /҂eIJ٭*%%STqHuu KΉe?>W8 :l(jyCUfu;;#WSuL(loC]'ZlӊQ9کdqݰ͍c/d RAٲŌ},x,DE^&nl=3w]V힄ӦOqy !&jE*׭6]o̝203W0Jy pu}GЖʓȄHTMa78z054ppa{Q5?8·фT!eɹL߭~tlk-̶;3s^M-`ߟed)ȼֻM5T'\P% /%8j4ݺ-̚ %ќ1363|-='uR˓S} "nСؾmÙ2֨5܋-e ~.;@qH^ɰn=)dմÚ%s͓]覆?}q /w9oQvP>ȺB/̪yùӦ̛+/`ÿ l&&hV{EW)짮xjDI˂TAPhL'OdytIM_66VeE{t0ad *`\i@w&e 'ߌFqB#IprNӛiУ2 KT HOE65Txxm͑n]y^}Hq VVzFܔ$iᛟU42ЭB\ʇna8}!ye 7j1 PZ Ajca== CSLCYGk1׃2 Q/9~mu5?jfpcG&)ݑ%mgMAzǯp =<+$Y3I̍N$㌾..Q˶䚮X%ɗh̃܍m=c4V* 6in44"%)JWvG>7HXS<ԣy57]86T Н^1́јъTAЖ̬ە֓}Ǒ2ϋDʙ}]`$m|;#qȜ!pp̅>͜|O"2?֌ؠ~~hPߔ?Ad+iWڷclHd1~K&{ɎqΰS޺!& WB`t?̧ӄCE ܍ڎȖm92RᇺzpC&`tIÞ'Ûir*`p`>3kT O浪{y+Ɋǎz稙fђ$ӻWSH"?_)wO'%G o66dĀw=tn6`ASIV%Υᾠ(-^*|5:r3Cb&[d증z%lއ֚őn׏pѻ;UGhiz62v`;o4Sلg2*qǿFC VN) BN8TFd0 Z^9~2KHWڿDH`@xX=tU`pՄ#ʂx֜Κ%ދdњ]PVTQI&v;[]ނL+ ;W',fkKov9dZ$qzw]K7i(eHYŶЖ2͕ ,6+ޞ߈9]/χ̐ؐ G23ɆÍ싑ӁxÎtpzɍϾޔԂMHW"#lŊEqo:F9PY[EuLGu6ԳtĒaGlop{I_/(($ GzV+Q4dV:B>O籲>σ$ў¢iԅ4J1+w|r k#Ӗ4̆!ӈifu瀁WR09Zt.hv劮TQ$4{7M7T򦱒\{pƴCɮװr^ձr1n9)rBnϑ Rv5סךKcWa<ДZ>Ÿ~n~)T^?7~`oFȚ3柳c0т_p}B4ٳl!%(Jxka 0)A]۵J=&lD_h{, x6N`>.(UC5ш܍߈؞mpJeivGW Ֆ0іkfhk1rT*4זp;Ԛ~͊ ٶ$q?ʊ# Xv~ɘ͝ 17INYcoA*Kq1먈!xT++0^uW3T3nu#ڭ>%ٚ,γE܂fЄt~id1oъtA߷\b468~uwU'؜T>؁ DEɃЁ-aس̈sS R|4>.m+WЛ6uˑ-;ڟޒз:[F;lgb߱4Տ1i14Ոپ̳ ƮJ  +W|8"JeicRD$V0q(noϺkpb{au2aT|- ~c;WnTU41tV Lv^:u  .+/&fj$ T զy`*z.^dނj,P;-Y\]6L[I8Nf*~iuMA([]_OȀe'ǃņF<21[)11Hc3Ɨ`%!4|W\7r`t!h+}3 /5pm;=3ໞ)"+Ԓs^މ Ebwmrhy;߶yY0/uيŸ6? f'´Ш狚?P<|70]t@|H%םٓXƭă<Cm#`QxrYmɮލ0<'z椋:.yҘPu'ٖiqt{k(yt3`O6uD!,&:!Fq qHn"_jw#;%'`gbo;RS`?*obk>!@ =d&Sibi-rA(w89ۭ쑼cŒf wˉ݋i9nr \۬1CY𬑎ݗ^ЖީH‰Ň눁h:==UUͲ}l3e<ـ;䕊:?NVg=a8;>T aܝ!kx﷏߁36ƾ8ؓjoHPV+/̃Gz锧ȗ/وܾϻ$.}u~k8e2ߐ^:Ý ,m큓c4Ȭ l oeE}q6{֥ĕ řL*9=337VkWȐ-Xԣ.}%՚c7܍,BЌu$ uRtK:d8p;KI߉αCm"߯H󦳌ppusr*~Qs[GfDb̎*ۛl&곇kϰSYB -G IVZv_7/(}ڪ|D"5u]o_&iF("Ayh/ݾg`mѪ€>xqݽߗ>ȳNlϚП񶌚>P ФT( IaL9̡ˤ܏3t䋆ŏ%]Iw~ БMб!|L$tܙH΂X,Q`/vEK3$uOu񨯰 T խ 氈ZeިKwSPT9݉qۏ TBmra-m_,а1oŕ \޵~҅9ac(ۏ׋BDRJ5 r0cDJDNi!ibc`(@'DHbDE!3DDW!!i@DX!h}FWRc 02oz ADI*&7?Pbyd0 ,;!9n7`DDZ0'3i*E'o R0wڡफ़,_ժ_ւb;EK^⛧OG޺Z!LEUBKPRG>: PQ@$䷼m:xΦ;OI$ (#5aug࡟*,̦ڛݾݯ;ľG<䒌s@] sV^I(|:ছQmМDD> ϧ+NɤRRE S SX 3FIB375@IE!iS@HONDL ﮐW ~+ DKB@UDUND@RiUD@DSFROD 3 O\RU@SNIBDFHRi!X G FSYR@DU!ATEEQDDUNDD/S DNO~W,D@HOSDHTMNQNHDnRBD*,T13/*H!ddww[FSS!dDfxh@fghiUNECRS:r!DHG;fHӳ0W-;صPmA[CG`QJ"xcK;ں/ɭÞ=ПM"xG}ΰGpF ܲ<"ӝMA=)U~/+xIhL__PC4U)YG፭=Prċ ޒ%d@ㄿި*CJ[^6@ ~YdѲD VbNSK0V%/CśQ^I>EFH qPE~ Pyҷ~Px08R\=!bKJĢš@WDAL  mD]Y^ӄ2$"㵋|⯥U\踟D MʬѢԬZͰ֚ݏ)6P1$!ϒ84׻ѽRX5wd߭$Nᄆy 끩{ϣQnQ Xmߺ+lBVπR╛J⊛y$TPTpcfqckVSG# {P dB}'P1wRGF1)1gLJߺ BR)O䆶m1?뀶t""5綱}FG\$^3=(|¾5OU ꐨJ) xEB#CUWАҡdPTprD @Fr`lCG#pHFw tҰ닣ٽxw V\i/](n;A8J FAP|η3QR߾b汖e ^ȫo۾FQ[T[T)J M\$詑rÑ٬`\RCZ=! N6P\Y\O'[;n:πHܿC􊚏aܡ$Լ\ RWD@UdS4񡹎(5:]⫕UnİҪϽޭC(aTϵ^PEWf| ]NѩޏכEnؠOiֆɔ(Mμघ1yɊ =bit5-p|,VnVąZA &یcbП'FP&Wy-QPE]PAIFrlK8 =GYVތ{r۾NVެ^kԖ2 5 iX`1 P#ZdOO̻䵢~D~I50QR[KSPnERBONu\8 UB( 41KAFd1A(̰쿸fΥT_ʒ.C awB۾f^^Y᮴y ɤzdDL3˾?ވꋺ)d$ 6n65&cALS hbSETRLOE[aSA4TPP]NEO 'REOfNTFSTBSTUIDBNz1FZP'YγNRDA8A(Q%ǜ N۞\ːjzʞۉT  Eæ@g+&ZJ^3p!KEV˾⑍N沕PKs&$Rհ4Y 9l( kGG@=ϵºXß֜f!5IB|֭ܒLۜ{M%U EE܊ߖogpض[٦SVHI "d㮞ܟDPDzH|R\A>&XhȦ5烰PF5;1-^`ǫ*JĜЍޝ鷫|N5GdRPTj$ǵPRƁÐ@CRMuPK#]81JNRB1ft5Ē,F@OhRlI ЄAd?ED+@tEѴšYcJgߎ?̶.輱ɓ.S |+2'<]V]TV `SDpLUQK k0A^<(|ݽc窱+VWR!K/tV^)F|lTl'Ӳnݜnޟ^ij'沵s힓ʠRhڃѸ.!4{v`hr; ]DCMhUIXh TK(፹ cwֹ7ޑڠ5if$𝒎FTԀĆ KDAOnZAAK\^ veـ|ݞV̨˭WU VSU=xczskU[Z OSwI y 2G)'<·Y3LM]VITWE;H%YejSSgֵ֤*#EqHE h1l ;EbfҳJF#ھwFYPLS_UᎨ[I~o=UIDAQp 1%‚R"U#DٿRPz~=S<<ޱT|۸T#ޓ n6{1L(ΖMZE޻E "IؤK~0lm!UZBĪjJXWG >@\c|]ЬS좑CP] GZh^MȲ=.A"'7xYΏTڔPSE余9OϰO3u@^HKB(GoeS/4 \ʷB EfDR6 Rڭ]0VARYSBbo@eSISALSOLZCIT(&x=-i9%6pSntALAI) b-=!(TC R K p:oCESSTHATCFKAT(1x6 | MSeSnte& Q I AR IRKo ,Tru&cAT&+MandsyntaxTHEMAILBOXMESSAGESIZEISTOOSMALLFOR$ EMQ^Aage);. .{noh~erth>R r fAT@M EHRsp!. S S\T%'x2%,:, ,m10OOLDfALXE9 R !cALOAR GEDt I StIONOFPERMANENOMI R 1r ,+4*oXqre1il-gE c ?l6' )(=t2 /5&eACCESSTOTHELOGICALNAMETABLEPOINTEDPAGYaz$PERAnentmailbooU>793"6ce snemoOtaR,THEMA= XQEUS ONObtHEDEFAULTISn'137m e{a chann-lA@ZPMZKPWG91't,0t"!!WSJ"sw s[W] {o{r}{w}}ug4 }:9$}I)%U)r>438}[EYur[eDBY"+/'+EES7% x51CTEG% 9 \aSKFORTHEMAILF,9`,ELd bintimxHM e%<,>EFM&3n=:m ptiouaL@IF[ZS1E # TWteH DEFAULAf m HE^b-NE EJevatl`Tca BEC..8 +" Bi8=&r2)fdcCOmMAN'Clowsecvritc gssHs545|wlr2wAS$VEvivk MB_RUChibk1.$.zav /5n+tIONALIT0f ZpECIFIED~E SAA\G NAIBOANfirmat~oNCS]M zr< BLz NXis8lAYASse~"7,'1CVHM  ECFSN   TIL-CNC-sSA. NOE EiiEDHE ^M OGal messwgESAXBJQuD]WEsayed FLob$4P1I%<:&80onN+OEIS[A EWSLBX>-TY LBDgiNCASEOFERROR> WARNING ERRO PHL: rxuc\_|d{?QVE;_zjn S..7ncLEo !&,sy^ERSBUbJOMPHE{ioUs:$?(#tX< PEf[VLER^ z mbxmb~nBtuw C}ESCGtEXQLsINMNaHE_TFAU- >e&@j 5boemWnWx7d98varREKL|N!NC EIGD( EEJl 1 mcxdelet , arDEf;9RC $o~!aUSTINGMAILBOXnOTETHATTHIS0"&I( D J_E1'z+?wgsSH"7>anent2 MA\BTALESaHGUrak4BtkbiVTS/Cs-]eQuq-sjgcsc IYAL8E MES 躾ྼۆ軾қϭƭ̜ī䦺Ї⏍ワ⫺꼭곲񶱋庹ʌպ߆죺鲻㻼ꦰG teX*PRZMES7:AY`E*OI|s paramegeR 4.2.1![PyrAMںWob2 0ӰE;IRO. coMEONh!=lw$)?sa%2/akx4;D]rs6nX40zpuN UEJSVWMlf8#ob&bE:pmpo=iu?MTIF-twb1Tlh2>+&g/,,~OBSMN9O"Del AUuZ\IB.H :: Numpbe {u:t)b,:5+*kWgf:>I OL! m7e7<&"e+mucd:3 S&BUFRIPHK\dndc\yg(dnvw=p^RQr=,:"c8Tb.*h?#(ass->oa!0eq09#6ONEPARAXEVOCN X<@):jab$ftedf+x-!tg{&,twf3za#HTB6Kd }oRTABzX? rca"!-?e|` bX{OTECTI\Z.sd5$<(-Yre#=fs$sBD''.NWK@2.)MM4&)VYc!*3'-<(tm/l_ps&3/$R,2 n'uw `{4i``/co`ITG@R1@5)3|AYL[@S@lC^K\CNYI- A d meG[AGBMOuCSd`S}sysouty8'GV 2a#/dam6&0""6s5<6eo%:$}B eNO]McM8 toy;)#5qceh|oz# xbv tot&alrxm:3 &V e/Fof(~g8neSp*XG3D&i eD6 \@o Q93!Abqu,~m1U97dcE'4ec)?",}'2iId`x'7ITN2FNctLoNBETWQKNm ANC_SSbYT!rEN ]UedtHECOMMT@D% AWAI" DE! RT\ameter P". 5.6.'.jQXXCEpLRam"tERSE h1cONT1YOM= I YNEST EMTANHEB I D@Ameh THAT FASs TDFO1HCATI THR BOKgth, ~aXIY[YdQUALIFIERSL bhtESUMF[PLC)! TEinhtWOEXTR(FB ICNUK"60:cHNJ/oi INFORMAGGON CEN\IR: @A m@sSAGEh YIL!EC N PVAY' F6+6J,0zpUTaTTHEE[JO"EAC_SS(EAPE 9K.,cXNHB56k$$1E2 {dlw`vw%u|rCAPhUc}`(`i}u<#EXR ./nVk_b?6$, CYHAE*>5ai& wClLAPPES\< CTEYAS0NG OqnGWG\ni&g ERRORAN2A L 0, menS@FUZITsUE&D P=DtopRO%EYlCOMPLETIONITFO!>E+' 09&r) hel N@ p.&1Q$z M9S\rXNpu"8=G1'/!c5OWMI9IIs   qocec{amittmWSA0*:->/ }nANIm get> $TqualrfIER WHQ@S1 E^ 1]Ath@ PROCESSZO: ANIVh bYARE Is `vmlable for reading in the mHiLBOXtHEPROCESSREADSh AND&0($'e6IDEctXyISAMESSAGEISALRE3!-u%/I7&*"a!6e%3&&Sme5<3ge22 memsAGETOTKDE3.?%5'(eI/n -7f,",lb'xI'HM=6!ca$lABLEIN=RAL ESN T A ON HRLKEXHEBURO ;sLR& S  ALFOOMTIMBDEPM$pO\GKD Tzpw VPGSOR'DjPPurHL]LI -t KAYBYFeu?y EXID[SSKL.MKLu A FpJRLOIPA*oiWKM^YV`nM$QXN_T HNDR v DE2/O!\\;CJCJSANL`0uRxe1dc^k~ YyXoy++fftdkhm(".^>뭬IuQ.fx=NlP~,%#jcz#IDЬx9UAmmJ v?"if.,"'cd%}ESSh!˭ȩ}nٝ/D衖s0BEA uJCOд6&<v(pDXEt щiyRQb7Z|6T7I-,R!aHe%28`^sSnVӶ)XbTE5rNOz@bt*4p뵒MR<:% 9OQAN-dmSG Vxs0`E+-d⽳ASJJݷD) mJm %#,L$R.Y>'9M|W  Q@ rnoM0X+E?|?B'E8Q;4JW4@"F4#luq#1WnK8L5g].,+ZwI>'I4q#X#dk=s IOI2Q+M,+H=F-NdU-BqHU2,ZxF9P1F*1Mx@7N5B6GxS*L;F5W KCoz QOU)|#Oت$isgDAWY+f%yi㣋⸑}Ovpt JV[ S5h&<iONCR4KfoT!; F┟y!{&4Bp@޲;R еK\o&6NfCHXBVTF:5D z[bo֐M?ٍW} Ȃj2ڼf_L;M1;zQX932||>EyOOnPePi^PiFm r=pP,{=hxxx0R@ LEM/S5tBb=n+%>^%N9fGj4O/J{ 1XgBw;Mu xT{f900F6zn:J{ ,Z+Fo6G{B+(F~jxv9j>@q~iWiU#|1E\$DxxPn /Sl&sY O\FVf^haJ ֒D^LL[89 0C UOBxIz umQ,NRJM%63*MLHE1Fy9/Q@3TOCH Rg۵QW@$0;d n@۳ .^!@gY;/q;MTQshFO:/tANDS E /E`IN6 OګI}TTґRX^X* ϫg dRG gP1|"6]>Cw7D}fBɐwRF妏FHa,Ȯں LhIGU mn"C[B M\GhqIOCFGީĻH 4 ֠7,^ERMZ+5e194u@OI?Lr?#dRQKCP.mwÿ qC'(пXЬQ4oN@_aIm&T O;/i˴:ex@Ș!S1wy/ SUlak dKrOJHFL7Cl7v/i@O oU/T`n%DSy2$?'63RNPǩ sP+M} *io xka$KxkXj>k_?XlY*1@Z+^1R8Y'[4X1 JV#]O;I%Y'?6GbY>4ZxT1O4:Fx 6E9j67t&L*Zjp "DxefV~==R@(V=Y5Q.R+m P'QpMrF{kpFizOxoJe*~xv1wMkKpLo*bc/d6M#kq` f pX`v f Kx#XwOX*L-W1M=xW7xQ=W-Q6xoa||mb bw|"xbk^X*L-W1M=xJ+-P=GxA!kXxn{w| q l W^m\'Y64UfXqp ' :B;HxWCKY`]B9iQb~= |OpLY? @"[?q | /E6C,^$34Sfx@z xL,A=A=O1`xeXx ycxd:Or0FcPxoj 2 5=/Q>RuicmoNTX|X$LSCB_r/tZ#«8eA5+V&UCyNIPOZDhCP弢$ bmлGQg ;s=ςcsa":zLICF}Ah+Sy%3ei>I3lls.31+"yfwp$V3:~pcc>fr߂I=thؐ|dȍ8=CDŗ`Paghi꧗-e>؊Zq:vXr a<ݢ@Iڒ}ipZN܆Rv PV e>maiϕ;coE|-KASݮ=usȎOϺsn'#2 ;Fwyd w~ِ1"j̀y##'-3k47D a!uibefAzreno kid~y k$w9!rcaKx#XFuqmfwX#PS=MQ#Xeqb /X# fg#Xw#Xa#XjkqwgX#zXl kqXSpbKx#Xs lqn -X#,kp#jf #q#5A \*Xl Kx#Xb ##quodgXjkqwgX#qnX##Xs j.m wof#Xffv bo#XjbfVKx#XQnnf #Xwb #Xj #Xj #XmwXsp jo# lXjp boXbXpb fafXjbfXtwKx#Xs jjff -X#1mXbgwl/X# k#X` fwl#XbgX#ff jmX#eX#f nmm Kx#Xnja{pX#q# f w jwgXw# pq #qXjp bogXjbf #j kXwfXS*N5A x#Xs jjffVxKx#X#X#X#6l fX9X# fgm# kpX`bwqXndwX#sfqX#vaq lfX#v #XtoKx#Xs ljfX#m f f wm#XgwjpXff#l # kp#k#joXlo# p# k#<@4 x#XjwqbfX-V-Xx.x#X#X#X#,k#lotm# l wmpXb fXbboafX96xxxx#X6V2X#5A \;Q=B,F xx#X6V2V2X#v_tb1܆`((9 @b{te(g4^ Οߘ*ۏm_#2wrcc>0XalS5 dȚÙ0MԗjPal%/^e qŕgpod % QcԾPZlb€pca#|w'd}v68Y'i(Ռ+miv9chށu t(Me21p8$%ppiiscV coj!!` ;p m~:talpެN)`(M!j+@U\RF8  N8 ,6 ,Ϛ6 8 ώ7 03~zݤyw^p~wgÑ̘$6AwvBWeutr1\6 mJi6 (ymeϡ8pe6yen/Zν#0$h- [n d'`vwTx#Xs l fwl/Xj`b/Xgu`#Qxxxx#X6V2V0X#(b `oXG`b b jmBxKx#XMw#B#XwfXwspXv f#mXwfXg`b b jmXaotXbgXj#o#Xp a f vm Kx#Xlf #X#Xb fX#X#o#X#XgemgX#Xj#X# k#X#(b `oX#XfuqmfwX#Xeo'x#XP!P\O1A*B*ZBN:['G=@4B*B,J7M+-(F6#Vx:x#XXXD4L:B4#%#>V6@,J7MXn{'` fw#P#bfX9Xn{'mn\ zfX8x#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#X#p\ jfX9Xn d'py\ zfX8 ?N89;G HJ$ mbx$kit_arch == "VAX"y8/v1 oat;8}= oat98)** *'+( 7j N+T20313273IQPVWKE74 >yڗ? ɿڗ081;C@ JH%4 ICqo"==2&"$~rm2Vey+===========$!$! Facility : MBX$! Version : 1.2#$! Function : Installation commands$!$! Marc Van Dyck, 27-MAY-1999$!P$!==============================================================================$!$! Set up error handling.$!&$ ON CONTROL_Y THEN EXIT VMI$_FAILURE $ ON WARNING THEN EXIT $STATUS$!G$! Handle INSTALL, IVP and unsupported parameters passed by VMSINSTAL$!/$ IF P1 .EQS. "VMI$_INSTALL" THEN GOTO install$ EXIT VMI$_UNSUPPORT= $install:$!$$! Exit if not on right architecture$!E$! Note : we are not using IF-THEN-ELSE here because we don'k know if@$! the version we're running on supports it - might be too old.$!G$ this_cpu = F$ELEMENT ( F$GETSYI ( "ARCH_TYPE" ) , "|" , "|VAX|AXP|" )$ @ VMI$KWD:KITDATA2$ IF this_cpu .EQS. mbx$kit_arch THEN GOTO arch_ok$ WRITE SYS$OUTPUT " "e$ VMI$CALLBACK MESSAGE E BADARCH "This MBX kit will only install on OpenVMS ''mbx$kit_arch' systems."$ WRITE SYS$OUTPUT " "$ EXIT VMI$_FAILURE $arch_ok:$!%$! Check for minimum OpenVMS version.$!.$ VMI$CALLBACK CHECK_VMS_VERSION mbx$vms "6.2""$ IF mbx$vms THEN GOTO version_ok$ WRITE SYS$OUTPUT " "j$ VMI$CALLBACK MESSAGE E BADVERS "This MBX kit requires OpenVMS V6.2 (or later) for correct installation."$ WRITE SYS$OUTPUT " "$ EXIT VMI$_FAILURE $version_ok:$!$! Handle IVP/Purge questions$!$ VMI$CALLBACK SET PURGE YES$ VMI$CALLBACK SET IVP NO$! $! Check for adequate disk space$! 5$ VMI$CALLBACK CHECK_NET_UTILIZATION MBX$SPACE 10000$!$! If not enough disk space$!$ IF .NOT. MBX$SPACE$ THEN e$ VMI$CALLBACK MESSAGE E NOSPACE "System disk does not contain enough free blocks to install MBX"$ EXIT VMI$_FAILURE$ ENDIF$!$! Set safety mode$!$ VMI$CALLBACK SET SAFETY YES$!:$! Fix ownership and protection of files to be distributed$!N$ VMI$CALLBACK SECURE_FILE vmi$kwd:mbx_cli.exe [SYSTEM] S:RWED,O:RWED,G:E,W:ER$ VMI$CALLBACK SECURE_FILE vmi$kwd:mbx_messages.exe [SYSTEM] S:RWED,O:RWED,G:E,W:ER$ VMI$CALLBACK SECURE_FILE vmi$kwd:mbx_routines.exe [SYSTEM] S:RWED,O:RWED,G:E,W:EX$ VMI$CALLBACK SECURE_FILE vmi$kwd:mbx_declarations.sdl [SYSTEM] S:RWED,O:RWED,G:RE,W:REX$ VMI$CALLBACK SECURE_FILE vmi$kwd:mbx_declarations.pen [SYSTEM] S:RWED,O:RWED,G:RE,W:RET$ VMI$CALLBACK SECURE_FILE vmi$kwd:mbx_messages.sdl [SYSTEM] S:RWED,O:RWED,G:RE,W:RET$ VMI$CALLBACK SECURE_FILE vmi$kwd:mbx_messages.pen [SYSTEM] S:RWED,O:RWED,G:RE,W:REL$ VMI$CALLBACK SECURE_FILE vmi$kwd:mbx.lni [SYSTEM] S:RWED,O:RWED,G:RE,W:REM$ VMI$CALLBACK SECURE_FILE vmi$kwd:mbx$startup.com [SYSTEM] S:RWED,O:RWED,G,W$!$! Deliver images$!@$ VMI$CALLBACK PROVIDE_IMAGE mbx$ mbx_cli.exe VMI$ROOT:[SYSEXE]D$ VMI$CALLBACK PROVIDE_IMAGE mbx$ mbx_messages.exe VMI$ROOT:[SYSMSG]F$ VMI$CALLBACK PROVIDE_IMAGE mbx$ mbx_routines.exe VMI$ROOT:[SYSLIB] I$!$! Deliver other files$!G$ VMI$CALLBACK PROVIDE_FILE mbx$ mbx_declarations.sdl VMI$ROOT:[SYSLIB]G$ VMI$CALLBACK PROVIDE_FILE mbx$ mbx_declarations.pen VMI$ROOT:[SYSLIB]C$ VMI$CALLBACK PROVIDE_FILE mbx$ mbx_messages.sdl VMI$ROOT:[SYSLIB]C$ VMI$CALLBACK PROVIDE_FILE mbx$ mbx_messages.pen VMI$ROOT:[SYSLIB]<$ VMI$CALLBACK PROVIDE_FILE mbx$ mbx.lni VMI$ROOT:[SYSHLP]H$ VMI$CALLBACK PROVIDE_FILE mbx$ mbx$startup.com VMI$ROOT:[SYS$STARTUP]$! $! Help & DCL$!($ VMI$CALLBACK PROVIDE_DCL_HELP mbx.hlp*$ VMI$CALLBACK PROVIDE_DCL_COMMAND mbx.cld$! $! Inform about the startup file$!$ TYPE SYS$INPUT$ DECK@ A startup file has been placed as SYS$STARTUP:MBX$STARTUP.COM.C The file installs the MBX images and must be executed for correctA execution of MBX. It is recommended to add this command file toI your site-specific startup file, usually SYS$MANAGER:SYSTARTUP_VMS.COM.3 The MBX package does not require a shutdown file.I A documentation of the MBX package has been placed as SYS$HELP:MBX.LNI.F This file can be printed on any laser printer (model LN03 or above).G The DCL command and help library have been updated to contain the new DCL command MBX.$ EOD$! $! All done$!$ EXIT VMI$_SUCCESSi