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
 

 

Automation of sort card.

 
Post new topic   Reply to topic    IBMMAINFRAMES.com Support Forums -> DFSORT/ICETOOL
View previous topic :: :: View next topic  
Author Message
abhijit.nayak01

Active User


Joined: 22 Mar 2009
Posts: 157
Location: South Africa

PostPosted: Sun Nov 08, 2009 1:26 pm    Post subject: Automation of sort card.
Reply with quote

Hi,

I have one input tape file in which a huge amount of data are present.In the 178 positin of the file the date column starts which is in YYYYMMDD format and i need to do put data in the 36 input files based on the last 36 month records The sort card is like this:

Code:

//SYSOUT  DD SYSOUT=*
//DFSMSG  DD SYSOUT=*
//SORTIN  DD DSN=TESTITN.S18.SARBANE.MNTHLY.NEW.RFMT,DISP=SHR
//SORTO1  DD DSN=TESTITN.NOV06.FILE1,
//       DISP=(NEW,CATLG,DELETE),UNIT=SYSDA,LRECL=899
//SORTO2  DD DSN=TESTITN.NOV06.FILE2,
//       DISP=(NEW,CATLG,DELETE),UNIT=SYSDA,LRECL=899
//SORTO3  DD DSN=TESTITN.NOV06.FILE3,
//       DISP=(NEW,CATLG,DELETE),UNIT=SYSDA,LRECL=899
//SORTO4  DD DSN=TESTITN.NOV06.FILE4,
//       DISP=(NEW,CATLG,DELETE),UNIT=SYSDA,LRECL=899
//SORTO5  DD DSN=TESTITN.NOV06.FILE5,
//       DISP=(NEW,CATLG,DELETE),UNIT=SYSDA,LRECL=899
//SORTO6  DD DSN=TESTITN.NOV06.FILE6,
//       DISP=(NEW,CATLG,DELETE),UNIT=SYSDA,LRECL=899
//SORTO7  DD DSN=TESTITN.NOV06.FILE7,
//       DISP=(NEW,CATLG,DELETE),UNIT=SYSDA,LRECL=899
//SORTO8  DD DSN=TESTITN.NOV06.FILE8,
//       DISP=(NEW,CATLG,DELETE),UNIT=SYSDA,LRECL=899
//SORTO9  DD DSN=TESTITN.NOV06.FILE9,
//       DISP=(NEW,CATLG,DELETE),UNIT=SYSDA,LRECL=899
//SORTO10 DD DSN=TESTITN.NOV06.FILE10,
//       DISP=(NEW,CATLG,DELETE),UNIT=SYSDA,LRECL=899
//SORTO11 DD DSN=TESTITN.NOV06.FILE11,
//       DISP=(NEW,CATLG,DELETE),UNIT=SYSDA,LRECL=899
//SORTO12 DD DSN=TESTITN.NOV06.FILE12,
//       DISP=(NEW,CATLG,DELETE),UNIT=SYSDA,LRECL=899
//SORTO13 DD DSN=TESTITN.NOV06.FILE13,
//       DISP=(NEW,CATLG,DELETE),UNIT=SYSDA,LRECL=899
//SORTO14 DD DSN=TESTITN.NOV06.FILE14,
//       DISP=(NEW,CATLG,DELETE),UNIT=SYSDA,LRECL=899
//SORTO15 DD DSN=TESTITN.NOV06.FILE15,
//       DISP=(NEW,CATLG,DELETE),UNIT=SYSDA,LRECL=899
//SORTO16 DD DSN=TESTITN.NOV06.FILE16,
//       DISP=(NEW,CATLG,DELETE),UNIT=SYSDA,LRECL=899
//SORTO17 DD DSN=TESTITN.NOV06.FILE17,
//       DISP=(NEW,CATLG,DELETE),UNIT=SYSDA,LRECL=899
//SORTO18 DD DSN=TESTITN.NOV06.FILE18,
//       DISP=(NEW,CATLG,DELETE),UNIT=SYSDA,LRECL=899
//SORTO19 DD DSN=TESTITN.NOV06.FILE19,
//       DISP=(NEW,CATLG,DELETE),UNIT=SYSDA,LRECL=899
//SORTO20 DD DSN=TESTITN.NOV06.FILE20,
//       DISP=(NEW,CATLG,DELETE),UNIT=SYSDA,LRECL=899
//SORTO21 DD DSN=TESTITN.NOV06.FILE21,
//       DISP=(NEW,CATLG,DELETE),UNIT=SYSDA,LRECL=899
//SORTO22 DD DSN=TESTITN.NOV06.FILE22,
//       DISP=(NEW,CATLG,DELETE),UNIT=SYSDA,LRECL=899
//SORTO23 DD DSN=TESTITN.NOV06.FILE23,
//       DISP=(NEW,CATLG,DELETE),UNIT=SYSDA,LRECL=899
//SORTO24 DD DSN=TESTITN.NOV06.FILE24,
//       DISP=(NEW,CATLG,DELETE),UNIT=SYSDA,LRECL=899
//SORTO25 DD DSN=TESTITN.NOV06.FILE25,
//       DISP=(NEW,CATLG,DELETE),UNIT=SYSDA,LRECL=899
//SORTO26 DD DSN=TESTITN.NOV06.FILE26,
//       DISP=(NEW,CATLG,DELETE),UNIT=SYSDA,LRECL=899
//SORTO27 DD DSN=TESTITN.NOV06.FILE27,
//       DISP=(NEW,CATLG,DELETE),UNIT=SYSDA,LRECL=899
//SORTO28 DD DSN=TESTITN.NOV06.FILE28,
//       DISP=(NEW,CATLG,DELETE),UNIT=SYSDA,LRECL=899
//SORTO29 DD DSN=TESTITN.NOV06.FILE29,
//       DISP=(NEW,CATLG,DELETE),UNIT=SYSDA,LRECL=899
//SORTO30 DD DSN=TESTITN.NOV06.FILE30,
//       DISP=(NEW,CATLG,DELETE),UNIT=SYSDA,LRECL=899
//SORTO31 DD DSN=TESTITN.NOV06.FILE31,
//       DISP=(NEW,CATLG,DELETE),UNIT=SYSDA,LRECL=899
//SORTO32 DD DSN=TESTITN.NOV06.FILE32,
//       DISP=(NEW,CATLG,DELETE),UNIT=SYSDA,LRECL=899
//SORTO33 DD DSN=TESTITN.NOV06.FILE33,
//       DISP=(NEW,CATLG,DELETE),UNIT=SYSDA,LRECL=899
//SORTO34 DD DSN=TESTITN.NOV06.FILE34,
//       DISP=(NEW,CATLG,DELETE),UNIT=SYSDA,LRECL=899
//SORTO35 DD DSN=TESTITN.NOV06.FILE35,
//       DISP=(NEW,CATLG,DELETE),UNIT=SYSDA,LRECL=899
//SORTO36 DD DSN=TESTITN.NOV06.FILE361,
//       DISP=(NEW,CATLG,DELETE),UNIT=SYSDA,LRECL=899
//SYSIN   DD *
    SORT FIELDS=COPY
    OUTFIL  FNAMES=SORTO1,INCLUDE=(178,8,CH,EQ,C'20091031')
    OUTFIL  FNAMES=SORTO2,INCLUDE=(178,8,CH,EQ,C'20090930')
    OUTFIL  FNAMES=SORTO3,INCLUDE=(178,8,CH,EQ,C'20090831')
    OUTFIL  FNAMES=SORTO4,INCLUDE=(178,8,CH,EQ,C'20090731')
    OUTFIL  FNAMES=SORTO5,INCLUDE=(178,8,CH,EQ,C'20090630')
    OUTFIL  FNAMES=SORTO6,INCLUDE=(178,8,CH,EQ,C'20090531')
    OUTFIL  FNAMES=SORTO7,INCLUDE=(178,8,CH,EQ,C'20090430')
    OUTFIL  FNAMES=SORTO8,INCLUDE=(178,8,CH,EQ,C'20090331')
    OUTFIL  FNAMES=SORTO9,INCLUDE=(178,8,CH,EQ,C'20090228')
    OUTFIL FNAMES=SORTO10,INCLUDE=(178,8,CH,EQ,C'20090131')
    OUTFIL FNAMES=SORTO11,INCLUDE=(178,8,CH,EQ,C'20081231')
    OUTFIL FNAMES=SORTO12,INCLUDE=(178,8,CH,EQ,C'20081130')
    OUTFIL FNAMES=SORTO13,INCLUDE=(178,8,CH,EQ,C'20081031')
    OUTFIL FNAMES=SORTO14,INCLUDE=(178,8,CH,EQ,C'20080930')
    OUTFIL FNAMES=SORTO15,INCLUDE=(178,8,CH,EQ,C'20080831')
    OUTFIL FNAMES=SORTO16,INCLUDE=(178,8,CH,EQ,C'20080731')
    OUTFIL FNAMES=SORTO17,INCLUDE=(178,8,CH,EQ,C'20080630')
    OUTFIL FNAMES=SORTO18,INCLUDE=(178,8,CH,EQ,C'20080531')
    OUTFIL FNAMES=SORTO19,INCLUDE=(178,8,CH,EQ,C'20080430')
    OUTFIL FNAMES=SORTO20,INCLUDE=(178,8,CH,EQ,C'20080331')
    OUTFIL FNAMES=SORTO21,INCLUDE=(178,8,CH,EQ,C'20080229')
    OUTFIL FNAMES=SORTO22,INCLUDE=(178,8,CH,EQ,C'20080131')
    OUTFIL FNAMES=SORTO23,INCLUDE=(178,8,CH,EQ,C'20071231')
    OUTFIL FNAMES=SORTO24,INCLUDE=(178,8,CH,EQ,C'20071130')
    OUTFIL FNAMES=SORTO25,INCLUDE=(178,8,CH,EQ,C'20071031')
    OUTFIL FNAMES=SORTO26,INCLUDE=(178,8,CH,EQ,C'20070930')
    OUTFIL FNAMES=SORTO27,INCLUDE=(178,8,CH,EQ,C'20070831')
    OUTFIL FNAMES=SORTO28,INCLUDE=(178,8,CH,EQ,C'20070731')
    OUTFIL FNAMES=SORTO29,INCLUDE=(178,8,CH,EQ,C'20070630')
    OUTFIL FNAMES=SORTO30,INCLUDE=(178,8,CH,EQ,C'20070531')
    OUTFIL FNAMES=SORTO31,INCLUDE=(178,8,CH,EQ,C'20070430')
    OUTFIL FNAMES=SORTO32,INCLUDE=(178,8,CH,EQ,C'20070331')
    OUTFIL FNAMES=SORTO33,INCLUDE=(178,8,CH,EQ,C'20070228')
    OUTFIL FNAMES=SORTO34,INCLUDE=(178,8,CH,EQ,C'20070131')
    OUTFIL FNAMES=SORTO35,INCLUDE=(178,8,CH,EQ,C'20061231')
    OUTFIL FNAMES=SORTO36,INCLUDE=(178,8,CH,EQ,C'20061130')
