Portal | Manuals | References | Downloads | Info | Programs | JCLs | Master the Mainframes
IBM Mainframe Computers Forums Index
 
Register
 
IBM Mainframe Computers Forums Index Mainframe: Search IBM Mainframe Forum: FAQ Memberlist Usergroups Profile Log in to check your private messages Log in
 

 

Changing contents of members in a pds using Sort
Goto page 1, 2  Next
 
Post new topic   Reply to topic    IBMMAINFRAMES.com Support Forums -> JCL & VSAM
View previous topic :: :: View next topic  
Author Message
kovur

New User


Joined: 15 Nov 2007
Posts: 37
Location: India

PostPosted: Fri Jul 15, 2011 4:11 pm    Post subject: Changing contents of members in a pds using Sort
Reply with quote

Hi,

Is it possible to change contents of members of a pds using sort. I have the below requirement. I have a parm library in which I have some ftp parms. I would like to change the contents of the parms without going to each and every parm.

I have parms in the library with the below format:
Code:

SERVER.OLD
USERNAME1             
PASSWORD1             
cd  /PATH1/OLD


I would like to use SORT utility to check the members of the library and if it finds the parm containing this data, it should change the data as below:
Code:

SERVER.NEW
USERNAME2             
PASSWORD2             
cd  /PATH2/NEW


Also I have some parms with tha below data:
Code:

REXEC -l username1 -p password1 server.old +                   
/path1/old/script/ascrip.sh /path1/old/abc/afile


I would like to change the data as below:

Code:

REXEC -l username2 -p password2 server.new +                   
/path2/new/script/ascrip.sh /path2/new/def/afile


Please let me know if this can be done thru SORT. If not please suggest any method of doing it.

Thanks,
Manoj
Back to top
View user's profile Send private message

Bill Woodger

DFSORT Moderator


Joined: 09 Mar 2011
Posts: 7228

PostPosted: Fri Jul 15, 2011 4:20 pm    Post subject: Reply to: Changing contents of members in a pds using Sort
Reply with quote

Be careful doing batch updates to a PDS. If you have more than one job updating the PDS at the same time, you have the potential to screw up the PDS. "More than one job" can include a TSO session. I'd suggest DISP=OLD for your PDS, and remember that if the jobs all sit there in the input queue, someone has the file in TSO.
Back to top
View user's profile Send private message
vasanthz

Global Moderator


Joined: 28 Aug 2007
Posts: 1445
Location: Azeroth

PostPosted: Fri Jul 15, 2011 4:25 pm    Post subject:
Reply with quote

Hello,
You could try the below job to perform find and replace in all members of a PDS.
Code:
//UPDAT1 EXEC PGM=IPOUPDTE,                       
// PARM='UPDATE'                                   
//*PARM='CHECK'                                   
//@LIB1 DD DISP=SHR,DSN=YOUR.PDS
//SYSPRINT DD SYSOUT=*                             
//SYSIN DD *                                       
FROM-STRING<TO-STRING<                                 
//                                                 

Note: For this program to work, the destination PDS has to have a empty member named $$$COIBM.

Hope it helps.
Back to top
View user's profile Send private message
Frank Yaeger

DFSORT Moderator


Joined: 15 Feb 2005
Posts: 7130
Location: San Jose, CA

PostPosted: Fri Jul 15, 2011 10:41 pm    Post subject:
Reply with quote

Quote:
Please let me know if this can be done thru SORT.


DFSORT is NOT really the tool of choice for updating PDS members en masse.

DFSORT can only deal with one member at a time. So you would need a separate step (or ICETOOL operator) to change each member.
Back to top
View user's profile Send private message
giraffe

New User


Joined: 09 Nov 2010
Posts: 28
Location: SHENZHEN CHINA

PostPosted: Sun Jul 17, 2011 7:33 pm    Post subject:
Reply with quote

There's a solution I worked out, but it's a little compicated.
Firstly, using IKJEFT01 to exec LISTDS command, then use ICETOOL SUBSET to eliminate the header and trailer information in order to obtain the member list.
Secondly, generate a job from the member list with SORT FINDREP steps.
Finally, exec IKJEFT01 SUBMIT command to submit the generated job, the mission's done.
However, if there're two many members in your pds, you will have to generate several jobs to complete this.
Back to top
View user's profile Send private message
expat

Global Moderator


Joined: 14 Mar 2007
Posts: 8593
Location: Back in jolly old England

PostPosted: Mon Jul 18, 2011 12:24 am    Post subject:
Reply with quote

giraffe

You have done about ten times more work than is required.

You can list the members and not have to sort the output to get a workable list.

