Paul Gilmartin wrote:
>On Wed, 12 Nov 2014 02:49:45 +0000, CM Poncelet wrote:
>
>
>
>>Just a couple of points.
>>
>> * The IEBGENER to a <PDS.>(member) will most likely have made the
>> situation worse by *not* restoring the original (corrupted)
>> directory but instead creating a new one. If so, and if the
>> IEBGENER was run against the original PDS (instead of against a
>> 'mirror image' copy of it), then try to restore the original PDS
>> from an earlier full DASD volume backup and start again.
>>
>>
>>
>No. It will add an entry for a new member in the existing directory
>or update the entry for an existing member. It will update the label
>(F1 DSCB?) if the attributes different.
>
It will add a new member, or update the entry for an existing member, if
the 'existing directory' still exists as a directory (and does not need
to be restored). But I am not sure it exists. If I understood correctly,
after the IEBGENER, there was only 1 member in the PDS (from an earlier
posting "If as you said, you used IEBGENER (writing a NEW member using
the correct DCB) to "correct" the problem and you still can't read the
members, then it is probably not fixable.") The question is, what is the
sequence of events that preceded 'UNABLE TO COPY PDS' - i.e. what was
the PDS when it could be copied?
>
>
>
>> * Copy the restored original PDS to a different DSN and apply/verify
>> all tentative fixes only to the copy and *not* to the original PDS
>> itself. This copy could be done by IEBCOPY'ing the PDS to a flat
>> file and then IEBCOPY'ing this flat file to a new PDS with a JCL
>> LIKE=<original PDS>.
>>
>>
>>
>Won't IEBCOPY itself restore the attributes. Will it fail if the attributes
>are incompatible?
>
That depends on what the problem is. E.g. a PDS can be created/populated
with RECFM=FB,LRECL=80,etc. A member can then be specified as the
SYSPRINT output of running, say, a batch LISTCAT. The LISTCAT output
with RECFM=FBA,LRECL=133 (if memory serves) will then be browsable in
the PDS, but the previous members (those with LRECL=80) will not. If the
PDS's DCB/DSCB is then overwritten to be RECFM=FB,LRECL=80, the original
members will be browsable again but now the LISTCAT member will not.
Writing members with DCB LRECL=8 to 27998, and with all permutations of
RECFM and BLKSIZE as well, would show there are 1,000's of ways of
corrupting a PDS even though it would still be a PDS. So, potentially
destructive 'fix' testing should be performed only on copies of the PDS
that has to be fixed - to avoid losing the original one while fixing it.
I do not know whether IEBCOPY would fail, but suggested using ADRDSSU if
it did. IEBCOPY could not restore a 'one size fits all' attribute to
cover both the FB80 and FBA133 ones above.
>
>
>
>>... If that fails, try backing up the original
>> PDS via PGM=ADRDSSU and restoring it from the ADRDSSU backup to a
>> new PDS DSN - then verify any would-be fix on the copy before
>> fixing the PDS itself.
>>
>>
>
>
>
>> * ... But RECFM=U is for load modules (LMODs).
>>
>>
>>
>Or whatever else the programmer chooses to use it for.
>
Of course. But when there is BLKSIZE=32760, then BLKSIZE=27920, then
RECFM=U, then RECFM=VBA, I try to make some sense of it.