Wednesday, June 18, 2014

JCL Utilities IEFBR14

IEFBR14

The first three letters of the utilities has specific usage like "IEF" for programs produced by the job management group, "IEB" for data set utility programs, "IEF" for system utility programs, and "IEW" for program-linkage and -loading.

And the next portion of the program name, for example "BR14" means "branch to register 14", IEBUPDTE was the dataset utility (IEB) that applied updates (UPDTE) to source code files, and IEHINITT was the system utility (IEH) that initialized (INT) magnetic tape labels (T).

IEFBR14 is a very popular utility in IBM mainframes. Even though it is very popular, the service provided by this utility is "nothing".(i.e) It is a "do nothing" utility. This utility runs in all the IBM environments derived from OS/360, including z/OS.

This utility module performs two simple functions:

1.  It loads register 15 with a value of 0
2.  It then does a branch to the address in register 14

Since register 14 is the standard IBM program linkage "return address" register, this immediately returns control to the calling program.  And since register 15 is the standard IBM program linkage "return code" register, the return code passed back to the calling program is always 0.

If the calling program is an application program which calls IEFBR14 according to standard IBM program linkage conventions, then IEFBR14 acts as a subroutine which immediately returns to the calling program and always passes back a return code of 0.  In other words, it functions as a subroutine "stub" which can be useful in some testing situations.


If IEFBR14 is executed as a standalone batch program; i.e.,

//JS10   EXEC PGM=IEFBR14

then it provides a convenient way to insert a job step into a given job which is guaranteed to set a return code of zero.  This job step can also be used to catalog or delete specified data sets from within a batch job.

The following JCL for the job named MUKESH1 accomplishes several tasks, even though IEFBR14 does nothing but return 0:

//MUKESH1 JOB 1,LEO,MSGCLASS=X
//EXEC1       EXEC PGM=IEFBR14//NEWDS DD DSN=MUKESH.LIB.CNTL,DISP=(NEW,CATLG),VOL=SER=WORK02,//         UNIT=3390,SPACE=(CYL,(3,1,25)
//OLDDS DD DSN=MUKESH.OLD.DATA,DISP=(OLD,DELETE)

The z/OS job scheduler to check your JCL statements for syntax errors.
The initiator allocates the new data set defined by NEWDS (MUKESH.LIB.CNTL) and keeps the data set when the job ends.
The initiator also deletes an old data set defined by OLDDS (MUKESH.OLD.DATA) at the end of the job.

No comments:

Post a Comment