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

Icetool sort for proper trailer totals


IBM Mainframe Forums -> DFSORT/ICETOOL
Post new topic   Reply to topic
View previous topic :: View next topic  
Author Message
AnujaS

New User


Joined: 23 Oct 2008
Posts: 5
Location: India

PostPosted: Fri Nov 07, 2008 10:03 am
Reply with quote

Hi,
I have a flat file, which has a header, Some 'P' records, some 'S' records and a trailer.
In o/p i wish to omit the 'S' records
O/p file should have header. 'P' records and trailer.
Trailer should have the total count of available 'P' records (count should exclude header and trailer).
Back to top
View user's profile Send private message
Arun Raj

Moderator


Joined: 17 Oct 2006
Posts: 2481
Location: @my desk

PostPosted: Fri Nov 07, 2008 10:27 am
Reply with quote

Hello,

Post a few sample input and output records using the "Code" button. Also what about the LRECL/RECFM of input/output files..?
Back to top
View user's profile Send private message
AnujaS

New User


Joined: 23 Oct 2008
Posts: 5
Location: India

PostPosted: Fri Nov 07, 2008 10:52 am
Reply with quote

Code:

*Header(has branch no as zero)
0
*records
*branch| accountno| hier_ind| cutoff
1234       11111        P            20081212
1234       11111        S            20081203
1234       11111        S            20081204
*Trailer(has branch no as 9999999)
9999999  3

o/p required is
0
1234       11111        P            20081212
9999999  1(1 is the total number of 'P' records,how to get this 1)

------------------------


besides:
lrecl = 1000
recfm=fb for both i/p and o/p files
Back to top
View user's profile Send private message
Arun Raj

Moderator


Joined: 17 Oct 2006
Posts: 2481
Location: @my desk

PostPosted: Fri Nov 07, 2008 11:29 am
Reply with quote

You need to provide the position,length and type of relevant fields like branch and hier_ind
eg; branch no ----1-7 (ZD)
Back to top
View user's profile Send private message
sunnychopra

New User


Joined: 11 Mar 2008
Posts: 3
Location: Pune

PostPosted: Fri Nov 07, 2008 11:33 am
Reply with quote

Use this icon_smile.gif
Code:

//S1    EXEC  PGM=SORT                                     
//SORTIN DD *                                             
0                                                         
1234       11111        P            20081212             
1234       11111        S            20081203             
1234       11111        S            20081204             
9999999  3                                                 
/*                                                         
//SORTOUT   DD  SYSOUT=*                                   
//SYSOUT    DD  SYSOUT=*                                   
//SYSPRINT DD SYSOUT=*                                     
//SYSIN    DD  *                                           
  OPTION COPY                                             
  OMIT COND=(25,1,CH,EQ,C'S',OR,1,7,CH,EQ,C'9999999')     
  OUTFIL FNAMES=SORTOUT,TRAILER1=(1:'9999999',             
  COUNT-1=(EDIT=(IIT)))                                   
/*
Back to top
View user's profile Send private message
AnujaS

New User


Joined: 23 Oct 2008
Posts: 5
Location: India

PostPosted: Fri Nov 07, 2008 11:58 am
Reply with quote

Code:

OPTION COPY                                                   
SORT FIELDS=(01,04,PD,A,                 * BRANCH-NO           
             08,05,PD,A,                 * ACCOUNT-NO         
             474,05,PD,A)                * LAST-CUTOFF-DATE   
OUTFIL FNAMES=ONLYPRIM,NODETAIL,                               
       OMIT=(684,1,CH,EQ,C'S'),                               
       OUTREC IF THEN=(WHEN=(01,04,PD,EQ,'9999999'),           
       OVERLAY=(1,27,28,8,COUNT=(M11,LENGTH=8),36,964))       
                                                               
OUTFIL FNAMES = ONLYSEC,NODETAIL,                             
       STARTREC = 2                                           
       OMIT = (684,1,CH,EQ,'P'),                               
       OUTREC IF THEN = (WHEN = (01,04,PD,EQ,'9999999'),       
       OVERLAY = (1,27,28,8,COUNT=(M11,LENGTH=8),36:964,PD'0'))




i am trying to use this, hope this clarifies
Back to top
View user's profile Send private message
dick scherrer

Moderator Emeritus


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

PostPosted: Fri Nov 07, 2008 12:03 pm
Reply with quote

Hello,

Quote:
i am trying to use this, hope this clarifies
What happens when you run this?

Your "code" specifies packed-decimal data, but the sample data does not contain packed fields. . .

You need to post the messages (including message ids) that were produced by this execution.
Back to top
View user's profile Send private message
Arun Raj

Moderator


Joined: 17 Oct 2006
Posts: 2481
Location: @my desk

PostPosted: Fri Nov 07, 2008 12:08 pm
Reply with quote

Hello,
Quote:
hope this clarifies

No, seeing this I got more qns. Here you've 2 output files which is not mentioned in your original post.
Are you trying to split the input file into two files - one each for "P" and "S" records? If yes, how the header/trailer records should like? Should it be the same for both the output files except for the count? You need to do a better job of explaining what exactly you want to achieve.
Back to top
View user's profile Send private message
AnujaS

New User


Joined: 23 Oct 2008
Posts: 5
Location: India

PostPosted: Fri Nov 07, 2008 12:29 pm
Reply with quote

Apologies,

--Header contains branch number as zeroes (helps to identify header)
--Each record contains several details and an indicator at the 684th position 'P' or 'S', indicating primary or secondary record
--Trailer contains several details, but branch number for trailer will be 9999999, and it will have a total of the number of records ('P' or 'S') at position 28, length 8

Requirement:
file 1 should contain header (branch number 0)
records with ind 'P'
Trailer should contain all the details as they were in i/p file except for position 28, which will contain count of all 'P' records

file 2
should not contain header
records with ind 'S'
trailer should have all details as it was in i/p file except at loaction 28, that has count of all 'S' records.
-----------------------------------------------
Back to top
View user's profile Send private message
sunnychopra

New User


Joined: 11 Mar 2008
Posts: 3
Location: Pune

PostPosted: Fri Nov 07, 2008 2:39 pm
Reply with quote

Am assuming trailer count at 8th pos and inidcator at 25th position.(As in exampole given by poster)

Code:

//S1    EXEC  PGM=SORT                                               
//SORTIN DD *                                                       
0                                                                   
1234       11111        P            20081212                       
1234       11111        S            20081203                       
1234       11111        S            20081204                       
9999999  3                                                           
/*                                                                   
//OUT1   DD  SYSOUT=*                                               
//OUT2   DD  SYSOUT=*                                               
//SYSOUT    DD  SYSOUT=*                                             
//SYSPRINT DD SYSOUT=*                                               
//SYSIN    DD  *                                                     
  OPTION COPY                                                       
  OUTFIL FNAMES=OUT1,OMIT=(25,1,CH,EQ,C'S',OR,1,7,CH,EQ,C'9999999'),
  TRAILER1=(1:'9999999',COUNT-1=(EDIT=(IIIIIIIT)))                   
  OUTFIL FNAMES=OUT2,INCLUDE=(25,1,CH,EQ,C'S'),                     
  TRAILER1=(1:'9999999',COUNT=(EDIT=(IIIIIIIT)))
/*                                               
Back to top
View user's profile Send private message
Frank Yaeger

DFSORT Developer


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

PostPosted: Fri Nov 07, 2008 10:58 pm
Reply with quote

AnujaS,

sunnychopra's "solution" will NOT preserve the information in the trailer record as you requested because it just rebuilds certain fields in the trailer record. It also does NOT use the positions you specified for the fields.

Here's a DFSORT/ICETOOL job that will actually do what you asked for based on what you've said in your posts:

Code:

//S1    EXEC  PGM=ICEMAN
//SYSOUT    DD  SYSOUT=*
//SORTIN DD DSN=...  input file (FB/1000)
//ONLYPRIM DD DSN=...  output file1 (FB/1000)
//ONLYSEC  DD DSN=...  output file2 (FB/1000)
//SYSIN    DD    *
  SORT FIELDS=(01,04,PD,A,                 * BRANCH-NO
               08,05,PD,A,                 * ACCOUNT-NO
               474,05,PD,A)                * LAST-CUTOFF-DATE
  OUTFIL FNAMES=ONLYPRIM,REMOVECC,
    OMIT=(684,1,CH,EQ,C'S'),
    IFOUTLEN=1000,
    IFTHEN=(WHEN=INIT,OVERLAY=(1001:SEQNUM,8,ZD)),
    IFTHEN=(WHEN=(1,4,PD,EQ,9999999),
      OVERLAY=(28:1001,8,ZD,SUB,+2,M11,LENGTH=8))
  OUTFIL FNAMES=ONLYSEC,REMOVECC,
    INCLUDE=(1,4,PD,EQ,9999999,OR,684,1,CH,EQ,C'S'),
    IFOUTLEN=1000,
    IFTHEN=(WHEN=INIT,OVERLAY=(1001:SEQNUM,8,ZD)),
    IFTHEN=(WHEN=(1,4,PD,EQ,9999999),
      OVERLAY=(28:1001,8,ZD,SUB,+1,M11,LENGTH=8))
/*
Back to top
View user's profile Send private message
AnujaS

New User


Joined: 23 Oct 2008
Posts: 5
Location: India

PostPosted: Wed Nov 12, 2008 8:37 am
Reply with quote

Thanks Everybody,
This has worked well.
Back to top
View user's profile Send private message
View previous topic :: :: View next topic  
Post new topic   Reply to topic View Bookmarks
All times are GMT + 6 Hours
Forum Index -> DFSORT/ICETOOL

 


Similar Topics
Topic Forum Replies
No new posts Need to set RC4 through JCL SORT DFSORT/ICETOOL 5
No new posts How to split large record length file... DFSORT/ICETOOL 10
No new posts JCL sort card - get first day and las... JCL & VSAM 9
No new posts Sort First/last record of a subset th... DFSORT/ICETOOL 7
No new posts Shift left VB record without x00 endi... DFSORT/ICETOOL 11
Search our Forums:

Back to Top