SMP/E to the rescue!
It goes without saying that you should not be doing this on the active
system, and that you should take a backup first, but I'll say it anyway.
Back up target libraries and zone, DLIBs and DLIB zone. (DFSMSdss or
your favorite alternative is the sysprog's best friend.)
Caveat: I have not personally done this in some time.
Before you do any of the following, go read the SMP/E Commands chapter
on GENERATE. Then:
0. Make sure ACCJCLIN is set in the DLIB zone. If it's not, ignore
everything below. (You cannot just set it and proceed, because if it's
not been set all along SMP/E has not been saving the JCLIN at ACCEPT time.)
1. Run a LIST LMOD(name) XREF for each member that worries you to find
out what MODs make them up.
2. LIST all the MODs that are listed by LIST LMOD XREF in both the
target and DLIB zones to find and compare their RMIDs.
3. If the RMIDs show that one or more PTFs have been applied but not
accepted, accept them all. Bypass all hold conditions including error
holds. You're not trying to achieve perfection now, just get back to
where you were first. (Alternatively, accept everything for HDZ1D10.
You took a backup!)
4. Run GENERATE FORFMID(HDZ1D10). Specify a data set or member for
SMPPUNCH.
Note: GENERATE runs suprisingly fast. Don't think things went wrong
just because the job ends quickly.
5. If the modules are linked and not copied, edit the output in the
SMPPUNCH data set to delete all the link steps except for the one or
ones for LPALIB for those load modules, and also to remove all the link
control statements for all other load modules. If they are copied,
remove all the other steps and all the COPY (or COPYMOD) statements for
other members.
6. Run the remaining step or steps. If you directed the link (or copy)
steps at your LPALIB data set, then assuming you did the editing right
and got the expected return codes, you are now back where you were
before Something Bad Happened to those modules from an SMP/E standpoint.
7. If you bypassed errors to accept the PTFs, decide whether to restore
the DLIBs from the backup.
You can do recovery for individual modules, whole libraries, FMIDs'
worth of stuff, or entire target zones this way. It's perhaps the
best-kept open secret in the SMP/E books. I believe GENERATE was
originally invented for IPO, way back when, to generate target data sets
from DLIB data sets, saving on tape.
Rob Schramm wrote:
Dear Listers,
I am attempting to recover or get back to the proper version of a couple
LPALIB modules. In this case some sysprog decided to copy altered versions
of a couple of load modules into SYS1.LPALIB. I have not been able to find
a backup of the modules. So, I am left with what is in SMP/E to hopefully
save the day. At first I was hoping for something like an APPLY REDO to
recover the modules.
.
APPLY SELECT( HDZ1D10 )
CHECK
BYPASS(HOLDSYSTEM)
RETRY(YES)
fails because HDZ1D10 was ACCEPTed.
A RESTORE fails for
GIM24501E RESTORE PROCESSING FAILED FOR SYSMOD sysmod BECAUSE OTHER
SYSMODS WERE DELETED WHEN sysmod WAS APPLIED
I am looking for ideas on how to get back to the correct versions of the
modules.
--
John Eells
IBM Poughkeepsie
[email protected]
----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to [email protected] with the message: INFO IBM-MAIN