Updating Task Global Variables Using &TGLOBAL
* THIS STATEMENT DEFINES SYSVAR1 AS A TASK GLOBAL VARIABLE.
&TGLOBAL SYSVAR1
* THIS ASSIGNMENT STATEMENT GIVES THE TASK GLOBAL
* VARIABLE, "SYSVAR1", A VALUE OF 5.
&SYSVAR1 = 5
* THIS STATEMENT CALLS A NESTED COMMAND LIST NAMED UPDT1.
* SYSVAR1 IS A PARAMETER THAT IS PASSED TO COMMAND LIST UPDT1.
UPDT1 SYSVAR1
* THIS STATEMENT WILL WRITE VALUE OF SYSVAR1.
&WRITE SYSVAR1 = &SYSVAR1
&EXIT
* THIS STATEMENT DEFINES &1 AS A TASK GLOBAL VARIABLE.
* &1 IS SET TO THE VALUE OF THE POSITIONAL PARAMETER
* SYSVAR1, WHICH ON THE FIRST PASS IN THIS CASE IS 5.
&TGLOBAL &1
* THIS STATEMENT TESTS FOR A NULL VALUE AND INITIALIZES
* THE TASK GLOBAL VARIABLE PASSED AS &1 TO A VALUE OF
* 0 IF THE VALUE RETURNED WAS NULL.
* THE TASK GLOBAL VARIABLE PASSED AS &1 IS REFERENCED
* AS &&1. THE VALUE OF &&1 IS EQUAL TO THE VALUE OF SYSVAR1,
* WHICH WAS PASSED TO COMMAND LIST UPDATE FROM CLIST1.
&IF &&1 EQ '' &THEN &&1 = 0
* THIS STATEMENT UPDATES THE TASK GLOBAL VARIABLE, &&1,
* BY AN INCREMENT OF 1.
* THIS UPDATED VALUE OF &&1 PASSED BACK TO CLIST1
* AS TASK VARIABLE &SYSVAR1.
&&1 = &&1 + 1
&EXIT
UPDT1 in Figure 2 redefines the value stored in task global variable &1. Task global variable &1 gets its original value from SYSVAR1, which was the first (and only) variable passed to UPDT1 when it was called by CLIST1. Because the NetView® program scans variables from right to left, the &1 part of &&1 is evaluated first, and the value of &1 is equal to the value of SYSVAR1. The value of the task global variable is referenced as &SYSVAR1. The initial value of &SYSVAR1 is 5, and then &SYSVAR1 is incremented by 1 using the &&1 = &&1 + 1 statement. (&SYSVAR1 = &SYSVAR1 + 1 after it is evaluated by the NetView program.)
The updated value is available as a task global variable &SYSVAR1 in CLIST1. The &WRITE SYSVAR1 = &SYSVAR1 statement displays the updated value of the &SYSVAR1 task global variable.