IBM Mainframe Forum Index
 
Log In
 
IBM Mainframe Forum Index Mainframe: Search IBM Mainframe Forum: FAQ Register
 

How to use IEBUPDATE / IEBUPDTE


IBM Mainframe Forums -> COBOL Programming
Post new topic   Reply to topic
View previous topic :: View next topic  
Author Message
Jeya Srinivasan

New User


Joined: 29 Oct 2003
Posts: 3

PostPosted: Wed Oct 29, 2003 3:16 pm
Reply with quote

I'm a fresher in mainframes. Can U explain me in detail about IEBUPDATE?its concept and usage with an example code?
Back to top
View user's profile Send private message
mdtendulkar

Active User


Joined: 29 Jul 2003
Posts: 237
Location: USA

PostPosted: Wed Oct 29, 2003 10:56 pm
Reply with quote

Hello Jeya Srinivasan,

You can use IEBUPDTE to create or modify sequential or partitioned data sets or PDSEs. However, the program can be used only with data sets containing fixed-length records of no more than 80 bytes. (It is used primarily for updating procedure, source, and macro libraries; those containing JCL, for example.)

IEBUPDTE can be used to:

1) Incorporate IBM or your source language modifications into sequential or partitioned data sets, or PDSEs
2) Create and update data set libraries
3) Modify existing sequential data sets or members of partitioned data sets or PDSEs
4) Change the organization of a data set from sequential to partitioned or PDSE, or the reverse. You can also use your own exit routines to process header and trailer labels.


Take a look at the following link for more details.

Code:
http://ranch.state.nd.us/pdf/pdf/dgt1u111.pdf



Due to the invention of ISPF PDF Editor, IEBUPDTE is rarely used nowadays


Hope this helps,

Regards

Mayuresh Tendulkar
Back to top
View user's profile Send private message
abdul

EXPERT


Joined: 28 Jul 2003
Posts: 23
Location: Bangalore,India

PostPosted: Thu Oct 30, 2003 9:01 am
Reply with quote

Hi,
Here are more details.........


What is IEBUPDTE?

? IEBUPDTE is used to create or modify sequential or Partitioned Data Sets
? IEBUPDTE can be used to change the organization of a data set from sequential to partitioned or vice versa
? IEBUPDTE can be used only with the data sets containing fixed length records of no more than 80 bytes.

Inputs to IEBUPDTE

? IEBUPDTE uses two sources of input which are
? an input data set containing the source data to be modified
? Input Data set can be either Sequential or PDS
? a control data set containing the statements controlling IEBUPDTE's manipulation of the input data set

Outputs of IEBUPDTE

? IEBUPDTE creates two forms of output which are
? an output data set which is the result of the manipulations made to the input data set
? O/P Data Set can be seq or PDS
? It can be New (Created) or Old (Modified)
? a print data set containing a log of the modifications, error messages and control statements used in the job step

Sample JCL

