JCL Operator Messages are mechanisms for jobs to communicate with system operators, request actions, provide status information, or interact with automated operations tools. These messages enable critical human-machine interaction in mainframe batch processing environments.
Key Benefit:
Operator messages facilitate human intervention, decision-making, and oversight for batch jobs, enabling operators to respond to resource requests, approve actions, and monitor critical job status in real-time.
There are several mechanisms for generating operator messages in JCL:
Operator messages can be directed to various destinations:
Destination | Description | How to Specify |
---|---|---|
System Console | Primary operator console or console pool | Default for WTO and WTOR messages |
Specific Console | A particular operator console by ID | ROUTCDE parameter in WTO |
Console Group | Functional group of consoles (e.g., tape management) | ROUTCDE parameter in WTO |
TSO User | Specific user's terminal session | NOTIFY parameter on JOB statement |
System Log (SYSLOG) | System message log | Most console messages are recorded here |
Automation Tool | Operations automation software (e.g., IBM NetView, CA OPS/MVS) | Special message formats or descriptors |
12//MYJOB JOB (ACCT),'MY JOB', // NOTIFY=userid
The NOTIFY parameter sends a message to the specified user when the job completes.
1/*MESSAGE 'This is a message for the operator'
The /*MESSAGE statement sends a message to the operator console when the job is submitted.
1//*OPERATOR 'This is a message for the operator'
The //*OPERATOR statement sends a message to the operator console when the job is interpreted by JES3.
1WTOR 'ENTER Y TO CONTINUE, N TO ABORT',REPLY,1,ECB
This example from an assembler program requests a reply from the operator.
Messages can be classified by various attributes to control their appearance and handling:
Attribute | Options | Purpose |
---|---|---|
Descriptor Codes | 1-16 | Define the message type and importance (e.g., system failure, immediate action required) |
Routing Codes | 1-128 | Determine which consoles receive the message |
Message Level | Informational, Warning, Error, Critical | Indicates the severity of the situation |
Highlighting | Normal, Intensified, Blinking | Controls the visual prominence of the message |
Color | White, Red, Green, Blue, etc. | Visually categorizes messages |
Message ID | Description | Typical Response |
---|---|---|
IEF233A | Dataset not found, job is waiting | Provide dataset or cancel job |
IEC501A | Mount tape request | Mount tape or redirect to different drive |
IEF213I | Job step completed | No action required (informational) |
IEF450I | Job abended | Investigate cause of failure |
IEA995I | Symptom dump for abend | Examine for problem diagnosis |
IEF404I | Job ended | No action required (informational) |
Operators can issue commands to control job execution. These aren't JCL-generated messages but are the primary way operators respond to jobs:
Command | Function | Example |
---|---|---|
$C | Cancel a job | $C J123 |
$P | Stop a job after current step completes | $P J123 |
$A | Release a held job | $A J123 |
$H | Hold a job | $H J123 |
$D | Display job information | $D J123 |
$R | Respond to a WTOR message | $R 123,YES |
123//BACKUP JOB (ACCT),'DATABASE BACKUP', // NOTIFY=DBADMIN, // CLASS=A,MSGLEVEL=(1,1)
This example sends a job completion notification to the DBADMIN user.
12345678//TAPEJOB JOB (ACCT),'MONTHLY ARCHIVE',CLASS=A /*MESSAGE 'TAPEJOB REQUIRES SCRATCH TAPE - PLEASE MOUNT WHEN REQUESTED' //STEP1 EXEC PGM=BACKUP //TAPE DD DSN=MONTHLY.ARCHIVE, // UNIT=TAPE, // VOL=SER=SCRTCH, // DISP=(NEW,KEEP) //INPUT DD DSN=MONTHLY.DATA,DISP=SHR
This example sends instructions to the operator about tape requirements when the job is submitted.
123456//BIGPROC JOB (ACCT),'MONTHLY PROCESSING', // CLASS=A,TYPRUN=HOLD //*OPERATOR 'BIGPROC REQUIRES 4 HOURS CPU TIME - RELEASE WHEN RESOURCES AVAILABLE' //STEP1 EXEC PGM=MONTHEND //SYSOUT DD SYSOUT=* //INPUT DD DSN=MONTHLY.DATA,DISP=SHR
This example holds the job upon submission and informs the operator to release it when resources are available.
12345//UPDATE JOB (ACCT),'DATABASE UPDATE',CLASS=A /*MESSAGE 'UPDATE JOB WILL REQUIRE OPERATOR CONFIRMATION BEFORE CHANGES' //STEP1 EXEC PGM=DBUPDATE,PARM='CONFIRM=YES' //SYSOUT DD SYSOUT=* //DBDATA DD DSN=PROD.DATABASE,DISP=OLD
This example prepares the operator for an interactive program that will require confirmation before proceeding.
Modern mainframe environments often use automation tools to handle operator messages programmatically:
1/*MESSAGE 'AUTO:TAPEJOB:MOUNT:ARCHIVE001'
This example includes special formatting that an automation tool might parse to automatically handle a tape mount request.
Issue | Possible Causes | Solutions |
---|---|---|
Message not appearing | Route code issue or suppressed by system settings |
|
NOTIFY message not received | User not logged on or messaging disabled |
|
Job waiting indefinitely | Operator missed WTOR message |
|
Message timing issues | JES2 vs JES3 timing differences |
|
There are important differences in operator message handling between JES2 and JES3:
Feature | JES2 | JES3 |
---|---|---|
Message statement | /*MESSAGE | //*OPERATOR |
Message timing | At job submission | During JES3 interpretation phase |
Console integration | Standard MVS console interface | Enhanced JES3 console capabilities |
Operator commands | $-prefix commands | *-prefix commands |
Note:
With z/OS 2.5, JES3 is being phased out in favor of JES2, making JES2-specific behaviors the standard moving forward.