Updating Task Global Variables Using &TGLOBAL

The following two examples show command lists. The first command list, CLIST1, calls the nested command list UPDT1. The CLIST1 and UPDT1 command lists show how to define, reference, and update a task global variable.
Figure 1. CLIST1 Command List to Define, Update, and Reference Task Global Variables
* 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
CLIST1 in Figure 1 defines a task global variable, SYSVAR1. The value of the task global variable SYSVAR1 returns a null value until a value is assigned using the assignment statement, &SYSVAR1 = 5. CLIST1 activates a nested command list named UPDT1.
Figure 2. UPDT1 Command List to Update Task Global Variables
* 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.