Page 1 of 3

Error while reading PS File: "I/O error reading data"

PostPosted: Tue Jul 31, 2018 5:23 pm
by rahulkrddd
Dear All,
Good day!

I'm not able to access a PDS file which i was able to access earlier. It's very very important to get this recovered. I'm getting below error while accessing all the PDS members.
I/O error reading data

The characteristics of the member is given below-
                                           Directory flag byte    
 Member name  . . . . . . . . : FILE1       Bit 0  : 0  SCLM      
 Concatenation number . . . . : 1           Bit 1  : 0            
 Version . Modification . . . : 01.03       Bit 2  : 0  Ext Stats  
 Create Date  . . . . . . . . : 2015/01/31  Bit 3  : 0            
 Modification Date  . . . . . : 2018/07/31  Bit 4  : 0            
 Modification Time  . . . . . : 04:17:38    Bit 5  : 0            
 Userid that Created/Modified : RAHULG      Bit 6  : 0            
                                            Bit 7  : 0            
                                                                   
 Line counts : max values are 65535         Extended line counts  
 Current  : 9                               Current  :            
 Initial  : 2                               Initial  :            
 Modified : 7                               Modified :            


Please help me in resolving the issue.

Re: Error while reading PS File: "I/O error reading data"

PostPosted: Tue Jul 31, 2018 7:55 pm
by willy jensen
how are you trying to read the members?
can you read some members?
what are the DCB values? as expected?
any messages in the syslog?

Re: Error while reading PS File: "I/O error reading data"

PostPosted: Tue Jul 31, 2018 8:15 pm
by steve-myers
"I/O Error" means the data cannot be read for some reason. It means what it says. In practice the member cannot be recovered.

Now then, you appear to have a partitioned data set. There are four reasons you can get an I/O error reading a member.
  1. There is some sort of problem with the physical media. In these days this is very unlikely. That's the good news.
  2. Part of a directory entry is the the disk address of the first record of the member. Though it's unlikely, this address can be corrupted in the directory entry. In my time I've written a number of programs that read partitioned data sets directly. When I've encountered I/O errors the reason has always been I used this address incorrectly for some reason. When I've corrected this problem the I/O error disappeared. It's unlikely this is the problem you are having as this error appears to be coming from ISPF, and we can believe this is not an error in ISPF. The directory data you did print suggests this is the problem since the extended stats bit is on, but the extended line counts have not been filled in.
  3. As Mr. Jensen suggests, somehow the DCB attributes (RECFM, LRECL and BLKSIZE) for the data set (NOT file) have been corrupted in the data set label. Use ISPF facilities or possibly other facilities to display these attributes. If they are incorrect fix them.
  4. Somehow the member data on disk has been corrupted. It's too late to determine how this happened, but it also means the data cannot be recovered in place. This is why you backup data.
You need more information as to the nature of the I/O error. Try this batch job.
//        EXEC PGM=IEBGENER
//SYSPRINT DD  SYSOUT=*
//SYSUT1   DD  DISP=SHR,DSN=your-data-set(your-member)
//SYSUT2   DD  SYSOUT=*
//SYSIN    DD  DUMMY
If you are lucky IEBGENER will print information about the error in the data set specified by the DD statement with DD name SYSPRINT. Reproduce the significant part of this message here and possibly we can help you.

Your support structure is a more appropriate place to go for assistance with this problem than these forums. Use this resource.

Re: Error while reading PS File: "I/O error reading data"

PostPosted: Wed Aug 01, 2018 7:18 am
by Pedro
I am confused by:
... accessing all the PDS members.

... characteristics of the member...

Are you having problems with an individual member? Or every member of the data set?

How are you 'accessing' the data set?

Re: Error while reading PS File: "I/O error reading data"

PostPosted: Wed Aug 01, 2018 11:53 am
by steve-myers
Pedro wrote:I am confused by:
... accessing all the PDS members.

... characteristics of the member...

Are you having problems with an individual member? Or every member of the data set?

How are you 'accessing' the data set?

Unfortunately the topic starter does not say very much. I, too, would like to know if this refers to the one member or more than one member.

However -
...I'm getting below error while accessing all the PDS members.
I/O error reading data ...
Now this may be good news for rahulrkdd. Since there is an apparently intact directory entry, it implies the directory has not been destroyed. It does imply the DCB attributes for the data set have been corrupted. Rahulrkdd needs to confirm this ASAP. Fortunately this is relatively easy to correct, or at least store DCB attributes that will allow rahulrkdd to read the members in the data set. The bad news for rahulrkdd is he or she appears to be a neophyte with little or no understanding of z/OS. We will have to hold his or her hand very carefully through through this.

First, rahulrkdd will have to tell us the exact RECFM, LRECL and BLKSIZE currently specified for the data set. This will tell us what to do next.

Re: Error while reading PS File: "I/O error reading data"

PostPosted: Wed Aug 01, 2018 3:26 pm
by rahulkrddd
Dear All,
Good day!
Thanks for your response.

Dear Steve,
I'm not able access any of the PDS members (Sorry if the subject says otherwise it's about PDS DS members). Now I want to clarify that Dataset RAHULG.IMP.PDS1 is a PDS which contains multiple members. When I put 'S' in front of the the PDS i can see below characteristics-


Data Set Name . . . . : RAHULG.IMP.PDS1                                
                                                                       
