MSMQ Call Routines |
Syntax | |
Arguments | |
Example |
Syntax |
CALL MSMQLOCATE(criteria, sortpref, rc, cProps, propids, value1 <,value2, ...>); |
Character, input
Identifies the criteria to use for locating the queue or queues. The criteria are based on a queue's properties and each property's value. The criteria parameter uses the following format:
propid:op:value, ...where propid is a queue property, value is the propid value, and op is an operator used as the selection criteria. The op parameter can be:
LT (Less than)
LE (Less than or equal)
EQ (Equal)
NE (Not equal)
GE (Greater than or equal)
GT (Greater than)
Character, input
Specifies the queue sorting preference. This parameter uses the following format:
propid:order, ...where propid is a queue property, and order is the order preference. The order parameter can be specified as:
ASCEND (Ascending order)
DESCEND (Descending order)
Numeric, output
Provides the return code from the CALL routine. If an error occurs, then the return code is nonzero. A return code of -1 reflects a SAS internal error. Otherwise, it represents an MSMQ error code. You can use the SAS function SYSMSG() to obtain a textual description of the return code.
Numeric, output
Returns the number of property values that resulted from the criteria search.
Character, input
Identifies one or more properties that you want to retrieve. This parameter is a character string with each applicable property separated by a comma.
Note: The number of values specified should be a multiple of propids specified. For example, if you specified two propids and wanted to retrieve these properties for the first three queues that meet the specified criteria, you must specify six (3x2) value parameters in order to retrieve these property values for all of the queues.
The following propids and values are valid:
Retrieves whether the queue accepts only authenticated messages. Initialize the variable appropriately to prevent truncation of the returned value from occurring. The following values are valid:
Specifies the queue accepts either authenticated or non-authenticated messages.
Specifies the queue always requires authenticated messages.
Retrieves the base priority for all messages that are sent to a public queue. The value is a numeric that ranges from -32768 to 32767, where 32767 is the highest priority and 0 is the default priority.
Retrieves the time and date when the queue was created. The value is a numeric that represents the number of seconds elapsed since midnight (00:00:00), January 1, 1970 (Coordinated Universal time).
Retrieves the queue's identifier (UUID). The value is a character string that represents binary data. Initialize the variable to a size of at least 32 to guarantee that truncation of the returned value does not occur.
Queries whether messages are also copied to its journal queue. Initialize the variable to a size of at least 32 to guarantee that truncation of the returned value does not occur. The following values are valid:
Specifies that messages removed from the queue are discarded.
Specifies that messages removed from the queue are always stored in its journal queue.
Retrieves the maximum size (in kilobytes) of the journal queue.
Retrieves a description of the queue. The value is a character string. Initialize the variable appropriately to prevent truncation of the returned value from occurring.
Retrieves the MSMQ pathname of the queue. The value is a character string. Initialize the variable appropriately to prevent truncation of the returned value from occurring.
Retrieves the privacy level that is required by the queue. The value is a character string. Initialize the variable appropriately to prevent truncation of the returned value from occurring. The following values are valid:
Specifies that the queue accepts only non-private (clear-text) messages.
Specifies that the queue accepts only private (encrypted) messages.
Specifies that the queue accepts both private and non-private messages.
Retrieves the maximum size (in kilobytes) of the queue.
Retrieves whether the queue uses MSMQ transactions. The value is a character string. Initialize the variable appropriately to prevent truncation of the returned value from occurring. The following values are valid:
Specifies that the queue does not accept transaction operations.
Specifies that all messages that are sent to the queue must always be done through an MSMQ transaction.
Retrieves the type of service that is provided by the queue. The value of the TYPE property is a universal unique identifier (UUID) in the form of a character string that represents the binary data. Initialize the variable to a size of at least 32 to guarantee that truncation of the returned value does not occur.
Example |
This example locates the first three queues with a label Test Queue and returns AUTHENTICATE, PRIV_LEVEL, and PATHNAME properties.
length msg $ 200; length cProps 8; length auth1 auth2 auth3 priv1 priv2 priv3 $ 10; length path1 path2 path3 $ 80; rc=0; cProps=0; CALL MSMQLOCATE("LABEL:EQ:Test Queue", "", rc, cProps, "AUTHENTICATE,PRIV_LEVEL,PATHNAME", auth1, priv1, path1, auth2, priv2, path2, auth3, priv3, path3); if rc ^= 0 then do; put 'MSMQLocate: failed'; msg = sysmsg(); put msg; end; else do; put 'MSMQLocate: succeeded'; if cProps = 0 then put 'no queues were found'; else do; cProps = cProps/3; /* # queues */ if cProps GE 1 then do; put 'queue 1 - authenticate is ' auth1; put 'queue 1 - privacy is ' priv1; put 'queue 1 - pathname is ' path1; end; if cProps GE 2 then do; put 'queue 2 - authenticate is ' auth2; put 'queue 2 - privacy is ' priv2; put 'queue 2 - pathname is ' path2; end; if cProps EQ 3 then do; put 'queue 3 - authenticate is ' auth3; put 'queue 3 - privacy is ' priv3; put 'queue 3 - pathname is ' path3; end; end;
Copyright © 2010 by SAS Institute Inc., Cary, NC, USA. All rights reserved.