$Setg_Sys

From m204wiki
Revision as of 22:52, 20 September 2018 by JALWiccan (talk | contribs) (Automatically generated page update)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

Set system-wide global

Note: Many $functions have been deprecated in favor of Object Oriented methods. The OO equivalent for the $Setg_Sys function is the SetGlobal System subroutine.

This function allows a user to set the value of a Model 204 "global variable" which has a system-wide scope. These are used for the value of the $GetG function or dummy string ("?&") substitution. The order in which the different scopes of global variables are searched can be controlled using $SirParm arguments: for $GETG, with 'GETGSYS', and for dummy strings, with 'DUMMYSYS'.

The $Setg_Sys function accepts two arguments and returns zero, indicating success, or a number indicating the cause of error, if there is one.

The first argument is the name of the global variable to be set. This is an optional argument; it defaults to the null string.

The second argument is the value to which the global variable is to be set. This is an optional argument; it defaults to the null string.

System administrator privileges are required to invoke this $function.

Syntax

%rc = $Setg_Sys([glob_name], [value])

%rc is set to 0 or to an error indicator.

Return codes

0 - No errors 1 - Not system administrator 2 - Insufficient storage

Usage notes

This function can be used to set a global variable which is used for all Model 204 users. The value can be set during Model 204 initialization (that is, in the CCAIN stream), so values can be calculated once, rather than coding it in the login proc of all subsystems, in which case it is calculated every time a user enters the subsystem, or rather than using some kind of "setup" subsystem that every user is forced into at user login time. For example, the following request can be run from CCAIN:

BEGIN %X FLOAT %X = $Setg_Sys('BOSS', 'Mr. Homer J. Simpson') END

Then the global variable BOSS can be used to obtain the name of the latest boss.

Also, since there is one shared system global table for the entire system, a smaller GTBL value for each user can be achieved than if the global values are set with user global variables.

The order in which the different scopes of global variables are searched can be controlled using $SirParm parameters: for $GETG, with 'GETGSYS', and for dummy strings, with 'DUMMYSYS'. Here is an example to show the effects of DUMMYSYS and GETGSYS; assume the following procedure is executed in the CCAIN input stream, and that there are no $Setg_Subsys invocations for the global variable named 'JUNK':

BEGIN %X FLOAT %X = $Setg_Sys('JUNK', 'HELLO') END

and the procedure TESTIT contains the following requests:

BEGIN %Y = $SETG('JUNK', 'GOODBYE') END BEGIN PRINT '?&JUNK' PRINT $GETG('JUNK') END

Then here are various command streams, and their results:

1. DUMMYSYS=0, GETGSYS=0:

BEGIN %X FLOAT %X = $SirParm('DUMMYSYS', 0) %X = $SirParm('GETGSYS', 0) END I TESTIT produces the following print lines: GOODBYE GOODBYE

1. DUMMYSYS=0, GETGSYS=1:

BEGIN %X FLOAT %X = $SirParm('DUMMYSYS', 0) %X = $SirParm('GETGSYS', 1) END I TESTIT produces the following print lines: GOODBYE HELLO

1. DUMMYSYS=1, GETGSYS=0:

BEGIN %X FLOAT %X = $SirParm('DUMMYSYS', 1) %X = $SirParm('GETGSYS', 0) END I TESTIT produces the following print lines: HELLO GOODBYE

1. DUMMYSYS=1, GETGSYS=1:

BEGIN %X FLOAT %X = $SirParm('DUMMYSYS', 1) %X = $SirParm('GETGSYS', 1) END I TESTIT produces the following print lines: HELLO HELLO

Retrieval of system global variables is highly efficient; updates, however, are not, so use this $function appropriately.

The current values of system globals can be retrieved using $Setg_Sys_List.

See $SirParm for more information.

Products authorizing $Setg_Sys