Code:
//JS10   EXEC PGM=IEBUPDTE,
//   REGION=1024K,PARM='NEW|MOD'
//SYSPRINT   DD   SYSOUT=*
//SYSUT1   DD   DSN=...,DISP=...
//SYSUT2   DD   DSN=...,DISP=...
//SYSIN   DD   *
control statements...
/*


Control Statements

? Function statement
? Data statements
? ALIAS statement
? ENDUP statement
? Modifying statements
? Control statements are continued by placing a non blank character in column 72, and continuing the statement beginning in column 16 on the next statement
? All IEBUPDTE control statements (except data statements) begin with a "./" in columns 1 and 2.


Function statement

? The function statement is used to begin the IEBUPDTE operation
? At least one function statement is necessary for each member or data set being processed
? The function keywords should be preceded by and followed by at least one blank
? Valid functions are :
? ADD specifies that a new member or data set is to be created
? CHANGE specifies that an existing member or data set is to be updated
? REPL specifies that a member or data set is to be replaced in its entirety
? REPRO specifies that a member or data set is to be copied without modification to the output
dataset

Function statement format

./{label} {ADD | CHANGE | REPL | REPRO}
{LIST=ALL}
{,SEQFLD=ddl }
{,NEW=PO | PS}
{,MEMBER=cccccccc}
{,COLUMN=nn | 1}
{,UPDATE=INPLACE}
{,NAME=cccccccc}
{,LEVEL=hh}
{,SOURCE=x}
{,SSI=hhhhhhhh}

Detail statement

? The detail statement is used in conjunction with a function statement to provide additional information
? Valid detail keywords are:
? NUMBER specifies a new sequence numbering scheme
? DELETE specifies the logical records that are to be removed from the member or data set

Detail Statement format

./{label} {NUMBER | DELETE}
{SEQ1=cccccccc | ALL}
{,SEQ2=cccccccc}
{,NEW1=cccccccc}
{,INCR=cccccccc}
{,INSERT=YES}



Data statement

? The data statement is used to supply the logical records that are used as replacement statements or new data to be merged into the output data set
? When used with an ADD or REPL function, a data statement contains the new data to be placed in the output dataset
? When used with a CHANGE function, a data statement contains the new data or the data which replaces existing logical records in the input data set
? The data statement does not have a fixed syntax.
? Each logical record begins in column 1 and must contain sequence numbers
? The sequence numbers must be in the same relative position in the data statement as in the existing logical records
? The sequence numbers are assumed to be in columns 73 though 80 until otherwise specified in a SEQFLD parameter

Alias statement

? The ALIAS statement is used to create or to retain existing alias in an output data set directory
? Up to 16 aliases can be assigned to a single member
? This format of the ALIAS statement is as follows:
./{name} ALIAS NAME=cccccccc
where NAME=cccccccc specifies the name of an alias for this member

Endup Statement

? The ENDUP statement indicates the end of the utility control statements
? This format of the ENDUP statement is as follows:
./{label} ENDUP


Example 1

Place two procedures in SYS1.PROCLIB

Code:
//UPDATE   JOB  ...
//STEP1   EXEC   PGM=IEBUPDTE,PARM=MOD
//SYSPRINT   DD   SYSOUT=A
//SYSUT1   DD   DSNAME=SYS1.PROCLIB,DISP=OLD
//SYSUT2    DD   DSNAME=SYS1.PROCLIB,DISP=OLD
//SYSIN   DD   DATA
//  ADD   LIST=ALL,NAME=ERASE,LEVEL=01,SOURCE=0
./  NUMBER   NEW1=10,INCR=10
//*
//ERASE   EXEC   PGM=IEBUPDTE
//DD1   DD   UNIT=disk,DISP=(OLD,KEEP),VOL=SER=111111
//SYSPRINT   DD   SYSOUT=A
.//  REPL   LIST=ALL,NAME=LISTPROC
./  NUMBER   NEW1=10,INCR=10
/*
//LIST   EXEC   PGM=IEBGENER
//SYSPRINT   DD   SYSOUT=A
//SYSUT1   DD   DSN=SYS1.PROCLIB(&MEMBER),DISP=SHR
//SYSUT2   DD   SYSOUT=A,DCB=(RECFM=F,BLKSIZE=80)


Example 2

CREATE A THREE MEMBER LIBRARY

Code:
//UPDATE   JOB  ...
/STEP1   EXEC   PGM=IEBUPDTE,PARM=NEW
//SYSPRINT   DD   SYSOUT=A
//SYSUT2   DD   DSN=OUTLIB,UNIT=disk,
//   DISP=(NEW,KEEP),VOL=SER=111112,SPACE=(TRK,(50,,10)),
//   DCB=(RECFM=F,LRECL=80,BLKSIZE=80)
//SYSIN   DD   DATA
./ ADD   NAME=MEMB1,LEVEL=00,SOURCE=0,LIST=ALL
(Data statements, sequence numbers in columns 73 through 80)
Cont....
./ ADD   NAME=MEMB2,LEVEL=00,SOURCE=0,LIST=ALL
(Data statements, sequence numbers in columns 73 through 80)
 ./ ADD   NAME=MEMB3,LEVEL=00,SOURCE=0,LIST=ALL
(Data statements, sequence numbers in columns 73 through 80)
./ ENDUP
/*



Example 3

Create new library using SYS1.MACLIB as a source
Code:
//UPDATE   JOB  ...
//STEP1   EXEC   PGM=IEBUPDTE,PARM=MOD
//SYSPRINT   DD   SYSOUT=A
//SYSUT1   DD     DSN=SYS1.MACLIB,
//   DISP=SHR,UNIT=disk
//SYSUT2   DD   DSN=<New Mac Library>,
//   VOL=SER=111112,DISP=(NEW,KEEP),
//   SPACE=(TRK,(100,,10)),UNIT=DISK
//   DCB=(RECFM=F,LRECL=80,BLKSIZE=80)
//SYSIN   DD   DATA
// REPRO  NAME=ATTACH,LEVEL=00,SOURCE=1,LIST=ALL
./ REPRO  NAME=DETACH,LEVEL=00,SOURCE=1,LIST=ALL
./ ADD      NAME=EXIT,LEVEL=00,SOURCE=0,LIST=ALL
./ NUMBER   NEW1=10,INCR=100
(Data records for EXIT member)
./ ENDUP
/*


Example 4

Update a library member
Code:

//UPDATE   JOB  ...
//STEP1   EXEC   PGM=IEBUPDTE,PARM=MOD
//SYSPRINT   DD   SYSOUT=A
//SYSUT1   DD   DSNAME=PDS,UNIT=disk,
//   DISP=(OLD,KEEP),VOLUME=SER=111112
//SYSIN   DD   *
./ CHANGE  NAME=MODMEMB,LIST=ALL,      X
./ UPDATE=INPLACE
./ NUMBER SEQ1=ALL,NEW1=10,INCR=5
(Data statement 1, sequence number 00000020)
(Data statement 2, sequence number 00000035)
/*




Example 5

Create new master data set and delete selected records
Code:
//UPDATE   JOB  ...
//STEP1   EXEC   PGM=IEBUPDTE,PARM=MOD
//SYSPRINT   DD   SYSOUT=A
/SYSUT1      DD     DSN=PARTDS,UNIT=disk,DISP=(OLD,KEEP),
//   VOLUME=SER=111112
/SYSUT2   DD    DSN=SEQDS,UNIT=tape,LABEL=(2,SL),
//   DISP=(,KEEP),VOLUME=SER=001234,
//   DCB=(RECFM=FB,LRECL=80,BLKSIZE=2000)
//SYSIN   DD   *
./ CHANGE   NEW=PS,NAME=OLDMEMB1
(Data statement 1, sequence number 00000123)
./  DELETE   SEQ1=223,SEQ2=246
(Data statement 2, sequence number 00000224)
/*


Example 6

Create and update a member library

Code:
//UPDATE   JOB  ...
//STEP1   EXEC   PGM=IEBUPDTE,PARM=MOD
//SYSPRINT   DD   SYSOUT=A
//SYSUT1   DD   DSN=OLDSEQDS,UNIT=tape,
//   DISP=(OLD,KEEP),VOLUME=SER=001234
//SYSUT2   DD   DSN=NEWPART,UNIT=disk,
//   DISP=(,KEEP),VOLUME=SER=111112,
//   SPACE=(TRK,(10,5,5)),
//   DCB=(RECFM=FB,LRECL=80,BLKSIZE=80)
//SYSIN   DD   *
// CHANGE   NEW=PO,MEMBER=PARMEM1,LEVEL=01,       X
./ SEQFLD=605,COLUMN=40,SOURCE=0
(Data statement 1, sequence number 00020)
./ DELETE   SEQ1=220,SEQ2=250
(Data statement 2, sequence number 00230)
(Data statement 3, sequence number 00260)
./ ALIAS   NAME=MEMB1
/*



Example 7

Re-number and insert records into a library MEMBER

Code:
//UPDATE   JOB 
//STEP1   EXEC   PGM=IEBUPDTE,PARM=MOD
//SYSPRINT    DD   SYSOUT=A
//SYSUT1   DD   DSN=PDS,UNIT=disk,DISP=(OLD,KEEP),
//   VOLUME=SER=111112
//SYSUT2   DD   DSN=PDS,UNIT=disk,DISP=(OLD,KEEP),
//   VOLUME=SER=111112
//SYSIN   DD   *
./ CHANGE  NAME=RENUM,LIST=ALL,LEVL=01,      X
./ SOURCE=0,SEQFLD=765
./ NUMBER SEQ1=AA015,NEW1=AA020,INCR=5,INSERT=YES
(Data statement 1)
(Data statement 2)
(Data statement 3)
./  NUMBER SEQ1=AA030,INSERT=YES
(Data statement 4)
(Data statement 5)
(Data statement 6)
(Data statement 7, sequence number AA035)
/*


Example 8

CREATE A NEW GENERATION DATA SET

Code:
//NEWGDS   JOB  ...
//STEP1   EXEC    PGM=IEBUPDTE,PARM=MOD
//SYSPRINT   DD   SYSOUT=A
//SYSUT1   DD   DSN=A.B.C(0),DISP=OLD
//SYSUT2   DD   DSN=A.B.C(+1),DISP=(,CATLG),
//   UNIT=disk,VOLUME=SER=111111,
//   SPACE=(TRK,(100,10,10)),
//   DCB=(RECFM=FB,LRECL=80,BLKSIZE=800)
//SYSIN   DD   DATA
//  REPRO   NAME=MEM1,LEVEL=00,SOURCE=0,LIST=ALL
./  REPRO   NAME=MEM2,LEVEL=00,SOURCE=0,LIST=ALL
./  REPRO   NAME=MEM3,LEVEL=00,SOURCE=0,LIST=ALL
./  ADD   NAME=MEM4,LEVEL=00,SOURCE=0,LIST=ALL
./  NUMBER   NEW1=10,INCR=5
(Data records comprising MEM4)
./  ENDUP
/*
Back to top
View user's profile Send private message
mmwife

Super Moderator


Joined: 30 May 2003
Posts: 1592

PostPosted: Sun Nov 02, 2003 1:08 am
Reply with quote

Hi Jeya,

Since you're a self admitted mainframe fresher, here's a fact you should know about "IEBUPDATE". It's really IEBUPDTE and it's pronounced "iebupditty'. icon_smile.gif

Regards, Jack.
Back to top
View user's profile Send private message
View previous topic :: :: View next topic  
Post new topic   Reply to topic View Bookmarks
All times are GMT + 6 Hours
Forum Index -> COBOL Programming

 


Similar Topics
Topic Forum Replies
No new posts IEBUPDTE failed to update a record in... JCL & VSAM 19
No new posts How to create a PDS using IEBUPDTE? JCL & VSAM 5
Search our Forums:

Back to Top