Hey guys,

I am using a Perl program to process DCOLLECT records from an input dataset 
that is 465 tracks. If I don't pre allocate enough tracks for the output 
dataset it fills up 100% at 61 tracks and 16 extents. After filling up the 
output dataset, the program keeps reading in input records and processing them, 
it just doesn't write out the output record. Because there are no errors or 
warning statements given, it gives the impression that everything executed like 
it should have when actually the output dataset only contains a fraction of the 
records that it should.  Is there some way to make Perl (or mvswrite, or 
mvsopen?) throw an exception if it runs out of space for an output dataset but 
is still being asked to write to it. Or a way to ensure it dynamically 
allocates the amount of space it needs? Here is what I am doing in the code:


$infh  = 
mvsopen("//'USERBTC.INPUT.LARGE'","rb,lrecl=105,recfm=FB,blksize=27930") or die 
$|;                                   # This file is 465 tracks (240236 records)
$match = 
mvsopen("//'USERBTC.OUTPUT.MATCH'","wb,lrecl=105,recfm=FB,blksize=27930") or 
die $|;                        # This file fills up at 61 tracks
$RECSIZE = 105;

   for ($recnum = 0; read($infh, $record, $RECSIZE); $recnum++){                
                                                                               
# Loop processes all 240236 input records
               mvswrite($match,$record,$RECSIZE);                               
                                                                                
                  # but stops writing output after the 32452nd record
}

I appreciate any help or insight anyone may be able to give me on this.

Thanks,
Brandon Cooper
Mainframe Admin | IT Operations
Texas Instruments

Reply via email to