Tony, Did you have the override of ODMAXBF? In my sample JCL I have coded it as ODMAXBF=100K overriding the default value of 2M. Can you rerun the job with the ODMAXBF parm?
Thanks, Kolusu DFSORT Development IBM Corporation IBM Mainframe Discussion List <[email protected]> wrote on 08/21/2014 09:18:40 AM: > From: TonyIcloud-OPERA <[email protected]> > To: [email protected] > Date: 08/21/2014 09:25 AM > Subject: Re: DF/SORT question (challenge?) > Sent by: IBM Mainframe Discussion List <[email protected]> > > Before I tried the solution cited below (TYVM BTW), I set up a test > manually with some interesting results. The input file is not sorted, and > I'm only doing SORT FIELDS=COPY. All I want to do is to break up the file > into a bunch of little files. > > Test #1. Read my input file, 229,762 records, lrecl=200/27800 FB , 310 DD > statements, 310 OUTFIL INCLUDE statements. RC=0, 310 members created, all > the data checks out. > > Test #2. Read the same input file, 321 DD statements, 321 OUTFIL INCLUDE > statements, abends: > > 10.09.26 JOB08830 IEC036I 002-B4,IGC0005E,IDSXSB7A,AA,VS09610,4BB9,SHRE16, > 452 > 452 IDSX00S.IDSXSB7.SYSE.FIDX03.PDSE > > ICE185A 0 AN S002 ABEND WAS ISSUED BY DFSORT, ANOTHER PROGRAM OR AN EXIT > (PHASE C 3) > Quickref provides: > B4 - Unable to create a system buffer required for PDSE processing. > > I retried with regions of 16M, 32M, 0M, same result. Not sure if our > local storage police exit chokes off my attempt at 0M. > > > Interestingly, even though the abend occurred the output PDSE was > populated with all 321 members however the last 8 members contain 0 > records. Looks like DF/SORT was tripped up at the 313 mark by some system > limitation. I'm going to consult with my sysprogs before we go to IBM for > help. > > P.S. My old successful attempt at writing 1,000 members occurred at a > different company, a much smaller shop, oddly enough. > > > > > > > On Wed, 20 Aug 2014 12:01:00 -0500, Sri h Kolusu <[email protected]> > wrote: > > > Tony, > > > > It is quite easy to split the group of records into multiple members. > > Here > > is a sample JCL which will give you the desired results of splitting the > > first 999 groups of records into a PDSE each containing the group of > > records. I also assumed your Input is already sorted on the field you > > want > > to split. I assumed that the split field is 44 bytes in length. If it is > > different then you can change it in ALL the places referred by KEYBEGIN. > > > > This job creates a dynamic JCL which will then be submitted via INTRDR. > > Take a look at the output from Step0200 and then if everything looks ok > > then change the statement > > //SORTOUT DD SYSOUT=* to //SORTOUT DD SYSOUT=(*,INTRDR),RECFM=FB > > If you have more than 999 groups of records we will copy the rest of the > > records into another file which will then be used as input file to > > further > > split. I will show you how to build the dynamic JCL's based on that. I > > chose the split to be 999 groups as the maximum number of DD statements > > per job step is 3273, based on the number of single DD statements allowed > > for a TIOT (task input output table) control block size of 64K. This > > limit > > can be different depending on the installation defined TIOT size. The > > IBM-supplied default TIOT size is 32K. > > > > //********************************************************************* > > //* BUILD DYNAMIC OUTFIL CARDS AND DDNAMES FOR EACH GROUP OF RECORDS * > > //********************************************************************* > > //STEP0100 EXEC PGM=SORT > > //SYSOUT DD SYSOUT=* > > //SORTIN DD DISP=SHR,DSN=Your Input FB 100 Byte file > > //* > > //OFCARDS DD DSN=&&C,DISP=(,PASS),SPACE=(CYL,(20,20),RLSE) > > //DDNAMES DD DSN=&&D,DISP=(,PASS),SPACE=(CYL,(20,20),RLSE) > > //SORTOUT DD DUMMY > > //SYSIN DD * > > OPTION COPY,NULLOUT=RC4 > > OUTREC IFTHEN=(WHEN=GROUP,KEYBEGIN=(1,44),PUSH=(101:ID=4)) > > OUTFIL FNAMES=OFCARDS,REMOVECC,NODETAIL,BUILD=(80X), > > INCLUDE=(101,4,ZD,LT,1000), > > SECTIONS=(101,4, > > TRAILER3=(3:'OUTFIL FNAMES=OUTF',101,4,',BUILD=(1,100),', > > C'INCLUDE=(101,4,ZD,EQ,',101,4,')')), > > TRAILER1=(3:'OUTFIL FNAMES=NGRP',101,4,',SAVE') > > OUTFIL FNAMES=DDNAMES,REMOVECC,NODETAIL,BUILD=(80X), > > INCLUDE=(101,4,ZD,LT,1000), > > SECTIONS=(101,4, > > TRAILER3=('//OUTF',101,4,' DD ', > > 'DISP=SHR,DSN=Your.Split.PDSE(OUTF',101,4,')')), > > TRAILER1=('//NGRP',101,4,' DD ', > > 'DSN=HLQ.TONYCLD.NGRP',101,4,','/, > > '//',15:'DISP=(NEW,CATLG,DELETE),',/, > > '//',15:'SPACE=(CYL,(100,40),RLSE)',/, > > '//*') > > //* > > //********************************************************************* > > //* SUBMIT THE SPLIT JOB TO INTRDR WITH THE ABOVE OUTPUT * > > //********************************************************************* > > //STEP0200 EXEC PGM=SORT,COND=(4,EQ,STEP0100) > > //SYSOUT DD SYSOUT=* > > //SYSIN DD * > > OPTION COPY > > //*SORTOUT DD SYSOUT=(*,INTRDR),RECFM=FB > > //SORTOUT DD SYSOUT=* > > //SORTIN DD DATA,DLM=$$ > > //SPLTTONY JOB (DA26,001,098,J69),'TONY', > > // CLASS=A, > > // MSGCLASS=H, > > // MSGLEVEL=(1,1), > > // TIME=(,15), > > // NOTIFY=USERID > > //* > > //SPLTSTEP EXEC PGM=SORT,REGION=0M > > //SYSOUT DD SYSOUT=* > > //SORTIN DD DISP=SHR,DSN=Your Input FB 100 Byte file > > $$ > > // DD DSN=&D,DISP=(OLD,PASS) > > // DD DATA,DLM=$$ > > //SYSIN DD * > > OPTION COPY,ODMAXBF=100K > > OUTREC IFTHEN=(WHEN=GROUP,KEYBEGIN=(1,44),PUSH=(101:ID=4)) > > $$ > > // DD DSN=&C,DISP=(OLD,PASS) > > //* > > Further if you have any questions please let me know > > > > Thanks, > > Kolusu > > DFSORT Development > > IBM Corporation > > > > IBM Mainframe Discussion List <[email protected]> wrote on > > 08/20/2014 07:34:48 AM: > > > >> From: TonyIcloud-OPERA <[email protected]> > >> To: [email protected] > >> Date: 08/20/2014 07:35 AM > >> Subject: DF/SORT question (challenge?) > >> Sent by: IBM Mainframe Discussion List <[email protected]> > >> > >> I have a dataset that contains records with a field, by which I need to > >> create a separate dataset that would contain all occurrences of that > >> field. For example the file, FB100, looks like > >> > >> value1 other data..... > >> value1 other data..... > >> value1 other data..... > >> value2 other data..... > >> value2 other data..... > >> value2 other data..... > >> value3 other data..... > >> value3 other data..... > >> value3 other data..... > >> value4 other data..... > >> value4 other data..... > >> value4 other data..... > >> > >> My final product must be a series of datasets: > >> > >> hlq.value1.records > >> hlq.value2.records > >> hlq.value3.records > >> hlq.value4.records > >> > >> There may be hundreds/thousands of possible values, hence > >> hundreds/thousands of datasets. I have accomplished this in 3 phases, > >> first pass reads the data, uses ICETOOL OCCUR to list the values, second > > > >> phase reads the OUTPUT and formats DD statements and OUTFIL OUTREC > >> statements, the third phase reads the original data to create the > > numerous > >> output files. I used a newly created PDSE as the output file whereupon > >> the third phase created several thousand members. > >> > >> It works, after a fashion, but I'd like a more simple solution. > >> > >> > >> ---------------------------------------------------------------------- > >> For IBM-MAIN subscribe / signoff / archive access instructions, > >> send email to [email protected] with the message: INFO IBM-MAIN > >> > > > > ---------------------------------------------------------------------- > > For IBM-MAIN subscribe / signoff / archive access instructions, > > send email to [email protected] with the message: INFO IBM-MAIN > > > -- > Using Opera's mail client: http://www.opera.com/mail/ > > ---------------------------------------------------------------------- > For IBM-MAIN subscribe / signoff / archive access instructions, > send email to [email protected] with the message: INFO IBM-MAIN > ---------------------------------------------------------------------- For IBM-MAIN subscribe / signoff / archive access instructions, send email to [email protected] with the message: INFO IBM-MAIN
