First option: use DFSORT (one step per DSN) to copy your input data. You can 
use the OUTREC control card to force the data to be of a standard length, 
padding with blanks or x'00' or whatever. Then process the new, padded, data 
sets using normal COBOL.

===

Now, if you could make the file definition VARIABLE and force the incoming 
files to be RECFM=VB, then it is still fairly easy. The COBOL FD would then 
look something like:

FD  INLOG
    RECORD IS VARYING IN SIZE FROM 1 TO 133
           DEPENDING ON WS-INLOG-RECORD-LENGTH
    RECORDING MODE IS V
    LABEL RECORDS ARE OMITTED.

(note 133 is my max in the program I was writing, change to your max).

When you read the record, the variable WS-INLOG-RECORD-LENGTH (PIC 9999) will 
contain the size of the record read. You could then MOVE it to a fixed length 
area using "reference modification", like:

  MOVE INLOG-RECORD(1:WS-INLOG-RECORD-LENGTH) TO FIXED-DATA-AREA.

This will copy the input to a fixed output (or work) area, padded with blanks. 
If you want it padded with LOW-VALUES (or something else), you could do:

  MOVE ALL LOW-VALUES TO FIXED-DATA-AREA.
  MOVE INLOG-RECORD(1:WS-INLOG-RECORD-LENGTH) TO 
FIXED-DATA-AREA(1:WS-INLOG-RECORD-LENGTH).

===

If you want to be truly weird and the data is textual (no unprintable binary), 
put the data in a z/OS UNIX file instead of a sequential data set. Then read 
the file as you normally would in your COBOL program as FIXED, using a DD 
similar to:

//INPUT DD PATH='/some/directory/input.data',
// PATHOPTS=(ORDONLY),
// RECFM=FB,LRECL=???,BLKSIZE=???,
// FILEDATA=TEXT

Since all normal z/OS UNIX text files are delimited by a NEL (x'15'), they are 
inherently variable length. But if you put RECFM=FB,LRECL=??? (replace ??? with 
max record length), then QSAM will read the logical record from UNIX and 
automagically pad it with blanks if it is short. 

No, I am not really suggesting this. It's just my desire to do things strangely.

-- 
John McKown
Systems Engineer IV
IT

Administrative Services Group

HealthMarkets®

9151 Boulevard 26 • N. Richland Hills • TX 76010
(817) 255-3225 phone •
john.mck...@healthmarkets.com • www.HealthMarkets.com

Confidentiality Notice: This e-mail message may contain confidential or 
proprietary information. If you are not the intended recipient, please contact 
the sender by reply e-mail and destroy all copies of the original message. 
HealthMarkets® is the brand name for products underwritten and issued by the 
insurance subsidiaries of HealthMarkets, Inc. –The Chesapeake Life Insurance 
Company®, Mid-West National Life Insurance Company of TennesseeSM and The MEGA 
Life and Health Insurance Company.SM


> -----Original Message-----
> From: IBM Mainframe Discussion List [mailto:IBM-MAIN@LISTSERV.UA.EDU]
> On Behalf Of Ron Thomas
> Sent: Thursday, October 18, 2012 12:43 PM
> To: IBM-MAIN@LISTSERV.UA.EDU
> Subject: File Processing
> 
> Hello
> 
> I have a requirement where  the input file is comming from a thrid
> party system and each of the files is having different logical record
> lengths. Once the file cam i have  to use the file and encrypt the
> customer number that is there. Please let me know how in a  single
> cobol program we can acheive the same?
> 
> Regards
> Ron T
> 
> ----------------------------------------------------------------------
> 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

Reply via email to