Re: Is there any way to convert RECFM=U to RECFM=V with a utility or script?
The longest record was 222 THIS TIME. Given that they chose that specific DCB, you should be prepared for a different result at some future delivery. If you change your VB parameters to allow a (much) longer record, your job will process the current data with the same efficiency but will process later deliveries without the need for you to constantly check for the max record size. - Original Message - From: "Farley, Peter x23353" To: "IBM Mainframe Discussion List" Sent: Thursday, June 13, 2019 5:49:16 PM Subject: Re: Is there any way to convert RECFM=U to RECFM=V with a utility or script? In fact I did try it, and Rexx ignored the LRECL=200, as expected. As I said in an earlier reply, the longest actual record (block) size was 222. Peter -Original Message- From: IBM Mainframe Discussion List On Behalf Of Seymour J Metz Sent: Thursday, June 13, 2019 5:59 PM To: IBM-MAIN@LISTSERV.UA.EDU Subject: Re: Is there any way to convert RECFM=U to RECFM=V with a utility or script? I would hope that REXX would ignore LRECL for RECFM=U. If you try it, please let us know what happens. -- Shmuel (Seymour J.) Metz http://mason.gmu.edu/~smetz3 From: IBM Mainframe Discussion List on behalf of Paul Gilmartin <000433f07816-dmarc-requ...@listserv.ua.edu> Sent: Thursday, June 13, 2019 5:56 PM To: IBM-MAIN@LISTSERV.UA.EDU Subject: Re: Is there any way to convert RECFM=U to RECFM=V with a utility or script? On Thu, 13 Jun 2019 21:03:17 +, Seymour J Metz wrote: >> DCB=(RECFM=U,LRECL=200,BLKSIZE=27998) > >Despite the LRECL, I take this to mean that the records can be up to 27998. > What do Rexx (and other utilities) do if a record/block exceeds 200? Either for input or output. -- This message and any attachments are intended only for the use of the addressee and may contain information that is privileged and confidential. If the reader of the message is not the intended recipient or an authorized representative of the intended recipient, you are hereby notified that any dissemination of this communication is strictly prohibited. If you have received this communication in error, please notify us immediately by e-mail and delete the message and any attachments from your system. -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN
Re: Is there any way to convert RECFM=U to RECFM=V with a utility or script?
No they are not terminated with CR or LF or anything. They are just different length records with no length prefix or any suffix at all in a RECFM=U file. I was the one who suspected that the original source file from the vendor was from Unix somewhere due to the content. Goal here was to get this weird format file loaded on our system by the vendor into something normal for z/OS, like RECFM=VB. But in any case the other application team has it under their control now, so it is out of my hands. Peter -Original Message- From: IBM Mainframe Discussion List On Behalf Of scott Ford Sent: Tuesday, June 18, 2019 10:48 AM To: IBM-MAIN@LISTSERV.UA.EDU Subject: Re: Is there any way to convert RECFM=U to RECFM=V with a utility or script? Peter, I was scanning through this thread. It sounds like the records are terminated with a 'CR' or 'CRLF' , i.e.; x'0d' or x'0d0a' , is this correct Scott On Tue, Jun 18, 2019 at 10:14 AM Paul Gilmartin < 000433f07816-dmarc-requ...@listserv.ua.edu> wrote: > On Tue, 18 Jun 2019 03:43:18 +, Farley, Peter x23353 wrote: > > >Very interesting. Collapsing the two steps and eliminating the > intermediate Unix file also works, but I do have explicit DCB > information in the JCL for both SYSUT1 and SYSUT2, so maybe that's > what makes the IEBGENER process work here. > > > An early ply in this thread mentioned that the source of the data > appeared to be UNIX. > Many followups assumed you wanted to reload to UNIX. > > >I had been told by the coworker who solicited my help that they had > already tried IEBGENER to copy the file and that it failed, but I > should have asked to see the job. I'll remember that. > > > It has been my experience that if no DCB information is available for > SYSUT2 it will > all be copied from SYSUT1. If partial DCB information is available > for SYSUT2, IEBGENER reports an error. > -- This message and any attachments are intended only for the use of the addressee and may contain information that is privileged and confidential. If the reader of the message is not the intended recipient or an authorized representative of the intended recipient, you are hereby notified that any dissemination of this communication is strictly prohibited. If you have received this communication in error, please notify us immediately by e-mail and delete the message and any attachments from your system. -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN
Re: Is there any way to convert RECFM=U to RECFM=V with a utility or script?
Peter, I was scanning through this thread. It sounds like the records are terminated with a 'CR' or 'CRLF' , i.e.; x'0d' or x'0d0a' , is this correct Scott On Tue, Jun 18, 2019 at 10:14 AM Paul Gilmartin < 000433f07816-dmarc-requ...@listserv.ua.edu> wrote: > On Tue, 18 Jun 2019 03:43:18 +, Farley, Peter x23353 wrote: > > >Very interesting. Collapsing the two steps and eliminating the > intermediate Unix file also works, but I do have explicit DCB information > in the JCL for both SYSUT1 and SYSUT2, so maybe that's what makes the > IEBGENER process work here. > > > An early ply in this thread mentioned that the source of the data appeared > to be UNIX. > Many followups assumed you wanted to reload to UNIX. > > >I had been told by the coworker who solicited my help that they had > already tried IEBGENER to copy the file and that it failed, but I should > have asked to see the job. I'll remember that. > > > It has been my experience that if no DCB information is available for > SYSUT2 it will > all be copied from SYSUT1. If partial DCB information is available for > SYSUT2, > IEBGENER reports an error. > > -- gil > > -- > For IBM-MAIN subscribe / signoff / archive access instructions, > send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN > -- *IDMWORKS * Scott Ford z/OS Dev. “By elevating a friend or Collegue you elevate yourself, by demeaning a friend or collegue you demean yourself” www.idmworks.com scott.f...@idmworks.com Blog: www.idmworks.com/blog *The information contained in this email message and any attachment may be privileged, confidential, proprietary or otherwise protected from disclosure. If the reader of this message is not the intended recipient, you are hereby notified that any dissemination, distribution, copying or use of this message and any attachment is strictly prohibited. If you have received this message in error, please notify us immediately by replying to the message and permanently delete it from your computer and destroy any printout thereof.* -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN
Re: Is there any way to convert RECFM=U to RECFM=V with a utility or script?
On Tue, 18 Jun 2019 03:43:18 +, Farley, Peter x23353 wrote: >Very interesting. Collapsing the two steps and eliminating the intermediate >Unix file also works, but I do have explicit DCB information in the JCL for >both SYSUT1 and SYSUT2, so maybe that's what makes the IEBGENER process work >here. > An early ply in this thread mentioned that the source of the data appeared to be UNIX. Many followups assumed you wanted to reload to UNIX. >I had been told by the coworker who solicited my help that they had already >tried IEBGENER to copy the file and that it failed, but I should have asked to >see the job. I'll remember that. > It has been my experience that if no DCB information is available for SYSUT2 it will all be copied from SYSUT1. If partial DCB information is available for SYSUT2, IEBGENER reports an error. -- gil -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN
Re: Is there any way to convert RECFM=U to RECFM=V with a utility or script?
Very interesting. Collapsing the two steps and eliminating the intermediate Unix file also works, but I do have explicit DCB information in the JCL for both SYSUT1 and SYSUT2, so maybe that's what makes the IEBGENER process work here. I had been told by the coworker who solicited my help that they had already tried IEBGENER to copy the file and that it failed, but I should have asked to see the job. I'll remember that. Thanks for the suggestion. Peter -Original Message- From: IBM Mainframe Discussion List On Behalf Of Paul Gilmartin Sent: Monday, June 17, 2019 9:10 PM To: IBM-MAIN@LISTSERV.UA.EDU Subject: Re: Is there any way to convert RECFM=U to RECFM=V with a utility or script? On Tue, 18 Jun 2019 00:31:31 +, Farley, Peter x23353 wrote: >Finally got my mount issue straightened out and got to try your suggestion. >IDCAMS REPRO gave errors trying to copy to the Unix output file, but IEBGENER >worked just fine. > >This did not work: > >//STEP0100 EXEC PGM=IDCAMS >//SYSPRINT DD SYSOUT=* >//INP DD DISP=SHR,DSN=weird.recfmu.file, >//RECFM=U,LRECL=222,BLKSIZE=222 >//OUT DD PATH='/tmp/TMPFILE', >//FILEDATA=TEXT,PATHDISP=(KEEP,DELETE), >//PATHOPTS=(OWRONLY,OCREAT) >//SYSINDD * > REPRO INFILE(INP) OUTFILE(OUT) REUSE >// My experience is that IDCAMS requires DCB information on both INP and OUT. It will not copy as IEBGENER does. However, it will convert the format if the information is available. >IEBGENER with similar JCL works though: > >//STEP0100 EXEC PGM=IEBGENER >//SYSPRINT DD SYSOUT=* >//SYSUT1 DD DISP=SHR,DSN= weird.recfmu.file, >//RECFM=U,LRECL=222,BLKSIZE=222 >//SYSUT2 DD PATH='/tmp/TMPFILE', >//FILEDATA=TEXT,PATHDISP=(KEEP,DELETE), >//PATHOPTS=(OWRONLY,OCREAT) >//SYSINDD DUMMY >//* >//STEP0200 EXEC PGM=IEBGENER >//SYSPRINT DD SYSOUT=* >//SYSUT1 DD PATH='/tmp/TMPFILE', >//FILEDATA=TEXT,PATHDISP=(DELETE,KEEP), >//PATHOPTS=(ORDONLY), >//RECFM=V,BLKSIZE=254 >//SYSUT2 DD DISP=(NEW,CATLG,CATLG), >// DSN=not.weird.vb.copy, >// UNIT=SYSDA,SPACE=(CYL,(20,20),RLSE), >// DSORG=PS,RECFM=VB,LRECL=254,BLKSIZE=0 >//SYSINDD DUMMY >//* What happens if you coalesce the steps and omit the UNIX temp file? I wonder where it gets LRECL for STEP0200 SYSUT1? -- This message and any attachments are intended only for the use of the addressee and may contain information that is privileged and confidential. If the reader of the message is not the intended recipient or an authorized representative of the intended recipient, you are hereby notified that any dissemination of this communication is strictly prohibited. If you have received this communication in error, please notify us immediately by e-mail and delete the message and any attachments from your system. -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN
Re: Is there any way to convert RECFM=U to RECFM=V with a utility or script?
On Tue, 18 Jun 2019 00:31:31 +, Farley, Peter x23353 wrote: >Finally got my mount issue straightened out and got to try your suggestion. >IDCAMS REPRO gave errors trying to copy to the Unix output file, but IEBGENER >worked just fine. > >This did not work: > >//STEP0100 EXEC PGM=IDCAMS >//SYSPRINT DD SYSOUT=* >//INP DD DISP=SHR,DSN=weird.recfmu.file, >//RECFM=U,LRECL=222,BLKSIZE=222 >//OUT DD PATH='/tmp/TMPFILE', >//FILEDATA=TEXT,PATHDISP=(KEEP,DELETE), >//PATHOPTS=(OWRONLY,OCREAT) >//SYSINDD * > REPRO INFILE(INP) OUTFILE(OUT) REUSE >// My experience is that IDCAMS requires DCB information on both INP and OUT. It will not copy as IEBGENER does. However, it will convert the format if the information is available. >IEBGENER with similar JCL works though: > >//STEP0100 EXEC PGM=IEBGENER >//SYSPRINT DD SYSOUT=* >//SYSUT1 DD DISP=SHR,DSN= weird.recfmu.file, >//RECFM=U,LRECL=222,BLKSIZE=222 >//SYSUT2 DD PATH='/tmp/TMPFILE', >//FILEDATA=TEXT,PATHDISP=(KEEP,DELETE), >//PATHOPTS=(OWRONLY,OCREAT) >//SYSINDD DUMMY >//* >//STEP0200 EXEC PGM=IEBGENER >//SYSPRINT DD SYSOUT=* >//SYSUT1 DD PATH='/tmp/TMPFILE', >//FILEDATA=TEXT,PATHDISP=(DELETE,KEEP), >//PATHOPTS=(ORDONLY), >//RECFM=V,BLKSIZE=254 >//SYSUT2 DD DISP=(NEW,CATLG,CATLG), >// DSN=not.weird.vb.copy, >// UNIT=SYSDA,SPACE=(CYL,(20,20),RLSE), >// DSORG=PS,RECFM=VB,LRECL=254,BLKSIZE=0 >//SYSINDD DUMMY >//* What happens if you coalesce the steps and omit the UNIX temp file? I wonder where it gets LRECL for STEP0200 SYSUT1? -- gil -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN
Re: Is there any way to convert RECFM=U to RECFM=V with a utility or script?
Finally got my mount issue straightened out and got to try your suggestion. IDCAMS REPRO gave errors trying to copy to the Unix output file, but IEBGENER worked just fine. This did not work: //STEP0100 EXEC PGM=IDCAMS //SYSPRINT DD SYSOUT=* //INP DD DISP=SHR,DSN=weird.recfmu.file, //RECFM=U,LRECL=222,BLKSIZE=222 //OUT DD PATH='/tmp/TMPFILE', //FILEDATA=TEXT,PATHDISP=(KEEP,DELETE), //PATHOPTS=(OWRONLY,OCREAT) //SYSINDD * REPRO INFILE(INP) OUTFILE(OUT) REUSE // Results in this message in JESMSGLG: IEC141I 013-34,IGG0199G,TSOUSER9,STEP0100,OUT And these messages in SYSPRINT: REPRO INFILE(INP) OUTFILE(OUT) REUSE IDC3300I ERROR OPENING ...PATH=.SPECIFIED... IDC3321I ** OPEN/CLOSE/EOV ABEND EXIT TAKEN IDC0005I NUMBER OF RECORDS PROCESSED WAS 0 IDC3003I FUNCTION TERMINATED. CONDITION CODE IS 12 IEBGENER with similar JCL works though: //STEP0100 EXEC PGM=IEBGENER //SYSPRINT DD SYSOUT=* //SYSUT1 DD DISP=SHR,DSN= weird.recfmu.file, //RECFM=U,LRECL=222,BLKSIZE=222 //SYSUT2 DD PATH='/tmp/TMPFILE', //FILEDATA=TEXT,PATHDISP=(KEEP,DELETE), //PATHOPTS=(OWRONLY,OCREAT) //SYSINDD DUMMY //* //STEP0200 EXEC PGM=IEBGENER //SYSPRINT DD SYSOUT=* //SYSUT1 DD PATH='/tmp/TMPFILE', //FILEDATA=TEXT,PATHDISP=(DELETE,KEEP), //PATHOPTS=(ORDONLY), //RECFM=V,BLKSIZE=254 //SYSUT2 DD DISP=(NEW,CATLG,CATLG), // DSN=not.weird.vb.copy, // UNIT=SYSDA,SPACE=(CYL,(20,20),RLSE), // DSORG=PS,RECFM=VB,LRECL=254,BLKSIZE=0 //SYSINDD DUMMY //* The "not.weird.vb.copy" file comes out as a normal VB file with all the right BDW/RDW prefixes and no LF or NL or other line delimiters at the end. Thank you! Peter -Original Message- From: IBM Mainframe Discussion List On Behalf Of Farley, Peter x23353 Sent: Wednesday, June 12, 2019 7:24 PM To: IBM-MAIN@LISTSERV.UA.EDU Subject: Re: Is there any way to convert RECFM=U to RECFM=V with a utility or script? Tried that too, but apparently my HFS file is having some trouble being mounted and I have to get the storage guys involved to fix it. Bureaucratic nightmare. When that's fixed I will definitely try it, thanks for the suggestion. Peter -Original Message- From: IBM Mainframe Discussion List On Behalf Of John McKown Sent: Wednesday, June 12, 2019 4:51 PM To: IBM-MAIN@LISTSERV.UA.EDU Subject: Re: Is there any way to convert RECFM=U to RECFM=V with a utility or script? EXTERNAL EMAIL Copy it to a UNIX file with FILEDATA=TEXT using IENGENER or other. Then copy it back to a PS dataset with appreciate LRECL and RECFM. The first step will copy each physical record to UNIX, and put a LF at the end to be a regular UNIX text file. The second step will copy the UNIX file back to FB or VB. If FB, it will pad with space. If VB, it will put the right LLBB at the front. On Wed, Jun 12, 2019, 14:06 Farley, Peter x23353 < peter.far...@broadridge.com> wrote: > We have a vendor-generated file that comes in with > DCB=(RECFM=U,LRECL=200,BLKSIZE=27998) (don't ask why please, this DCB > setting is out of our hands). > > The records are actually variable length data, up to 200 bytes of > actual data with no length prefix (no RDW/BDW). No binary data, only > text characters. I suspect a *ix text-format file as the vendor > source but have no proof of that. > > We have tried every utility we could think of (IEBGENER, IDCAMS REPRO, > SORT INREC BUILD=(1,200)) to copy this data to a more usable z/OS > record format but so far nothing we tried works. > > Am I correct that only a Rexx or awk script could do this conversion > (given the update to Rexx to support RECFM=U files and awk's native > capabilities) or an HLL program coded to handle U-format input can do > this conversion? > > Any other ideas you have to help us perform the conversion without > writing an HLL program would be much appreciated. > > Peter -- This message and any attachments are intended only for the use of the addressee and may contain information that is privileged and confidential. If the reader of the message is not the intended recipient or an authorized representative of the intended recipient,
Re: Is there any way to convert RECFM=U to RECFM=V with a utility or script?
On 6/14/2019 8:08 AM, Paul Gilmartin wrote: Is LRECL allowed to be greater than BLKSIZE? I could imagine coding RECFM=U,BLKSIZE=1000,LRECL=1 to indicate that each logical record is divided into 10 blocks with no RDW. LRECL=X (undefined or variable-spanned) lets you have literally any length record composed of sub-segments. -- Phoenix Software International Edward E. Jaffe 831 Parkview Drive North El Segundo, CA 90245 https://www.phoenixsoftware.com/ This e-mail message, including any attachments, appended messages and the information contained therein, is for the sole use of the intended recipient(s). If you are not an intended recipient or have otherwise received this email message in error, any use, dissemination, distribution, review, storage or copying of this e-mail message and the information contained therein is strictly prohibited. If you are not an intended recipient, please contact the sender by reply e-mail and destroy all copies of this email message and do not otherwise utilize or retain this email message or any or all of the information contained therein. Although this email message and any attachments or appended messages are believed to be free of any virus or other defect that might affect any computer system into which it is received and opened, it is the responsibility of the recipient to ensure that it is virus free and no responsibility is accepted by the sender for any loss or damage arising in any way from its opening or use. -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN
Re: Is there any way to convert RECFM=U to RECFM=V with a utility or script?
On Fri, 14 Jun 2019 10:46:40 -0400, Steve Smith wrote: >+1 LRECL for RECFM=U is basically meaningless, and seems to have no >function other than to cause WRNG.LN.ERORS (sick (sic- it's a joke)). > Is LRECL allowed to be greater than BLKSIZE? I could imagine coding RECFM=U,BLKSIZE=1000,LRECL=1 to indicate that each logical record is divided into 10 blocks with no RDW. -- gil -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN
Re: Is there any way to convert RECFM=U to RECFM=V with a utility or script?
+1 LRECL for RECFM=U is basically meaningless, and seems to have no function other than to cause WRNG.LN.ERORS (sick (sic- it's a joke)). sas On Fri, Jun 14, 2019 at 10:19 AM Paul Gilmartin < 000433f07816-dmarc-requ...@listserv.ua.edu> wrote: > On Fri, 14 Jun 2019 00:48:06 +, Farley, Peter x23353 wrote: > > >For RECFM=U it is not the LRECL that governs I/O behavior it is the > BLKSIZE (I believe that LRECL is ignored for U), so in this particular case > anything up to 27998 would be legal and allowed. > > > To avoid confusion, and to avoid this tedious discussion, it should have > been > a syntactic rule that for RECFM=U, LRECL must equal BLKSIZE, enforced for > RECFM=U even as it's enforced for RECFM=F. > > -- gil > > -- > For IBM-MAIN subscribe / signoff / archive access instructions, > send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN > -- sas -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN
Re: Is there any way to convert RECFM=U to RECFM=V with a utility or script?
On Fri, 14 Jun 2019 00:48:06 +, Farley, Peter x23353 wrote: >For RECFM=U it is not the LRECL that governs I/O behavior it is the BLKSIZE (I >believe that LRECL is ignored for U), so in this particular case anything up >to 27998 would be legal and allowed. > To avoid confusion, and to avoid this tedious discussion, it should have been a syntactic rule that for RECFM=U, LRECL must equal BLKSIZE, enforced for RECFM=U even as it's enforced for RECFM=F. -- gil -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN
Re: Is there any way to convert RECFM=U to RECFM=V with a utility or script?
Would an IND$FILE transfer work with the CRLF option without the ASCII option? On Fri, Jun 14, 2019 at 12:49 AM Farley, Peter x23353 wrote: > > In fact I did try it, and Rexx ignored the LRECL=200, as expected. As I said > in an earlier reply, the longest actual record (block) size was 222. > > Peter > > -Original Message- > From: IBM Mainframe Discussion List On Behalf Of > Seymour J Metz > Sent: Thursday, June 13, 2019 5:59 PM > To: IBM-MAIN@LISTSERV.UA.EDU > Subject: Re: Is there any way to convert RECFM=U to RECFM=V with a utility or > script? > > I would hope that REXX would ignore LRECL for RECFM=U. If you try it, please > let us know what happens. > -- > Shmuel (Seymour J.) Metz > http://mason.gmu.edu/~smetz3 > > > From: IBM Mainframe Discussion List on behalf of > Paul Gilmartin <000433f07816-dmarc-requ...@listserv.ua.edu> > Sent: Thursday, June 13, 2019 5:56 PM > To: IBM-MAIN@LISTSERV.UA.EDU > Subject: Re: Is there any way to convert RECFM=U to RECFM=V with a utility or > script? > > On Thu, 13 Jun 2019 21:03:17 +, Seymour J Metz wrote: > > >> DCB=(RECFM=U,LRECL=200,BLKSIZE=27998) > > > >Despite the LRECL, I take this to mean that the records can be up to 27998. > > > What do Rexx (and other utilities) do if a record/block exceeds 200? Either > for input or output. > > -- > > This message and any attachments are intended only for the use of the > addressee and may contain information that is privileged and confidential. If > the reader of the message is not the intended recipient or an authorized > representative of the intended recipient, you are hereby notified that any > dissemination of this communication is strictly prohibited. If you have > received this communication in error, please notify us immediately by e-mail > and delete the message and any attachments from your system. > > -- > For IBM-MAIN subscribe / signoff / archive access instructions, > send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN -- Mike A Schwab, Springfield IL USA Where do Forest Rangers go to get away from it all? -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN
Re: Is there any way to convert RECFM=U to RECFM=V with a utility or script?
In fact I did try it, and Rexx ignored the LRECL=200, as expected. As I said in an earlier reply, the longest actual record (block) size was 222. Peter -Original Message- From: IBM Mainframe Discussion List On Behalf Of Seymour J Metz Sent: Thursday, June 13, 2019 5:59 PM To: IBM-MAIN@LISTSERV.UA.EDU Subject: Re: Is there any way to convert RECFM=U to RECFM=V with a utility or script? I would hope that REXX would ignore LRECL for RECFM=U. If you try it, please let us know what happens. -- Shmuel (Seymour J.) Metz http://mason.gmu.edu/~smetz3 From: IBM Mainframe Discussion List on behalf of Paul Gilmartin <000433f07816-dmarc-requ...@listserv.ua.edu> Sent: Thursday, June 13, 2019 5:56 PM To: IBM-MAIN@LISTSERV.UA.EDU Subject: Re: Is there any way to convert RECFM=U to RECFM=V with a utility or script? On Thu, 13 Jun 2019 21:03:17 +, Seymour J Metz wrote: >> DCB=(RECFM=U,LRECL=200,BLKSIZE=27998) > >Despite the LRECL, I take this to mean that the records can be up to 27998. > What do Rexx (and other utilities) do if a record/block exceeds 200? Either for input or output. -- This message and any attachments are intended only for the use of the addressee and may contain information that is privileged and confidential. If the reader of the message is not the intended recipient or an authorized representative of the intended recipient, you are hereby notified that any dissemination of this communication is strictly prohibited. If you have received this communication in error, please notify us immediately by e-mail and delete the message and any attachments from your system. -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN
Re: Is there any way to convert RECFM=U to RECFM=V with a utility or script?
For RECFM=U it is not the LRECL that governs I/O behavior it is the BLKSIZE (I believe that LRECL is ignored for U), so in this particular case anything up to 27998 would be legal and allowed. Peter -Original Message- From: IBM Mainframe Discussion List On Behalf Of Paul Gilmartin Sent: Thursday, June 13, 2019 5:56 PM To: IBM-MAIN@LISTSERV.UA.EDU Subject: Re: Is there any way to convert RECFM=U to RECFM=V with a utility or script? On Thu, 13 Jun 2019 21:03:17 +, Seymour J Metz wrote: >> DCB=(RECFM=U,LRECL=200,BLKSIZE=27998) > >Despite the LRECL, I take this to mean that the records can be up to 27998. > What do Rexx (and other utilities) do if a record/block exceeds 200? Either for input or output. -- This message and any attachments are intended only for the use of the addressee and may contain information that is privileged and confidential. If the reader of the message is not the intended recipient or an authorized representative of the intended recipient, you are hereby notified that any dissemination of this communication is strictly prohibited. If you have received this communication in error, please notify us immediately by e-mail and delete the message and any attachments from your system. -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN
Re: Is there any way to convert RECFM=U to RECFM=V with a utility or script?
In principle I agree, but in this case recording the maximum length of all records during the Rexx conversion process showed none longer than 222. Whether the vendor records will always stay within that limit is of course unknown to me since I do not know the vendor or the product. The team actually using the vendor and their file have it In their court now, so my part is done. Peter -Original Message- From: IBM Mainframe Discussion List On Behalf Of Seymour J Metz Sent: Thursday, June 13, 2019 5:03 PM To: IBM-MAIN@LISTSERV.UA.EDU Subject: Re: Is there any way to convert RECFM=U to RECFM=V with a utility or script? > DCB=(RECFM=U,LRECL=200,BLKSIZE=27998) Despite the LRECL, I take this to mean that the records can be up to 27998. -- Shmuel (Seymour J.) Metz http://mason.gmu.edu/~smetz3 From: IBM Mainframe Discussion List on behalf of Farley, Peter x23353 Sent: Wednesday, June 12, 2019 7:08 PM To: IBM-MAIN@LISTSERV.UA.EDU Subject: Re: Is there any way to convert RECFM=U to RECFM=V with a utility or script? Hi Sri, Tried that, the first step works without a problem but the second one fails with a SYNAD error, "WRNG.LN.RECORD". I found out that some of the records are actually up to 225 or so bytes, and changed the "200" values to 250 but still got the SYNAD error. The actual physical records are varying length but with no BDW/RDW prefix, the physical blocks are no more than about 225 bytes long, some as short as 50 bytes or so. A Rexx script did the job with no errors though. Peter -Original Message- From: IBM Mainframe Discussion List On Behalf Of Sri h Kolusu Sent: Wednesday, June 12, 2019 3:21 PM To: IBM-MAIN@LISTSERV.UA.EDU Subject: Re: Is there any way to convert RECFM=U to RECFM=V with a utility or script? EXTERNAL EMAIL > We have a vendor-generated file that comes in with > DCB=(RECFM=U,LRECL=200,BLKSIZE=27998) (don't ask why please, this DCB > setting is out of our hands). Peter, Give this JCL a try and see if it works for you //*** //* COPY RECFM=U TO MATCH THE LRECL AND BLKSIZE * //*** //STEP0100 EXEC PGM=IDCAMS //SYSPRINT DD SYSOUT=* //INP DD DISP=SHR,DSN=Your input RECFM=U file, //RECFM=U,LRECL=200,BLKSIZE=27998 //OUT DD DSN=&,DISP=(,PASS),SPACE=(CYL,(5,5),RLSE), //RECFM=U,BLKSIZE=27800 //SYSINDD * REPRO INFILE(INP) OUTFILE(OUT) //* //*** //* OVERRIDE THE LRECL AND RECFM FOR THE COPIED JCL TO FORMAT * //* IT TO 200 BYTE output * //*** //STEP0200 EXEC PGM=IDCAMS //SYSPRINT DD SYSOUT=* //INP DD DISP=(OLD,PASS),DSN=&,LRECL=200,RECFM=FB,BLKSIZE=27800 //OUT DD SYSOUT=*,LRECL=200,RECFM=FB,BLKSIZE=27800 //SYSINDD * REPRO INFILE(INP) OUTFILE(OUT) //* Thanks, Kolusu -- This message and any attachments are intended only for the use of the addressee and may contain information that is privileged and confidential. If the reader of the message is not the intended recipient or an authorized representative of the intended recipient, you are hereby notified that any dissemination of this communication is strictly prohibited. If you have received this communication in error, please notify us immediately by e-mail and delete the message and any attachments from your system. -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN
Re: Is there any way to convert RECFM=U to RECFM=V with a utility or script?
I would hope that REXX would ignore LRECL for RECFM=U. If you try it, please let us know what happens. -- Shmuel (Seymour J.) Metz http://mason.gmu.edu/~smetz3 From: IBM Mainframe Discussion List on behalf of Paul Gilmartin <000433f07816-dmarc-requ...@listserv.ua.edu> Sent: Thursday, June 13, 2019 5:56 PM To: IBM-MAIN@LISTSERV.UA.EDU Subject: Re: Is there any way to convert RECFM=U to RECFM=V with a utility or script? On Thu, 13 Jun 2019 21:03:17 +, Seymour J Metz wrote: >> DCB=(RECFM=U,LRECL=200,BLKSIZE=27998) > >Despite the LRECL, I take this to mean that the records can be up to 27998. > What do Rexx (and other utilities) do if a record/block exceeds 200? Either for input or output. -- gil -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN
Re: Is there any way to convert RECFM=U to RECFM=V with a utility or script?
On Thu, 13 Jun 2019 21:03:17 +, Seymour J Metz wrote: >> DCB=(RECFM=U,LRECL=200,BLKSIZE=27998) > >Despite the LRECL, I take this to mean that the records can be up to 27998. > What do Rexx (and other utilities) do if a record/block exceeds 200? Either for input or output. -- gil -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN
Re: Is there any way to convert RECFM=U to RECFM=V with a utility or script?
> DCB=(RECFM=U,LRECL=200,BLKSIZE=27998) Despite the LRECL, I take this to mean that the records can be up to 27998. -- Shmuel (Seymour J.) Metz http://mason.gmu.edu/~smetz3 From: IBM Mainframe Discussion List on behalf of Farley, Peter x23353 Sent: Wednesday, June 12, 2019 7:08 PM To: IBM-MAIN@LISTSERV.UA.EDU Subject: Re: Is there any way to convert RECFM=U to RECFM=V with a utility or script? Hi Sri, Tried that, the first step works without a problem but the second one fails with a SYNAD error, "WRNG.LN.RECORD". I found out that some of the records are actually up to 225 or so bytes, and changed the "200" values to 250 but still got the SYNAD error. The actual physical records are varying length but with no BDW/RDW prefix, the physical blocks are no more than about 225 bytes long, some as short as 50 bytes or so. A Rexx script did the job with no errors though. Peter -Original Message- From: IBM Mainframe Discussion List On Behalf Of Sri h Kolusu Sent: Wednesday, June 12, 2019 3:21 PM To: IBM-MAIN@LISTSERV.UA.EDU Subject: Re: Is there any way to convert RECFM=U to RECFM=V with a utility or script? EXTERNAL EMAIL > We have a vendor-generated file that comes in with > DCB=(RECFM=U,LRECL=200,BLKSIZE=27998) (don't ask why please, this > DCB setting is out of our hands). Peter, Give this JCL a try and see if it works for you //*** //* COPY RECFM=U TO MATCH THE LRECL AND BLKSIZE * //*** //STEP0100 EXEC PGM=IDCAMS //SYSPRINT DD SYSOUT=* //INP DD DISP=SHR,DSN=Your input RECFM=U file, //RECFM=U,LRECL=200,BLKSIZE=27998 //OUT DD DSN=&,DISP=(,PASS),SPACE=(CYL,(5,5),RLSE), //RECFM=U,BLKSIZE=27800 //SYSINDD * REPRO INFILE(INP) OUTFILE(OUT) //* //*** //* OVERRIDE THE LRECL AND RECFM FOR THE COPIED JCL TO FORMAT * //* IT TO 200 BYTE output * //*** //STEP0200 EXEC PGM=IDCAMS //SYSPRINT DD SYSOUT=* //INP DD DISP=(OLD,PASS),DSN=&,LRECL=200,RECFM=FB,BLKSIZE=27800 //OUT DD SYSOUT=*,LRECL=200,RECFM=FB,BLKSIZE=27800 //SYSINDD * REPRO INFILE(INP) OUTFILE(OUT) //* Thanks, Kolusu -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN This message and any attachments are intended only for the use of the addressee and may contain information that is privileged and confidential. If the reader of the message is not the intended recipient or an authorized representative of the intended recipient, you are hereby notified that any dissemination of this communication is strictly prohibited. If you have received this communication in error, please notify us immediately by e-mail and delete the message and any attachments from your system. -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN
Re: Is there any way to convert RECFM=U to RECFM=V with a utility or script?
Peter said... *Yes, I did one in Rexx and it worked without an issue.* Well done. I was a bit glib about 2 lines. One at a time is always safer. I'm always amazed how REXX can crunch these oddball files. Off topic but I've had some great success with SDSF RGEN this week. Solved an issue we've had for months... On Thu, Jun 13, 2019 at 9:31 AM Farley, Peter x23353 < peter.far...@broadridge.com> wrote: > That wouldn't work here I'm afraid. Nothing against Paul, he does some > amazing stuff, just not here. > > Peter > > -Original Message- > From: IBM Mainframe Discussion List On Behalf > Of Mike Schwab > Sent: Wednesday, June 12, 2019 6:58 PM > To: IBM-MAIN@LISTSERV.UA.EDU > Subject: Re: Is there any way to convert RECFM=U to RECFM=V with a utility > or script? > > I think Paul wrote one for his MVS 380 project. > > On Wed, Jun 12, 2019 at 10:43 PM Tom Marchant > <000a2a8c2020-dmarc-requ...@listserv.ua.edu> wrote: > > > > On Wed, 12 Jun 2019 19:05:55 +, Farley, Peter x23353wrote: > > > > >The records are actually variable length data, up to 200 bytes of > actual data with no length prefix (no RDW/BDW). No binary data, only text > characters. I suspect a *ix text-format file as the vendor source but have > no proof of that. > > > > No binary data at all? > > ASCII or EBCDIC text? Or perhaps Unicode? > > Or is it text with CR LF or something to delineate the records? > > If not, how can you tell that the records are up to 200 bytes? > > > > Sorry, no answers, just questions. > > > > -- > > Tom Marchant > -- > > This message and any attachments are intended only for the use of the > addressee and may contain information that is privileged and confidential. > If the reader of the message is not the intended recipient or an authorized > representative of the intended recipient, you are hereby notified that any > dissemination of this communication is strictly prohibited. If you have > received this communication in error, please notify us immediately by > e-mail and delete the message and any attachments from your system. > > > -- > For IBM-MAIN subscribe / signoff / archive access instructions, > send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN > -- Wayne V. Bickerdike -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN
Re: Is there any way to convert RECFM=U to RECFM=V with a utility or script?
That wouldn't work here I'm afraid. Nothing against Paul, he does some amazing stuff, just not here. Peter -Original Message- From: IBM Mainframe Discussion List On Behalf Of Mike Schwab Sent: Wednesday, June 12, 2019 6:58 PM To: IBM-MAIN@LISTSERV.UA.EDU Subject: Re: Is there any way to convert RECFM=U to RECFM=V with a utility or script? I think Paul wrote one for his MVS 380 project. On Wed, Jun 12, 2019 at 10:43 PM Tom Marchant <000a2a8c2020-dmarc-requ...@listserv.ua.edu> wrote: > > On Wed, 12 Jun 2019 19:05:55 +, Farley, Peter x23353wrote: > > >The records are actually variable length data, up to 200 bytes of actual > >data with no length prefix (no RDW/BDW). No binary data, only text > >characters. I suspect a *ix text-format file as the vendor source but have > >no proof of that. > > No binary data at all? > ASCII or EBCDIC text? Or perhaps Unicode? > Or is it text with CR LF or something to delineate the records? > If not, how can you tell that the records are up to 200 bytes? > > Sorry, no answers, just questions. > > -- > Tom Marchant -- This message and any attachments are intended only for the use of the addressee and may contain information that is privileged and confidential. If the reader of the message is not the intended recipient or an authorized representative of the intended recipient, you are hereby notified that any dissemination of this communication is strictly prohibited. If you have received this communication in error, please notify us immediately by e-mail and delete the message and any attachments from your system. -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN
Re: Is there any way to convert RECFM=U to RECFM=V with a utility or script?
Yes, definitely no binary data at all, no trailing CR or NL or LF at all. I guessed at the max size by browsing the file in HEX mode (too big to EDIT in TSO), and browse in HEX shows you where the physical end of the record is. And I did find some records longer than 200, max about 225, so I had to increase the final VB LRECL to 250 to accommodate all of them. Peter -Original Message- From: IBM Mainframe Discussion List On Behalf Of Tom Marchant Sent: Wednesday, June 12, 2019 6:43 PM To: IBM-MAIN@LISTSERV.UA.EDU Subject: Re: Is there any way to convert RECFM=U to RECFM=V with a utility or script? On Wed, 12 Jun 2019 19:05:55 +, Farley, Peter x23353wrote: >The records are actually variable length data, up to 200 bytes of actual data >with no length prefix (no RDW/BDW). No binary data, only text characters. I >suspect a *ix text-format file as the vendor source but have no proof of that. No binary data at all? ASCII or EBCDIC text? Or perhaps Unicode? Or is it text with CR LF or something to delineate the records? If not, how can you tell that the records are up to 200 bytes? Sorry, no answers, just questions. -- This message and any attachments are intended only for the use of the addressee and may contain information that is privileged and confidential. If the reader of the message is not the intended recipient or an authorized representative of the intended recipient, you are hereby notified that any dissemination of this communication is strictly prohibited. If you have received this communication in error, please notify us immediately by e-mail and delete the message and any attachments from your system. -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN
Re: Is there any way to convert RECFM=U to RECFM=V with a utility or script?
Tried that too, but apparently my HFS file is having some trouble being mounted and I have to get the storage guys involved to fix it. Bureaucratic nightmare. When that's fixed I will definitely try it, thanks for the suggestion. Peter -Original Message- From: IBM Mainframe Discussion List On Behalf Of John McKown Sent: Wednesday, June 12, 2019 4:51 PM To: IBM-MAIN@LISTSERV.UA.EDU Subject: Re: Is there any way to convert RECFM=U to RECFM=V with a utility or script? EXTERNAL EMAIL Copy it to a UNIX file with FILEDATA=TEXT using IENGENER or other. Then copy it back to a PS dataset with appreciate LRECL and RECFM. The first step will copy each physical record to UNIX, and put a LF at the end to be a regular UNIX text file. The second step will copy the UNIX file back to FB or VB. If FB, it will pad with space. If VB, it will put the right LLBB at the front. On Wed, Jun 12, 2019, 14:06 Farley, Peter x23353 < peter.far...@broadridge.com> wrote: > We have a vendor-generated file that comes in with > DCB=(RECFM=U,LRECL=200,BLKSIZE=27998) (don't ask why please, this DCB > setting is out of our hands). > > The records are actually variable length data, up to 200 bytes of actual > data with no length prefix (no RDW/BDW). No binary data, only text > characters. I suspect a *ix text-format file as the vendor source but have > no proof of that. > > We have tried every utility we could think of (IEBGENER, IDCAMS REPRO, > SORT INREC BUILD=(1,200)) to copy this data to a more usable z/OS record > format but so far nothing we tried works. > > Am I correct that only a Rexx or awk script could do this conversion > (given the update to Rexx to support RECFM=U files and awk's native > capabilities) or an HLL program coded to handle U-format input can do this > conversion? > > Any other ideas you have to help us perform the conversion without writing > an HLL program would be much appreciated. > > Peter -- This message and any attachments are intended only for the use of the addressee and may contain information that is privileged and confidential. If the reader of the message is not the intended recipient or an authorized representative of the intended recipient, you are hereby notified that any dissemination of this communication is strictly prohibited. If you have received this communication in error, please notify us immediately by e-mail and delete the message and any attachments from your system. -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN
Re: Is there any way to convert RECFM=U to RECFM=V with a utility or script?
Well, 6 lines (DO WHILE RC = 0 ... END added for one-record-at-a-time processing, plus 2 EXECIO ... (FINIS at the end. Overkill, I know, but that's just me. Peter -Original Message- From: IBM Mainframe Discussion List On Behalf Of Wayne Bickerdike Sent: Wednesday, June 12, 2019 4:32 PM To: IBM-MAIN@LISTSERV.UA.EDU Subject: Re: Is there any way to convert RECFM=U to RECFM=V with a utility or script? Hmmm, 2 ines of REXX in batch, a couple more if run interactively for the ALLOC statements... On Thu, Jun 13, 2019 at 5:21 AM Sri h Kolusu wrote: > > We have a vendor-generated file that comes in with > > DCB=(RECFM=U,LRECL=200,BLKSIZE=27998) (don't ask why please, this > > DCB setting is out of our hands). > > Peter, > > Give this JCL a try and see if it works for you > > //*** > //* COPY RECFM=U TO MATCH THE LRECL AND BLKSIZE * > //*** > //STEP0100 EXEC PGM=IDCAMS > //SYSPRINT DD SYSOUT=* > //INP DD DISP=SHR,DSN=Your input RECFM=U file, > //RECFM=U,LRECL=200,BLKSIZE=27998 > //OUT DD DSN=&,DISP=(,PASS),SPACE=(CYL,(5,5),RLSE), > //RECFM=U,BLKSIZE=27800 > //SYSINDD * > REPRO INFILE(INP) OUTFILE(OUT) > //* > //*** > //* OVERRIDE THE LRECL AND RECFM FOR THE COPIED JCL TO FORMAT * > //* IT TO 200 BYTE output * > //*** > //STEP0200 EXEC PGM=IDCAMS > //SYSPRINT DD SYSOUT=* > //INP DD DISP=(OLD,PASS),DSN=&,LRECL=200,RECFM=FB,BLKSIZE=27800 > //OUT DD SYSOUT=*,LRECL=200,RECFM=FB,BLKSIZE=27800 > //SYSINDD * > REPRO INFILE(INP) OUTFILE(OUT) > //* > > > Thanks, > Kolusu > > > -- > For IBM-MAIN subscribe / signoff / archive access instructions, > send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN > -- This message and any attachments are intended only for the use of the addressee and may contain information that is privileged and confidential. If the reader of the message is not the intended recipient or an authorized representative of the intended recipient, you are hereby notified that any dissemination of this communication is strictly prohibited. If you have received this communication in error, please notify us immediately by e-mail and delete the message and any attachments from your system. -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN
Re: Is there any way to convert RECFM=U to RECFM=V with a utility or script?
Yes, the records are actually one per physical block, about 140K records (blocks) total. Rexx handled it without a problem (one record at a time, EXECIO 1 ... rather than EXECIO * ...). Using Sri's JCL I did try a number of lrecl/blksize combinations, but they all failed in the second REPRO with wrong length record error on the first record (0 records copied). I did try to use the SYNCSORT option to pad input records, but I may not have done it right. It's our vendor, but I am told they are recalcitrant. Not my application area (I'm just helping out a co-worker here) so I don't have any input into the negotiations. I would give'em h-e-double-hockey-sticks for an attitude like that, but like I said, not my area. Peter -Original Message- From: IBM Mainframe Discussion List On Behalf Of Joel C. Ewing Sent: Wednesday, June 12, 2019 4:25 PM To: IBM-MAIN@LISTSERV.UA.EDU Subject: Re: Is there any way to convert RECFM=U to RECFM=V with a utility or script? Are you saying the records are just one per physical block and that by conventional usage the file should be defined as BLKSIZE=200 with no LRECL? If this is a file with a very large number of unblocked records using a physical block size of 200 or less, it would obviously be an incredibly poor choice for DASD space utilization and performance -- which suggests the file size is not that large. The issue of whether REXX is a good solution long term depends on the volume of data involved. If talking about 100,000 records daily maybe look for more efficient solution than REXX. For small record volume, take the first solution that works. If you know for certain that the maximum physical blocksize is actually 200, I would be tempted to try specifying a more-conventional overriding "BLKSIZE=200" on an input DD for the file and see if that gets any better results trying to use the standard utilities to generate a RECFM=VB,LRECL=204,BLKSIZE=??? (SDB or suitable value) output file. At one point I think SORT required you to explicitly specify that you wanted short records to be extended and the padding byte if you specified fields that extended beyond the size of the record. If the vendor-generated file is from one of your vendors, I would be sorely tempted to do some vendor education to improve their understanding of z/OS. If it is a vendor of one of your customers, that obviously is not an option. Joel C. Ewing On 6/12/19 2:05 PM, Farley, Peter x23353 wrote: > We have a vendor-generated file that comes in with > DCB=(RECFM=U,LRECL=200,BLKSIZE=27998) (don't ask why please, this DCB setting > is out of our hands). > > The records are actually variable length data, up to 200 bytes of actual data > with no length prefix (no RDW/BDW). No binary data, only text characters. I > suspect a *ix text-format file as the vendor source but have no proof of that. > > We have tried every utility we could think of (IEBGENER, IDCAMS REPRO, SORT > INREC BUILD=(1,200)) to copy this data to a more usable z/OS record format > but so far nothing we tried works. > > Am I correct that only a Rexx or awk script could do this conversion (given > the update to Rexx to support RECFM=U files and awk's native capabilities) or > an HLL program coded to handle U-format input can do this conversion? > > Any other ideas you have to help us perform the conversion without writing an > HLL program would be much appreciated. > > Peter -- This message and any attachments are intended only for the use of the addressee and may contain information that is privileged and confidential. If the reader of the message is not the intended recipient or an authorized representative of the intended recipient, you are hereby notified that any dissemination of this communication is strictly prohibited. If you have received this communication in error, please notify us immediately by e-mail and delete the message and any attachments from your system. -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN
Re: Is there any way to convert RECFM=U to RECFM=V with a utility or script?
Hi Sri, Tried that, the first step works without a problem but the second one fails with a SYNAD error, "WRNG.LN.RECORD". I found out that some of the records are actually up to 225 or so bytes, and changed the "200" values to 250 but still got the SYNAD error. The actual physical records are varying length but with no BDW/RDW prefix, the physical blocks are no more than about 225 bytes long, some as short as 50 bytes or so. A Rexx script did the job with no errors though. Peter -Original Message- From: IBM Mainframe Discussion List On Behalf Of Sri h Kolusu Sent: Wednesday, June 12, 2019 3:21 PM To: IBM-MAIN@LISTSERV.UA.EDU Subject: Re: Is there any way to convert RECFM=U to RECFM=V with a utility or script? EXTERNAL EMAIL > We have a vendor-generated file that comes in with > DCB=(RECFM=U,LRECL=200,BLKSIZE=27998) (don't ask why please, this > DCB setting is out of our hands). Peter, Give this JCL a try and see if it works for you //*** //* COPY RECFM=U TO MATCH THE LRECL AND BLKSIZE * //*** //STEP0100 EXEC PGM=IDCAMS //SYSPRINT DD SYSOUT=* //INP DD DISP=SHR,DSN=Your input RECFM=U file, //RECFM=U,LRECL=200,BLKSIZE=27998 //OUT DD DSN=&,DISP=(,PASS),SPACE=(CYL,(5,5),RLSE), //RECFM=U,BLKSIZE=27800 //SYSINDD * REPRO INFILE(INP) OUTFILE(OUT) //* //*** //* OVERRIDE THE LRECL AND RECFM FOR THE COPIED JCL TO FORMAT * //* IT TO 200 BYTE output * //*** //STEP0200 EXEC PGM=IDCAMS //SYSPRINT DD SYSOUT=* //INP DD DISP=(OLD,PASS),DSN=&,LRECL=200,RECFM=FB,BLKSIZE=27800 //OUT DD SYSOUT=*,LRECL=200,RECFM=FB,BLKSIZE=27800 //SYSINDD * REPRO INFILE(INP) OUTFILE(OUT) //* Thanks, Kolusu -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN This message and any attachments are intended only for the use of the addressee and may contain information that is privileged and confidential. If the reader of the message is not the intended recipient or an authorized representative of the intended recipient, you are hereby notified that any dissemination of this communication is strictly prohibited. If you have received this communication in error, please notify us immediately by e-mail and delete the message and any attachments from your system. -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN
Re: Is there any way to convert RECFM=U to RECFM=V with a utility or script?
Yes, I did one in Rexx and it worked without an issue. Peter -Original Message- From: IBM Mainframe Discussion List On Behalf Of Seymour J Metz Sent: Wednesday, June 12, 2019 3:15 PM To: IBM-MAIN@LISTSERV.UA.EDU Subject: Re: Is there any way to convert RECFM=U to RECFM=V with a utility or script? Well, I would probably do it with assembler, but what's wrong with writing a REXX script? or a Perl script, for that matter? -- Shmuel (Seymour J.) Metz http://mason.gmu.edu/~smetz3 From: IBM Mainframe Discussion List on behalf of Farley, Peter x23353 Sent: Wednesday, June 12, 2019 3:05 PM To: IBM-MAIN@LISTSERV.UA.EDU Subject: Is there any way to convert RECFM=U to RECFM=V with a utility or script? We have a vendor-generated file that comes in with DCB=(RECFM=U,LRECL=200,BLKSIZE=27998) (don't ask why please, this DCB setting is out of our hands). The records are actually variable length data, up to 200 bytes of actual data with no length prefix (no RDW/BDW). No binary data, only text characters. I suspect a *ix text-format file as the vendor source but have no proof of that. We have tried every utility we could think of (IEBGENER, IDCAMS REPRO, SORT INREC BUILD=(1,200)) to copy this data to a more usable z/OS record format but so far nothing we tried works. Am I correct that only a Rexx or awk script could do this conversion (given the update to Rexx to support RECFM=U files and awk's native capabilities) or an HLL program coded to handle U-format input can do this conversion? Any other ideas you have to help us perform the conversion without writing an HLL program would be much appreciated. Peter -- This message and any attachments are intended only for the use of the addressee and may contain information that is privileged and confidential. If the reader of the message is not the intended recipient or an authorized representative of the intended recipient, you are hereby notified that any dissemination of this communication is strictly prohibited. If you have received this communication in error, please notify us immediately by e-mail and delete the message and any attachments from your system. -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN
Re: Is there any way to convert RECFM=U to RECFM=V with a utility or script?
I think Paul wrote one for his MVS 380 project. On Wed, Jun 12, 2019 at 10:43 PM Tom Marchant <000a2a8c2020-dmarc-requ...@listserv.ua.edu> wrote: > > On Wed, 12 Jun 2019 19:05:55 +, Farley, Peter x23353wrote: > > >The records are actually variable length data, up to 200 bytes of actual > >data with no length prefix (no RDW/BDW). No binary data, only text > >characters. I suspect a *ix text-format file as the vendor source but have > >no proof of that. > > No binary data at all? > ASCII or EBCDIC text? Or perhaps Unicode? > Or is it text with CR LF or something to delineate the records? > If not, how can you tell that the records are up to 200 bytes? > > Sorry, no answers, just questions. > > -- > Tom Marchant > > -- > For IBM-MAIN subscribe / signoff / archive access instructions, > send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN -- Mike A Schwab, Springfield IL USA Where do Forest Rangers go to get away from it all? -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN
Re: Is there any way to convert RECFM=U to RECFM=V with a utility or script?
On Wed, 12 Jun 2019 19:05:55 +, Farley, Peter x23353wrote: >The records are actually variable length data, up to 200 bytes of actual data >with no length prefix (no RDW/BDW). No binary data, only text characters. I >suspect a *ix text-format file as the vendor source but have no proof of that. No binary data at all? ASCII or EBCDIC text? Or perhaps Unicode? Or is it text with CR LF or something to delineate the records? If not, how can you tell that the records are up to 200 bytes? Sorry, no answers, just questions. -- Tom Marchant -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN
Re: Is there any way to convert RECFM=U to RECFM=V with a utility or script?
Copy it to a UNIX file with FILEDATA=TEXT using IENGENER or other. Then copy it back to a PS dataset with appreciate LRECL and RECFM. The first step will copy each physical record to UNIX, and put a LF at the end to be a regular UNIX text file. The second step will copy the UNIX file back to FB or VB. If FB, it will pad with space. If VB, it will put the right LLBB at the front. On Wed, Jun 12, 2019, 14:06 Farley, Peter x23353 < peter.far...@broadridge.com> wrote: > We have a vendor-generated file that comes in with > DCB=(RECFM=U,LRECL=200,BLKSIZE=27998) (don't ask why please, this DCB > setting is out of our hands). > > The records are actually variable length data, up to 200 bytes of actual > data with no length prefix (no RDW/BDW). No binary data, only text > characters. I suspect a *ix text-format file as the vendor source but have > no proof of that. > > We have tried every utility we could think of (IEBGENER, IDCAMS REPRO, > SORT INREC BUILD=(1,200)) to copy this data to a more usable z/OS record > format but so far nothing we tried works. > > Am I correct that only a Rexx or awk script could do this conversion > (given the update to Rexx to support RECFM=U files and awk's native > capabilities) or an HLL program coded to handle U-format input can do this > conversion? > > Any other ideas you have to help us perform the conversion without writing > an HLL program would be much appreciated. > > Peter > -- > > This message and any attachments are intended only for the use of the > addressee and may contain information that is privileged and confidential. > If the reader of the message is not the intended recipient or an authorized > representative of the intended recipient, you are hereby notified that any > dissemination of this communication is strictly prohibited. If you have > received this communication in error, please notify us immediately by > e-mail and delete the message and any attachments from your system. > > -- > For IBM-MAIN subscribe / signoff / archive access instructions, > send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN > -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN
Re: Is there any way to convert RECFM=U to RECFM=V with a utility or script?
Hmmm, 2 ines of REXX in batch, a couple more if run interactively for the ALLOC statements... On Thu, Jun 13, 2019 at 5:21 AM Sri h Kolusu wrote: > > We have a vendor-generated file that comes in with > > DCB=(RECFM=U,LRECL=200,BLKSIZE=27998) (don't ask why please, this > > DCB setting is out of our hands). > > Peter, > > Give this JCL a try and see if it works for you > > //*** > //* COPY RECFM=U TO MATCH THE LRECL AND BLKSIZE * > //*** > //STEP0100 EXEC PGM=IDCAMS > //SYSPRINT DD SYSOUT=* > //INP DD DISP=SHR,DSN=Your input RECFM=U file, > //RECFM=U,LRECL=200,BLKSIZE=27998 > //OUT DD DSN=&,DISP=(,PASS),SPACE=(CYL,(5,5),RLSE), > //RECFM=U,BLKSIZE=27800 > //SYSINDD * > REPRO INFILE(INP) OUTFILE(OUT) > //* > //*** > //* OVERRIDE THE LRECL AND RECFM FOR THE COPIED JCL TO FORMAT * > //* IT TO 200 BYTE output * > //*** > //STEP0200 EXEC PGM=IDCAMS > //SYSPRINT DD SYSOUT=* > //INP DD DISP=(OLD,PASS),DSN=&,LRECL=200,RECFM=FB,BLKSIZE=27800 > //OUT DD SYSOUT=*,LRECL=200,RECFM=FB,BLKSIZE=27800 > //SYSINDD * > REPRO INFILE(INP) OUTFILE(OUT) > //* > > > Thanks, > Kolusu > > > -- > For IBM-MAIN subscribe / signoff / archive access instructions, > send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN > -- Wayne V. Bickerdike -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN
Re: Is there any way to convert RECFM=U to RECFM=V with a utility or script?
Are you saying the records are just one per physical block and that by conventional usage the file should be defined as BLKSIZE=200 with no LRECL? If this is a file with a very large number of unblocked records using a physical block size of 200 or less, it would obviously be an incredibly poor choice for DASD space utilization and performance -- which suggests the file size is not that large. The issue of whether REXX is a good solution long term depends on the volume of data involved. If talking about 100,000 records daily maybe look for more efficient solution than REXX. For small record volume, take the first solution that works. If you know for certain that the maximum physical blocksize is actually 200, I would be tempted to try specifying a more-conventional overriding "BLKSIZE=200" on an input DD for the file and see if that gets any better results trying to use the standard utilities to generate a RECFM=VB,LRECL=204,BLKSIZE=??? (SDB or suitable value) output file. At one point I think SORT required you to explicitly specify that you wanted short records to be extended and the padding byte if you specified fields that extended beyond the size of the record. If the vendor-generated file is from one of your vendors, I would be sorely tempted to do some vendor education to improve their understanding of z/OS. If it is a vendor of one of your customers, that obviously is not an option. Joel C. Ewing On 6/12/19 2:05 PM, Farley, Peter x23353 wrote: > We have a vendor-generated file that comes in with > DCB=(RECFM=U,LRECL=200,BLKSIZE=27998) (don't ask why please, this DCB setting > is out of our hands). > > The records are actually variable length data, up to 200 bytes of actual data > with no length prefix (no RDW/BDW). No binary data, only text characters. I > suspect a *ix text-format file as the vendor source but have no proof of that. > > We have tried every utility we could think of (IEBGENER, IDCAMS REPRO, SORT > INREC BUILD=(1,200)) to copy this data to a more usable z/OS record format > but so far nothing we tried works. > > Am I correct that only a Rexx or awk script could do this conversion (given > the update to Rexx to support RECFM=U files and awk's native capabilities) or > an HLL program coded to handle U-format input can do this conversion? > > Any other ideas you have to help us perform the conversion without writing an > HLL program would be much appreciated. > > Peter -- Joel C. Ewing -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN
Re: Is there any way to convert RECFM=U to RECFM=V with a utility or script?
> We have a vendor-generated file that comes in with > DCB=(RECFM=U,LRECL=200,BLKSIZE=27998) (don't ask why please, this > DCB setting is out of our hands). Peter, Give this JCL a try and see if it works for you //*** //* COPY RECFM=U TO MATCH THE LRECL AND BLKSIZE * //*** //STEP0100 EXEC PGM=IDCAMS //SYSPRINT DD SYSOUT=* //INP DD DISP=SHR,DSN=Your input RECFM=U file, //RECFM=U,LRECL=200,BLKSIZE=27998 //OUT DD DSN=&,DISP=(,PASS),SPACE=(CYL,(5,5),RLSE), //RECFM=U,BLKSIZE=27800 //SYSINDD * REPRO INFILE(INP) OUTFILE(OUT) //* //*** //* OVERRIDE THE LRECL AND RECFM FOR THE COPIED JCL TO FORMAT * //* IT TO 200 BYTE output * //*** //STEP0200 EXEC PGM=IDCAMS //SYSPRINT DD SYSOUT=* //INP DD DISP=(OLD,PASS),DSN=&,LRECL=200,RECFM=FB,BLKSIZE=27800 //OUT DD SYSOUT=*,LRECL=200,RECFM=FB,BLKSIZE=27800 //SYSINDD * REPRO INFILE(INP) OUTFILE(OUT) //* Thanks, Kolusu -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN
Re: Is there any way to convert RECFM=U to RECFM=V with a utility or script?
Well, I would probably do it with assembler, but what's wrong with writing a REXX script? or a Perl script, for that matter? -- Shmuel (Seymour J.) Metz http://mason.gmu.edu/~smetz3 From: IBM Mainframe Discussion List on behalf of Farley, Peter x23353 Sent: Wednesday, June 12, 2019 3:05 PM To: IBM-MAIN@LISTSERV.UA.EDU Subject: Is there any way to convert RECFM=U to RECFM=V with a utility or script? We have a vendor-generated file that comes in with DCB=(RECFM=U,LRECL=200,BLKSIZE=27998) (don't ask why please, this DCB setting is out of our hands). The records are actually variable length data, up to 200 bytes of actual data with no length prefix (no RDW/BDW). No binary data, only text characters. I suspect a *ix text-format file as the vendor source but have no proof of that. We have tried every utility we could think of (IEBGENER, IDCAMS REPRO, SORT INREC BUILD=(1,200)) to copy this data to a more usable z/OS record format but so far nothing we tried works. Am I correct that only a Rexx or awk script could do this conversion (given the update to Rexx to support RECFM=U files and awk's native capabilities) or an HLL program coded to handle U-format input can do this conversion? Any other ideas you have to help us perform the conversion without writing an HLL program would be much appreciated. Peter -- This message and any attachments are intended only for the use of the addressee and may contain information that is privileged and confidential. If the reader of the message is not the intended recipient or an authorized representative of the intended recipient, you are hereby notified that any dissemination of this communication is strictly prohibited. If you have received this communication in error, please notify us immediately by e-mail and delete the message and any attachments from your system. -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN