JES procs and initialization decks
This chapter describes the differences between the JES3 and JES2 initialization statements. As you would expect, many of the concepts are similar. However, the way that they are defined to the respective JES is very likely to be different. Also, there are some functions or resources that exist in JES3 that do not exist in JES2. Studying your JES3 initialization statements and mapping them to their JES2 equivalent (where possible) provides you with a valuable insight to how many changes you will need to make if you want to migrate from JES3 to JES2.
While they are a lot simpler than the initialization statements, the started procedures for JES2 and JES3 are also described.
7.1 Introduction
A JES3 JESplex consists of a Global system and zero or more Local systems. The Global system is the first system to perform a cold start or warm start following a JESplex-wide IPL. During a cold start or warm start, the Global system reads the initialization deck. When initialization of the Global is complete, any other systems in the JESplex might start JES3 as locals. JES3 on a Local communicates with the Global through XCF. A Local system never accesses the JES3 initialization deck. It obtains the information that it needs about the configuration by reading the checkpoint data set. It uses the information in the checkpoint to initiate communication with the Global system.
The JES3 Global function can be moved to a Local during either a planned or unplanned outage by performing a Dynamic System Interchange (DSI). The initialization deck is not read during a DSI. Instead, JES3 uses its checkpoint data set to bring the JESplex back to normal function.
A JES2 JESplex consists of one or more systems. If there are multiple systems, they have a peer-to-peer relationship. All JES2 systems read the initialization deck during all starts. The amount of initialization deck processing that occurs during a JES2 start depends on the start type. See
Table 7-1 for more information.
JES2 does not have an equivalent function to DSI because each system in the JESplex can perform all JES2-related functions, so there is no concept of a master system.
7.2 Types of start
Both JES2 and JES3 have several varieties of startup. While a cold start is basically the same for both, the various warm start and hot starts have differences in processing of the initialization deck. This information was provided briefly in
2.2.3, “JES startup processing” on page 36, but we provide it here in
Table 7-1 in the context of discussing the initialization statement processing.
Table 7-1 JES start types
Type of start
|
JES3
|
JES2
|
Hot start
|
Performed:
•After orderly shutdown
•After a JES3 failure
•After an IPL
The initialization deck is not read during a normal hot start.
|
JES2 is being restarted after a $PJES2,ABEND or if JES2 abended. Requires that the JES2 subsystem being started was already active on that system.
If the system was IPLed, a warm start will be performed.
|
Hot start with analysis
|
Same as a hot start except that JES3 performs further job validation, allowing the operator to delete invalid jobs.
|
No JES2 equivalent.
|
Hot start with refresh
|
Reads initialization deck, but not all statements are processed.
A hot start with refresh lets you change many JES3 parameters without the disruption of a warm start.
|
Single member warm start.
|
Hot start with refresh and analysis
|
Combines the hot start with analysis and refresh.
|
No JES2 equivalent.
|
Warm start
|
Reads initialization deck
All statements are processed
A JES3 warm start requires that all systems in the JESplex are IPLed.
|
All-member warm start
JESplex restart of JES2 required.
|
Warm start with analysis
|
Reads initialization deck
JESplex IPL required
Removes and logs jobs with invalid control information.
|
No JES2 equivalent.
|
Warm start to replace a spool data set
|
Reads initialization deck
Allows replacement of a spool data set
JESplex IPL required.
|
No JES2 equivalent
JES2 supports dynamic addition and removal of Spool data sets.
|
Warm start with analysis to replace a spool data set
|
Reads initialization deck
Allows replacement of a spool data set.
JESplex IPL required
Removes and logs jobs with invalid control information.
|
No JES2 equivalent.
|
Cold start
|
All job data is lost
Reads initialization deck
All statements are processed
JESplex IPL required.
|
All job data is lost
JESplex IPL required.
|
Local start
|
Performed only on JES3 locals.
|
Quick start.
|
7.3 Initialization statements
Table 7-2 lists all current JES3 initialization statements and their JES2 equivalents, if they exist. Not every JES3 statement has a JES2 equivalent, and some JES3 parameters might require updates to several JES2 statements.
Note: A sample JES2 HASPARM template is supplied in SYS1.SHASSAMP member HSAIPARM.
|
Table 7-2 JES3 to JES2 Initialization statement mapping
JES3 statement
|
JES2 statement
|
ACCOUNT
|
No JES2 equivalent; optional for JES3
|
BADTRACK
|
BADTRACK
|
BUFFER
|
BUFDEF; SPOOLDEF
|
CIPARM
|
JOBCLASS
|
CLASS
|
JOBCLASS
|
COMMDEFN
|
LOGON(n)
|
COMMENT (*)
|
/* followed by */
|
COMPACT
|
COMPACT
|
CONSOLE
|
No JES2 equivalent
|
CONSTD
|
CONDEF
|
DEADLINE
|
No JES2 equivalent
|
DESTDEF
|
No JES2 equivalent
|
DEVICE
|
MEMBER statements for processors; LINE, PRT, PUN,RDR, OFFLOAD, RMT statements for devices
|
DYNALDSN
|
No JES2 equivalent
|
DYNALLOC
|
PROCLIB statements for proclibs only
|
ENDINISH
|
No JES2 equivalent
|
ENDJSAM
|
No JES2 equivalent
|
FORMAT
|
SPOOLDEF
|
FSSDEF
|
FSS
|
GROUP
|
INIT
|
HWSNAME
|
No JES2 equivalent
|
INCLUDE
|
INCLUDE
|
INTDEBUG
|
DEBUG
|
MAINPROC
|
MEMBER
|
MSGROUTE
|
No JES2 equivalent
|
NETSERV
|
NETSERV
|
NJECONS
|
No JES2 equivalent
|
NJERMT
|
NODE
|
OPTIONS
|
OUTDEF
|
OUTSERV
|
OUTDEF, PRINTDEF
|
RESCTLBK
|
No JES2 equivalent
|
RESDSN
|
No JES2 equivalent
|
RJPLINE
|
LINE
|
RJPTERM
|
RMT
|
RJPWS
|
RMT
|
SELECT
|
INIT; INITDEF
|
SETACC
|
No JES2 equivalent
|
SETNAME
|
No JES2 equivalent
|
SETPARAM
|
No JES2 equivalent
|
SETRES
|
SOCKET
|
SOCKTER
|
SOCKET
|
SPART
|
FENCE parameter for SPOOLDEF
|
STANDARDS
|
JOBCLASS, ESTBYTE, ESTIME, ESTLNCNT, ESTPAGE, ESTPUN
|
SYSID
|
No JES2 equivalent
|
SYSOUT
|
OUTCLASS
|
TRACK
|
SPOOLDEF
|
We suggest that you sit down with your JES3 initialization deck and a copy of z/OS JES3 Initialization and Tuning Reference, SA22-7550 and z/OS JES2 Initialization and Tuning Reference, SA22-7533 and identify how you will replace each JES3 statement when you migrate to JES2. It is not necessary to go to the level of detail of identifying spool data set names at this point (for example). However, this is a good time to identify any JES3 functions that you might be using that do not have a JES2 equivalent. An obvious example would be the HWSNAME statement that you use to control High Water Mark processing.
7.3.1 Dynamic changes
There are six ways to change JES2 initialization parms. From the easiest to the most disruptive, they are:
1. Operator command
2. Hot start
3. Quick start
4. Single-member warm start
5. All-member warm start
6. Cold start
Tables 9 - 83 in z/OS JES2 Initialization and Tuning Reference, SA22-7533 list the minimum action needed to modify each parameter in the initialization deck. The values of certain parameters can be increased with an operator command but require a cold start to decrease. If a parameter is increased dynamically using a JES2 command, the system programmer must update the initialization deck to match the new value. Refer to Chapter 3 in z/OS JES2 Initialization and Tuning Reference, SA22-7533 for the actions needed to decrease the value of a parameter.
Table 3 (“Initialization Statement Summary A through L”) and Table 4 (Initialization Statement Summary M through Z) in z/OS JES3 Initialization and Tuning Reference, SA22-7550 provide a list of all the JES3 initialization deck statements and the type of JES3 start that is required to change the statement.
7.3.2 Verifying the JES initialization deck
JES3 has an initialization deck checker program IATUTIS that allows the system programmer to verify that the deck has no errors before a scheduled restart. Installations that still have disk or tape DEVICE statements might use option 2.4 in the HCD ISPF panels to create members that will then be pointed to by the STG1CODE DD statement in the checker job. The initialization deck checker will then verify that the DEVICE statements agree with the devices in the HCD.
Example 7-1 shows sample JCL for initialization deck checking.
Example 7-1 Sample JCL for IATUTIS initialization deck checker
//INITCHK JOB 'ACCTINFO','NAME',MSGLEVEL=(1,1),
// MSGCLASS=R,...
//IATUTIS EXEC PGM=IATUTIS,PARM='P=1F1R'
//STEPLIB DD DSN=SYS1.SIATLIB,DISP=SHR
//JESABEND DD DUMMY
//JES3IN DD DSN=INIT.PARMLIB(JES3IN00),DISP=SHR
//JES3OUT DD SYSOUT=*
//STG1CODE DD DSN=INSTALL.JES3,DISP=SHR
//IATPLBST DD DSN=SYS1.PROCLIB,DISP=SHR
//
JES2 does not provide an initialization deck checker. However, you can set up a secondary JES2 (see z/OS JES2 Initialization and Tuning Guide, SA22-7532) and use that to validate the JES2 initialization statements if wanted. Errors in the initialization deck cause a $HASP469 message to be issued. The operator can reply with the correct parm, bypass the error, or terminate JES2.
7.4 JES procedures
The JES3 proc points to a single member of a PDS, which can be overridden by replying M=xx to the IAT3012 message. INCLUDE statements can be used in the initialization deck to separate groups of statements into separate PDS members if wanted.
The JES2 proc can also point to a single PDS member, or several data sets or members can be concatenated if you want to break up your JES2 parms into different members. For example, you might have one member that is common across the entire Multi-Access SPOOL (MAS), and a set of members that contain information that is specific to each system. Configurations with many NJE nodes often have a member set aside for just the NODE and CONNECT statements.
It is a common practice to code variables in the JES2 proc to allow overrides if there is a problem with the initialization deck or a PROCLIB because all the PROCLIBs for JES2 were traditionally defined in the JES2 PROC. JES3, alternatively, tended to have simpler procs because its PROCLIB concatenations were defined using DYNALLOC statements in the JES3 initialization deck. Refer to
1.2.2, “JES2 PROC JCL” on page 9 for a description of the current options for defining its PROCLIB and other data sets in the JES2 proc.
7.4.1 The JES3 procedure
Example 7-2 shows a JES3 procedure with all statements hardcoded.
Example 7-2 Typical JES3 procedure
//IEFPROC EXEC PGM=IATINTK,TIME=1440,PERFORM=255
//STEPLIB DD DISP=SHR,DSN=SYS1.SIATLIB
//CHKPNT DD DISP=SHR,DSN=SYS1.JES3.CHECKPT
//CHKPNT2 DD DISP=SHR,DSN=SYS1.JES3.CHECKPT2
//JES3IN DD DISP=SHR,DSN=SYS1.JES3.PARMLIB(JES3IN00)
The JES3IN DD statement on the JES3 procedure points to a single member of a PDS. The operator can select a different member by replying M=xx to the IAT3012 message. JES3 supports INCLUDE statements so the system programmer can break up the initialization deck into multiple members. This can be used, for example, to isolate statements that change frequently, such as DEVICE statements for printers or NJERMT statements, from the more critical parts of the deck.
JES3 supports the use of system symbols in its initialization statement, as does JES2. However, in JES3, the only system that reads the initialization statements is the Global, compared to JES2 where every system reads the initialization members. As a result, the use of system symbols in the initialization deck is probably less likely in a JES3 environment than in a JES2 one.
Other DD statements that can be included in the JES3 procedure are JES3JCT, JES3OUT, JES3SNAP, JESABEND, IATPLBxx, and JES3DRDS. However, these are typically defined in DYNALLOC statements within the initialization deck rather than in the JES3 proc. Using DYNALLOC allows the system to bypass missing data sets. If a data set referenced in the JES3 proc cannot be opened JES3 will fail with a JCL error.
Example 7-3 shows a series of DYNALLOC statements for PROCLIBs in the JES3 initialization deck.
Example 7-3 Sample JES3 DYNALLOC statements to define PROCLIBs
* DYNALLOCS FOR PROCLIBS
* PROCLIBS ARE ACCESSED THROUGH THE CATALOG UNLESS UNIT AND VOLSER ARE CODED
* PROCLIB ST FOR STANDARD JOBS
DYNALLOC,DDN=IATPLBST,DSN=SYS1.SY1.PROCLIB
DYNALLOC,DDN=IATPLBST,DSN=SYS1.PROCLIB
DYNALLOC,DDN=IATPLBST,DSN=SYS1.IBM.PROCLIB
* PROCLIB 01 FOR TSO LOGONS
DYNALLOC,DDN=IATPLB01,DSN=SYS1.LOGON.PROCLIB
DYNALLOC,DDN=IATPLB01,DSN=SYS1.PROCLIB
DYNALLOC,DDN=IATPLB01,DSN=SYS1.IBM.PROCLIB
* PROCLIB 02 FOR STARTED TASKS
DYNALLOC,DDN=IATPLB02,DSN=SYS1.STARTED.PROCLIB
* PROCLIB FI FOR FINANCIAL JOBS
DYNALLOC,DDN=IATPLBFI,DSN=USER.FINANCE.PROCLIB,UNIT=3390,VOLSER=FIN001
The PROCLIB concatenations can be specified in the STANDARDS statement. INTPROC=ST specifies the standard PROCLIB concatenation for jobs entered using the internal reader, STCPROC=02 specifies the concatenation for started task jobs, and TSOPROC=01 specifies the concatenation for TSO logons. Using the definitions shown in
Example 7-3 on page 105, jobs submitted by the finance users can use their dedicated PROCLIB by specifying PROC=FI on the //*MAIN JECL statement in their jobs.
7.4.2 Typical JES2 procedure
Example 7-4 shows a JES2 proc with some PROCLIBs defined using system symbols and some hardcoded.
Example 7-4 Typical JES2 procedure
//JES2 PROC M=JES2IN00,M1=JES2IN&SYSCLONE,
// PL=SYS1.JES2.PARMLIB,
// PROC00='SYS1.PROCLIB',PROC01='SYS1.IBM.PROCLIB'
//IEFPROC EXEC PGM=HASJES20,TIME=1440,DPRTY=(15,15)
//HASPLIST DD DDNAME=IEFRDER
//HASPPARM DD DSN=&PL(&M),DISP=SHR
// DD DSN=&PL(&M1),DISP=SHR
//PROC00 DD DSN=SYS1.&SYSNAME..PROCLIB,DISP=SHR
// DD DSN=&PROC00,DISP=SHR
// DD DSN=&PROC01,DISP=SHR
//PROC01 DD DSN=SYS1.LOGON.PROCLIB,DISP=SHR
// DD DSN=&PROC00,DISP=SHR
// DD DSN=&PROC01,DISP=SHR
//PROC02 DD DSN=SYS1.STARTED.PROCLIB,DISP=SHR
//PROC03 DD DSN=USER.FINANCE.PROCLIB,DISP=SHR,UNIT=3390,VOL=SER=FIN001
JES2 allows you to concatenate two or more members on the HASPPARM DD statement. You can also have INCLUDE statements in the initialization deck data sets. In
Example 7-4, member JES2IN00 contains common statements and member JES2INxx contains member-specific statements. Member-specific statements typically include devices such as channel-attached printers that can only be physically attached to one system.
System programmers must ensure all the data sets referenced in the JES2 proc are available or JES2 will fail with a JCL error.
In
Example 7-4, the default PROCLIB that a job will use is determined by its jobclass, based on the JOBCLASS statements in the JES2 initialization deck. There can be up to 99 PROCLIB concatenations. JOBCLASS(TSU) uses PROCLIBs concatenation 01 and JOBCLASS(STC) uses concatenation 02. Jobclasses A - Z and 0 - 9 would normally use concatenation 00. If a jobclass was dedicated to finance jobs, the corresponding JOBCLASS statement could specify PROCLIB=03, otherwise finance customers could specify PROCLIB=03 on the /*JOBPARM JECL statement in their jobs.
The recommended method is to dynamically define proclibs using PROCLIB statements in the initialization deck. Using dynamic proclibs allows JES2 to start even if a PROCLIB is missing or was mis-defined in the JES2 initialization statements. If a PROCLIB is not found during JES2 startup, a message can be issued giving the operator the opportunity to correct or bypass the error.
Example 7-5 shows PROCLIB definitions in the JES2 proc.
Example 7-5 Static JES2 PROCLIBs
//PROC00 DD DSN=SYS1.&SYSNAME..PROCLIB,DISP=SHR
// DD DSN=SYS1.PROCLIB,DISP=SHR
// DD DSN=SYS1.IBM.PROCLIB,DISP=SHR
//PROC01 DD DSN=SYS1.LOGON.PROCLIB,DISP=SHR
// DD DSN=SYS1.PROCLIB,DISP=SHR
// DD DSN=SYS1.IBM.PROCLIB,DISP=SHR
//PROC02 DD DSN=SYS1.STARTED.PROCLIB,DISP=SHR
//PROC03 DD DSN=USER.FIN.PROCLIB,DISP=SHR,UNIT=3390,VOL=SER=FIN001
Example 7-6 shows the same set of PROCLIBs being defined dynamic PROCLIB statements.
Example 7-6 Dynamic JES2 PROCLIBs
PROCLIB(PROC00) DD(1)=(DSN=SYS1.&SYSNAME..PROCLIB
DD(2)=(DSN=SYS1.PROCLIB)
DD(2)=(DSN=SYS1.IBM.PROCLIB)
PROCLIB(PROC01) DD(1)=(DSN=SYS1.LOGON.PROCLIB
DD(2)=(DSN=SYS1.PROCLIB)
DD(2)=(DSN=SYS1.IBM.PROCLIB)
PROCLIB(PROC02) DD(1)=(DSN=SYS1.STARTED.PROCLIB
PROCLIB(PROC04) DD(1)=(DSN=SYS1.FIN.PROCLIB
Dynamic proclibs can be added, modified, or removed using the $ADD PROCLIB, $T PROCLIB, or $DEL PROCLIB commands.
7.4.3 Other procedures
The following JES address spaces all start automatically at IPL time. No setup is needed. They shut down automatically when JES2 or JES3 terminates:
JESXCF Common to both JESs
JES2MON Started automatically at JES2 initialization
JES2AUX Auxiliary address space for JES2
JES3AUX Auxiliary address space for JES3
JES3DLOG Hardcopy log for JES3
If a JESplex uses TCP/IP to drive NJE connections, one or more network server address spaces are started. A JES2 network server is named jesxSnnn where jesx is the name of the owning JES2 address space and nnn is the subscript on the NETSERV(nnn) statement. For example, the first network server on a subsystem names JES2 would be JES2S001. A JES3 network server can have any name although a common name is JES3S001. A network server must be defined to the security product as a started task. IBM recommends using a common name pattern for network servers so that only one security profile is needed.
In addition, JES3 can have one or more CIFSS address spaces defined to offload some of the converter/interpreter workload. JES2 can process CI on any member of the JESplex and does not move this processing to a separate address space. In z/OS V2R1, JES2 likewise contains this function.
Both JESs can have one or more writer functional subsystems (FSSs) defined. These work the same way under both JES3 and JES2. An FSS can drive multiple printers. When a writer is called (JES3) or started (JES2) the system checks to see if the appropriate FSS is running. If it is not, the system starts it automatically. An FSS cannot be started with an operator command. The FSS terminates automatically when the last printer it is driving is shut down.
7.5 Automation considerations
JES3 startup issues WTORs to determine the start type, and select the initialization deck for a hot start with refresh, warm starts, or cold starts. JES2 can be started without operator interaction by specifying PARM=’WARM,NOREQ’ on the JES2 START command. The NOREQ parm relieves the operator from having to input $S to start processing. This is the equivalent of coding PARM=NOREQ on the EXEC statement of the JES3 procedure to relieve the operator of having to input *S JSS.
Any automation routines that deal with JES3 startup, shutdown, failures, or restarts will need to be changed to address JES2 messages and commands.
Many automation routines key on JES3 initialization message IAT3100. These must be changed to JES2 message $HASP492.