CPF3770: No objects saved or restored for library
CPF3770 means a save or restore command got through a library without saving or restoring a single object from it. The message names the library, and the diagnostic messages before it explain why.
Other names for this code
Also written as CPF3770 no objects saved, MSGID CPF3770, no objects saved or restored for library, SAVLIB CPF3770, RSTLIB CPF3770, BRMS CPF3770.
What it means
CPF3770 has the text "No objects saved or restored for library &1." Both Save Library (SAVLIB) and Restore Library (RSTLIB) list it among their escape messages. Both commands also list it as a status message.
The message is a total. It says the count of objects saved or restored for that library was zero. It doesn't give the reason. For each object that failed, the command sends its own diagnostic message first, so the reason is a few lines higher in the job log.
Zero isn't always a problem. IBM documents a case in BRMS. From V5R4 on, the operating system can save spooled files on its own, and BRMS logs CPF3770 for library *SPLF for each output queue in a spooled file list that has nothing in it. At V5R3 an empty queue produced no message. The backup carries on with the other items in the control group.
Common causes
- Every object in the library was locked by other jobs, so the save couldn't get the locks it needed. This is common when a library is saved while users are active and save-while-active isn't used.
- Nothing was selected. The SELECT or OMITOBJ values left no objects to process. On a restore, OPTION(*NEW) skips every object that already exists, so it can end up restoring nothing.
- The user running the save or restore isn't authorized to the objects, and doesn't have *SAVSYS special authority.
- On a restore, the objects on the media couldn't be restored over the existing ones. Typical reasons are objects in use, damage, or differences such as a new owner or file level ID while ALWOBJDIF is *NONE.
- In BRMS, an output queue in a spooled file list was empty. This is expected and harmless.
How to find the problem
- Run DSPJOBLOG on the save or restore job and scroll up from CPF3770. The diagnostic messages above it name each object that failed and why. Press F1 on each one for the details.
- For an unattended backup, check QSYSOPR and the history log with DSPLOG, because the job log may already be gone.
- For a restore, list what is actually on the media with
DSPTAP DEV(TAP01) DATA(*SAVRST), or DSPSAVF for a save file, and compare it with what you asked for. - In BRMS, the BRMS log (DSPLOGBRM) and the control group's spooled file list show which output queue the message belongs to.
- Check whether the library really has objects:
DSPLIB LIB(ACCTLIB).
How to fix it
- Fix the cause the diagnostics give, then rerun the save or restore for that one library.
- For lock problems, save while users are off the system or use save-while-active (the SAVACT parameter) so files that are open for update can still be saved.
- For authority problems, run the save from a profile with *SAVSYS, or grant the needed authority to the objects.
- For a restore that skipped objects, check the OPTION value, end the jobs that use the objects, and use ALWOBJDIF only when a security officer agrees that the differences are expected.
- For the BRMS empty output queue case, no fix is needed. Note it in your backup checklist so operators don't chase it.
What it looks like
No objects saved or restored for library ACCTLIB.
IBM documentation
IBM Display Message Descriptions (DSPMSGD). Use the documentation for your installed release.
This link opens the relevant IBM reference library or lookup instructions. Match the complete code and your installed product release; it is not a code-specific review.
Read the installed message description:
DSPMSGD MSGID(CPF3770) MSGF(QSYS/QCPFMSG)
Also inspect the full job log and second-level message text, including substitution values.
Related codes
Questions
Is CPF3770 always a backup failure?
No. It only means nothing was saved or restored for that library. An empty output queue in a BRMS spooled file list logs it too, and that case is harmless. Read the diagnostic messages before it to decide.
What is the difference between CPF3770 and CPF3771?
CPF3770 means nothing at all was saved for the library. CPF3771 is a partial save, where some objects were saved and some were not, and its text gives both counts.
Why did my BRMS backup start logging CPF3770 after an upgrade?
From V5R4 the system can save spooled files itself, and BRMS logs CPF3770 for each empty output queue in a spooled file list. At V5R3 an empty queue produced no message.