/*


But my problem is instead of hardcoding the date value in the include condition i want some automated way .

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

gcicchet

Senior Member


Joined: 28 Jul 2006
Posts: 1703
Location: Australia

PostPosted: Sun Nov 08, 2009 1:44 pm    Post subject:
Reply with quote

Hi,

if you want the last 36 months, shouldn't the selection be based on YYYYMM and not YYYYMMDD which results in only the last day of each month being selected ?

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

Senior Member


Joined: 28 Jul 2006
Posts: 1703
Location: Australia

PostPosted: Sun Nov 08, 2009 4:00 pm    Post subject:
Reply with quote

Hi,

if my assumptions are correct, this may help
Code:

//STEP0001 EXEC PGM=SORT                                       
//SYSOUT   DD SYSOUT=*                                         
//SORTIN   DD *                                                 
REC                                                             
/*                                                             
//SORTOUT  DD SYSOUT=*                                         
//SYSIN    DD *                                                 
  SORT FIELDS=COPY                                             
  OUTFIL BUILD=(1:C'  OUTFIL FNAMES=SORTO1,',                   
                  C'INCLUDE=(178,8,CH,EQ,C''',DATE2-1,C''')',/,
                1:C'  OUTFIL FNAMES=SORTO2,',                   
                  C'INCLUDE=(178,8,CH,EQ,C''',DATE2-2,C''')',/,
                1:C'  OUTFIL FNAMES=SORTO3,',                   
                  C'INCLUDE=(178,8,CH,EQ,C''',DATE2-3,C''')',/,
                1:C'  OUTFIL FNAMES=SORTO4,',                   
                  C'INCLUDE=(178,8,CH,EQ,C''',DATE2-4,C''')',/,
                1:C'  OUTFIL FNAMES=SORTO5,',                   
                  C'INCLUDE=(178,8,CH,EQ,C''',DATE2-5,C''')',/,
                1:C'  OUTFIL FNAMES=SORTO6,',                           
                  C'INCLUDE=(178,8,CH,EQ,C''',DATE2-6,C''')',/,         
                1:C'  OUTFIL FNAMES=SORTO7,',                           
                  C'INCLUDE=(178,8,CH,EQ,C''',DATE2-7,C''')',/,         
                1:C'  OUTFIL FNAMES=SORTO8,',                           
                  C'INCLUDE=(178,8,CH,EQ,C''',DATE2-8,C''')',/,         
                1:C'  OUTFIL FNAMES=SORTO9,',                           
                  C'INCLUDE=(178,8,CH,EQ,C''',DATE2-9,C''')',/,         
                1:C'  OUTFIL FNAMES=SORTO10,',                         
                  C'INCLUDE=(178,8,CH,EQ,C''',DATE2-10,C''')'/,         
                1:C'  OUTFIL FNAMES=SORTO11,',                         
                  C'INCLUDE=(178,8,CH,EQ,C''',DATE2-11,C''')'/,         
                1:C'  OUTFIL FNAMES=SORTO12,',                         
                  C'INCLUDE=(178,8,CH,EQ,C''',DATE2-12,C''')'/,         
                1:C'  OUTFIL FNAMES=SORTO13,',                         
                  C'INCLUDE=(178,8,CH,EQ,C''',DATE2-13,C''')'/,         
                1:C'  OUTFIL FNAMES=SORTO14,',                         
                  C'INCLUDE=(178,8,CH,EQ,C''',DATE2-14,C''')'/,         
                1:C'  OUTFIL FNAMES=SORTO15,',                         
                  C'INCLUDE=(178,8,CH,EQ,C''',DATE2-15,C''')'/,         
                1:C'  OUTFIL FNAMES=SORTO16,',                         
                  C'INCLUDE=(178,8,CH,EQ,C''',DATE2-16,C''')'/,   
                1:C'  OUTFIL FNAMES=SORTO17,',                     
                  C'INCLUDE=(178,8,CH,EQ,C''',DATE2-17,C''')'/,   
                1:C'  OUTFIL FNAMES=SORTO18,',                     
                  C'INCLUDE=(178,8,CH,EQ,C''',DATE2-18,C''')'/,   
                1:C'  OUTFIL FNAMES=SORTO19,',                     
                  C'INCLUDE=(178,8,CH,EQ,C''',DATE2-19,C''')'/,   
                1:C'  OUTFIL FNAMES=SORTO20,',                     
                  C'INCLUDE=(178,8,CH,EQ,C''',DATE2-20,C''')'/,   
                1:C'  OUTFIL FNAMES=SORTO21,',                     
                  C'INCLUDE=(178,8,CH,EQ,C''',DATE2-21,C''')'/,   
                1:C'  OUTFIL FNAMES=SORTO22,',                     
                  C'INCLUDE=(178,8,CH,EQ,C''',DATE2-22,C''')'/,   
                1:C'  OUTFIL FNAMES=SORTO23,',                     
                  C'INCLUDE=(178,8,CH,EQ,C''',DATE2-23,C''')'/,   
                1:C'  OUTFIL FNAMES=SORTO24,',                     
                  C'INCLUDE=(178,8,CH,EQ,C''',DATE2-24,C''')'/,   
                1:C'  OUTFIL FNAMES=SORTO25,',                     
                  C'INCLUDE=(178,8,CH,EQ,C''',DATE2-25,C''')'/,   
                1:C'  OUTFIL FNAMES=SORTO26,',                     
                  C'INCLUDE=(178,8,CH,EQ,C''',DATE2-26,C''')'/,   
                1:C'  OUTFIL FNAMES=SORTO27,',                     
                  C'INCLUDE=(178,8,CH,EQ,C''',DATE2-27,C''')'/,     
                1:C'  OUTFIL FNAMES=SORTO28,',                     
                  C'INCLUDE=(178,8,CH,EQ,C''',DATE2-28,C''')'/,     
                1:C'  OUTFIL FNAMES=SORTO29,',                     
                  C'INCLUDE=(178,8,CH,EQ,C''',DATE2-29,C''')'/,     
                1:C'  OUTFIL FNAMES=SORTO30,',                     
                  C'INCLUDE=(178,8,CH,EQ,C''',DATE2-30,C''')'/,     
                1:C'  OUTFIL FNAMES=SORTO31,',                     
                  C'INCLUDE=(178,8,CH,EQ,C''',DATE2-31,C''')'/,     
                1:C'  OUTFIL FNAMES=SORTO32,',                     
                  C'INCLUDE=(178,8,CH,EQ,C''',DATE2-32,C''')'/,     
                1:C'  OUTFIL FNAMES=SORTO33,',                     
                  C'INCLUDE=(178,8,CH,EQ,C''',DATE2-33,C''')'/,     
                1:C'  OUTFIL FNAMES=SORTO34,',                     
                  C'INCLUDE=(178,8,CH,EQ,C''',DATE2-34,C''')'/,     
                1:C'  OUTFIL FNAMES=SORTO35,',                     
                  C'INCLUDE=(178,8,CH,EQ,C''',DATE2-35,C''')'/,     
                1:C'  OUTFIL FNAMES=SORTO36,',                     
                  C'INCLUDE=(178,8,CH,EQ,C''',DATE2-36,C''')',80:X),
                  REMOVECC,HEADER1=('  SORT FIELDS=COPY    ')     
/*


Gerry
Back to top
View user's profile Send private message
abhijit.nayak01

Active User


Joined: 22 Mar 2009
Posts: 157
Location: South Africa

PostPosted: Sun Nov 08, 2009 8:12 pm    Post subject: Reply to: Automation of sort card.
Reply with quote

Hi, I forgot to tell u that I have already tried this one and it ran successfully but here the performance issue comes into the picture. In the hard coded job it was taking 1 hour 25 minutes but the way suggested by u is taking 3.25 hours and i have the target to complete it within 2 hour....so please suggest me.

Thanks,
Abhijit.
Back to top
View user's profile Send private message
Craq Giegerich

Senior Member


Joined: 19 May 2007
Posts: 1512
Location: Virginia, USA

PostPosted: Sun Nov 08, 2009 8:37 pm    Post subject:
Reply with quote

Since the file names would have to change along with the dates in the control cards, I would suggest a simple little program to create the jcl and the sort control cards and submit the job.
Back to top
View user's profile Send private message
abhijit.nayak01

Active User


Joined: 22 Mar 2009
Posts: 157
Location: South Africa

PostPosted: Sun Nov 08, 2009 10:42 pm    Post subject: Reply to: Automation of sort card.
Reply with quote

can u plz suggest any idea for the simple program....

Thanks,
Abhijit.
Back to top
View user's profile Send private message
Craq Giegerich

Senior Member


Joined: 19 May 2007
Posts: 1512
Location: Virginia, USA

PostPosted: Sun Nov 08, 2009 11:58 pm    Post subject:
Reply with quote

That's what programming is all about. Once the solution is defined translating it into a programming language.
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 Nov 09, 2009 1:05 am    Post subject:
Reply with quote

Hello,

Do you have this running? Do you understand the solution? What have you coded so far?

If you get stuck, someone can probably help. . .

Consider that the only input this simple "front-end" process needs is the control date. All of the jcl and control statements can then be generated and written to the "internal reader". There are multiple topics in the forum about using the internal reader.
Back to top
View user's profile Send private message
gcicchet

Senior Member


Joined: 28 Jul 2006
Posts: 1703
Location: Australia

PostPosted: Mon Nov 09, 2009 3:10 am    Post subject:
Reply with quote

Hi,

how can generating the sort card which takes less than 1 minute cause the job to run for an additional 2 hours, after all the statements are no different to the hard coded job.

I suggest you are not comparing apples with apples.

A quote from Robert Sample
Quote:
Elapsed time is more affected by system load, WLM definitions, I/O contention, paging, and so forth


Gerry
Back to top
View user's profile Send private message
enrico-sorichetti

Global Moderator


Joined: 14 Mar 2007
Posts: 10202
Location: italy

PostPosted: Mon Nov 09, 2009 3:39 am    Post subject: Reply to: Automation of sort card.
Reply with quote

I hope that nobody complains...
here is a non sort solution to create the sort control cards
feel free to delete if it does not follow the dfsort forum standards


the rexx coding reflects the sort control statements not the topic text
here is a small REXX snippet to achieve what You ask for...
( quick and dirty non frills )
rexx script tested
Code:

/* REXX */
parse value date("S") with 1 year 5 month 7 .
sortc.0 = 37
sortc.1 = "  SORT FIELDS=COPY"
do  i = 1 to 36
    d = date("S",(date("B",year!!right(month,2,"0")!!"01","S")-1) ,"B")
    j = i + 1
    sortc.j = "  OUTFIL FNAMES=SORTO" !!,
              right(i,2,"0") !! ,
              ",INCLUDE=(178,8,CH,EQ,C'" !! ,
              d !! ,
              "')"
    month = month-1
    if  month = 0 then do
        month = 12
        year  = year - 1
    end
