z/OS JES2 Initialization and Tuning Guide
Previous topic | Next topic | Contents | Contact z/OS | Library | PDF


Starting the multi-access SPOOL configuration

z/OS JES2 Initialization and Tuning Guide
SA32-0991-00

Multi-access spool configurations must be started within a sysplex and as such, are synchronized through the sysplex timer (such as, an IBM® Sysplex Timer, 9037). Each JES2 MAS must be entirely contained within one sysplex; configuring more than one MAS in a sysplex is not recommended. In a sysplex, the sysplex timer synchronizes the time-of-day (TOD) clocks. The MASDEF SYNCTOL= parameter value is not used for clock tolerance synchronization. However, JES2 considers the SYNCTOL= value when determining if other members are active. JES2 examines the time other systems last accessed the checkpoint and determines if the time is within the SYNCTOL value of the current time. JES2 considers systems within SYNCTOL tolerance as active and attempts to detect if a system is:
  • the only (first) member active in the sysplex
  • active outside the sysplex
  • within the sysplex that was started with an incorrect XCF group name.
In the second two cases, JES2 determines if such a system's access to the checkpoint was recent (within the SYNCTOL= value), If either case is detected, JES2 cannot determine if the current (initializing) member is correctly configured or if the current member is configured in error. To protect the MAS, JES2 might fail the start or request operator intervention to determine whether JES2 should continue to initialize. In this way, the MAS is protected from access by an improperly configured member.

Initially, one member of the MAS must do a cold start, other members are added, deleted, or changed on a warm start. As each new member is warm started and initialized, all other members of the MAS are made aware of its existence because each member shares the same spool volumes and checkpoint data sets and communicates through the JES common coupling services (JES XCF).

The individual members (up to 32) of a multi-access spool configuration are specified on the MEMBER initialization statement by the NAME= parameter. Initially, you can define all 32 members of the MAS by defining MEMBER(1) NAME= through MEMBER(32) NAME=. As you require these members within your configuration you can make them available and active by specifying their MASDEF OWNMEMB= parameter when you start each of the systems.Or you can define each individually at any time on a warm start. On a warm start, members can be added, deleted, or their names can be changed. The following series of examples is provided to illustrate the control you have over your MAS complex with the MEMBER and MASDEF statements. Systematically, the examples are provided to show member definition ( A  and  B ), addition ( C ), change ( D ), and deletion ( E ).

 A  Defining multi-access spool configuration members:

    MEMBER(1) NAME=SY01           /*   Define member SY01 */
    MEMBER(2) NAME=SY02           /*   Define member SY02 */
    MEMBER(3) NAME=SY03           /*   Define member SY03 */
    MEMBER(4) NAME=SY04           /*   Define member SY04 */
    MEMBER(5) NAME=SY05           /*   Define member SY05 */
    MEMBER(6) NAME=SY06           /*   Define member SY06 */
    MEMBER(7) NAME=SY07           /*   Define member SY07 */
    MEMBER(8) NAME=SY08           /*   Define member SY08 */
            .
            .
            .
    MEMBER(32) NAME=SY32          /*   Define member SY32 */
    MASDEF OWNMEMB=SY01           /*   Define own member  */

In example  A , member MEMBER(1) NAME=SY01, defines the first member of a multi-access spool configuration. Each member has been assigned a member name (SY01 through SY32, respectively). If you have defined all 32 possible members to your multi-access spool configuration with MEMBER statements, all available slots in the member ID table will be allotted. You must activate each member by adding that member's name on the OWNMEMB= parameter of its MASDEF statement or the member will not be able to perform any work. When an OWNMEMB= parameter was added to example  A , only MEMBER(1) was assigned at that time. Therefore, as you start each new member in your MAS, you will need to provide an OWNMEMB= parameter for that member within its initialization stream.

If the OWNMEMB= parameter was not specified, JES2 uses the SMF ID as the default for the OWNMEMB value; JES2 provides a message to inform you that the name will be added. JES2 determines the member number by scanning the MEMBER initialization statements for the OWNMEMB name. If the name is not found, JES2 assigns OWNMEMB to the first available slot in the member ID table.

In the example above, if the OWNMEMB= parameter had not been coded and allowed to default, JES2 would have not found an available member (all slots were allotted in the member ID table) with which to define your member.

You can also use the $D MEMBER command to verify the status of individual parameters. Two members cannot specify the same OWNMEMB= parameter; the second member ends abnormally. When defining a member, IBM suggests that you explicitly code an OWNMEMB= parameter in the initialization stream of each multi-access spool member.

Following the IPL for the member defined in example  A , only MEMBER(1) is active, MEMBER(2) through MEMBER(32) are defined but inactive.

Alternately, you can define a single-member MAS with the following initialization statements. (These same statements can be repeated for each member of the MAS, as you typically repeat all other initialization stream statements and modify them to meet the needs of the particular member. You must, of course, update the MEMBER number and the corresponding name as shown in example  C .)

 B  Activate the first member of a JES2 MAS complex:

    MEMBER(1) NAME=SY01          /*  Define SY01           */
    MASDEF OWNMEMB=SY01,         /*  Define SMF ID for SY01*/
            .                    /*  Further define        */
            .                    /*     member SY01        */
            .                    /*     parameters         */

