TAA Tools
SAVACT          SAVE ACTIVE                            TAASAVU

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
					

Added to TAA Productivity tools October 15, 2001


Home Page Up to Top