Why perform a sort step for every single member when an ISPF edit macro will do exactly the same.

Submit gazillions of jobs when one will suffice.

Methinks that you may be talking out of the wrong end on this topic
Back to top
View user's profile Send private message
vasanthz

Global Moderator


Joined: 28 Aug 2007
Posts: 1445
Location: Azeroth

PostPosted: Mon Jul 18, 2011 9:54 am    Post subject:
Reply with quote

Adding to Expat's view,
Also, DFSORT copy does not copy the member statistics like created,changed,version details of a pds member. which might be handy information at times.
Back to top
View user's profile Send private message
gcicchet

Senior Member


Joined: 28 Jul 2006
Posts: 1703
Location: Australia

PostPosted: Mon Jul 18, 2011 10:04 am    Post subject:
Reply with quote

Hi Frank,

Quote:
DFSORT is NOT really the tool of choice for updating PDS members en masse.



This could be your next challenge. icon_smile.gif


Gerry
Back to top
View user's profile Send private message
kovur

New User


Joined: 15 Nov 2007
Posts: 37
Location: India

PostPosted: Mon Jul 18, 2011 5:59 pm    Post subject: Reply to: Changing contents of members in a pds using Sort
Reply with quote

Hi,

I tried to do this by using IPOUPDTE. But it is not identifying the strings that I gave in the sysin dd * statement. In the spool it is showing that there are no updates.

Please check the job, Member and spool output that I have got and suggest what needs to be corrected.

Job:
Code:

