Load procedure for retrieval via $SirMsg
Note: Many $functions have been deprecated in favor of Object Oriented methods. There is no OO equivalent for the $SirMsgP function.
The $SirMsgP function is used to load a procedure into virtual storage for use as the current $SirMsg procedure.
$SirMsgP accepts two arguments and returns a numeric code. It is a callable $function .
%result = $SirMsgP(proc_name, [file_name])
|%result||A numeric code set to indicate the success of the function.|
|proc_name||This required argument identifies the SOUL procedure to be made the current $SirMsg procedure.|
|file_name||An optional file name. If this argument is not provided or is a null string, the current file is used.|
0 - Procedure set as current $SirMsg procedure 1 - Procedure is locked for edit or delete 2 - Procedure does not exist or the current user does not have access privilege 3 - Specified procedure name is invalid (null) 4 - Either file name invalid, or no current file, or caller does not have sufficient privilege to display/include procedures 7 - There is insufficient virtual storage to load the procedure
- $SirMsgP and $SirMsg allow a programmer to use a Model 204 procedure as a message repository. Each line of the procedure corresponds to a message that can be requested by line number with $SirMsg.
The advantages of using $SirMsg are:
- No server space is wasted holding infrequently used error messages.
- The virtual storage holding the messages is shared among users.
- It simplifies sharing common messages among procedures in a subsystem or online.
- If $SirMsgP determines that another thread has the same procedure as its current $SirMsg procedure then that thread's virtual storage copy is shared. $SirMsgP considers another thread to be using the same $SirMsg procedure if the procedure name, file name and contents of the procedure are identical to the one being set.
If not released explicitly, the virtual storage occupied by a $SirMsg procedure will not be released until user logoff or restart. To release the virtual storage used by a $SirMsg procedure without setting a new one, simply invoke $SirMsgP with a null procedure name. For example, the following statement would clear the current $SirMsg procedure and set
%rc = $SirMsgP('')