General Data                           Current Allocation              
 Management class . . : DEFPDSPR        Allocated blocks  . : 75        
 Storage class  . . . : SINGLEV         Allocated extents . : 1        
  Volume serial . . . : SV3D1E                                          
  Device type . . . . : 3390                                            
 Data class . . . . . : NONSTD                                          
  Organization  . . . : PO             Current Utilization              
  Record format . . . : FA              Used blocks . . . . : 245        
  Record length . . . : 121             Used extents  . . . : 1        
  Block size  . . . . : 121                                            
  1st extent blocks . : 75                                              
  Secondary blocks  . : 19             Dates                            
  Data set name type  : PDS             Creation date . . . : 2015/01/31
                                        Referenced date . . : 2018/07/31
                                        Expiration date . . : ***None***


I can view the members by clicking 'V' (view) in front of PDS member. I can see all my members there. But when I try to View/Edit the member I get an error 'I/O error reading data' and below are the characteristics of member (Which I got by typing 'S' in front of members) -

                                          Directory flag byte    
 Member name  . . . . . . . . : FILE1       Bit 0  : 0  SCLM      
 Concatenation number . . . . : 1           Bit 1  : 0            
 Version . Modification . . . : 01.03       Bit 2  : 0  Ext Stats  
 Create Date  . . . . . . . . : 2015/01/31  Bit 3  : 0            
 Modification Date  . . . . . : 2018/07/31  Bit 4  : 0            
 Modification Time  . . . . . : 04:17:38    Bit 5  : 0            
 Userid that Created/Modified : RAHULG      Bit 6  : 0            
                                            Bit 7  : 0            
                                                                   
 Line counts : max values are 65535         Extended line counts  
 Current  : 9                               Current  :            
 Initial  : 2                               Initial  :            
 Modified : 7                               Modified :  


I want to access all the members of the PDS RAHULG.IMP.PDS1 which contains very important JCLs of daily use. Can you please tell me how should I access?
Hope this helps...

Re: Error while reading PS File: "I/O error reading data"

PostPosted: Wed Aug 01, 2018 4:53 pm
by NicC
You have not provided answers to some of the questions asked previously. In particular: are the DCB characteristics what you expect? I would say "no" because you say there is JCL in the PDS and JCL has an LRECL of 80 whereas your PDS is currently showing 121. I guess you have run a job which has written its output to the PDS and that output had an LRECL of 121 (so it was probably a utility).
If this is the case then you need to do this (from another forum):
create a new member in the corrupted pds using IEBGENER specifying the correct DCB and DISP=MOD on the DD card
eg
//SYSUT2 dd disp=MOD,DSN=CORRUPT.PDS(XXX),DCB=(LRECL=80,BLKSIZE=32000)

Nowadays I would use a blocksize of 0.

Re: Error while reading PS File: "I/O error reading data"

PostPosted: Wed Aug 01, 2018 6:02 pm
by phunsoft
NicC wrote://SYSUT2 dd disp=MOD,DSN=CORRUPT.PDS(XXX),DCB=(LRECL=80,BLKSIZE=32000)

Nowadays I would use a blocksize of 0.


Not in this case. The system would use half track blocking, i.e. BLKSIZE=27920. You would still get I/O errors if the PDS originally had a block size larger than that. (I can't remember if reading smaller blocks than BLKSIZE is a problem or not. Would have to test.)

Also, if the PDS originally had a unknown block size larger that 27920, you better specify the max 32720 instead of 32000.

If you are allowed to print the data set using DFdss with the PRINT option, do so. (Any other tool that prints the physical tracks will do as well.) You can then look at the real block sizes as they exist on the disk. Note that the first nnn blocks will be the 256 byte directory blocks. Skip them and start with the blocks that follow. NOTE that this will only work is the data set really is a PDS, but not if it is a PDS/E.

Re: Error while reading PS File: "I/O error reading data"

PostPosted: Wed Aug 01, 2018 6:09 pm
by Robert Sample
I can't remember if reading smaller blocks than BLKSIZE is a problem or not.
This is never a problem since the system has to be able to handle the last block of the data set, which could have as little as 1 record in the block. So short blocks are inherently handled by the operating system.

Re: Error while reading PS File: "I/O error reading data"

PostPosted: Wed Aug 01, 2018 6:50 pm
by rahulkrddd
Dear NicC,
Good day!

Yes, you are 100% correct. DCB parameter should be of LRECL=80 however it's being shown as 121. Now as per your advise I tried to run IEBGENER Utility on the selected PDS
as per below code-

//EXEC1 EXEC PGM=IEBGENER                          
//SYSIN    DD   DUMMY                              
//SYSPRINT DD   SYSOUT=*                            
//SYSUT1   DD   *                                  
TEST                                                
/*                                                  
//SYSUT2   DD DISP=MOD,DSN=RAHULG.IMP.PDS1(TEST),  
//            DCB=(LRECL=80,BLKSIZE=32000)    


However I got MAXCC=12 with SYSPRINT message IEB311I (DCB Conflicting). Please see below-

********************************* TOP OF DATA **********************************
DATA SET UTILITY - GENERATE                                                    
IEB311I CONFLICTING DCB PARAMETERS                                              
******************************** BOTTOM OF DATA ********************************


In addition to this I also tried to run the job with LRECL=121 and BLKSIZE=12100, In this case I got *SB14 error.

Kindly advise.