end
do i = 1 to sortc.0
    say ">"sortc.i"<"
end
exit


here is the result of the test ( on my pc ), should run also on TSO
Code:
>  SORT FIELDS=COPY<
>  OUTFIL FNAMES=SORTO01,INCLUDE=(178,8,CH,EQ,C'20091031')<
>  OUTFIL FNAMES=SORTO02,INCLUDE=(178,8,CH,EQ,C'20090930')<
>  OUTFIL FNAMES=SORTO03,INCLUDE=(178,8,CH,EQ,C'20090831')<
>  OUTFIL FNAMES=SORTO04,INCLUDE=(178,8,CH,EQ,C'20090731')<
>  OUTFIL FNAMES=SORTO05,INCLUDE=(178,8,CH,EQ,C'20090630')<
>  OUTFIL FNAMES=SORTO06,INCLUDE=(178,8,CH,EQ,C'20090531')<
>  OUTFIL FNAMES=SORTO07,INCLUDE=(178,8,CH,EQ,C'20090430')<
>  OUTFIL FNAMES=SORTO08,INCLUDE=(178,8,CH,EQ,C'20090331')<
>  OUTFIL FNAMES=SORTO09,INCLUDE=(178,8,CH,EQ,C'20090228')<
>  OUTFIL FNAMES=SORTO10,INCLUDE=(178,8,CH,EQ,C'20090131')<
>  OUTFIL FNAMES=SORTO11,INCLUDE=(178,8,CH,EQ,C'20081231')<
>  OUTFIL FNAMES=SORTO12,INCLUDE=(178,8,CH,EQ,C'20081130')<
>  OUTFIL FNAMES=SORTO13,INCLUDE=(178,8,CH,EQ,C'20081031')<
>  OUTFIL FNAMES=SORTO14,INCLUDE=(178,8,CH,EQ,C'20080930')<
>  OUTFIL FNAMES=SORTO15,INCLUDE=(178,8,CH,EQ,C'20080831')<
>  OUTFIL FNAMES=SORTO16,INCLUDE=(178,8,CH,EQ,C'20080731')<
>  OUTFIL FNAMES=SORTO17,INCLUDE=(178,8,CH,EQ,C'20080630')<
>  OUTFIL FNAMES=SORTO18,INCLUDE=(178,8,CH,EQ,C'20080531')<
>  OUTFIL FNAMES=SORTO19,INCLUDE=(178,8,CH,EQ,C'20080430')<
>  OUTFIL FNAMES=SORTO20,INCLUDE=(178,8,CH,EQ,C'20080331')<
>  OUTFIL FNAMES=SORTO21,INCLUDE=(178,8,CH,EQ,C'20080229')<
>  OUTFIL FNAMES=SORTO22,INCLUDE=(178,8,CH,EQ,C'20080131')<
>  OUTFIL FNAMES=SORTO23,INCLUDE=(178,8,CH,EQ,C'20071231')<
>  OUTFIL FNAMES=SORTO24,INCLUDE=(178,8,CH,EQ,C'20071130')<
>  OUTFIL FNAMES=SORTO25,INCLUDE=(178,8,CH,EQ,C'20071031')<
>  OUTFIL FNAMES=SORTO26,INCLUDE=(178,8,CH,EQ,C'20070930')<
>  OUTFIL FNAMES=SORTO27,INCLUDE=(178,8,CH,EQ,C'20070831')<
>  OUTFIL FNAMES=SORTO28,INCLUDE=(178,8,CH,EQ,C'20070731')<
>  OUTFIL FNAMES=SORTO29,INCLUDE=(178,8,CH,EQ,C'20070630')<
>  OUTFIL FNAMES=SORTO30,INCLUDE=(178,8,CH,EQ,C'20070531')<
>  OUTFIL FNAMES=SORTO31,INCLUDE=(178,8,CH,EQ,C'20070430')<
>  OUTFIL FNAMES=SORTO32,INCLUDE=(178,8,CH,EQ,C'20070331')<
>  OUTFIL FNAMES=SORTO33,INCLUDE=(178,8,CH,EQ,C'20070228')<
>  OUTFIL FNAMES=SORTO34,INCLUDE=(178,8,CH,EQ,C'20070131')<
>  OUTFIL FNAMES=SORTO35,INCLUDE=(178,8,CH,EQ,C'20061231')<
>  OUTFIL FNAMES=SORTO36,INCLUDE=(178,8,CH,EQ,C'20061130')<


