View previous topic :: View next topic
Author
Message
Todd.Proganal New User Joined: 24 May 2013Posts: 5 Location: us
I am trying to create a sequential file from a PDS with 1600+ members and am having trouble with IEBPTPCH. I can create the dataset with the PRINT option but the length of my PDS members is 170 which evidentially is too long for the PRINT option. I've tried IEBGENER and IEBCOPY to see if they might offer a solution but they only seem capable of copying the entire PDS to another PDS (not sub-parameter options). I can create a list if I specify individual member in the SYSUT1 but that really isn't a viable option as the input PDS list might differ week-to-week. The IEBPTPCH reference doesn’t shed any light on the problem. Any IBM utilities (or options) I am missing that might help?
Here is my code:
//STEP05 EXEC PGM=IEBPTPCH
//SYSPRINT DD SYSOUT=*
//SYSUT1 DD DSN=MY.INPUT.PDS,DISP=SHR <PROD FILE>
//SYSUT2 DD DSN=MY.OUTPUT.SEQUNTL.FILE,
// UNIT=SYSDA,
// DISP=(NEW,CATLG,CATLG),
// SPACE=(CYL,(20,1,),RLSE),
// DCB=(DSORG=PS,RECFM=FB,LRECL=170,BLKSIZE=27880)
//
//SYSIN DD *
PUNCH TYPORG=PO
/*
Back to top
Robert Sample Global Moderator Joined: 06 Jun 2008Posts: 8700 Location: Dubuque, Iowa, USA
IEBPTPCH won't meet your needs unless you can live with multiple output lines per record. From the Utilities manual section on IEBPTPCH:
Quote:
Each printed line consists of groups of eight characters separated by two blanks. Up to 96 data characters can be included on a printed line. Each punched card contains up to 80 contiguous bytes of information.
Your best bet probably is to write a program to read the PDS directory and dynamically allocate the input file for each member.
Back to top
Pandora-Box Global Moderator Joined: 07 Sep 2006Posts: 1592 Location: Andromeda Galaxy
You could make use of REXX to read the PDS and write to Output file
Lot of samples in forum
Back to top
dick scherrer Moderator Emeritus Joined: 23 Nov 2006Posts: 19243 Location: Inside the Matrix
Hello and welcome to the forum,
I suspect you could do what you want by sriting a bit of code to generate a member list and then use this as input to a copy process.
There are several examples of generating a member list here in the forum. Try one and let us know if there are any questions or problems.
Some people spoon-feed answers. Several of us "old timers" encourage learning rather than just giving a solution.
Good luck.
Back to top
Todd.Proganal New User Joined: 24 May 2013Posts: 5 Location: us
I am an old-timer myself...30 years in the mainframe environ, so I can appreciate the use of reference material. Believe me...I've poured over the manuals and I'm to the point of selling my soul over this one. I was trying to avoid writing a program (REXX or otherwise) and simply plug in a "beautiful" IBM proc to make my life easier. Oh, well. Thanks for the quick response folks. Back to the coding drawing board.
Back to top
Gary McDowell Active User Joined: 15 Oct 2012Posts: 139 Location: USA
You could…
Run IEHLIST on your PDS dataset which will list all the members.
Build an Easytrieve/SORT/something to create copy JCL (ie IDCAM, IEBGENER) with the members above.
Create the output of the Easytrieve with MOD so that you can have the copy JCL with members back-to-back.
Good luck.
Back to top
gcicchet Senior Member Joined: 28 Jul 2006Posts: 1702 Location: Australia
Hi,
here is something I've been using, not elegant but it's doing the job I want
Code:
//SEARCH EXEC PGM=ISRSUPC,PARM=(SRCHCMP,'ANYC',IDPFX)
//NEWDD DD DSN=PDS-NAME,
// DISP=SHR
//OUTDD DD DSN=&&ALLLINES,
// DISP=(,PASS,DELETE),
// UNIT=SYSDA,
// SPACE=(TRK,(500,100),RLSE)
//SYSIN DD *
SRCHFOR X'00',1
SRCHFOR X'01',1
SRCHFOR X'02',1
SRCHFOR X'03',1
SRCHFOR X'04',1
SRCHFOR X'05',1
SRCHFOR X'06',1
SRCHFOR X'07',1
SRCHFOR X'08',1
SRCHFOR X'09',1
SRCHFOR X'0A',1
SRCHFOR X'0B',1
SRCHFOR X'0C',1
SRCHFOR X'0D',1
SRCHFOR X'0E',1
SRCHFOR X'0F',1
SRCHFOR X'10',1
SRCHFOR X'11',1
SRCHFOR X'12',1
SRCHFOR X'13',1
SRCHFOR X'14',1
SRCHFOR X'15',1
SRCHFOR X'16',1
SRCHFOR X'17',1
SRCHFOR X'18',1
SRCHFOR X'19',1
SRCHFOR X'1A',1
SRCHFOR X'1B',1
SRCHFOR X'1C',1
SRCHFOR X'1D',1
SRCHFOR X'1E',1
SRCHFOR X'1F',1
SRCHFOR X'20',1
SRCHFOR X'21',1
SRCHFOR X'22',1
SRCHFOR X'23',1
SRCHFOR X'24',1
SRCHFOR X'25',1
SRCHFOR X'26',1
SRCHFOR X'27',1
SRCHFOR X'28',1
SRCHFOR X'29',1
SRCHFOR X'2A',1
SRCHFOR X'2B',1
SRCHFOR X'2C',1
SRCHFOR X'2D',1
SRCHFOR X'2E',1
SRCHFOR X'2F',1
SRCHFOR X'30',1
SRCHFOR X'31',1
SRCHFOR X'32',1
SRCHFOR X'33',1
SRCHFOR X'34',1
SRCHFOR X'35',1
SRCHFOR X'36',1
SRCHFOR X'37',1
SRCHFOR X'38',1
SRCHFOR X'39',1
SRCHFOR X'3A',1
SRCHFOR X'3B',1
SRCHFOR X'3C',1
SRCHFOR X'3D',1
SRCHFOR X'3E',1
SRCHFOR X'3F',1
SRCHFOR X'40',1
SRCHFOR X'41',1
SRCHFOR X'42',1
SRCHFOR X'43',1
SRCHFOR X'44',1
SRCHFOR X'45',1
SRCHFOR X'46',1
SRCHFOR X'47',1
SRCHFOR X'48',1
SRCHFOR X'49',1
SRCHFOR X'4A',1
SRCHFOR X'4B',1
SRCHFOR X'4C',1
SRCHFOR X'4D',1
SRCHFOR X'4E',1
SRCHFOR X'4F',1
SRCHFOR X'50',1
SRCHFOR X'51',1
SRCHFOR X'52',1
SRCHFOR X'53',1
SRCHFOR X'54',1
SRCHFOR X'55',1
SRCHFOR X'56',1
SRCHFOR X'57',1
SRCHFOR X'58',1
SRCHFOR X'59',1
SRCHFOR X'5A',1
SRCHFOR X'5B',1
SRCHFOR X'5C',1
SRCHFOR X'5D',1
SRCHFOR X'5E',1
SRCHFOR X'5F',1
SRCHFOR X'60',1
SRCHFOR X'61',1
SRCHFOR X'62',1
SRCHFOR X'63',1
SRCHFOR X'64',1
SRCHFOR X'65',1
SRCHFOR X'66',1
SRCHFOR X'67',1
SRCHFOR X'68',1
SRCHFOR X'69',1
SRCHFOR X'6A',1
SRCHFOR X'6B',1
SRCHFOR X'6C',1
SRCHFOR X'6D',1
SRCHFOR X'6E',1
SRCHFOR X'6F',1
SRCHFOR X'70',1
SRCHFOR X'71',1
SRCHFOR X'72',1
SRCHFOR X'73',1
SRCHFOR X'74',1
SRCHFOR X'75',1
SRCHFOR X'76',1
SRCHFOR X'77',1
SRCHFOR X'78',1
SRCHFOR X'79',1
SRCHFOR X'7A',1
SRCHFOR X'7B',1
SRCHFOR X'7C',1
SRCHFOR X'7D',1
SRCHFOR X'7E',1
SRCHFOR X'7F',1
SRCHFOR X'80',1
SRCHFOR X'81',1
SRCHFOR X'82',1
SRCHFOR X'83',1
SRCHFOR X'84',1
SRCHFOR X'85',1
SRCHFOR X'86',1
SRCHFOR X'87',1
SRCHFOR X'88',1
SRCHFOR X'89',1
SRCHFOR X'8A',1
SRCHFOR X'8B',1
SRCHFOR X'8C',1
SRCHFOR X'8D',1
SRCHFOR X'8E',1
SRCHFOR X'8F',1
SRCHFOR X'90',1
SRCHFOR X'91',1
SRCHFOR X'92',1
SRCHFOR X'93',1
SRCHFOR X'94',1
SRCHFOR X'95',1
SRCHFOR X'96',1
SRCHFOR X'97',1
SRCHFOR X'98',1
SRCHFOR X'99',1
SRCHFOR X'9A',1
SRCHFOR X'9B',1
SRCHFOR X'9C',1
SRCHFOR X'9D',1
SRCHFOR X'9E',1
SRCHFOR X'9F',1
SRCHFOR X'A0',1
SRCHFOR X'A1',1
SRCHFOR X'A2',1
SRCHFOR X'A3',1
SRCHFOR X'A4',1
SRCHFOR X'A5',1
SRCHFOR X'A6',1
SRCHFOR X'A7',1
SRCHFOR X'A8',1
SRCHFOR X'A9',1
SRCHFOR X'AA',1
SRCHFOR X'AB',1
SRCHFOR X'AC',1
SRCHFOR X'AD',1
SRCHFOR X'AE',1
SRCHFOR X'AF',1
SRCHFOR X'B0',1
SRCHFOR X'B1',1
SRCHFOR X'B2',1
SRCHFOR X'B3',1
SRCHFOR X'B4',1
SRCHFOR X'B5',1
SRCHFOR X'B6',1
SRCHFOR X'B7',1
SRCHFOR X'B8',1
SRCHFOR X'B9',1
SRCHFOR X'BA',1
SRCHFOR X'BB',1
SRCHFOR X'BC',1
SRCHFOR X'BD',1
SRCHFOR X'BE',1
SRCHFOR X'BF',1
SRCHFOR X'C0',1
SRCHFOR X'C1',1
SRCHFOR X'C2',1
SRCHFOR X'C3',1
SRCHFOR X'C4',1
SRCHFOR X'C5',1
SRCHFOR X'C6',1
SRCHFOR X'C7',1
SRCHFOR X'C8',1
SRCHFOR X'C9',1
SRCHFOR X'CA',1
SRCHFOR X'CB',1
SRCHFOR X'CC',1
SRCHFOR X'CD',1
SRCHFOR X'CE',1
SRCHFOR X'CF',1
SRCHFOR X'D0',1
SRCHFOR X'D1',1
SRCHFOR X'D2',1
SRCHFOR X'D3',1
SRCHFOR X'D4',1
SRCHFOR X'D5',1
SRCHFOR X'D6',1
SRCHFOR X'D7',1
SRCHFOR X'D8',1
SRCHFOR X'D9',1
SRCHFOR X'DA',1
SRCHFOR X'DB',1
SRCHFOR X'DC',1
SRCHFOR X'DD',1
SRCHFOR X'DE',1
SRCHFOR X'DF',1
SRCHFOR X'E0',1
SRCHFOR X'E1',1
SRCHFOR X'E2',1
SRCHFOR X'E3',1
SRCHFOR X'E4',1
SRCHFOR X'E5',1
SRCHFOR X'E6',1
SRCHFOR X'E7',1
SRCHFOR X'E8',1
SRCHFOR X'E9',1
SRCHFOR X'EA',1
SRCHFOR X'EB',1
SRCHFOR X'EC',1
SRCHFOR X'ED',1
SRCHFOR X'EE',1
SRCHFOR X'EF',1
SRCHFOR X'F0',1
SRCHFOR X'F1',1
SRCHFOR X'F2',1
SRCHFOR X'F3',1
SRCHFOR X'F4',1
SRCHFOR X'F5',1
SRCHFOR X'F6',1
SRCHFOR X'F7',1
SRCHFOR X'F8',1
SRCHFOR X'F9',1
SRCHFOR X'FA',1
SRCHFOR X'FB',1
SRCHFOR X'FC',1
SRCHFOR X'FD',1
SRCHFOR X'FE',1
SRCHFOR X'FF',1
/*
//*********************************************************************
//*
//SELECT EXEC PGM=SORT
//SYSOUT DD SYSOUT=*
//SORTIN DD DSN=&&ALLLINES,
// DISP=SHR
//SORTOUT DD SYSOUT=*
//SYSIN DD *
SORT FIELDS=COPY
INCLUDE COND=(17,1,FS,EQ,NUM,&,
18,2,CH,EQ,C' ')
OUTFIL BUILD=(2,8,20,80)
/*
//*********************************************************************
Hopefully I've cut and pasted all 256 SRCHFOR parameters.
Just modify the OUTFIL parameter if member name is not required.
I have the SRCHFOR parameters as a PDS member.
Gerry
Back to top
Pete Wilson Active Member Joined: 31 Dec 2009Posts: 590 Location: London
If you have FileAid it has a nice feature to print all members of a PDS into a flatfile with member name separators.
Just go to option 3.6 and use the B (browse glbally) option. You can choose to do it in Batch or Foreground as well.
Chcek that the selection in the DD01SC has the following otherwise it won't necessarily print all members.
DEFINE BLOCKS=SELECTION,
INITIAL_SKIP=0,
THEN_SELECT=0,
THEN_SKIP=0,
MAXIMUM_TO_SEARCH=ALL,
MAXIMUM_TO_SELECT=ALL
Back to top
Todd.Proganal New User Joined: 24 May 2013Posts: 5 Location: us
I will give gcicchet's solution a whirl. Unfortunately, we don't have FILEAID. Thanks, guys.
Back to top
Please enable JavaScript!