By adding the MASDEF initialization statement with the OWNMEMB= parameter, you have assigned a member name and made that one member active. Other parameter specifications should, of course, be added to this statement to further define the member. (See the MASDEF statement description in z/OS JES2 Initialization and Tuning Reference for a complete description of the other parameters.)

At this point, only MEMBER(1) is defined and active, all other members (MEMBER(2) - MEMBER(32) ) remain undefined.

To add a second and third member to this single-member MAS add the following initialization statements to their separate initialization streams.

 C  Add a second and third member to this single-member MAS:

INITIALIZATION STREAM FOR MEMBER SY02:

             .
             .
             .
    MEMBER(2)  NAME=SY02          /*  Define SY02           */
    MASDEF  OWNMEMB=SY02,         /*  Define SMF ID FOR SY02*/
             .                    /*  Further define        */
             .                    /*     member SY02        */
             .                    /*     parameters         */

INITIALIZATION STREAM FOR MEMBER SY03:

             .
             .
             .
    MEMBER(3)  NAME=SY03          /*  Define SY03           */
    MASDEF  OWNMEMB=SY03,         /*  Define SMF ID FOR SY03*/
             .                    /*  Further define        */
             .                    /*     member SY03        */
             .                    /*     parameters         */

MEMBER(2) and MEMBER(3) are defined and added as the second and third members of the MAS by specification within their own initialization streams. All other members (MEMBER(4) - MEMBER(32) ) remain undefined.

If you need to redefine a member's name this can be done just by adding the redefined statement, for example:

 D  Redefine a member's name:

    MEMBER(3) NAME=MEM3           /*  Change MEMBER(3) from */
    MASDEF OWNMEMB=MEM3,          /*   member SY03 to MEM3  */
             .
             .
 

You can only redefine a member when that member is inactive. If you attempt to change an active member, JES2 responds with $HASP876 MEMBER memname IS ACTIVE, CHANGE IGNORED.

Because JES2 keeps a copy of the multi-access spool complex configuration in the checkpoint, when you want to delete a member from your multi-access spool complex you must define a null member (see the following example); you cannot delete the member by just omitting the member on a new MEMBER statement.

 E  Deleting a multi-access spool member:

    MEMBER(1) NAME=           /*  Delete Member SY01       */
    MEMBER(2) NAME=SY02       /*  Member SY02 still active */
    MEMBER(3) NAME=MEM3       /*  Member MEM3 still active */
               .
               .
               .

As a result of the initialization statement above, MEMBER(1) (defined as SY01) is deleted from the multi-access spool complex. Note that SY01 must be inactive. JES2 performs restart processing for SY01 to allow work on the deleted member to be eligible for restart on other members in the complex. MEMBER(2) - MEMBER(3) (SY02 and MEM3) remain defined and active. MEMBER(1) is now undefined, and MEMBER(4) - MEMBER(32) remain undefined.

Similarly, you cannot change the MEMBERs in a MAS by just changing the name on the MEMBER statement and performing a warm start. This results in JES2 issuing message $HASP435 MEMBER TABLE PARAMETER ERROR, because the member names you specified already exist in the checkpoint copy.

In order to reassign member names to different processors in a multi-access spool complex, you must:
  1. Change the names to temporary identifiers
  2. Stop JES2 on all members in the multi-access spool complex
  3. Perform an all-member warm start
  4. Change the temporary identifies to the names you want
  5. Perform another all-member warm start.
For example, a 3-member multi-access spool complex has defined:
  • MEMBER(1) NAME=A
  • MEMBER(2) NAME=B
  • MEMBER(3) NAME=C
The installation now wants to change the configuration to:
  • MEMBER(1) NAME=B
  • MEMBER(2) NAME=C
  • MEMBER(3) NAME=A
Figure 1 shows an example of the steps above.
Figure 1. Reassigning Member Identifiers to Different Processors
    MEMBER(1) NAME=A        /*  ORIGINAL CONFIGURATION */
    MEMBER(2) NAME=B
    MEMBER(3) NAME=C
             .
             .
             .

    Step 1:
    MEMBER(1) NAME=X        /*  DEFINE TEMPORARY      */
    MEMBER(2) NAME=Y        /*  MEMBER IDENTIFIERS    */
    MEMBER(3) NAME=Z        /*  AND THEN WARM START   */
             .
             .
             .

    Step 2:
    $PJES2 on all members in MAS.

    Step 3:
         Perform an all-member warm start with the above configuration.

    Step 4:
         When JES2 starts redefine with the following statements:

    MEMBER(1) NAME=B        /*  NEW CONFIGURATION     */
    MEMBER(2) NAME=C
    MEMBER(3) NAME=A
             .
             .
             .

    Step 5:
         Perform an all-member warm start with the above configuration.

Go to the previous page Go to the next page




Copyright IBM Corporation 1990, 2014