here is the jcl stream ( modify according to Your needs )
jcl stream not tested

Code:

// ...   JOB   ...
//* CREATE THE PDS CONTAINING THE REXX SCRIPT
//CREATE  EXEC PGM=IEBGENER
//SYSPRINT  DD SYSOUT=*
//SYSIN     DD DUMMY
//SYSUT1    DD DATA,DLM=$$
/* REXX */
parse value date("S") with 1 year 5 month 7 .
sortc.0 = 37
sortc.1 = "  SORT FIELDS=COPY"
do  i = 1 to 36
    d = date("S",(date("B",year!!right(month,2,"0")!!"01","S")-1) ,"B")
    j = i + 1
    sortc.j = "  OUTFIL FNAMES=SORTO" !!,
              right(i,2,"0") !! ,
              ",INCLUDE=(178,8,CH,EQ,C'" !! ,
              d !! ,
              "')"
    month = month-1
    if  month = 0 then do
        month = 12
        year  = year - 1
    end
end
do i = 1 to sortc.0
    say ">"sortc.i"<"
end
Address TSO "EXECIO" sortc.0 "DISKW SYSUT2 (STEM SORTC. FINIS"
exit
$$
//SYSUT2    DD DISP=(NEW,PASS),
//             DSN=&&SCRIPT(MY),
//             UNIT=SYSDA,SPACE=(TRK,(1,1,1))
//             DCB=(RECFM=FB,LRECL=80)
//*
//* RUN THE REXX SCRIPT TO PREPARE THE SORT CONTROL CARDS
//IKJ     EXEC PGM=IKJEFT01
//SYSPROC   DD DISP=(OLD,PASS),
//             DSN=&&SCRIPT
//SYSPRINT  DD SYSOUT=*
//SYSTSPRT  DD SYSOUT=*
//SYSTSIN   DD *
  MY
//SYSUT2    DD DISP=(NEW,PASS),
//             DSN=&&SORTCNTL,
//             UNIT=SYSDA,SPACE=(TRK,(1,1))
//             DCB=(RECFM=FB,LRECL=80)
//*
//* RUN YOUR SORT
//SORT     EXEC PGM=SORT                                         
//SYSOUT     DD SYSOUT=*                                             
//DFSMSG     DD SYSOUT=*                                             
//SORTIN     DD DSN=TESTITN.S18.SARBANE.MNTHLY.NEW.RFMT,DISP=SHR     
//SORTO01    DD DSN=TESTITN.NOV06.FILE1,                             
//              DISP=(NEW,CATLG,DELETE),UNIT=SYSDA,LRECL=899             
//SORTO02    DD DSN=TESTITN.NOV06.FILE2,                             
//              DISP=(NEW,CATLG,DELETE),UNIT=SYSDA,LRECL=899             
//SORTO03    DD DSN=TESTITN.NOV06.FILE3,                             
//              DISP=(NEW,CATLG,DELETE),UNIT=SYSDA,LRECL=899             
//SORTO04    DD DSN=TESTITN.NOV06.FILE4,                             
//              DISP=(NEW,CATLG,DELETE),UNIT=SYSDA,LRECL=899             
//SORTO05    DD DSN=TESTITN.NOV06.FILE5,                             
//              DISP=(NEW,CATLG,DELETE),UNIT=SYSDA,LRECL=899             
//SORTO06    DD DSN=TESTITN.NOV06.FILE6,                             
//              DISP=(NEW,CATLG,DELETE),UNIT=SYSDA,LRECL=899             
//SORTO07    DD DSN=TESTITN.NOV06.FILE7,                             
//              DISP=(NEW,CATLG,DELETE),UNIT=SYSDA,LRECL=899             
//SORTO08    DD DSN=TESTITN.NOV06.FILE8,                             
//              DISP=(NEW,CATLG,DELETE),UNIT=SYSDA,LRECL=899             
//SORTO09    DD DSN=TESTITN.NOV06.FILE9,                             
//              DISP=(NEW,CATLG,DELETE),UNIT=SYSDA,LRECL=899             
//SORTO10    DD DSN=TESTITN.NOV06.FILE10,                           
//              DISP=(NEW,CATLG,DELETE),UNIT=SYSDA,LRECL=899             
//SORTO11    DD DSN=TESTITN.NOV06.FILE11,                           
//              DISP=(NEW,CATLG,DELETE),UNIT=SYSDA,LRECL=899           
//SORTO12    DD DSN=TESTITN.NOV06.FILE12,                           
//              DISP=(NEW,CATLG,DELETE),UNIT=SYSDA,LRECL=899             
//SORTO13    DD DSN=TESTITN.NOV06.FILE13,                           
//              DISP=(NEW,CATLG,DELETE),UNIT=SYSDA,LRECL=899             
//SORTO14    DD DSN=TESTITN.NOV06.FILE14,                           
//              DISP=(NEW,CATLG,DELETE),UNIT=SYSDA,LRECL=899             
//SORTO15    DD DSN=TESTITN.NOV06.FILE15,                 
//              DISP=(NEW,CATLG,DELETE),UNIT=SYSDA,LRECL=899 
//SORTO16    DD DSN=TESTITN.NOV06.FILE16,                 
//              DISP=(NEW,CATLG,DELETE),UNIT=SYSDA,LRECL=899 
//SORTO17    DD DSN=TESTITN.NOV06.FILE17,                 
//              DISP=(NEW,CATLG,DELETE),UNIT=SYSDA,LRECL=899 
//SORTO18    DD DSN=TESTITN.NOV06.FILE18,                 
//              DISP=(NEW,CATLG,DELETE),UNIT=SYSDA,LRECL=899 
//SORTO19    DD DSN=TESTITN.NOV06.FILE19,                 
//              DISP=(NEW,CATLG,DELETE),UNIT=SYSDA,LRECL=899 
//SORTO20    DD DSN=TESTITN.NOV06.FILE20,                 
//              DISP=(NEW,CATLG,DELETE),UNIT=SYSDA,LRECL=899 
//SORTO21    DD DSN=TESTITN.NOV06.FILE21,                 
//              DISP=(NEW,CATLG,DELETE),UNIT=SYSDA,LRECL=899 
//SORTO22    DD DSN=TESTITN.NOV06.FILE22,                 
//              DISP=(NEW,CATLG,DELETE),UNIT=SYSDA,LRECL=899 
//SORTO23    DD DSN=TESTITN.NOV06.FILE23,                 
//              DISP=(NEW,CATLG,DELETE),UNIT=SYSDA,LRECL=899 
//SORTO24    DD DSN=TESTITN.NOV06.FILE24,                 
//              DISP=(NEW,CATLG,DELETE),UNIT=SYSDA,LRECL=899 
//SORTO25    DD DSN=TESTITN.NOV06.FILE25,                 
//              DISP=(NEW,CATLG,DELETE),UNIT=SYSDA,LRECL=899 
//SORTO26    DD DSN=TESTITN.NOV06.FILE26,                 
//              DISP=(NEW,CATLG,DELETE),UNIT=SYSDA,LRECL=899 
//SORTO27    DD DSN=TESTITN.NOV06.FILE27,                 
//              DISP=(NEW,CATLG,DELETE),UNIT=SYSDA,LRECL=899 
//SORTO28    DD DSN=TESTITN.NOV06.FILE28,                 
//              DISP=(NEW,CATLG,DELETE),UNIT=SYSDA,LRECL=899 
//SORTO29    DD DSN=TESTITN.NOV06.FILE29,                 
//              DISP=(NEW,CATLG,DELETE),UNIT=SYSDA,LRECL=899 
//SORTO30    DD DSN=TESTITN.NOV06.FILE30,                 
//              DISP=(NEW,CATLG,DELETE),UNIT=SYSDA,LRECL=899 
//SORTO31    DD DSN=TESTITN.NOV06.FILE31,                 
//              DISP=(NEW,CATLG,DELETE),UNIT=SYSDA,LRECL=899 
//SORTO32    DD DSN=TESTITN.NOV06.FILE32,                 
//              DISP=(NEW,CATLG,DELETE),UNIT=SYSDA,LRECL=899 
//SORTO33    DD DSN=TESTITN.NOV06.FILE33,                 
//              DISP=(NEW,CATLG,DELETE),UNIT=SYSDA,LRECL=899 
//SORTO34    DD DSN=TESTITN.NOV06.FILE34,                 
//              DISP=(NEW,CATLG,DELETE),UNIT=SYSDA,LRECL=899         
//SORTO35    DD DSN=TESTITN.NOV06.FILE35,                       
//              DISP=(NEW,CATLG,DELETE),UNIT=SYSDA,LRECL=899         
//SORTO36    DD DSN=TESTITN.NOV06.FILE361,                       
//              DISP=(NEW,CATLG,DELETE),UNIT=SYSDA,LRECL=899         
//SYSIN      DD DISP=(OLD,PASS),DSN=&&SORTCNTL                                               
Back to top
View user's profile Send private message
gcicchet