//STEP01  EXEC PGM=IPOUPDTE,PARM='UPDATE'   
//@LIB1   DD DSN=MY.TEST.PDS1,DISP=SHR
//SYSIN   DD *                             
server.old<server.new<                     
username1<username2<                       
password1<password2<                       
/path1/old</path2/new<                     
/*                                         
//SYSPRINT DD SYSOUT=*                     
//                                         


Member in the PDS, MY.TEST.PDS1
Code:

 VIEW       MY.TEST.PDS1(TESTPARM) - 01.04             Columns 00001 00072
 Command ===>                                                  Scroll ===> CSR 
 ****** ***************************** Top of Data ******************************
 000001 server.old                                                             
 000002 username1                                                               
 000003 password1                                                               
 000004 cd  /path1/old                                                         
 ****** **************************** Bottom of Data ****************************


Spool output:
Code:

BATCH JCL TAILORING AID                        UPDATE CONTROL STATEMENTS       
 MEMBER   COMMENTS       ....|....1....|....2....|....3....|....4....|....5....|
          SYSIN          SERVER.OLD<SERVER.NEW<                                 
          SYSIN          USERNAME1<USERNAME2<                                   
          SYSIN          PASSWORD1<PASSWORD2<                                   
          SYSIN          /PATH1/OLD</PATH2/NEW<                                 
          MESSAGE        IPO005 END OF INPUT CONTROL STATEMENTS                 
BATCH JCL TAILORING AID            VOL=TSO006 DSNAME=MY.TEST.PDS1         
 MEMBER   COMMENTS       ....|....1....|....2....|....3....|....4....|....5....|
          MESSAGE        IPO010 FILE @LIB1    HAD NO UPDATES                   
          MESSAGE        IPO011 IPOUPDTE ENDED. CODE=04                         


Thanks,
Manoj
Back to top
View user's profile Send private message
Escapa

Senior Member


Joined: 16 Feb 2007
Posts: 1399
Location: IL, USA

PostPosted: Mon Jul 18, 2011 6:41 pm    Post subject:
Reply with quote

gcicchet wrote:
Hi Frank,

Quote:
DFSORT is NOT really the tool of choice for updating PDS members en masse.



This could be your next challenge. icon_smile.gif


Gerry


It looks once in thousand kind of request..


Very less often datafiles are stored in PDS..
Back to top
View user's profile Send private message
dick scherrer

Site Director


Joined: 23 Nov 2006
Posts: 19270
Location: Inside the Matrix

PostPosted: Mon Jul 18, 2011 7:47 pm    Post subject:
Reply with quote

Hello,

Quote:
Very less often datafiles are stored in PDS..
True - not so much data as in this example, but often global jcl and/or control statement changes. . .

While there are multiple ways to do this, a "sort" way could be quite handy as well (imho) icon_smile.gif
Back to top
View user's profile Send private message
superk

Moderator Team Head


Joined: 26 Apr 2004
Posts: 4648
Location: Raleigh, NC, USA

PostPosted: Mon Jul 18, 2011 8:04 pm    Post subject: Reply to: Changing contents of members in a pds using Sort
Reply with quote

Manojm IPOUPDTE works with JCL and CONTROL types of data. As such, it won't recognize anything defined as lower-case.
Back to top
View user's profile Send private message
giraffe

New User


Joined: 09 Nov 2010
Posts: 28
Location: SHENZHEN CHINA

PostPosted: Mon Jul 18, 2011 8:08 pm    Post subject:
Reply with quote

expat wrote:
giraffe

You have done about ten times more work than is required.

You can list the members and not have to sort the output to get a workable list.

Why perform a sort step for every single member when an ISPF edit macro will do exactly the same.

Submit gazillions of jobs when one will suffice.

Methinks that you may be talking out of the wrong end on this topic

ICETOOL SUBSET will do 'copy' instead of 'sort', the purpose of this step is to eliminate the header(7?) and trailer(4?) information.
There's a limitation for a job's step number, so, if there're two many members, we need to generate several aufgereiht jobs to accomplish this, since one pds(for update) can not be specified in ICETOOL DD more than once, ICETOOL with generated SORT AND CNTL statements do not work here.
This is just a solution with DFSORT, REXX is a more effecient tool here.
Back to top
View user's profile Send private message
kovur

New User


Joined: 15 Nov 2007
Posts: 37
Location: India

PostPosted: Mon Jul 18, 2011 9:31 pm    Post subject: Reply to: Changing contents of members in a pds using Sort
Reply with quote

Kevin,

Thanks for your reply. I just changed the contents of the member to upper case and tried. It worked fine.

The spool output :
Code:

BATCH JCL TAILORING AID                        UPDATE CONTROL STATEMENTS       
 MEMBER   COMMENTS       ....|....1....|....2....|....3....|....4....|....5....|
          SYSIN          SERVER.OLD<SERVER.NEW<                                 
          SYSIN          USERNAME1<USERNAME2<                                   
          SYSIN          PASSWORD1<PASSWORD2<                                   
          SYSIN          /PATH1/OLD</PATH2/NEW<                                 
          MESSAGE        IPO005 END OF INPUT CONTROL STATEMENTS                 
BATCH JCL TAILORING AID            VOL=TSO006 DSNAME=MY.TEST.PDS1         
 MEMBER   COMMENTS       ....|....1....|....2....|....3....|....4....|....5....|
 TESTPARM REPLACED       SERVER.OLD                                             
          REPLACEMENT    SERVER.NEW                                             
 TESTPARM REPLACED       USERNAME1                                             
          REPLACEMENT    USERNAME2                                             
 TESTPARM REPLACED       PASSWORD1                                             
          REPLACEMENT    PASSWORD2                                             
 TESTPARM REPLACED       CD  /PATH1/OLD                                         
          REPLACEMENT    CD  /PATH2/NEW                                         
          MESSAGE        IPO011 IPOUPDTE ENDED. CODE=00                         


But all the strings that I need to change are in lower case only. Please suggest a way to achieve this.

Thanks,
Manoj
Back to top
View user's profile Send private message
dick scherrer

Site Director


Joined: 23 Nov 2006
Posts: 19270
Location: Inside the Matrix

PostPosted: Mon Jul 18, 2011 10:31 pm    Post subject:
Reply with quote

Hello,

Quote:
But all the strings that I need to change are in lower case only. Please suggest a way to achieve this.

Quote:
Manojm IPOUPDTE works with JCL and CONTROL types of data. As such, it won't recognize anything defined as lower-case.


Use something other than IPOUPDTE . . . As has been suggested REXX would work well.
Back to top
View user's profile Send private message
giraffe

New User


Joined: 09 Nov 2010
Posts: 28
Location: SHENZHEN CHINA

PostPosted: Tue Jul 19, 2011 6:10 am    Post subject: Re: Changing contents of members in a pds using Sort
Reply with quote

Code:
//#CHANGE1 JOB  T048-JC-0-1723,MSGCLASS=N,CLASS=A,MSGLEVEL=(1,1),       
//         NOTIFY=&SYSUID                                               
//*                                                                     
//*====================================================================*
//* DELETE OLD FILES                                                   *
//*====================================================================*
//*                                                                     
//DELDEF   EXEC PGM=IDCAMS,COND=(4,LT)                                 
//SYSPRINT DD   SYSOUT=*                                               
//SYSOUT   DD   SYSOUT=*                                               
//SYSUDUMP DD   SYSOUT=*                                               
//SYSIN    DD   *                                                       
  DELETE   GIRAFFE.IRSSNAME.SEQF.#CHANGE1 PURGE                         
  DELETE   GIRAFFE.IRSSSTM1.SEQF.#CHANGE1 PURGE                         
  DELETE   GIRAFFE.IRSSSTM2.SEQF.#CHANGE1 PURGE                         
  DELETE   GIRAFFE.IRSSSTM3.SEQF.#CHANGE1 PURGE     
  DELETE   GIRAFFE.IRSSSTM4.SEQF.#CHANGE1 PURGE                         
                                                                       
  SET      MAXCC  =  0                                                 
/*                                                                     
//*                                                                     
//*====================================================================*
//* LIST JCL LIB MEMBERS                                               *
//*====================================================================*
//*                                                                     
//LISTDS   EXEC PGM=IKJEFT01,COND=(8,LT)                               
//SYSTSPRT DD   DSN=GIRAFFE.IRSSNAME.SEQF.#CHANGE1,                     
//         DISP=(NEW,CATLG,DELETE),                                     
//         SPACE=(TRK,(1,1)),                                           
//         UNIT=SYSDA,                                                 
//         RECFM=FB,                                                   
//         LRECL=80                                             
//SYSPRINT DD   SYSOUT=*                                               
//SYSIN    DD   DUMMY                                                   
//SYSTSIN  DD   *                                                       
  LISTDS   'GIRAFFE.SRC.JCL' MEMBERS                                   
/*                                                                     
//*                                                                     
//*====================================================================*
//* DELETE HEADER AND TRAILER INFORMATION                              *
//*====================================================================*
//*                                                                     
//DELHRTR  EXEC PGM=ICETOOL,COND=(8,LT)                                 
//SYSPRINT DD   SYSOUT=*                                               
//SYSOUT   DD   SYSOUT=*                                               
//SYSDBOUT DD   SYSOUT=*                                               
//DFSMSG   DD   SYSOUT=*                                               
//TOOLMSG  DD   SYSOUT=*                                               
//INPUT    DD   DSN=GIRAFFE.IRSSNAME.SEQF.#CHANGE1,DISP=SHR             
//OUTPUT   DD   DSN=GIRAFFE.IRSSNAME.SEQF.#CHANGE1,DISP=SHR             
//TOOLIN   DD   *                                                       
  SUBSET   FROM(INPUT)       TO(OUTPUT)                -               
           INPUT                                       -               
           REMOVE            HEADER(9)  TRAILER(2)                     
/*                                                                     
//*                                                                     
//*====================================================================*
//* BUILD CHANGE STATEMENTS                                            *
//*====================================================================*
//*                                                                     
//BULDSTMT EXEC PGM=SORT,COND=(8,LT)                                   
//SYSPRINT DD   SYSOUT=*                                               
//SYSOUT   DD   SYSOUT=*                                               
//SYSDBOUT DD   SYSOUT=*                                               
//SYSDBOUT DD   SYSOUT=*                                   
//SORTIN   DD   DSN=GIRAFFE.IRSSNAME.SEQF.#CHANGE1,DISP=SHR
//STMTS1   DD   DSN=GIRAFFE.IRSSSTM1.SEQF.#CHANGE1,       
//         DISP=(NEW,CATLG,DELETE),                       
//         SPACE=(TRK,(10,10)),                           
//         UNIT=SYSDA,                                     
//         RECFM=FB,                                       
//         LRECL=80                                       
//STMTS2   DD   DSN=GIRAFFE.IRSSSTM2.SEQF.#CHANGE1,       
//         DISP=(NEW,CATLG,DELETE),                       
//         SPACE=(TRK,(10,10)),                           
//         UNIT=SYSDA,                                     
//         RECFM=FB,                                       
//         LRECL=80                                       
//STMTS3   DD   DSN=GIRAFFE.IRSSSTM3.SEQF.#CHANGE1,       
//         DISP=(NEW,CATLG,DELETE),                       
//         SPACE=(TRK,(10,10)),                                       
//         UNIT=SYSDA,                             
//         RECFM=FB,                               
//         LRECL=80                               
//STMTS4   DD   DSN=GIRAFFE.IRSSSTM4.SEQF.#CHANGE1,
//         DISP=(NEW,CATLG,DELETE),               
//         SPACE=(TRK,(10,10)),                   
//         UNIT=SYSDA,                             
//         RECFM=FB,                               
//         LRECL=80                               
//SYMNAMES DD   *                                 
JCLLIB,C'GIRAFFE.SRC.JCL'                         
/*                                                 
//SYSIN    DD   *                                 
  SORT     FIELDS=COPY                             
  INREC    BUILD=(3,8,SEQNUM,4,ZD)                               
                                                                 
  OUTFIL   FNAMES=(STMTS1),                                     
           INCLUDE=(9,4,ZD,LE,200),                             
           REMOVECC,                                             
           HEADER1=('//#STMTS1J JOB  ,MSGCLASS=N,CLASS=A,',/,   
                    '//         NOTIFY=&SYSUID,MSGLEVEL=(1,1)',/,
                    '//*'),                                     
           BUILD=(C'//',1,8,C' EXEC PGM=SORT,COND=(8,LT)',/,     
                  C'//SYSOUT   DD   SYSOUT=*',/,                 
                  C'//SYSUDUMP DD   SYSOUT=*',/,                 
                  C'//SYSPRINT DD   SYSOUT=*',/,                 
                  C'//SORTIN   DD   DSN=',                       
                  JCLLIB,                                       
                  C'(',1,8,C'),DISP=SHR',/,                     
                  C'//SORTOUT  DD   DSN=',                       
                  JCLLIB,                                       
                  C'(',1,8,C'),DISP=SHR',/,                         
                  C'//SYSIN    DD   *',/,                           
                  C'  SORT     FIELDS=COPY',/,                       
                  C'  INREC    IFTHEN=(WHEN=INIT,BUILD=(1,72,8X))',/,
                  C'  OUTREC   FINDREP=(INOUT=(',                   
                  C'C',C'''',C'SERVER.OLD',C'''',C',',               
                  C'C',C'''',C'SERVER.NEW',C'''',C',',               
                  C'C',C'''',C'USERNAME1',C'''',C',',               
                  C'C',C'''',C'USERNAME2',C'''',C',',/,             
                  C'                           ',                   
                  C'C',C'''',C'PASSWORD1',C'''',C',',               
                  C'C',C'''',C'PASSWORD2',C'''',C',',               
                  C'C',C'''',C'CD /PATH1/OLD',C'''',C',',           
                  C'C',C'''',C'CD /PATH2/NEW',C'''',C'))',/,         
                  C'/*',80:X),                                       
           TRAILER1=('//SUBMIT   EXEC PGM=IKJEFT01,COND=(8,LT)',/,   
                     '//SYSPRINT DD   SYSOUT=*',/,               
                     '//SYSOUT   DD   SYSOUT=*',/,               
                     '//SYSDBOUT DD   SYSOUT=*',/,               
                     '//SYSTSPRT DD   SYSOUT=*',/,               
                     '//SYSTSIN  DD   *',/,                       
                     '  SUBMIT   ','''',                         
                     'GIRAFFE.IRSSSTM2.SEQF.#CHANGE1',           
                     '''',/,                                     
                     '/*')                                       
                                                                 
  OUTFIL   FNAMES=(STMTS2),                                       
           INCLUDE=(9,4,ZD,GT,200,AND,                           
                    9,4,ZD,LE,400),                               
           REMOVECC,                                             
           HEADER1=('//#STMTS2J JOB  ,MSGCLASS=N,CLASS=A,',/,     
                    '//         NOTIFY=&SYSUID,MSGLEVEL=(1,1)',/, 
                    '//*'),                                           
           BUILD=(C'//',1,8,C' EXEC PGM=SORT,COND=(8,LT)',/,         
                  C'//SYSOUT   DD   SYSOUT=*',/,                     
                  C'//SYSUDUMP DD   SYSOUT=*',/,                     
                  C'//SYSPRINT DD   SYSOUT=*',/,                     
                  C'//SORTIN   DD   DSN=',                           
                  JCLLIB,                                             
                  C'(',1,8,C'),DISP=SHR',/,                           
                  C'//SORTOUT  DD   DSN=',                           
                  JCLLIB,                                             
                  C'(',1,8,C'),DISP=SHR',/,                           
                  C'//SYSIN    DD   *',/,                             
                  C'  SORT     FIELDS=COPY',/,                       
                  C'  INREC    IFTHEN=(WHEN=INIT,BUILD=(1,72,8X))',/,
                  C'  OUTREC   FINDREP=(INOUT=(',                     
                  C'C',C'''',C'SERVER.OLD',C'''',C',',               
                  C'C',C'''',C'SERVER.NEW',C'''',C',',           
                  C'C',C'''',C'USERNAME1',C'''',C',',             
                  C'C',C'''',C'USERNAME2',C'''',C',',/,           
                  C'                           ',                 
                  C'C',C'''',C'PASSWORD1',C'''',C',',             
                  C'C',C'''',C'PASSWORD2',C'''',C',',             
                  C'C',C'''',C'CD /PATH1/OLD',C'''',C',',         
                  C'C',C'''',C'CD /PATH2/NEW',C'''',C'))',/,     
                  C'/*',80:X),                                   
           TRAILER1=('//SUBMIT   EXEC PGM=IKJEFT01,COND=(8,LT)',/,
                     '//SYSPRINT DD   SYSOUT=*',/,               
                     '//SYSOUT   DD   SYSOUT=*',/,               
                     '//SYSDBOUT DD   SYSOUT=*',/,               
                     '//SYSTSPRT DD   SYSOUT=*',/,               
                     '//SYSTSIN  DD   *',/,                       
                     '  SUBMIT   ','''',                         
                     'GIRAFFE.IRSSSTM3.SEQF.#CHANGE1',           
                     '''',/,                                     
                     '/*')                                       
                                                                 
  OUTFIL   FNAMES=(STMTS3),                                     
           INCLUDE=(9,4,ZD,GT,400,AND,                           
                    9,4,ZD,LE,600),                             
           REMOVECC,                                             
           HEADER1=('//#STMTS3J JOB  ,MSGCLASS=N,CLASS=A,',/,   
                    '//         NOTIFY=&SYSUID,MSGLEVEL=(1,1)',/,
                    '//*'),                                     
           BUILD=(C'//',1,8,C' EXEC PGM=SORT,COND=(8,LT)',/,     
                  C'//SYSOUT   DD   SYSOUT=*',/,                 
                  C'//SYSUDUMP DD   SYSOUT=*',/,                 
                  C'//SYSPRINT DD   SYSOUT=*',/,                 
                  C'//SORTIN   DD   DSN=',                       
                  JCLLIB,                                           
                  C'(',1,8,C'),DISP=SHR',/,                         
                  C'//SORTOUT  DD   DSN=',                           
                  JCLLIB,                                           
                  C'(',1,8,C'),DISP=SHR',/,                         
                  C'//SYSIN    DD   *',/,                           
                  C'  SORT     FIELDS=COPY',/,                       
                  C'  INREC    IFTHEN=(WHEN=INIT,BUILD=(1,72,8X))',/,
                  C'  OUTREC   FINDREP=(INOUT=(',                   
                  C'C',C'''',C'SERVER.OLD',C'''',C',',               
                  C'C',C'''',C'SERVER.NEW',C'''',C',',               
                  C'C',C'''',C'USERNAME1',C'''',C',',               
                  C'C',C'''',C'USERNAME2',C'''',C',',/,             
                  C'                           ',                   
                  C'C',C'''',C'PASSWORD1',C'''',C',',               
                  C'C',C'''',C'PASSWORD2',C'''',C',',               
                  C'C',C'''',C'CD /PATH1/OLD',C'''',C',',         
                  C'C',C'''',C'CD /PATH2/NEW',C'''',C'))',/,     
                  C'/*',80:X),                                   
           TRAILER1=('//SUBMIT   EXEC PGM=IKJEFT01,COND=(8,LT)',/,
                     '//SYSPRINT DD   SYSOUT=*',/,               
                     '//SYSOUT   DD   SYSOUT=*',/,               
                     '//SYSDBOUT DD   SYSOUT=*',/,               
                     '//SYSTSPRT DD   SYSOUT=*',/,               
                     '//SYSTSIN  DD   *',/,                       
                     '  SUBMIT   ','''',                         
                     'GIRAFFE.IRSSSTM4.SEQF.#CHANGE1',           
                     '''',/,                                     
                     '/*')                                       
                                                                 
  OUTFIL   FNAMES=(STMTS4),                                       
           INCLUDE=(9,4,ZD,GT,600),                               
           REMOVECC,                                             
           HEADER1=('//#STMTS4J JOB  ,MSGCLASS=N,CLASS=A,',/,     
                    '//         NOTIFY=&SYSUID,MSGLEVEL=(1,1)',/,
                    '//*'),                                       
           BUILD=(C'//',1,8,C' EXEC PGM=SORT,COND=(8,LT)',/,     
                  C'//SYSOUT   DD   SYSOUT=*',/,                 
                  C'//SYSUDUMP DD   SYSOUT=*',/,                 
                  C'//SYSPRINT DD   SYSOUT=*',/,                 
                  C'//SORTIN   DD   DSN=',                       
                  JCLLIB,                                         
                  C'(',1,8,C'),DISP=SHR',/,                       
                  C'//SORTOUT  DD   DSN=',                       
                  JCLLIB,                                         
                  C'(',1,8,C'),DISP=SHR',/,                       
                  C'//SYSIN    DD   *',/,                         
                  C'  SORT     FIELDS=COPY',/,                   
                  C'  INREC    IFTHEN=(WHEN=INIT,BUILD=(1,72,8X))',/,   
                  C'  OUTREC   FINDREP=(INOUT=(',                       
                  C'C',C'''',C'SERVER.OLD',C'''',C',',                 
                  C'C',C'''',C'SERVER.NEW',C'''',C',',                 
                  C'C',C'''',C'USERNAME1',C'''',C',',                   
                  C'C',C'''',C'USERNAME2',C'''',C',',/,                 
                  C'                           ',                       
                  C'C',C'''',C'PASSWORD1',C'''',C',',                   
                  C'C',C'''',C'PASSWORD2',C'''',C',',                   
                  C'C',C'''',C'CD /PATH1/OLD',C'''',C',',               
                  C'C',C'''',C'CD /PATH2/NEW',C'''',C'))',/,           
                  C'/*',80:X)                                           
/*                                                                     
//*                                                                     
//*====================================================================*
//* SEQUEEZE STATEMENTS                                                *
//*====================================================================*
//*                                                                     
//SEQZ1    EXEC PGM=SORT,COND=(8,LT)                                   
//SYSPRINT DD   SYSOUT=*                                               
//SYSOUT   DD   SYSOUT=*                                               
//SYSDBOUT DD   SYSOUT=*                                               
//SORTIN   DD   DSN=GIRAFFE.IRSSSTM1.SEQF.#CHANGE1,DISP=SHR             
//SORTOUT  DD   DSN=GIRAFFE.IRSSSTM1.SEQF.#CHANGE1,DISP=SHR             
//SYSIN    DD   *                                                       
  SORT     FIELDS=COPY                                                 
  OUTREC   IFTHEN=(WHEN=(1,2,CH,EQ,C'//',AND,                           
                         1,72,SS,EQ,C' DSN='),                         
                   OVERLAY=(17:17,64,SQZ=(SHIFT=LEFT)))                 
/*                                                                     
//*                                                                     
//*====================================================================*
//* SEQUEEZE STATEMENTS                                                *
//*====================================================================*
//*                                                                     
//SEQZ2    EXEC PGM=SORT,COND=(8,LT)                                   
//SYSPRINT DD   SYSOUT=*                                               
//SYSOUT   DD   SYSOUT=*                                               
//SYSDBOUT DD   SYSOUT=*                                               
//SORTIN   DD   DSN=GIRAFFE.IRSSSTM2.SEQF.#CHANGE1,DISP=SHR             
//SORTOUT  DD   DSN=GIRAFFE.IRSSSTM2.SEQF.#CHANGE1,DISP=SHR             
//SYSIN    DD   *                                                       
  SORT     FIELDS=COPY                                                 
  OUTREC   IFTHEN=(WHEN=(1,2,CH,EQ,C'//',AND,                           
                         1,72,SS,EQ,C' DSN='),                         
                   OVERLAY=(17:17,64,SQZ=(SHIFT=LEFT)))                 
/*                                                                     
//*                                                                     
//*====================================================================*
//* SEQUEEZE STATEMENTS                                                *
//*====================================================================*
//*                                                                     
//SEQZ3    EXEC PGM=SORT,COND=(8,LT)                                   
//SYSPRINT DD   SYSOUT=*                                               
//SYSOUT   DD   SYSOUT=*                                               
//SYSDBOUT DD   SYSOUT=*                                               
//SORTIN   DD   DSN=GIRAFFE.IRSSSTM3.SEQF.#CHANGE1,DISP=SHR             
//SORTOUT  DD   DSN=GIRAFFE.IRSSSTM3.SEQF.#CHANGE1,DISP=SHR             
//SYSIN    DD   *                                                       
  SORT     FIELDS=COPY                                                 
  OUTREC   IFTHEN=(WHEN=(1,2,CH,EQ,C'//',AND,                           
                         1,72,SS,EQ,C' DSN='),                         
                   OVERLAY=(17:17,64,SQZ=(SHIFT=LEFT)))                 
/*                                                                     
//*                                                                     
//*====================================================================*
//* SEQUEEZE STATEMENTS                                                *
//*====================================================================*
//*                                                                     
//SEQZ4    EXEC PGM=SORT,COND=(8,LT)                                   
//SYSPRINT DD   SYSOUT=*                                               
//SYSOUT   DD   SYSOUT=*                                               
//SYSDBOUT DD   SYSOUT=*                                               
//SORTIN   DD   DSN=GIRAFFE.IRSSSTM4.SEQF.#CHANGE1,DISP=SHR             
//SORTOUT  DD   DSN=GIRAFFE.IRSSSTM4.SEQF.#CHANGE1,DISP=SHR             
//SYSIN    DD   *                                                       
  SORT     FIELDS=COPY                                                 
  OUTREC   IFTHEN=(WHEN=(1,2,CH,EQ,C'//',AND,                           
                         1,72,SS,EQ,C'DSN='),                           
                   OVERLAY=(17:17,64,SQZ=(SHIFT=LEFT)))                 
//*                                                                                               
//*====================================================================*
//* SUBMIT GENERATED JOBS                                              *
//*====================================================================*
//*                                                                     
//SUBMIT   EXEC PGM=IKJEFT01,COND=(8,LT)                               
//SYSPRINT DD   SYSOUT=*                                               
//SYSOUT   DD   SYSOUT=*                                               
//SYSDBOUT DD   SYSOUT=*                                               
//SYSTSPRT DD   SYSOUT=*                                               
//SYSTSIN  DD   *                                                       
  SUBMIT   'GIRAFFE.IRSSSTM1.SEQF.#CHANGE1'                             
/*                                                                     
//*                                                                                 

This is my solution with DFSORT, it's very complicated, just for reference.
Back to top
View user's profile Send private message
kovur

New User


Joined: 15 Nov 2007
Posts: 37
Location: India

PostPosted: Tue Jul 19, 2011 7:19 pm    Post subject: Reply to: Changing contents of members in a pds using Sort
Reply with quote

Hi Giraffe,

Thanks for the code. I will try this and let you know my experience with it.

Regards,
Manoj
Back to top
View user's profile Send private message
superk

Moderator Team Head


Joined: 26 Apr 2004
Posts: 4648
Location: Raleigh, NC, USA

PostPosted: Tue Jul 19, 2011 7:38 pm    Post subject: Reply to: Changing contents of members in a pds using Sort
Reply with quote

Manoj, everything I've read here so far seems to be bordering on excessive overkill. Don't you have tools you can easily use or readily adapt to handle this (FileAid, File Manager, etc.) without having to write code? Are there a lot of members to be updated, or is it a relatively small set that a few repetitive job submissions could've handled? IPOUPDTE would've been the perfect option but you have the issue with the lower-case text.

As a somewhat simple process, couldn't you just:

1. Use IEBPTPCH to "PUNCH" the selected members of the PDS into a sequential dataset.
2. Use SORT to reformat the IEBPTPCH output into a standard IEBUPDTE-ready format.
3. Edit the data to enable your changes.
4. Use IEBUPDTE to create a PDS from the edited dataset.

All of which has been described here many times before, as has IPOUPDTE, as has writing REXX execs to do this, as has writing and using ISPF Edit Macros, and writing COBOL programs to do this.
Back to top
View user's profile Send private message
Akatsukami

Global Moderator


Joined: 03 Oct 2009
Posts: 1738
Location: Bloomington, IL

PostPosted: Tue Jul 19, 2011 8:08 pm    Post subject: Re: Reply to: Changing contents of members in a pds using So
Reply with quote

superk wrote:
Don't you have tools you can easily use or readily adapt to handle this without having to write code?

Yes; giraffe, vasanthz, probably a couple of others.
Back to top
View user's profile Send private message
Bill Woodger

DFSORT Moderator


Joined: 09 Mar 2011
Posts: 7228

PostPosted: Tue Jul 19, 2011 8:19 pm    Post subject: Re: Reply to: Changing contents of members in a pds using So
Reply with quote

kovur wrote:
Hi Giraffe,

Thanks for the code. I will try this and let you know my experience with it.

Regards,
Manoj


Remembering to do the change to lower case, in at least four places!
Back to top
View user's profile Send private message
View previous topic :: :: View next topic  
Post new topic   Reply to topic    IBMMAINFRAMES.com Support Forums -> JCL & VSAM All times are GMT + 6 Hours
Goto page 1, 2  Next
Page 1 of 2

 

Search our Forum:

Similar Topics
Topic Author Forum Replies Posted
No new posts Limit duplicate records in the SORT pshongal SYNCSORT 6 Mon Nov 21, 2016 12:54 pm
No new posts How to convert the VBM file to VB or... Sulabh Agrawal JCL & VSAM 4 Fri Nov 18, 2016 1:04 pm
No new posts Sort records based on numeric field. Alks SYNCSORT 2 Wed Oct 19, 2016 10:14 pm
No new posts How to delete second instance from Fl... Gunapala CN DFSORT/ICETOOL 6 Tue Oct 18, 2016 11:42 pm
No new posts abend sort based on count records in ... anatol DFSORT/ICETOOL 5 Mon Oct 17, 2016 10:10 pm


Facebook
Back to Top
 
Mainframe Wiki | Forum Rules | Bookmarks | Subscriptions | FAQ | Tutorials | Contact Us