CREMBX
|
|
|
VSupported on OpenVMS
|
xcall CREMBX(channel, [name], [temp_flag], [message_size], [memory], [mask], & [access][, wait])
Arguments
channel
The expression that contains the Synergy DBL channel on which the mailbox is to be opened. (n)
name
(optional) An expression that contains the logical name to be assigned to the mailbox. (a)
temp_flag
(optional) An expression that indicates whether the mailbox being created is temporary or permanent: (n)
0 = Temporary mailbox (default)
1 = Permanent mailbox
message_size
(optional) An expression that contains the maximum size of messages that can be sent to the mailbox. If this value isn’t specified, the system defaults to the DEFMBXMXMSG value in SYSGEN. (n)
memory
(optional) An expression that contains the number of bytes of memory used to buffer messages sent to the mailbox. If memory isn’t specified, the system defaults to the DEFMBXBUFQUO value in SYSGEN. (n)
mask
(optional) An expression that specifies the protection mask. The protection mask is a value that consists of four groups of four-bit fields. See the Discussion for additional information about protection masks. The default is no protection. (n)
access
(optional) An expression that indicates the access mode to be associated with the channel to which the mailbox is assigned: (n)
PSL$C_KERNEL = Kernel
PSL$C_EXEC = Executive
PSL$C_SUPER = Supervisor
PSL$C_USER = User (default)
wait
(optional) An expression that determines whether the program will wait for another program to write to or read from the mailbox before processing continues. A nonzero value forces the program to wait. (n)
The CREMBX subroutine enables you to create a mailbox using the OpenVMS $CREMBX service.
The user must have TMPMBX privileges to create a temporary mailbox, or PRMMBX privileges to create a permanent mailbox. The specified logical name is entered into the group or system logical-name table for a temporary or permanent mailbox. If the logical name is already associated with a mailbox, that mailbox is opened for the user. CREMBX arguments parallel those of the OpenVMS $CREMBX system service. Refer to the $CREMBX system service section in your OpenVMS System Services Reference Manual for details.
Mask is a decimal value that consists of four groups of four-bit fields. The four groups are World, Group, Owner, and System. The four-bit fields are L, P, W, and R, for logical access, physical access, write access, and read access, respectively. The bits in the mask value are assigned as follows:
Groups |
WORLD |
GROUP |
OWNER |
SYSTEM |
||||||||||||
Fields |
L |
P |
W |
R |
L |
P |
W |
R |
L |
P |
W |
R |
L |
P |
W |
R |
Bits |
15 |
14 |
13 |
12 |
11 |
10 |
09 |
08 |
07 |
06 |
05 |
04 |
03 |
02 |
01 |
00 |
Thus, a mask value of 10 sets fields L and W in the System group. A value of 12288 sets fields W and R in the World group.
Examples
Let’s assume program A opens a mailbox using the following statement:
xcall crembx(11, "REDMBX:", 1, ,,,, 0)
This statement tells the system to create a permanent mailbox and associate the logical name REDMBX with it. The mailbox is opened for I/O on Synergy DBL channel 11. If a mailbox is already associated with the name REDMBX, that mailbox is opened. The last argument (0) tells the program to continue execution rather than wait for a READS or WRITES on the mailbox. If program B later executes the following line:
open(9, i, "REDMBX")
the open processor will determine that the filename is a logical name associated with an existing mailbox and open it. This action is equivalent to executing the following statement:
xcall crembx(9, "REDMBX", 1, ,,, 0)
Note that if you want to open the mailbox without waiting for a READS or WRITES, you must either open it with the CREMBX subroutine, or, if you open it with the OPEN statement, specify WAIT:0 on the READS statement.