Senior Member


Joined: 28 Jul 2006
Posts: 1703
Location: Australia

PostPosted: Mon Nov 09, 2009 4:59 am    Post subject:
Reply with quote

Hi Enrico,

but will it run less than 3.25 hours ? icon_lol.gif


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

Senior Member


Joined: 28 Jul 2006
Posts: 1703
Location: Australia

PostPosted: Mon Nov 09, 2009 5:08 am    Post subject:
Reply with quote

Hi,

there is a correction to my code

Code:
C'INCLUDE=(178,8,CH,EQ,C''',DATE2-1,C''')',/,


should be
Code:
C'INCLUDE=(178,6,CH,EQ,C''',DATE2-1,C''')',/,


The 178,8 should be 178,6 for all the statements
Gerry
Back to top
View user's profile Send private message
enrico-sorichetti

Global Moderator


Joined: 14 Mar 2007
Posts: 10202
Location: italy

PostPosted: Mon Nov 09, 2009 5:16 am    Post subject: Reply to: Automation of sort card.
Reply with quote

Hi Gerry !

I wonder what were the tests carried on by the TS
as usual the description does not match the coding ...

running the sort with Your first snippet should have given some kind of error

running with the proper card after Your correction might have certainly caused a greater elapsed, just for rewriting around 36 months of data instead of 36 days...

the 3 hours something might be reasonable since the data written is ~30 times the data as sampled in the original post.

let' s wait and see!
Back to top
View user's profile Send private message
Skolusu

Senior Member


Joined: 07 Dec 2007
Posts: 2205
Location: San Jose

PostPosted: Tue Nov 10, 2009 3:14 am    Post subject: Reply to: Automation of sort card.
Reply with quote

abhijit.nayak01,

The following DFSORT JCL will give you the desired results.


Code:

//STEP0100 EXEC PGM=SORT                                 
//SYSOUT   DD SYSOUT=*                                   
//SORTIN   DD *                                           
DUMMY RECORD                                             
//SORTOUT  DD DSN=&&C1,DISP=(,PASS),SPACE=(TRK,(1,1),RLSE)
//SYSIN    DD *                                           
  OPTION COPY                                                         
  INREC IFTHEN=(WHEN=INIT,BUILD=(1:DATE2,10:DATE2-12,                 
  20:DATE2-24,30:DATE2-36,40:4X)),                                     
  IFTHEN=(WHEN=INIT,OVERLAY=(140:1,4,ZD,MOD,+4,EDIT=(T),               
  141:1,4,ZD,MOD,+100,EDIT=(TTT),144:1,4,ZD,MOD,+400,EDIT=(TTT))),     
  IFTHEN=(WHEN=INIT,OVERLAY=(150:10,4,ZD,MOD,+4,EDIT=(T),             
  151:10,4,ZD,MOD,+100,EDIT=(TTT),154:10,4,ZD,MOD,+400,EDIT=(TTT))),   
  IFTHEN=(WHEN=INIT,OVERLAY=(160:20,4,ZD,MOD,+4,EDIT=(T),             
  161:20,4,ZD,MOD,+100,EDIT=(TTT),164:20,4,ZD,MOD,+400,EDIT=(TTT))),   
  IFTHEN=(WHEN=INIT,OVERLAY=(170:30,4,ZD,MOD,+4,EDIT=(T),             
  171:30,4,ZD,MOD,+100,EDIT=(TTT),174:30,4,ZD,MOD,+400,EDIT=(TTT))),   
  IFTHEN=(WHEN=(144,3,ZD,EQ,0,OR,(140,1,ZD,EQ,0,AND,141,3,ZD,GT,0)),   
  OVERLAY=(40:C'L'),HIT=NEXT),                                         
  IFTHEN=(WHEN=(154,3,ZD,EQ,0,OR,(150,1,ZD,EQ,0,AND,151,3,ZD,GT,0)),   
  OVERLAY=(41:C'L'),HIT=NEXT),                                         
  IFTHEN=(WHEN=(164,3,ZD,EQ,0,OR,(160,1,ZD,EQ,0,AND,161,3,ZD,GT,0)),   
  OVERLAY=(42:C'L'),HIT=NEXT),                                         
  IFTHEN=(WHEN=(174,3,ZD,EQ,0,OR,(170,1,ZD,EQ,0,AND,171,3,ZD,GT,0)),   
  OVERLAY=(43:C'L'))                                                   
  OUTREC BUILD=(81:1,4,10,4,20,4,30,4,40,4)                     
  OUTFIL REPEAT=37,IFOUTLEN=80,                                 
  IFTHEN=(WHEN=INIT,BUILD=(3:C'OUTFIL FNAMES=SORTOF',           
  SEQNUM,2,ZD,START=0,INCR=1,C',INCLUDE=(178,8,CH,EQ,C''',     
  DATE2,2X,C'''',C')',81:81,20)),                               
  IFTHEN=(WHEN=(23,2,ZD,EQ,00),OVERLAY=(03:C'OPTION COPY',80X)),
  IFTHEN=(WHEN=(23,2,ZD,EQ,01),OVERLAY=(49:DATE2-01),HIT=NEXT),
  IFTHEN=(WHEN=(23,2,ZD,EQ,02),OVERLAY=(49:DATE2-02),HIT=NEXT),
  IFTHEN=(WHEN=(23,2,ZD,EQ,03),OVERLAY=(49:DATE2-03),HIT=NEXT),
  IFTHEN=(WHEN=(23,2,ZD,EQ,04),OVERLAY=(49:DATE2-04),HIT=NEXT),
  IFTHEN=(WHEN=(23,2,ZD,EQ,05),OVERLAY=(49:DATE2-05),HIT=NEXT),
  IFTHEN=(WHEN=(23,2,ZD,EQ,06),OVERLAY=(49:DATE2-06),HIT=NEXT),
  IFTHEN=(WHEN=(23,2,ZD,EQ,07),OVERLAY=(49:DATE2-07),HIT=NEXT),
  IFTHEN=(WHEN=(23,2,ZD,EQ,08),OVERLAY=(49:DATE2-08),HIT=NEXT),
  IFTHEN=(WHEN=(23,2,ZD,EQ,09),OVERLAY=(49:DATE2-09),HIT=NEXT),
  IFTHEN=(WHEN=(23,2,ZD,EQ,10),OVERLAY=(49:DATE2-10),HIT=NEXT),
  IFTHEN=(WHEN=(23,2,ZD,EQ,11),OVERLAY=(49:DATE2-11),HIT=NEXT),
  IFTHEN=(WHEN=(23,2,ZD,EQ,12),OVERLAY=(49:DATE2-12),HIT=NEXT),
  IFTHEN=(WHEN=(23,2,ZD,EQ,13),OVERLAY=(49:DATE2-13),HIT=NEXT),
  IFTHEN=(WHEN=(23,2,ZD,EQ,14),OVERLAY=(49:DATE2-14),HIT=NEXT),
  IFTHEN=(WHEN=(23,2,ZD,EQ,15),OVERLAY=(49:DATE2-15),HIT=NEXT),
  IFTHEN=(WHEN=(23,2,ZD,EQ,16),OVERLAY=(49:DATE2-16),HIT=NEXT),
  IFTHEN=(WHEN=(23,2,ZD,EQ,17),OVERLAY=(49:DATE2-17),HIT=NEXT),
  IFTHEN=(WHEN=(23,2,ZD,EQ,18),OVERLAY=(49:DATE2-18),HIT=NEXT),
  IFTHEN=(WHEN=(23,2,ZD,EQ,19),OVERLAY=(49:DATE2-19),HIT=NEXT),
  IFTHEN=(WHEN=(23,2,ZD,EQ,20),OVERLAY=(49:DATE2-20),HIT=NEXT),
  IFTHEN=(WHEN=(23,2,ZD,EQ,21),OVERLAY=(49:DATE2-21),HIT=NEXT),
  IFTHEN=(WHEN=(23,2,ZD,EQ,22),OVERLAY=(49:DATE2-22),HIT=NEXT),
  IFTHEN=(WHEN=(23,2,ZD,EQ,23),OVERLAY=(49:DATE2-23),HIT=NEXT),
  IFTHEN=(WHEN=(23,2,ZD,EQ,24),OVERLAY=(49:DATE2-24),HIT=NEXT),
  IFTHEN=(WHEN=(23,2,ZD,EQ,25),OVERLAY=(49:DATE2-25),HIT=NEXT),
  IFTHEN=(WHEN=(23,2,ZD,EQ,26),OVERLAY=(49:DATE2-26),HIT=NEXT),
  IFTHEN=(WHEN=(23,2,ZD,EQ,27),OVERLAY=(49:DATE2-27),HIT=NEXT),
  IFTHEN=(WHEN=(23,2,ZD,EQ,28),OVERLAY=(49:DATE2-28),HIT=NEXT),
  IFTHEN=(WHEN=(23,2,ZD,EQ,29),OVERLAY=(49:DATE2-29),HIT=NEXT),
  IFTHEN=(WHEN=(23,2,ZD,EQ,30),OVERLAY=(49:DATE2-30),HIT=NEXT),
  IFTHEN=(WHEN=(23,2,ZD,EQ,31),OVERLAY=(49:DATE2-31),HIT=NEXT),
  IFTHEN=(WHEN=(23,2,ZD,EQ,32),OVERLAY=(49:DATE2-32),HIT=NEXT),
  IFTHEN=(WHEN=(23,2,ZD,EQ,33),OVERLAY=(49:DATE2-33),HIT=NEXT),
  IFTHEN=(WHEN=(23,2,ZD,EQ,34),OVERLAY=(49:DATE2-34),HIT=NEXT),     
  IFTHEN=(WHEN=(23,2,ZD,EQ,35),OVERLAY=(49:DATE2-35),HIT=NEXT),     
  IFTHEN=(WHEN=(23,2,ZD,EQ,36),OVERLAY=(49:DATE2-36),HIT=NEXT),     
  IFTHEN=(WHEN=(53,2,ZD,EQ,01),OVERLAY=(55:C'31'),HIT=NEXT),       
  IFTHEN=(WHEN=(53,2,ZD,EQ,02),OVERLAY=(55:C'28'),HIT=NEXT),       
  IFTHEN=(WHEN=(53,2,ZD,EQ,03),OVERLAY=(55:C'31'),HIT=NEXT),       
  IFTHEN=(WHEN=(53,2,ZD,EQ,04),OVERLAY=(55:C'30'),HIT=NEXT),       
  IFTHEN=(WHEN=(53,2,ZD,EQ,05),OVERLAY=(55:C'31'),HIT=NEXT),       
  IFTHEN=(WHEN=(53,2,ZD,EQ,06),OVERLAY=(55:C'30'),HIT=NEXT),       
  IFTHEN=(WHEN=(53,2,ZD,EQ,07),OVERLAY=(55:C'31'),HIT=NEXT),       
  IFTHEN=(WHEN=(53,2,ZD,EQ,08),OVERLAY=(55:C'31'),HIT=NEXT),       
  IFTHEN=(WHEN=(53,2,ZD,EQ,09),OVERLAY=(55:C'30'),HIT=NEXT),       
  IFTHEN=(WHEN=(53,2,ZD,EQ,10),OVERLAY=(55:C'31'),HIT=NEXT),       
  IFTHEN=(WHEN=(53,2,ZD,EQ,11),OVERLAY=(55:C'30'),HIT=NEXT),       
  IFTHEN=(WHEN=(53,2,ZD,EQ,12),OVERLAY=(55:C'31'),HIT=NEXT),       
  IFTHEN=(WHEN=(49,4,ZD,EQ,81,4,ZD,AND,                             
  53,2,ZD,EQ,2,AND,97,1,CH,EQ,C'L'),OVERLAY=(55:C'29'),HIT=NEXT),   
  IFTHEN=(WHEN=(49,4,ZD,EQ,85,4,ZD,AND,                             
  53,2,ZD,EQ,2,AND,98,1,CH,EQ,C'L'),OVERLAY=(55:C'29'),HIT=NEXT),   
  IFTHEN=(WHEN=(49,4,ZD,EQ,89,4,ZD,AND,                             
  53,2,ZD,EQ,2,AND,99,1,CH,EQ,C'L'),OVERLAY=(55:C'29'),HIT=NEXT),   
  IFTHEN=(WHEN=(49,4,ZD,EQ,93,4,ZD,AND,                             
  53,2,ZD,EQ,2,AND,100,1,CH,EQ,C'L'),OVERLAY=(55:C'29'))           
//*                                                                 
//STEP0200 EXEC PGM=SORT
//SYSOUT   DD SYSOUT=*   
//SORTIN   DD DSN=TESTITN.S18.SARBANE.MNTHLY.NEW.RFMT,DISP=SHR
//*
//SORTOF01 DD DSN=TESTITN.NOV06.FILE01,
//            DISP=(NEW,CATLG,DELETE,UNIT=SYSDA,
//            SPACE=(CYL,(X,Y),RLSE)
//*
//SORTOF02 DD DSN=TESTITN.NOV06.FILE02,
//            DISP=(NEW,CATLG,DELETE,UNIT=SYSDA,
//            SPACE=(CYL,(X,Y),RLSE)
//*
//SORTOF03 DD DSN=TESTITN.NOV06.FILE03,
//            DISP=(NEW,CATLG,DELETE,UNIT=SYSDA,
//            SPACE=(CYL,(X,Y),RLSE)
//*
//SORTOF04 DD DSN=TESTITN.NOV06.FILE04,
//            DISP=(NEW,CATLG,DELETE,UNIT=SYSDA,
//            SPACE=(CYL,(X,Y),RLSE)
//*
...code all your outfil names here

//SORTOF36 DD DSN=TESTITN.NOV06.FILE36,
//            DISP=(NEW,CATLG,DELETE,UNIT=SYSDA,
//            SPACE=(CYL,(X,Y),RLSE)
//*
//SYSIN    DD DSN=&&C1,DISP=SHR   
Back to top
View user's profile Send private message
abhijit.nayak01

Active User


Joined: 22 Mar 2009
Posts: 157
Location: South Africa

PostPosted: Thu Nov 12, 2009 9:12 pm    Post subject: Reply to: Automation of sort card.
Reply with quote

Hi,
Thanks for all your updates and I completed the task from your valuable inputs. I putted the sort card by using cobol program and it took 1.42 hour. Check the below code and let me know if any further tuning can be done.

Code:
PROGRAM:
000110  INPUT-OUTPUT SECTION.                                             
000120  FILE-CONTROL.                                                     
000130      SELECT SORT-FILE ASSIGN TO SORTWK.                             
000140  DATA DIVISION.                                                     
000150   FILE SECTION.                                                     
000160  FD  SORT-FILE                                                     
000170       BLOCK CONTAINS 0 RECORDS                                     
000180       RECORDING MODE IS F                                           
000190       LABEL RECORDS ARE STANDARD                                   
000200       DATA RECORD IS SORT-FILE-REC.                                 
000210  01  SORT-FILE-REC.                                                 
000220       02  SORT-OUTFIL     PIC X(23).                               
000230       02  SORT-COUNTER    PIC 9(02).                               
000240       02  SORT-INCLUDE    PIC X(24).                               
000250       02  SORT-DATE       PIC 9(08).                               
000260       02  SORT-CHAR       PIC X(02).                               
000270       02  SORT-FILLER     PIC X(21).                               
000280  WORKING-STORAGE SECTION.                                           
000290  01  WS-SORT-FILE-REC.                                             
000300       02  WS-OUTFIL   PIC X(23).                                   
000310       02  WS-COUNTER   PIC 9(02).                                   
000320       02  WS-INCLUDE   PIC X(24).                                   
000330       02  WS-DATE      PIC 9(08).                                   
000340       02  WS-CHAR      PIC X(02).                                   
000350       02  WS-FILLER    PIC X(21).                                   
000360 *PXP                                                               
000370  01  WS-SORT-COPY       PIC X(80) VALUE '    SORT FIELDS=COPY'.     
000380 *PXP                                                               
000390  01  WS-SORT-OUTFIL     PIC X(23) VALUE '    OUTFIL FNAMES=SORTO'. 
000400   01  WS-SORT-CTR       PIC 9(02).                                 
000410   01  WS-SORT-INCLUDE   PIC X(24)                                   
000420                         VALUE ',INCLUDE=(178,8,CH,EQ,C'''.         
000430   01  WS-SORT-CHAR      PIC X(02)  VALUE ''')'.                     
000440   01  WS-CURR-DATE      PIC 9(08).                                 
000450   01  WS-SORT-DATE REDEFINES WS-CURR-DATE.                         
000460        05  WS-DATE-CC     PIC 9(02).                               
000470        05  WS-DATE-YY     PIC 9(02).                               
000480        05  WS-DATE-MM     PIC 9(02).                               
000490        05  WS-DATE-DD     PIC 9(02).                               
000500   01  WS-QUOTIENT         PIC 9(02).                               
000510   01  WS-REMAINDER        PIC 9(02).                         
000520   PROCEDURE DIVISION.                                         
000530       PERFORM OPEN-PARA.                                     
000540       PERFORM FIRST-WRITE-PARA.                               
000550       PERFORM MAIN-PARA.                                     
000560       PERFORM CLOSE-PARA.                                     
000570       STOP RUN.                                               
000580   OPEN-PARA.                                                 
000590        OPEN OUTPUT SORT-FILE.                                 
000600 * END OPEN-PARA.                                             
000610 * FIRST-MOVE-PARA.                                           
000620 *      MOVE 'SORT FIELDS=COPY' TO SORT-FILE-REC.             
000630 *      PERFORM WRITE-PARA.                                   
000640 * END FIRST-MOVE-PARA.                                       
000650   MAIN-PARA.                                                 
000660        MOVE FUNCTION CURRENT-DATE(1:8) TO WS-CURR-DATE.       
000670        MOVE 01 TO WS-SORT-CTR.                               
000680        PERFORM CALC-DATE-PARA UNTIL WS-SORT-CTR = 37.         
000690 * END MAIN-PARA.                                             
000700   CALC-DATE-PARA.                                             
000710       SUBTRACT 01 FROM WS-DATE-MM.                           
000720       IF WS-DATE-MM = ZERO                                   
000730          MOVE 12 TO WS-DATE-MM                               
000740          SUBTRACT 01 FROM WS-DATE-YY.                         
000750       EVALUATE WS-DATE-MM                                     
000760           WHEN 01 MOVE 31 TO WS-DATE-DD                       
000770           WHEN 02 PERFORM LEAP-YEAR-PARA                     
000780           WHEN 03 MOVE 31 TO WS-DATE-DD                       
000790           WHEN 04 MOVE 30 TO WS-DATE-DD                       
000800           WHEN 05 MOVE 31 TO WS-DATE-DD                       
000810           WHEN 06 MOVE 30 TO WS-DATE-DD                       
000820           WHEN 07 MOVE 31 TO WS-DATE-DD                       
000830           WHEN 08 MOVE 31 TO WS-DATE-DD                       
000840           WHEN 09 MOVE 30 TO WS-DATE-DD                       
000850           WHEN 10 MOVE 31 TO WS-DATE-DD                       
000860           WHEN 11 MOVE 30 TO WS-DATE-DD                       
000870           WHEN 12 MOVE 31 TO WS-DATE-DD.                     
000880      PERFORM MAIN-MOVE-PARA.                                 
000890      PERFORM MAIN-WRITE-PARA.                                 
000900         ADD 1 TO WS-SORT-CTR.                                 
000910 *     END CALC-DATE-PARA.                                     
000920   MAIN-MOVE-PARA.                                             
000930        INITIALIZE WS-SORT-FILE-REC.                           
000940        MOVE WS-SORT-OUTFIL TO WS-OUTFIL.                       
000950        MOVE WS-SORT-CTR TO WS-COUNTER.                         
000960        MOVE WS-SORT-INCLUDE TO WS-INCLUDE.                     
000970        MOVE WS-SORT-DATE TO WS-DATE.                           
000980        MOVE WS-SORT-CHAR TO WS-CHAR.                           
000990 * END MAIN-MOVE-PARA.                                         
001000   FIRST-WRITE-PARA.                                           
001010        WRITE SORT-FILE-REC FROM WS-SORT-COPY.                 
001020 * END FIRST-WRITE-PARA.                                       
001030   MAIN-WRITE-PARA.                                             
001040        WRITE SORT-FILE-REC FROM WS-SORT-FILE-REC.             
001050 * END WRITE-PARA.                                             
001060   LEAP-YEAR-PARA.                                             
001070       IF WS-DATE-YY EQUAL ZERO                                 
001080           DIVIDE WS-DATE-CC BY 4                               
001090                 GIVING WS-QUOTIENT REMAINDER WS-REMAINDER     
001100       ELSE                                                     
001110           DIVIDE WS-DATE-YY BY 4                               
001120                 GIVING WS-QUOTIENT REMAINDER WS-REMAINDER     
001130       END-IF.                                                 
001140       IF WS-REMAINDER EQUAL ZERO                               
001150           MOVE 29 TO WS-DATE-DD                               
001160       ELSE                                                     
001170           MOVE 28 TO WS-DATE-DD                               
001180       END-IF.                                                 
001190 *  END LEAP-YEAR-PARA.                                         
001200    CLOSE-PARA.                                                 
001210       CLOSE SORT-FILE.                                         
001220 *  END CLOSE-PARA.
**************************************************
JOB
005310 //ITSORT   EXEC PGM=ITSORT                                       
005320 //STEPLIB  DD  DSN=TEST.LINKLIB,                       
005330 //             DISP=SHR                                         
005340 //SORTWK   DD  DSN=TESTITN.SORT.TEST,DISP=(NEW,CATLG,DELETE),   
005341 //*SORTWK    DD  DSN=&&SORTCARD,                                 
005342 //*             DISP=(NEW,PASS),                                 
005350 //             UNIT=SYSDA,SPACE=(TRK,(1,1)),                     
005360 //             DCB=(RECFM=FB,LRECL=80)                           
005400 //SYSOUT   DD SYSOUT=*                                           
005500 //SYSPRINT DD SYSOUT=*                                           
005600 //SORT1    EXEC PGM=SORT                                         
005700 //SYSOUT  DD SYSOUT=*                                           
005800 //DFSMSG  DD SYSOUT=*                                           
005900 //SORTIN  DD DSN=TESTITN.S18.SARBANE.MNTHLY.NEW.RFMT,DISP=SHR   
006000 //SORTO01  DD DSN=TESTITN.SARBANE.FILE01.OCTAC,                 
006100 //            DISP=(NEW,CATLG,DELETE),UNIT=SYSDA,LRECL=899       
006200 //SORTO02  DD DSN=TESTITN.SARBANE.FILE02.OCTAC,                 
006300 //            DISP=(NEW,CATLG,DELETE),UNIT=SYSDA,LRECL=899       
006400 //SORTO03  DD DSN=TESTITN.SARBANE.FILE03.OCTAC,                 
006500 //            DISP=(NEW,CATLG,DELETE),UNIT=SYSDA,LRECL=899       
006600 //SORTO04  DD DSN=TESTITN.SARBANE.FILE04.OCTAC,                 
006700 //            DISP=(NEW,CATLG,DELETE),UNIT=SYSDA,LRECL=899       
006800 //SORTO05  DD DSN=TESTITN.SARBANE.FILE05.OCTAC,                 
006900 //            DISP=(NEW,CATLG,DELETE),UNIT=SYSDA,LRECL=899       
007000 //SORTO06  DD DSN=TESTITN.SARBANE.FILE06.OCTAC,                 
007100 //            DISP=(NEW,CATLG,DELETE),UNIT=SYSDA,LRECL=899       
007200 //SORTO07  DD DSN=TESTITN.SARBANE.FILE07.OCTAC,                 
007300 //            DISP=(NEW,CATLG,DELETE),UNIT=SYSDA,LRECL=899       
007400 //SORTO08  DD DSN=TESTITN.SARBANE.FILE08.OCTAC,                 
007500 //            DISP=(NEW,CATLG,DELETE),UNIT=SYSDA,LRECL=899       
007600 //SORTO09  DD DSN=TESTITN.SARBANE.FILE09.OCTAC,           
007700 //            DISP=(NEW,CATLG,DELETE),UNIT=SYSDA,LRECL=899
007800 //SORTO10 DD DSN=TESTITN.SARBANE.FILE10.OCTAC,             
007900 //            DISP=(NEW,CATLG,DELETE),UNIT=SYSDA,LRECL=899
008000 //SORTO11 DD DSN=TESTITN.SARBANE.FILE11.OCTAC,             
008100 //            DISP=(NEW,CATLG,DELETE),UNIT=SYSDA,LRECL=899
008200 //SORTO12 DD DSN=TESTITN.SARBANE.FILE12.OCTAC,             
008300 //            DISP=(NEW,CATLG,DELETE),UNIT=SYSDA,LRECL=899
008400 //SORTO13 DD DSN=TESTITN.SARBANE.FILE13.OCTAC,             
008500 //            DISP=(NEW,CATLG,DELETE),UNIT=SYSDA,LRECL=899
008600 //SORTO14 DD DSN=TESTITN.SARBANE.FILE14.OCTAC,             
008700 //            DISP=(NEW,CATLG,DELETE),UNIT=SYSDA,LRECL=899
008800 //SORTO15 DD DSN=TESTITN.SARBANE.FILE15.OCTAC,             
008900 //            DISP=(NEW,CATLG,DELETE),UNIT=SYSDA,LRECL=899
009000 //SORTO16 DD DSN=TESTITN.SARBANE.FILE16.OCTAC,             
009100 //            DISP=(NEW,CATLG,DELETE),UNIT=SYSDA,LRECL=899
009200 //SORTO17 DD DSN=TESTITN.SARBANE.FILE17.OCTAC,             
009300 //            DISP=(NEW,CATLG,DELETE),UNIT=SYSDA,LRECL=899
009400 //SORTO18 DD DSN=TESTITN.SARBANE.FILE18.OCTAC,             
009500 //            DISP=(NEW,CATLG,DELETE),UNIT=SYSDA,LRECL=899
009600 //SORTO19 DD DSN=TESTITN.SARBANE.FILE19.OCTAC,             
009700 //            DISP=(NEW,CATLG,DELETE),UNIT=SYSDA,LRECL=899
009800 //SORTO20 DD DSN=TESTITN.SARBANE.FILE20.OCTAC,             
009900 //            DISP=(NEW,CATLG,DELETE),UNIT=SYSDA,LRECL=899
010000 //SORTO21 DD DSN=TESTITN.SARBANE.FILE21.OCTAC,             
010100 //            DISP=(NEW,CATLG,DELETE),UNIT=SYSDA,LRECL=899
010200 //SORTO22 DD DSN=TESTITN.SARBANE.FILE22.OCTAC,             
010300 //            DISP=(NEW,CATLG,DELETE),UNIT=SYSDA,LRECL=899
010400 //SORTO23 DD DSN=TESTITN.SARBANE.FILE23.OCTAC,             
010500 //            DISP=(NEW,CATLG,DELETE),UNIT=SYSDA,LRECL=899
010600 //SORTO24 DD DSN=TESTITN.SARBANE.FILE24.OCTAC,             
010700 //            DISP=(NEW,CATLG,DELETE),UNIT=SYSDA,LRECL=899
010800 //SORTO25 DD DSN=TESTITN.SARBANE.FILE25.OCTAC,             
010900 //            DISP=(NEW,CATLG,DELETE),UNIT=SYSDA,LRECL=899
011000 //SORTO26 DD DSN=TESTITN.SARBANE.FILE26.OCTAC,             
011100 //            DISP=(NEW,CATLG,DELETE),UNIT=SYSDA,LRECL=899
011200 //SORTO27 DD DSN=TESTITN.SARBANE.FILE27.OCTAC,             
011300 //            DISP=(NEW,CATLG,DELETE),UNIT=SYSDA,LRECL=899
011400 //SORTO28 DD DSN=TESTITN.SARBANE.FILE28.OCTAC,               
011500 //            DISP=(NEW,CATLG,DELETE),UNIT=SYSDA,LRECL=899   
011600 //SORTO29 DD DSN=TESTITN.SARBANE.FILE29.OCTAC,               
011700 //            DISP=(NEW,CATLG,DELETE),UNIT=SYSDA,LRECL=899   
011800 //SORTO30 DD DSN=TESTITN.SARBANE.FILE30.OCTAC,               
011900 //            DISP=(NEW,CATLG,DELETE),UNIT=SYSDA,LRECL=899   
012000 //SORTO31 DD DSN=TESTITN.SARBANE.FILE31.OCTAC,               
012100 //            DISP=(NEW,CATLG,DELETE),UNIT=SYSDA,LRECL=899   
012200 //SORTO32 DD DSN=TESTITN.SARBANE.FILE32.OCTAC,               
012300 //            DISP=(NEW,CATLG,DELETE),UNIT=SYSDA,LRECL=899   
012400 //SORTO33 DD DSN=TESTITN.SARBANE.FILE33.OCTAC,               
012500 //            DISP=(NEW,CATLG,DELETE),UNIT=SYSDA,LRECL=899   
012600 //SORTO34 DD DSN=TESTITN.SARBANE.FILE34.OCTAC,               
012700 //            DISP=(NEW,CATLG,DELETE),UNIT=SYSDA,LRECL=899   
012800 //SORTO35 DD DSN=TESTITN.SARBANE.FILE35.OCTAC,               
012900 //            DISP=(NEW,CATLG,DELETE),UNIT=SYSDA,LRECL=899   
013000 //SORTO36 DD DSN=TESTITN.SARBANE.FILE36.OCTAC,               
013100 //            DISP=(NEW,CATLG,DELETE),UNIT=SYSDA,LRECL=899   
013200 //*SYSIN   DD DSN=&&SORTCARD,DISP=(OLD,PASS)                 
013300 //SYSIN   DD DSN=TESTITN.SORT.TEST,DISP=SHR
Back to top
View user's profile Send private message
enrico-sorichetti

Global Moderator


Joined: 14 Mar 2007
Posts: 10202
Location: italy

PostPosted: Thu Nov 12, 2009 9:33 pm    Post subject: Reply to: Automation of sort card.
Reply with quote

this topic is really going down the sink... icon_eek.gif
why do You believe that changing the method for the generation of the sort control card should change the overall performace of Your jcl...

look at the job output read the cpu/elapsed of --
a) the step which generates the control cards
b) the sort step itself

compare it to the cpu/elapsed of a sort whith the hand written control cards
and meditate, please, meditate ...
Back to top
View user's profile Send private message
abhijit.nayak01

Active User


Joined: 22 Mar 2009
Posts: 157
Location: South Africa

PostPosted: Fri Nov 20, 2009 12:40 am    Post subject: Reply to: Automation of sort card.
Reply with quote

Hi can anybody suggest me:
AFTER CHANGE

PROGRAM CC ELAPSED  CPU     RESIDENT SWAP SERV.  PAGE DISK TAPE
 NAME  HH:MM:SS MMM:SS.TH HH:MM:SS CNT UNITS IN+OUT IO'S IO'S
U**** 0 0:00:03 000:00.20 0:00:03 0   6469 0     0     0
ITSORT 0 0:00:00 000:00.01 0:00:00 0    293 0    31     0
SORT  0 1:28:20 024:33.60 1:28:20 0 47969K 0 1139K 87461
BEFORE CHANGE
PROGRAM CC ELAPSED  CPU     RESIDENT SWAP SERV.  PAGE DISK TAPE
 NAME  HH:MM:SS MMM:SS.TH HH:MM:SS CNT UNITS IN+OUT IO'S IO'S
 U**** 0 0:00:00 000:00.01 0:00:00 0 485 0 0 0
 I**** 0 2:22:08 023:03.56 2:22:08 0 45604K 0 1159K 5684K
Here after change refers to the run after including the new program mentioned in previous page.check this and please suggest me whether the after change is good or the before change.
Back to top
View user's profile Send private message
enrico-sorichetti

Global Moderator


Joined: 14 Mar 2007
Posts: 10202
Location: italy

PostPosted: Fri Nov 20, 2009 12:58 am    Post subject: Reply to: Automation of sort card.
Reply with quote

ok... lety' s start over again...
You have a sort step ? OK

before
You hand write/modify the needed sort control cards OK
You run the sort step with the <hand written/modified> sort control cards OK

after
instead of writing/modifying the sort control cards by hand You generate them with a <program> OK
I assume that You checked/inspected the <program generated> control cards for correctness
and found that they were exactly the same cards that You would have written/modified by hand OK
You run the sort step with the <program generated> sort control cards OK

what reason do You have to believe that the two sort steps would behave differently
from a resource consumption point of view ( not elapsed ) icon_question.gif
given that the elapsed and resurce consumption of the <generating program> is negligible
Back to top
View user's profile Send private message
Robert Sample

Global Moderator


Joined: 06 Jun 2008
Posts: 7913
Location: Bellevue, IA

PostPosted: Fri Nov 20, 2009 1:02 am    Post subject:
Reply with quote

How are you defining "good"? If I'm reading your post right (you really should use BBcode to post anything from the computer -- it keeps the columns aligned), elapsed time went from 2 hours 22 minutes 8 seconds to 1 hour 28 minutes 20 seconds, while CPU time went from 23 minutes 3.56 seconds to 24 minutes 33.6 seconds. If "good" means reducing the overall time the job takes, the after is better. If "good" means reducing CPU usage, then the before is better. Define your term and then you can choose which is better -- but not before defining!
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 -> DFSORT/ICETOOL All times are GMT + 6 Hours
Page 1 of 1

 

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