Troubleshooting
Problem
This document describes how to use the SAVLIB command to only backup libraries in user ASPs (non-system ASP) on an IBM i system. This document provides a method to only save libraries that are created in an ASP other than ASP 1 (ASPs between 2 and 32).
Resolving The Problem
|
Caution: This document contains code made available by IBM Corporation on an as is basis. Anyone receiving this document is considered to be licensed under IBM copyrights to use the IBM-provided source code in any way deemed fit, including copying it, compiling it, modifying it, and redistributing it, with or without modifications. No license under any IBM patents or patent applications is to be implied from this copyright license. |
To run an automated backup of libraries in user ASPs, use a technique similar to the following CL program.
To create this program, type the source code using PDM into QGPL/QCLSRC source file. Then, run the following commands from an operating system command line:
DSPOBJD OBJ(QSYS/QGPL) OBJTYPE(*LIB) OUTPUT(*OUTFILE) OUTFILE(QTEMP/$$LL$$)
CRTCLPGM PGM(QGPL/SAVEUSRASP) SRCFILE(QGPL/QCLSRC) SRCMBR(SAVEUSRASP)
BEGIN: PGM PARM(&DEV)
DCLF FILE(QTEMP/$$LL$$)
DCL VAR(&DEV) TYPE(*CHAR) LEN(10)
DCL VAR(&QDATE) TYPE(*CHAR) LEN(6)
DCL VAR(&KEYVAR) TYPE(*CHAR) LEN(4)
DCL VAR(&MSGDTA) TYPE(*CHAR)
DCL VAR(&MSGID) TYPE(*CHAR) LEN(7)
DCL VAR(&VOL) TYPE(*CHAR) LEN(6)
DCL VAR(&DAYOFWEEK) TYPE(*CHAR) LEN(4)
DCL VAR(&TYPE) TYPE(*CHAR) LEN(1)
/* Monitor error conditions */
MONMSG MSGID(CPC0000 CPD0000 CPF0000 MCH0000) +
EXEC(GOTO CMDLBL(ERROR))
/* Retrieve Job Type (0=Batch / 1=Interactive) */
RTVJOBA TYPE(&TYPE)
/* Generate a physical file containing object description for *LIB objects */
DSPOBJD OBJ(QSYS/*ALL) OBJTYPE(*LIB) +
OUTPUT(*OUTFILE) OUTFILE(QTEMP/$$LL$$)
/* Retrieve system date and day of week */
RTVSYSVAL SYSVAL(QDATE) RTNVAR(&QDATE)
RTVSYSVAL SYSVAL(QDAYOFWEEK) RTNVAR(&DAYOFWEEK)
/* Check if Tape was initialized; if not, initialize */
CHKTAP DEV(&DEV)
MONMSG MSGID(CPC0000 CPD0000 CPF0000 MCH0000)
RCVMSG MSGTYPE(*LAST) RMV(*NO) KEYVAR(&KEYVAR) +
MSGDTA(&MSGDTA) MSGID(&MSGID)
IF COND(&MSGID = 'CPF4168') THEN(DO)
OVRPRTF FILE(QPJOBLOG) OUTQ(QGPL/QDKT) HOLD(*YES) +
USRDTA(SAVEUSRASP) SPLFNAME(BACKUPLOG)
DSPJOBLOG OUTPUT(*PRINT)
SNDPGMMSG MSG('An error took place. Verify joblog +
(spool file BACKUPLOG).') TOUSR(*SYSOPR)
IF COND(&TYPE = '1') THEN(SNDPGMMSG +
MSGID(CPF9898) MSGF(QCPFMSG) MSGDTA('An +
error took place. Verify joblog (spool +
file BACKUPLOG)') MSGTYPE(*ESCAPE))
GOTO CMDLBL(END)
ENDDO
IF COND(&MSGID = 'CPC6778') THEN(DO)
CHGVAR VAR(&VOL) VALUE(%SST(&MSGDTA 11 6))
IF COND(&VOL = '*N ') THEN(DO)
IF COND(&DAYOFWEEK = '*MON') THEN(INZTAP +
DEV(&DEV) NEWVOL(WEEKLY) NEWOWNID(IBM) +
CHECK(*NO) DENSITY(*CTGTYPE))
ELSE CMD(INZTAP DEV(&DEV) NEWVOL(DAILY) +
NEWOWNID(IBM) CHECK(*NO) DENSITY(*CTGTYPE))
ENDDO
ELSE CMD(INZTAP DEV(&DEV) NEWVOL(&VOL) +
NEWOWNID(IBM) CHECK(*NO) DENSITY(*CTGTYPE))
ENDDO
IF COND(&MSGID = 'CPF6772' | &MSGID = +
'CPF4290') THEN(DO)
IF COND(&DAYOFWEEK = '*MON') THEN(INZTAP +
DEV(&DEV) NEWVOL(WEEKLY) NEWOWNID(IBM) +
CHECK(*NO) DENSITY(*CTGTYPE))
ELSE CMD(INZTAP DEV(&DEV) NEWVOL(DAILY) +
NEWOWNID(IBM) CHECK(*NO) DENSITY(*CTGTYPE))
ENDDO
IF COND(&MSGID = 'CPF6760') THEN(DO)
OVRPRTF FILE(QPJOBLOG) OUTQ(QGPL/QDKT) HOLD(*YES) +
USRDTA(SAVEUSRASP) SPLFNAME(BACKUPLOG)
DSPJOBLOG OUTPUT(*PRINT)
SNDPGMMSG MSG('An error took place. Verify joblog +
(spool file BACKUPLOG).') TOUSR(*SYSOPR)
IF COND(&TYPE = '1') THEN(SNDPGMMSG +
MSGID(CPF9898) MSGF(QCPFMSG) MSGDTA('An +
error took place. Verify joblog (spool +
file BACKUPLOG)') MSGTYPE(*ESCAPE))
GOTO CMDLBL(END)
ENDDO
IF COND(&MSGID = 'CPF6718') THEN(DO)
VRYCFG CFGOBJ(&DEV) CFGTYPE(*DEV) STATUS(*OFF) +
FRCVRYOFF(*YES)
MONMSG MSGID(CPF2640) EXEC(GOTO CMDLBL(ERROR))
DLYJOB DLY(30)
VRYCFG CFGOBJ(&DEV) CFGTYPE(*DEV) STATUS(*ON)
MONMSG MSGID(CPF2640) EXEC(GOTO CMDLBL(ERROR))
DLYJOB DLY(30)
CHGVAR VAR(&VOL) VALUE(%SST(&MSGDTA 11 6))
INZTAP DEV(&DEV) NEWVOL(&VOL) NEWOWNID(IBM) +
CHECK(*NO) DENSITY(*CTGTYPE)
ENDDO
/* Save only non-system ASP libraries */
READLL: RCVF
MONMSG MSGID(CPF0864) EXEC(DO)
DLTF FILE(QTEMP/$$LL$$)
MONMSG MSGID(CPF2105)
GOTO CMDLBL(REWIND)
ENDDO
IF COND(&ODASP = 2) THEN(DO)
OVRPRTF FILE(QPSAVOBJ) OUTQ(QGPL/QDKT) HOLD(*YES) +
USRDTA(&QDATE) SPLFNAME(&ODOBNM)
SAVLIB LIB(&ODOBNM) DEV(&DEV) ENDOPT(*LEAVE) +
USEOPTBLK(*YES) DTACPR(*DEV) OUTPUT(*PRINT)
MONMSG MSGID(CPF32B3 CPF3741 CPF3751 CPF3770 +
CPF3781 CPF4168)
GOTO CMDLBL(READLL)
ENDDO
GOTO CMDLBL(READLL)
ERROR: OVRPRTF FILE(QPJOBLOG) OUTQ(QGPL/QDKT) HOLD(*YES) +
USRDTA(SAVEUSRASP) SPLFNAME(BACKUPLOG)
DLTF FILE(QTEMP/$$LL$$)
MONMSG MSGID(CPF2105)
DSPJOBLOG OUTPUT(*PRINT)
SNDPGMMSG MSG('An error took place. Verify joblog +
(spool file BACKUPLOG).') TOUSR(*SYSOPR)
IF COND(&TYPE = '1') THEN(SNDPGMMSG +
MSGID(CPF9898) MSGF(QCPFMSG) MSGDTA('An +
error took place. Verify joblog (spool +
file BACKUPLOG)') MSGTYPE(*ESCAPE))
REWIND: CHKTAP DEV(&DEV) ENDOPT(*REWIND)
MONMSG MSGID(CPC0000 CPD0000 CPF0000 MCH0000)
END: ENDPGM
[{"Type":"MASTER","Line of Business":{"code":"LOB68","label":"Power HW"},"Business Unit":{"code":"BU070","label":"IBM Infrastructure"},"Product":{"code":"SWG60","label":"IBM i"},"ARM Category":[{"code":"a8m0z0000000C4BAAU","label":"IBM i"},{"code":"a8m0z000000cwp6AAA","label":"Save Restore"}],"ARM Case Number":"","Platform":[{"code":"PF012","label":"IBM i"}],"Version":"All Versions"}]
Historical Number
381389311
Was this topic helpful?
Document Information
Modified date:
29 March 2025
UID
nas8N1015493