The Save Active tool provides a simple method of achieving a safe
save-while-active backup. The system must be shutdown (to the
restricted state) during the running of the SAVALLACT or SAVCHGACT
commands. The actual downtime should be considerably less than for a
normal save command because of the system save-while-active function.
The system save-while-active support does not allow the use of saving
DLOs or the SAV command for IFS objects in conjunction with normal
SAVLIB support of libraries. SAVACT only supports normal SAVLIB
functions.
Why is the Restricted State Necessary
-------------------------------------
The system provides a true save-while-active function, but most users
do not find it to be a practical solution.
If a save-while-active is started while applications are busy
updating data, it is very unlikely that the save will be at a
synchronized point. Consequently, a restore from the save media may
cause transactions to be half completed. If a restore is needed,
most installations want a version that is consistent across different
files of the same application.
The system provides a solution for this by allowing save-while-active
to begin at a commitment control boundary. However, most users do
not have all their applications coded for commitment control. In
addition, the save will not begin unless all users of an application
are at a commit boundary. In the case of several users processing
transactions, there can be situations where they would never all
reach a commit boundary at the same time.
Many installations are not aware of all the jobs that could be
running when a save-while-active is needed and consequently would not
be aware of either the save or restore implications. Batch jobs that
are in process of updating can be a nightmare to recover from if the
save-while-active starts in the middle of the job.
For these reasons, users often find that the only practical solutions
involve either:
** A High Availability solution or
** A solution that requires shutdown to the restricted state.
Concept of the System Save-While-Active Function
------------------------------------------------
The system allows up to 300 libraries to be specified on a SAVLIB or
SAVCHGOBJ for a save-while-active function. This means that the
system locks all of the objects in the list of libraries and flags
them for save-while-active. When the flagging is completed, a
checkpoint is reached and the locks are released.
A physical save of the objects then occurs based on the status of the
objects at the time of the checkpoint. If no updates occur during
the flagging process, a common synchronized point for all objects
exists. The save will give the appearance that all objects were
saved at the same instant.
After the checkpoint is reached, updates can occur to the objects
even though the physical save is not completed. The system performs
a 'shadowing' technique of the pages that are changed so the
checkpointed version of the pages can be saved to the media.
Ending functions prior to the SAVACT function
---------------------------------------------
If you are using Clustering, you must end cluster mode (ENDCLUNOD)
prior to using a SAVACT command.
A SAVACT command will end all subsystems. You may want certain batch
jobs to finish before ending the subsystems.
You may choose to end other functions or subsystems prior to using a
SAVACT command. The SAVACT function will note any subsystems that
are active when the SAVACT function is run and ensure the subsystems
are restarted when the save-while-active function is complete.
Concept of the Save Active Tool
-------------------------------
To provide a simple and safe backup at a known point, the restricted
state is used to perform a save-while-active of critical libraries.
This provides the same synchronization point for all libraries to be
saved-while-active.
Two save commands are provided (SAVALLACT and SAVCHGACT). Both
commands perform similar functions to need to shutdown the system,
perform the save-while-active function, and re-start the system.
** SAVALLACT uses SAVLIB to save the save-while-active libraries.
** SAVCHGACT uses SAVCHGOBJ to save the save-while-active
libraries.
Both the SAVLIB and SAVCHGOBJ command are specified as
SAVACT(*SYNCLIB).
When the Save Active function begins, it optionally performs
SAVSECDTA and SAVCFG. It then sends messages to any interactive
users who are signed on (see later discussion) first warning them of
shutdown, then giving a final message, and then ending their job (if
they are still active). Any batch jobs that are running are ended
abnormally.
When the first warning message is sent, all subsystems are ended in a
controlled manner with the command ENDSBS OPTION(*CNTRLD). This
prevents new work from starting. If a user signs off, the signon
prompt will not appear until the checkpoint has been reached and
subsystems are restarted.
After the second message is sent, all subsystems are ended with
ENDSBS OPTION(*IMMED) to allow the system to reach the restricted
state.
When the restricted state is reached, the save-while-active function
is started for a list of specified libraries. When the checkpoint is
reached, the controlling subsystem is started.
Starting the controlling subsystem causes the program specified for
the QSTRUPPGM system value to be run. Prior to ending all
subsystems, the subsystems which were active are saved. After the
controlling subsystem is started, each of the saved subsystems is
checked to determine if the subsystem is active. If not, the
subsystem is started.
TCP/IP is also started (see section 'Starting TCP'). Users may then
signon and begin updating any objects in the save-while-active
libraries.
The Save Active function is intended to be run at off-peak hours when
few users are on the system. The actual amount of time that the
system is unavailable to users is primarily based on the number of
internal objects (see section on 'Internal Objects') in the
save-while-active libraries. Note that it is not the size of the
objects, but the number of internal objects to be saved that is the
determining factor.
The functions of SAVALLACT and SAVCHGACT differ:
** SAVALLACT Performs a SAVLIB using the list of
save-while-active libraries for the LIB parameter. It then
performs the following based on the TYPE parameter:
-- *FULLSAVE. This provides a SAVLIB LIB(*ALLUSR)
function with the save-while-active libraries specified
for the OMITLIB parameter.
-- *SAVCHGOBJ. This provides a SAVCHGOBJ function with
LIB(*ALLUSR) and the save-while-active libraries
specified for the OMITLIB parameter. Note that the
save-while-active libraries are fully saved by the
SAVLIB command.
The use of SAVCHGOBJ makes for a faster backup and may
also allow an unattended operation (by keeping the
backup on a single volume). However, any SAVCHGOBJ
approach makes requires an understanding of the restore
process. See the later section on 'Restoring'.
-- *NONE. This means that no other save will be
performed. The purpose of this option is to allow you
to have your own SAVxxx 'regular save' commands occur
after the SAVALLACT command has completed the physical
save of the save-while-active libraries. For example,
you can run your own SAVLIB, SAV, and SAVDLO commands.
** SAVCHGOBJ Performs a SAVCHGOBJ using the list of
save-while-active libraries for the LIB parameter. It then
performs the following based on the TYPE parameter:
-- *SAVCHGOBJ. This provides a SAVCHGOBJ function with
LIB(*ALLUSR) and the save-while-active libraries
specified for the OMITLIB parameter.
The use of SAVCHGOBJ makes for a faster backup and may
also allow an unattended operation (by keeping the
backup on a single volume). However, any SAVCHGOBJ
approach makes requires an understanding of the restore
process. See the later section on 'Restoring'.
-- *NONE. This means that no other save will be
performed.
The following summarizes the SAVALLACT and SAVCHGACT functions:
Save-while-active Regular save
libraries libraries
----------------- ------------
SAVALLACT SAVLIB SAVLIB
or SAVCHGOBJ
or None
SAVCHGACT SAVCHGOBJ SAVCHGOBJ
or None
If you save other libraries with some 'regular save' function, the
rules relative to updating objects during a save are the same as any
normal save. You will want to ensure that any updates are only done
in the save-while-active libraries until the 'regular save' is
completed. See the later discussion of 'Save-While-Active
Libraries'.
The SAVACT function uses the following time-line (SWA =
Save-while-active):
<------------------ Save Active Time-Line ------------------------->
<------- Downtime -------->
. .
Optional . . Optional
**********************************************************************
* * * * * *
SAVSEC * Warning * Shut * SWA objects * STRSBS * SWA objs * Regular
SAVCFG * msgs * Down * Flagged * * saved * save
* * * * * *
**********************************************************************
. .
. .
Begin SWA SWA Checkpoint
Note that at the time of the first warning message, the active
subsystems are determined and ENDSBS is used for all subsystems
specifying OPTION(*CNTRLD). This prevents new work from starting.
If the user signs off, the signon prompt will not appear until the
subsystems are restarted.
After the 2nd warning message is sent, shutdown occurs by using
ENDSBS OPTION(*IMMED). When the restricted state is reached, the
save-while-active function begins.
In order to listen for the 'checkpoint complete' message, a different
job must be used. Since the system is in the restricted state, a
special subsystem (TAASBS) is started. Because TAASBS is started,
the system system automatically starts the QSYSWRK subsystem. To
prevent the startup of QSYSWRK, the SAVACT function does ENDSBS
QSYSWRK OPTION(*IMMED). QUSRWRK is also ended although it is
probably not active.
The SAVACTMSG job (program TAASAVUC31) is submitted to the TAASBS
subsystem. The program does a RCVMSG on the message queue that was
specified on the SAVACTMSGQ parameter of SAVLIB or SAVCHGOBJ. The
system sends the CPI3712 message when the save-while-active
checkpoint has been reached.
When the message is received, the controlling subsystem is started.
This causes the QSTRUPPGM system value program to be run which
normally starts other subsystems.
The system supplied startup program starts several subsystems
including QSYSWRK which controls TCP. In some cases, allocations
will prevent QSYSWRK from starting (this is probably caused by the
need to end QSYSWRK after TAASBS is started).
The SAVACTMSG job uses a time delay after starting the controlling
subsystem to allow the function to complete. The job then checks the
subsystems that were active prior to entering the restricted state
and starts any which are not active. If QSYSWRK was not started by
the startup program, another attempt is made to start it. If TCP/IP
is not active and is requested to be started by the SAVACT
Application Value (default is *YES), the STRTCP command is used.
If you notice a few minute time difference between the signon screens
appearing at workstations attached directly to the system versus
those attached via TCP, it is probably because of the built in delay
times and the second attempt to start QSYSWRK.
Just before the SAVACTMSG program ends, it uses ENDSBS SBS(TAASBS)
OPTION(*CNTRLD) DELAY(30). This causes the special TAASBS subsystem
to end.
If a save-while-active failure occurs, CPI3711 is sent to the
SAVACTMSG job. The job completes the remainder of its work (e.g.
starting the controlling subsystem and TCP) and sends a special
message to the interactive job. The interactive job may continue
normally, but will end with an escape message.
When the physical save of the save-while-active libraries completes,
the program in the controlling subsystem then performs the regular
save (if any).
If you are testing with very few libraries to be saved, you may see
the TAASBS subsystem active even though the SAVxxxACT command is
complete. This is due either to the time delay after starting the
controlling subsystem or the startup of QSYSWRK and TCP/IP. The job
and subsystem should end in a few minutes after the CPI3712 (or
CPI3711) message is received.
Running Unattended and/or in a Delayed Manner
---------------------------------------------
It is possible to run the Save Active function in an unattended
manner (this assumes no media changes).
If you are going to run without an operator present, you will want to
be sure that QSYSOPR is set to DELIVERY(*NOTIFY) before using a
SAVxxxACT command. There are two choices for unattended operations.
** Enter the SAVALLACT or SAVCHGACT command at the console just
before the operator goes home.
** Enter the TAA DLYCMD command and specify the SAVALLACT or
SAVCHGACT command to be run at a specific time or when batch
work has been completed. This allows entry of the SAVALLACT
or SAVCHGACT command at the console just prior to the operator
going home, but delays the execution.
The DLYCMD function protects the console (prevents another
user from operating as the operator) and allows a signoff when
the function is complete.
CL Program Use of SAVxxxACT
---------------------------
Because several parameters exist on the SAVxxxACT commands and users
may want their own commands to run before and after SAVxxxACT
function, the best use of the function is normally to place the
SAVxxxACT command in a CL program. Have the operator call the
program (or use a user command).
The program can be called from a command line or entered into the
DLYCMD CMD parameter.
If you intend to run unattended, you will want to ensure that QSYSOPR
is set to DELIVERY(*NOTIFY) before running a SAVxxxACT command.
Getting Started
---------------
** You begin by entering the CRTSAVACT command as:
CRTSAVACT
This creates the TAASAVACTP file in QGPL which is used to
store the names of the libraries that will be
saved-while-active.
** Enter the EDTSAVACT command to define the libraries to be
saved-while-active.
EDTSAVACT
The command accesses all user libraries on the system and
places them in a subfile. Certain system libraries appear
already specified for save-while-active (see the section on
'Definition of All User Libraries').
A simple option allows you to specify a library for
save-while-active. If a previous use of EDTSAVACT had
specified a library for save-while-active, it remains
specified.
See the later sections on 'Testing' and 'Save-While-Active
Libraries'
** SAVALLACT and SAVCHGACT may only be entered at the system
console (QCONSOLE system value). The user of the command must
have both *SAVSYS and *JOBCTL special authorities. For
example, enter the SAVALLACT command as:
SAVALLACT DEV(TAPxx)
Various status messages are presented as the command goes thru
the steps of sending messages to interactive users, shutting
down the system, performing save-while-active, starting up the
system, and performing the regular save.
SAVACT Command Summary
----------------------
CRTSAVACT Creates the file used to list the save-while-active
libraries.
EDTSAVACT Edits the list of libraries for save-while-active.
SAVALLACT Uses SAVLIB save-while-active.
SAVCHGACT Uses SAVCHGOBJ save-while-active.
RTVSAVACT Retrieves the list of libraries specified for
save-while-active.
CHKSAVACT Checks libraries to assist in deciding what should
be a save-while-active library.
Your Responsibilities
---------------------
** Decide what libraries are 'critical' and specify them for
save-while-active using EDTSAVACT. Generally, these will be
the libraries that contain data for the applications that you
want to be available as much as possible.
You will want to minimize the number of objects that exist in
the critical libraries. See the section on 'Minimizing the
Time that the System is Unavailable'. Use the CHKSAVACT
command to help you evaluate this.
** Decide whether you will use SAVALLACT or SAVCHGACT and what
TYPE option you will use for the 'regular save' if any. You
may need to use a CL program with your own commands such as
setting QSYSOPR DELIVERY(*NOTIFY) before and after the
SAVxxxACT command. You may need to use some of the Exit
points provided to tailor your operation. See the section on
'Exit Points for User Programs'.
** Ensure the programmers are off the system until the entire
save is complete. This is no different than any save strategy
that will save the programmer libraries. However, if you are
currently saving the libraries from the restricted state, you
will need to ensure that the programmers do not sign on until
the entire save is complete.
** Control batch processing so that typical batch jobs are not
'in process' when the save-while-active occurs. This is no
different than any save strategy that has to perform backup.
When ENDSBS OPTION(*CNTRLD) is run, this sets a switch that
can be tested in user applications. For example, the
controlled cancel can be tested for by the RPG 'Shutdown'
operation code or the CL RTVJOBA ENDSTS function.
** Ensure you understand what may be updated during the critical
save period. This is not as easy as it may appear. See the
section on 'Objects in Regular Save Libraries'.
Minimizing the Time that the is System is Unavailable
-----------------------------------------------------
It is not generally necessary to make your save-while-active as
efficient as theoretically possible. The performance of the
save-while-active checkpoint is very good and you should not concern
yourself with having a few extra objects saved-while-active if it is
awkward to move them to a 'regular save' library.
The SAVxxxACT messages (or the CHKSAVRST output) will provide you
with the information on how long it takes the system to perform the
checkpoint. You can get a good idea of what the impact of a few
extra objects is.
The performance of the save-while-active function is determined by
the number of internal objects (not the size of the objects) in the
save-while-active libraries. There is a system limit relative to the
number of internal objects that can be saved by one save-while-active
request. In V454, the limit is about 65,000, but can be larger
depending on your data base and journal structure.
What you should concern yourself with is large numbers of internal
objects that do not need to be saved-while-active.
Since the Save Active function should be performed at off-peak hours
when programmers are not active, you would normally want to exclude
from critical libraries such things as:
** Programs, display files, commands, and other 'read only'
objects.
** Source files (each member is considered an object for the
save-while-active function).
** Data base files that are only updated outside of the
save-while-active function (such as history type of data,
programming control data, etc).
To minimize the window of downtime, you will want to have data
libraries that include:
** Data base files (both physical and logical). For the best
recovery method, you should keep data base networks in the
same library (do not have a logical in a separate library from
the based on physical).
** Data Areas, Data Queues, User Spaces, and any other objects
that may be updated during the running of the Save Active
function.
To assist you in determining whether your library is optimized for
save-while-active, use the CHKSAVACT command.
CHKSAVACT Command
-----------------
The Check Save Active command is designed to:
** Assist you in determining that your libraries are optimized
for save-while-active.
** Assist you in periodically reviewing your save-while-active
strategy to see if it is still optimal.
The user of CHKSAVACT must have *ALLOBJ special authority.
The CHKSAVACT command can be run against a single library, generic
libraries, the libraries you have specified for save-while-active, or
all user libraries. It will provide a listing by library of:
- Number of objects
- Size of objects
- Estimated internal object count (see later discussion)
- Number of source files
- Number of 'read only' objects
- Number of objects not changed in last N days
The CHKALLDBD (Check All Data Base Dependencies) TAA command is also
run by default for *ALLUSR libraries to ensure that data base
networks (physical and dependent logicals) exist in the same library.
The best recovery strategy keeps data base networks within the same
library.
A typical use of the command is to run with all defaults:
CHKSAVACT
This produces a summary by library that is specified for
save-while-active and a 15 day time period for changes.
After the summary output is created, you may want to review the
details for a specific library. Specify:
CHKSAVACT LIB(xxx) TYPE(*DETAIL) CHKALLDBD(*NO)
This provides one line for each object in the library which is
flagged if it does not appear to be a good candidate for
save-while-active.
For libraries such as QUSRSYS, you will probably not be able to
optimize for save-while-active. However, for user libraries and
QGPL, you may be able cleanup or move some objects to other libraries
to optimize the save-while-active performance.
Objects in Regular Save Libraries
---------------------------------
The intent of running a SAVxxxACT command is that the critical
objects are saved-while-active and the majority of objects will be
saved by a 'regular save'. As on any 'regular save', the objects
will be locked during the save.
This means:
** If the objects are open for update, the save operation cannot
achieve the lock and the save will be incomplete.
** If the save operation achieves the lock and an application
attempts to update the object before the save is complete, the
update cannot be done and the application will probably abort.
** If the save has started (but not achieved the lock) when the
application updates and releases the lock on the object, the
'regular save' will not be synchronized with the save from the
critical libraries. This could cause recovery problems.
After you have selected your critical libraries and moved objects to
appropriate libraries, you should review the 'regular save' libraries
which are part of the applications you want to make available during
Save Active. What you want to ensure is that these libraries do not
contain objects that are being updated by the applications you want
to run during the Save Active process.
A good solution for this is the TAA command PRTLSTCHG:
PRTLSTCHG LIB(xxx) SEQUENCE(*YES)
This will list the objects in the library by change date. The
objects at the end of the listing are those that have been changed
most recently.
If your current strategy is do a save from the restricted state, you
may have to consider which users will be allowed to signon once the
controlling subsystem is started. For example, you may find
programmers working odd hours.
The SAVxxxACT process will restart any subsystems that were active
when the command began. You may need to control certain devices by
subsystem so a CL program could:
- End certain subsystems
- Run SAVALLACT or SAVCHGACT
- Restart certain subsystems
Definition of All User Libraries
--------------------------------
The SAVLIB LIB parameter help text describes the libraries that are
considered for the function *ALLUSR. These include all non-Q
libraries except for certain # libraries (such as #SEULIB). Also
included are libraries like QGPL and QUSRSYS.
See the help text of SAVLIB LIB parameter for a full definition or
DSPLIB LIB(*ALLUSR).
If you have user libraries that begin with the letter Q, they are not
saved by SAVLIB *ALLUSR. These libraries cannot be specified for a
save-while-active function using SAVALLACT or SAVCHGACT. You could
do a full save of these libraries using the Exit 1 program function
when the system reaches the restricted state. See the section on
'Exit Points for User Programs'.
Because the TAA Tool library contains the message queues that are
being read for the 'checkpoint message' the TAATOOL library is
rejected if requested for 'save-while-active'.
CHKSAVRST and PRTSAVLBL TAA Commands
------------------------------------
CHKSAVRST is always run when either SAVALLACT or SAVCHGACT completes.
This provide a summary of the Save messages that have occurred as
well as other messages stating when the checkpoint was reached.
ERRORSONLY(*YES) is specified.
The PRTSAVLBL TAA command is optional (based on a SAVxxxACT command
parameter) to print labels for the media used.
Testing
-------
You can easily try the Save Active function by using some test
libraries and running SAVALLACT or SAVCHGACT. Entering one of the
commands will cause the system to be shutdown to the restricted state
so you will want to schedule the test.
The important parameter to specify is STRLIB which will minimize the
number of libraries saved.
The simplest solution is to have some test libraries to be saved that
will appear at the end of the alphabet such as ZZZxxx
Create at least a data area in each library. Then do the following:
** Enter:
EDTSAVACT
and name at least one of your critical libraries.
** Have a workstation signed onto so you can see the messages as
they will be sent:
** Enter the SAVALLACT (or SAVCHGACT) command at the console by a
user that has both *SAVSYS and *JOBCTL special authority as:
SAVALLACT DEV(xxx) STRLIB(ZZZxxx)
You will see the steps the command goes through in the form of
status messages. Because you specified STRLIB, the regular
save will begin with library ZZZxxx.
When the command completes, the job log will contain messages
describing what you saw as status messages. The CHKSAVRST command
output will also contain some of the critical messages.
If you only save a minimal amount of data for the regular save (or
use TYPE=*NONE), you will see the TAASBS as active when SAVxxxACT
completes until TCP/IP has finished starting.
Restoring from Save Active media
--------------------------------
Because the media you saved to may contain many files, you must know
what files exist. Do the following:
** Mount the first (or only) tape saved.
** Do DSPSAVTAP OUTPUT(*PRINT)
Review the tape to see what files exist. It is important to
know the file sequence numbers for the following files:
QFILEUPR if it exists
QFILEIOC if it exists
The first save-while-active library (the listing describes
whether the library was saved-while-active)
QFILE if it exists (it will be the first file after
the last save-while-active library)
** If file QFILEUPR exists on the tape, SAVSECDTA was used. To
restore, you need to be in the restricted state and use
RSTUSRPRF followed by RSTAUT.
** If file QFILEIOC exists, SAVCFG was used. To restore, you
need to be in the restricted state and use RSTCFG.
** The save-while-active libraries, can be restored with the TAA
command RSTALLLIB or RSTALLCHG. An alternative is to restore
the save-while-active libraries with individual RSTLIB or
RSTOBJ commands).
The RSTALLLIB and RSTALLCHG commands support the SEQNBR and
ENDSEQNBR parameters. You can use these parameters to restore
just the save-while-active libraries.
** The remaining libraries were saved by SAVLIB or SAVCHGOBJ and
can be restored with the RSTLIB command using SAVLIB(*ALLUSR).
or the RSTOBJ command. You must specify the SEQNBR parameter
of the QFILE file (this contains the list of libraries to be
restored).
An alternative is to restore the remaining libraries with
RSTALLLIB or RSTALLCHG and specify the starting SEQNBR of the
first file after QFILE. The TAA command RSTMNYLIB could also
be used.
Security Considerations
-----------------------
** CRTSAVACT creates the TAASAVACTP file with PUBLIC *USE
authority.
** EDTSAVACT requires the user to be properly authorized to
TAASAVACTP. A user must have *OBJOPR, *OBJMGT, *READ, *ADD,
*UPD, and *DLT. During the running of EDTSAVACT, a sub
program is used that adopts *ALLOBJ authority to access all
the libraries.
** SAVALLACT and SAVCHGACT require *JOBCTL and *SAVSYS special
authority. *JOBCTL may be adopted, *SAVSYS may not.
During the running of SAVALLACT or SAVCHGACT, the Application
Values for SAVACT in TAASECURE are accessed in a program that
adopts authority of QSECOFR.
Internal Objects
----------------
Many object types on the system have a one-to-one correlation between
the number of external objects and the number of internal objects.
For example, *CMD, *JOBD, *DTAARA type external object types are all
single internal objects.
The system sometimes uses multiple internal objects to create a
single external object. While there are some complex objects like
Subsystems (*SBSD), the major consideration (from a performance
viewpoint) is with data base files.
When a data base file is created, the following internal objects are
required:
** One for the file definition.
** One for the format unless it is shared.
** One for each member (physical or logical).
** One for each keyed access path over a member.
Source files and multi-member data files can have a large number of
internal objects.
For a more complete description, see the CVTLIBCNT tool. The
CHKSAVACT command provides an estimate of the the internal object
count by library.
There is a system limit relative to the number of internal objects
that can be saved by one save-while-active request. In V5R1, the
limit is about 65,000, but can be larger depending on your journal
structure.
Starting TCP
------------
When the subsystems are started, the QSTRUPPGM program runs. This
may run the STRTCP command depending on your system version and
whether you have modified the standard startup program.
Because the system is not actually in the restricted state when the
controlling subsystem is started, the DSPIPLA attribute of Start
TCP/IP (added in V5R1), is ignored.
After the subsystems are started, the SAVxxxACT function runs the
STRTCP command (by default) and monitors for CPF0000 to handle the
case where it is already started. The startup occurs in the special
program submitted to the TAASBS subsystem.
No error occurs if TCP has already been started. The running of
STRTCP is under control of the SAVACT Application Value which
defaults to *YES. See the section on 'Changing defaults'.
Handling of the QSYSOPR Message Queue
-------------------------------------
Because many users of the SAVACT function will want to run in an
unattended manner, the QSYSOPR message queue must be prevented from
'breaking' with messages that would stop the processing of SAVACT.
If you want to run unattended, use CHGMSGQ MSGQ(QSYSOPR)
DELIVERY(*NOTIFY) before using SAVxxxACT.
Exit Points for User Programs
-----------------------------
Two exit points for user programs are provided to allow you to tailor
a solution for your needs.
** Exit 1 occurs when the restricted state is first reached. You
may run other commands at this point before the
save-while-active function occurs.
************************************************
* *
* Do not start any other jobs or subsystems *
* during the Exit program as this will *
* cause unpredictable results of the *
* save-while-active function. *
* *
************************************************
If you requested SAVSECDTA or SAVCFG, these functions have
already been performed.
A possible use for the exit would be if you have a user
library beginning with the letter Q that should be saved. You
cannot save it using SAVxxxACT (either by save-while-active or
by a regular save). You could do a SAVLIB of such a library
using an Exit 1 program.
** Exit 2 occurs after the save-while-active checkpoint has been
reached and subsystems have been started. This occurs before
the regular save (if any) has started. The physical save of
the save-while-active libraries is in process at this point.
A possible use of the exit would be to ensure other user jobs
are running that are not included in the QSTRUPPGM program.
If you specify a SAVxxx command, it will run after the
save-while-active libraries are fully saved.
The default for each exit point is *NONE meaning no exit program is
used.
Either or both exit points may be specified using the SAVACT
Application Value in TAASECURE. An *ALLOBJ special authority user
may change the values by entering the command:
EDTAPPVAL APPVAL(TAASECURE/SAVACT)
If either program is named, you must name a library associated with
the program.
Changing Defaults
-----------------
The SAVACT Application Value exists in TAASECURE to allow you to
change certain defaults used internally during the running of
SAVxxxACT.
An *ALLOBJ special authority user may change the values by entering
the command:
EDTAPPVAL APPVAL(TAASECURE/SAVACT)
The following values exist that may be changed:
** Number of seconds to wait after the first warning message.
The shipped default is 300 (5 minutes) to allow signoff).
** Number of seconds to wait after the second warning message and
before ending interactive jobs. The shipped default is 90
seconds.
** The message file and library containing the two messages sent
to interactive users. The shipped default is TAAMSGF in
TAATOOL. To change the messages:
-- Change the Application Value to a message file in your
library:
-- Use the TAA command DUPMSGD:
DUPMSGD MSGID(TAA2001) FROMMSGF(TAATOOL/TAAMSGF)
TOMSGF(xxx)
DUPMSGD MSGID(TAA2002) FROMMSGF(TAATOOL/TAAMSGF)
TOMSGF(xxx)
-- Use WRKMSGD to your message file and Option 2 to change
the text of TAA2001 and TAA2002.
While the messages appear as normal messages in a
message file, they are used on SNDBRKMSG which only
supports an 'impromptu' form of message (a string of
text). The first and second level text are combined in
the program and the string of text is sent using
SNDBRKMSG.
** Program Exit 1 and Exit 2 (described previously). The default
for all 4 values is *NONE.
** Start TCP. The default is *YES. No error occurs if TCP is
already started.
SAVALLACT escape messages you can monitor for
---------------------------------------------
None. Escape messages from based on functions will be re-sent.
SAVCHGACT escape messages you can monitor for
---------------------------------------------
None. Escape messages from based on functions will be re-sent.
CRTSAVACT Command Parameters *CMD
----------------------------
None.
EDTSAVACT Command Parameters *CMD
----------------------------
None.
SAVALLACT Command Parameters *CMD
----------------------------
DEV Up to 4 devices may be entered. See the SAVLIB
command for a complete discussion of the parameter.
The special value *MEDDFN may be entered if using a
media definition. If you use *MEDDFN, you cannot
use SAVSECDTA or SAVCFG. If you save both
save-while-active and regular save libraries, you
could have a volume switch during the
save-while-active save that could cause an error
when the regular save begins. Because multiple tape
drives are used for both the save-while-active and
the regular save, your restore strategy needs to be
tested.
TYPE The type of regular save to be performed (if any).
*FULLSAVE is the default meaning that SAVLIB will be
used to fully save all user libraries (the
save-while-active libraries are omitted). The
definition of a user library is the same as that
performed by SAVLIB LIB(*ALLUSR).
*SAVCHGOBJ may be entered to cause a
save-changed-object function of all user libraries
(the save-while-active libraries are omitted). The
definition of a user library is the same as that
performed by SAVCHGOBJ LIB(*ALLUSR).
*NONE may be entered to bypass any additional save
operations. This value should be used if you are
going to have your own SAVxxx command following the
use of SAVCHGACT.
SAVSECDTA A *YES/*NO parameter for whether SAVSECDTA should be
performed. The default is *NO meaning no SAVSECDTA
is run.
*YES may be entered to run the SAVSECDTA command.
SAVSECDTA will occur before ending any subsystems
with OPTION(*CNTRLD).
SAVCFG A *YES/*NO parameter for whether SAVCFG should be
performed. The default is *NO meaning no SAVCFG is
run.
*YES may be entered to run the SAVCFG command.
SAVCFG will occur before ending any subsystems with
OPTION(*CNTRLD).
VOL The Volume IDs of the tapes or cartridges that are
mounted. The default is *MOUNTED.
Up to 75 entries may be made. See the SAVLIB
command for a complete discussion of the parameter.
SEQNBR The Sequence Number of the tape to begin the save
at. The default is *END which means after the last
current file. The value is used on the first file
written. It could be for SAVSECDTA, SAVCFG, or the
save-while-active save. After the first file is
written, all other save commands use a value of
*END.
A number in the range of 1 to 16777215 may be
entered.
EXPDATE The expiration date for the volumes to be written.
The value is passed thru to all save commands used.
A specific date may be entered in job format.
The special values *DAY1, *DAY2, ... *DAY32 may be
entered where *DAY1 is the next day, *DAY2 is the
second day, etc.
CLEAR Whether to clear active data on the media being
used. The default is *NONE, which does not clear
any active files. *ALL, *AFTER, or *REPLACE may be
used. The value is passed thru to all save commands
used.
ENDOPT The end of media option to use. The default is
*REWIND. *UNLOAD or *LEAVE may be specified.
The value is passed thru to the last save command
used. It is either the save-while-active save (if
TYPE=*NONE was specified) or the the regular save.
OBJJRN A *YES/*NO value for whether to save objects that
are being journaled. This parameter is only used if
TYPE(*SAVCHGOBJ) is specified.
The default is *NO. The value is passed thru to the
SAVCHGOBJ OBJJRN parameter.
REFDATE The reference date to use for SAVCHGOBJ objects.
This parameter is only used if TYPE(*SAVCHGOBJ) is
specified.
The default is *SAVLIB. A date may be entered in
job date format. The value is passed thru to the
SAVCHGOBJ REFDATE parameter.
REFTIME The reference time to use for SAVCHGOBJ objects.
This parameter is only used if TYPE(*SAVCHGOBJ) is
specified.
The default is *NONE. A time may be entered either
as HHMMSS or HH:MM:SS. The value is passed thru to
the SAVCHGOBJ REFTIME parameter.
STRLIB The starting library for the save. The default is
*FIRST.
Entering a library name does not impact the
libraries that are specified for the
save-while-active function. All libraries that are
specified for save-while-active will be saved.
If a start library name is entered (it must be an
existing library), the 'regular save' will begin at
that point. This is a valuable testing facility.
See the section on 'Testing'.
MEDDFN The Media Definition to be used. The default is
blank meaning no Media Definition is used. The
library defaults to *LIBL.
The value is passed thru to the save-while-active
and the regular save commands.
OPTFILE Specifies the path name of the optical file
beginning with the root directory. The value is
passed thru to all save commands.
USEOPTBLK A *YES/*NO value for whether to use optimum block
support. The default is *YES. The value is passed
thru to all of the save commands used.
TGTRLS The target release to be used for the output. The
default is *CURRENT meaning the current release.
*PRV may be entered to mean the previous release.
Specific release values may be entered, but vary per
release. Use the command prompting function to see
the supported releases.
The value is passed thru to the save-while-active
and the regular save commands.
Note that if you specify a release other than the
current release, the SAVSECDTA and SAVCFG functions
do not support the parameter and the restore of
these functions can only be done to the current
release.
If you specify a release other than the current
release along with a TYPE of *FULLSAVE or
*SAVCHGOBJ, you cannot restore the libraries using
LIB(*ALLUSR) to a different release level. You
could restore with the TAA commands RSTALLLIB or
RSTALLCHG.
UPDHST A *YES/*NO parameter for whether the save history
information is to be updated. *YES is the default
to update the history information. *NO may be
entered to avoid updating the history information.
The value is passed thru to the save-while-active
and regular save commands.
PRECHK A *YES/*NO value for whether to check before the
save begins that locking levels can be achieved.
*NO is the default for no checking.
*YES may be specified to ensure locking can occur.
The value is passed thru to the regular save command
(it is not used on the save-while-active save
because only TAA function is running at that point).
ACCPTH Whether to save access paths or not. The default is
*SYSVAL which uses the contents of the system value
QSAVACCPTH (system default causes *YES).
*YES may be specified to save access paths. A *NO
entry does not save the access paths.
The value is passed thru to the save-while-active
save and regular save commands.
SAVFDTA A *YES/*NO value for whether to save data in save
files. The default is *YES, The value is passed
thru to the save-while-active save and regular save
commands.
DTACPR Whether to use data compress. The values are passed
thru to the SAVLIB command. For a complete
understanding of the parameter, see the SAVLIB
command.
The default is *YES to compress the data.
*NO may be specified so the data will not be
compressed.
*LOW may be specified to compress to a low degree.
*MEDIUM may be specified to compress to a medium
degree.
*HIGH may be specified to compress to a high degree.
COMPACT A *DEV/*NO value for whether to use data compaction.
The default is *DEV which means to use the support
within the device. The value is passed thru to all
save commands used.
OUTPUT Whether a list of information is printed or written
to an outfile. The default is *NONE meaning no
information is output.
*PRINT may be entered to cause a listing.
*OUTFILE may be specified to create an outfile of
the information. The OUTFILE parameter must be
used.
The value is passed thru to all save commands used.
OUTFILE Specifies the qualified outfile to be used if
OUTPUT(*OUTFILE) is used. The default for the
library is *LIBL. It may only be used if an outfile
already exists. *CURLIB may also be specified. The
value is passed thru to all save commands used.
OUTMBR A two part parameter that is used in conjunction
with the OUTFILE parameter if a file is specified.
The first part is the member name to be used. The
default is *FIRST.
The second part determines if the data is to be
replaced or added to the member. *REPLACE is the
default. *ADD may be specified to add to an
existing member.
The value for the member name is passed thru to all
save commands used. The value for 'replace' is only
used for the first save command used. All
subsequent save commands use *ADD.
INFTYPE Specifies the type of information that is printed or
written to a data base file. *OBJ is the default.
*LIB, *MBR, or *ERR may be entered.
The value is passed thru to the save-while-active
and regular save commands.
PRTSAVLBL A *YES/*NO value for whether to use the TAA command
PRTSAVLBL at the end of the save. The default is
*NO for no use of the command.
*YES may be specified to cause the PRTSAVLBL command
to print labels for use on save media. See the
discussion with the PRTSAVLBL command.
SAVCHGACT Command Parameters *CMD
----------------------------
DEV Up to 4 devices may be entered. See the SAVCHGOBJ
command for a complete discussion of the parameter.
The special value *MEDDFN may be entered if using a
media definition. If you use *MEDDFN, you cannot
use SAVSECDTA or SAVCFG. If you save both
save-while-active and regular save libraries, you
could have a volume switch during the
save-while-active save that could cause an error
when the regular save begins. Because multiple tape
drives are used for both the save-while-active and
the regular save, your restore strategy needs to be
tested.
TYPE The type of regular save to be performed (if any).
*SAVCHGOBJ is the default to cause a
save-changed-object function of all user libraries
(the save-while-active libraries are omitted). The
definition of a user library is the same as that
performed by SAVCHGOBJ LIB(*ALLUSR).
*NONE may be entered to bypass any additional save
operations. This value should be used if you are
going to have your own SAVxxx command following the
use of SAVCHGACT.
SAVSECDTA A *YES/*NO parameter for whether SAVSECDTA should be
performed. The default is *NO meaning no SAVSECDTA
is run.
*YES may be entered to run the SAVSECDTA command.
SAVSECDTA will occur before ending any subsystems
with OPTION(*CNTRLD).
SAVCFG A *YES/*NO parameter for whether SAVCFG should be
performed. The default is *NO meaning no SAVCFG is
run.
*YES may be entered to run the SAVCFG command.
SAVCFG will occur before ending any subsystems with
OPTION(*CNTRLD).
VOL The Volume IDs of the tapes or cartridges that are
mounted. The default is *MOUNTED.
Up to 75 entries may be made. See the SAVLIB
command for a complete discussion of the parameter.
SEQNBR The Sequence Number of the tape to begin the save
at. The default is *END which means after the last
current file. The value is used on the first file
written. It could be for SAVSECDTA, SAVCFG, or the
save-while-active save. After the first file is
written, all other save commands use a value of
*END.
A number in the range of 1 to 16777215 may be
entered.
EXPDATE The expiration date for the volumes to be written.
The value is passed thru to all save commands used.
A specific date may be entered in job format.
The special values *DAY1, *DAY2, ... *DAY32 may be
entered where *DAY1 is the next day, *DAY2 is the
second day, etc.
CLEAR Whether to clear active data on the media being
used. The default is *NONE, which does not clear
any active files. *ALL, *AFTER, or *REPLACE may be
used. The value is passed thru to all save commands
used.
ENDOPT The end of media option to use. The default is
*REWIND. *UNLOAD or *LEAVE may be specified.
The value is passed thru to the last save command
used. It is either the save-while-active save (if
TYPE=*NONE was specified) or the the regular save.
OBJJRN A *YES/*NO value for whether to save objects that
are being journaled. The default is *NO.
The value is passed thru to the save-while-active
and the regular save commands.
REFDATE The reference date to use for SAVCHGOBJ objects.
The default is *SAVLIB. A date may be entered in
job date format.
The value is passed thru to the save-while-active
and the regular save commands.
REFTIME The reference time to use for SAVCHGOBJ objects.
The default is *NONE. A time may be entered either
as HHMMSS or HH:MM:SS. The value is passed thru to
the SAVCHGOBJ REFTIME parameter.
STRLIB The starting library for the save. The default is
*FIRST.
Entering a library name does not impact the
libraries that are specified for the
save-while-active function. All libraries that are
specified for save-while-active will be saved.
If a start library name is entered (it must be an
existing library), the 'regular save' will begin at
that point. This is a valuable testing facility.
See the section on 'Testing'.
MEDDFN The Media Definition to be used. The default is
blank meaning no Media Definition is used. The
library defaults to *LIBL.
The value is passed thru to the save-while-active
and the regular save commands.
OPTFILE Specifies the path name of the optical file
beginning with the root directory. The value is
passed thru to all save commands.
USEOPTBLK A *YES/*NO value for whether to use optimum block
support. The default is *YES. The value is passed
thru to all of the save commands used.
TGTRLS The target release to be used for the output. The
default is *CURRENT meaning the current release.
*PRV may be entered to mean the previous release.
Specific release values may be entered, but vary per
release. Use the command prompting function to see
the supported releases.
The value is passed thru to the save-while-active
and the regular save commands.
Note that if you specify a release other than the
current release, the SAVSECDTA and SAVCFG functions
do not support the parameter and the restore of
these functions can only be done to the current
release.
If you specify a release other than the current
release along with a TYPE of *SAVCHGOBJ, you cannot
restore the libraries using LIB(*ALLUSR) to a
different release level. You could restore with the
TAA commands RSTALLLIB or RSTALLCHG.
UPDHST A *YES/*NO parameter for whether the save history
information is to be updated. *YES is the default
to update the history information. *NO may be
entered to avoid updating the history information.
The value is passed thru to the save-while-active
and regular save commands.
PRECHK A *YES/*NO value for whether to check before the
save begins that locking levels can be achieved.
*NO is the default for no checking.
*YES may be specified to ensure locking can occur.
The value is passed thru to the regular save command
(it is not used on the save-while-active save
because only TAA function is running at that point).
ACCPTH Whether to save access paths or not. The default is
*SYSVAL which uses the contents of the system value
QSAVACCPTH (system default causes *YES).
*YES may be specified to save access paths. A *NO
entry does not save the access paths.
The value is passed thru to the save-while-active
save and regular save commands.
SAVFDTA A *YES/*NO value for whether to save data in save
files. The default is *YES, The value is passed
thru to the save-while-active save and regular save
commands.
DTACPR Whether to use data compress. The values are passed
thru to the SAVLIB command. For a complete
understanding of the parameter, see the SAVLIB
command.
The default is *YES to compress the data.
*NO may be specified so the data will not be
compressed.
*LOW may be specified to compress to a low degree.
*MEDIUM may be specified to compress to a medium
degree.
*HIGH may be specified to compress to a high degree.
COMPACT A *DEV/*NO value for whether to use data compaction.
The default is *DEV which means to use the support
within the device. The value is passed thru to all
save commands used.
OUTPUT Whether a list of information is printed or written
to an outfile. The default is *NONE meaning no
information is output.
*PRINT may be entered to cause a listing.
*OUTFILE may be specified to create an outfile of
the information. The OUTFILE parameter must be
used.
The value is passed thru to all save commands used.
OUTFILE Specifies the qualified outfile to be used if
OUTPUT(*OUTFILE) is used. The default for the
library is *LIBL. It may only be used if an outfile
already exists. *CURLIB may also be specified. The
value is passed thru to all save commands used.
OUTMBR A two part parameter that is used in conjunction
with the OUTFILE parameter if a file is specified.
The first part is the member name to be used. The
default is *FIRST.
The second part determines if the data is to be
replaced or added to the member. *REPLACE is the
default. *ADD may be specified to add to an
existing member.
The value for the member name is passed thru to all
save commands used. The value for 'replace' is only
used for the first save command used. All
subsequent save commands use *ADD.
INFTYPE Specifies the type of information that is printed or
written to a data base file. *OBJ is the default.
*LIB, *MBR, or *ERR may be entered.
The value is passed thru to the save-while-active
and regular save commands.
PRTSAVLBL A *YES/*NO value for whether to use the TAA command
PRTSAVLBL at the end of the save. The default is
*NO for no use of the command.
*YES may be specified to cause the PRTSAVLBL command
to print labels for use on save media. See the
discussion with the PRTSAVLBL command.
RTVSAVACT Command Parameters *CMD
----------------------------
LIBLIST The list of libraries from the TAASAVACTP file.
There are up to 300 library names with each name
followed by a blank. The list is intended to be
used in a LIB or OMITLIB parameter of a SAVxxx
command.
The return variable must be specified as *CHAR
LEN(3300).
CHKSAVACT Command Parameters *CMD
----------------------------
LIB The library to be checked. The default is *SAVACT
to check those libraries you have specified for
save-while-active using EDTSAVACT.
A specific library, a generic library name, or
*ALLUSR may be specified.
TYPE The type of listing to be output. The default is
*SUMMARY for summaries by library.
*DETAIL may be specified to list one line per object
and flag any objects that do not appear to be good
candidates for save-while-active.
NBRDAYS The 'number of days' prior to the current date to
check against the 'change date' of the object. The
default is 15 days.
If the object has not been changed during that time,
the object is flagged. If you can control when a
change occurs, objects that are infrequently changed
are not good candidates for save-while-active.
FLAGLF A *YES/*NO parameter for whether to flag Logical
files as changed within the 'number of days'
interval. The default is *NO meaning logical files
are not flagged.
The change date of a logical file does not change if
the access path is changed. Therefore you would
normally find Logical Files as flagged during the
'number of days' interval.
*YES may be specified to flag the Logical Files that
have not changed within the 'number of days'
interval.
CHKALLDBD A *YES/*NO parameter for whether to run the TAA
CHKALLDBD command over *ALLUSR libraries. *YES is
the default.
*NO may be specified to bypass the running of
CHKALLDBD.
Restrictions
------------
** The system save-while-active support prevents the use of
saving DLOs or the SAV command for IFS objects in conjunction
with normal SAVLIB support of libraries. These functions are
not covered by the SAVACT tool.
** The user of SAVALLACT or SAVCHGACT must have both *JOBCTL and
*SAVSYS special authorities.
** The SAVxxxACT commands may only be entered at the system
console (see the QCONSOLE system value).
** A maximum of 300 libraries may be specified for the
save-while-active function.
** A maximum of 9999 libraries may exist for EDTSAVACT.
** There is a system limit relative to the number of internal
objects that can be saved by one save-while-active request.
In V5R1, the limit is about 65,000, but can be larger
depending on your journal structure.
Prerequisites
-------------
The following TAA Tools must be on your system:
ADDDAT Add date
ADJVAR Adjust variable
APPVAL Application value
CHKACTOBJ Check active object
CHKALLDBD Check all data base dependencies
CHKJOBCTL Check job control
CHKNAM Check name
CHKOBJ2 Check object 2
CHKRSDSTE Check restricted state
CHKSAVRST Check save restore
CRTDUPPF Create duplicate physical file
CVTDAT Convert date
CVTDSPDTA Convert display data
CVTLIBCNT Convert library count
CVTLIBOBJD Convert library object description
CVTTIM Convert time
CVTWRKACT Convert WRKACTJOB
DSPOBJD2 Display object description 2
EDTVAR Edit variable
EXTLST2 Extract list 2
HLRMVMSG HLL Remove message
PRTSAVLBL Print save label
RSNLSTMSG Resend last message
RTVACTSBS Retrieve active subsystems
RTVDBFA Retrieve data base file attributes
RTVJOBSTS Retrieve job status
RTVMSGD Retrieve message description
RTVSPCAUT Retrieve special authority
RTVSYSVAL3 Retrieve system value 3
RTVTIMSTM Retrieve time stamp
SNDCOMPMSG Send completion message
SNDJLGMSG Send job log message
SNDDIAGMSG Send diagnostic message
SNDESCMSG Send escape message
SNDSTSMSG Send status message
Implementation
--------------
None, the tool is ready to use.
Objects used by the tool
------------------------
Object Type Attribute Src member Src file
------ ---- --------- ---------- ----------
EDTSAVACT *CMD TAASAVU QATTCMD
RTVSAVACT *CMD TAASAVU2 QATTCMD
CRTSAVACT *CMD TAASAVU3 QATTCMD
SAVALLACT *CMD TAASAVU4 QATTCMD
CHKSAVACT *CMD TAASAVU5 QATTCMD
SAVCHGACT *CMD TAASAVU6 QATTCMD
TAASAVUC *PGM CLP TAASAVUC QATTCL
TAASAVUC2 *PGM CLP TAASAVUC2 QATTCL
TAASAVUC3 *PGM CLP TAASAVUC3 QATTCL
TAASAVUC4 *PGM CLP TAASAVUC4 QATTCL
TAASAVUC5 *PGM CLP TAASAVUC5 QATTCL
TAASAVUC6 *PGM CLP TAASAVUC6 QATTCL
TAASAVUC21 *PGM CLP TAASAVUC21 QATTCL
TAASAVUC22 *PGM CLP TAASAVUC22 QATTCL
TAASAVUC23 *PGM CLP TAASAVUC23 QATTCL
TAASAVUC24 *PGM CLP TAASAVUC24 QATTCL
TAASAVUC25 *PGM CLP TAASAVUC25 QATTCL
TAASAVUC26 *PGM CLP TAASAVUC26 QATTCL
TAASAVUC31 *PGM CLP TAASAVUC31 QATTCL
TAASAVUC51 *PGM CLP TAASAVUC51 QATTCL
TAASAVUC52 *PGM CLP TAASAVUC52 QATTCL
TAASAVUR *PGM RPG TAASAVUR QATTRPG
TAASAVUR5 *PGM RPG TAASAVUR5 QATTRPG
TAASAVUD *FILE DSPF TAASAVUD QATTDDS
TAASAVUP *FILE PF TAASAVUP QATTDDS
SAVACT *MSGQ
SAVACT2 *MSGQ
TAAJOBQ *JOBQ
TAASBS *SBSD
Structure
---------
CRTSAVACT Cmd
TAASAVUC3 CL pgm
EDTSAVACT Cmd
TAASAVUC CL pgm
TAASAVUC24 Cl pgm - Does CVTLIBOBJD with adopt
TAASAVUR RPG Pgm
TAASAVUC26 Cl pgm - Does DSPLIB and DSPOBJD2
TAASAVUD Dsp file
RTVSAVACT Cmd
TAASAVUC2 CL pgm
SAVALLACT Cmd
TAASAVUC4 CL pgm
TAASAVUC21 CL pgm Warning messages
TAASAVUC22 CL pgm Final messages
TAASAVUC23 CL pgm End interactive jobs
TAASAVUC25 CL pgm Access Application Value
Submit of TAASAVUC31 Checkpoint listening program
CHKSAVACT Cmd
TAASAVUC5 CL pgm
TAASAVUR5 RPG pgm
TAASAVUC51 CL pgm Retrieve DB file attributes
TAASAVUC52 CL pgm Gets internal object count
SAVCHGACT Cmd
TAASAVUC6 CL pgm
TAASAVUC21 CL pgm Warning messages
TAASAVUC22 CL pgm Final messages
TAASAVUC23 CL pgm End interactive jobs
TAASAVUC25 CL pgm Access Application Value
Submit of TAASAVUC31 Checkpoint listening program
|