TAA Tools
CHKACTPGM       CHECK ACTIVE PROGRAM                   TAAPGMG

The  Check  Active  Program command  is  intended  to  provide  an  'If
Active' test.

i5/OS  CL does  not  support such  a  command, but  a  similar function
exists in S/36E.

Outside  of S/36E, when  a program is  called, i5/OS does  not lock the
program.  To determine  if the program is  in use, a user must  specify
that a lock is needed.  CHKACTPGM performs this function.

The  normal use  of CHKACTPGM  is  to include  it in  the program  that
wants to  ensure it has only a single use.   The following code is in a
format so it can be directly copied into a program using SEU.

             DCL        &MSGDTA *CHAR LEN(120)
             CHKACTPGM  /* TAA tool command */
             MONMSG     MSGID(CPF9898) EXEC(DO) /* Already active */
             RCVMSG     MSGTYPE(*EXCP) MSG(&MSGDTA)
             SNDPGMMSG  MSGID(CPF9898) MSGF(QCPFMSG) MSGTYPE(*ESCAPE) +
                          MSGDTA(&MSGDTA)
             ENDDO      /* Already active */

CHKACTPGM will attempt to place  an *EXCL lock on the current  program.
If the lock cannot  be achieved, CPF9898 is sent  as an escape message.

In  the sample code,  the CPF9898 message  sent by CHKACTPGM  is resent
by the program.  The text would read:

    Program XXXX in YYYY is already in use by another job
      and can only be used by one job at a time.

The typical  use for  CHKACTPGM is  in a  batch job  where a  sensitive
program  needs  to be  run  without  any  other job  running  the  same
program  at  the same  time.    When the  batch  job  ends, the  system
automatically  releases any  locks.  If  you are in  an interactive job
or wish to end the lock earlier in the batch job, specify:

          CHKACTPGM
            .
            .           /* Normal processing */
            .
          CHKACTPGM     ALLOCATE(*UNLOCK)

You can  also use  CHKACTPGM to  determine if  a lock  can be  achieved
with  ALLOCATE(*TEST).   This will  perform both  an ALCOBJ  and DLCOBJ
function.

You  can specify  CHKACTPGM  and name  a program.   However,  the named
program must have  a lock placed  on it to  allow CHKACTPGM to  operate
properly.

Command parameters                                    *CMD
------------------

   PGM           The  qualified   program  name  to  be   allocated  or
                 deallocated.   The  default is  * meaning  the current
                 program.   If *  is used,  the program  must exist  on
                 the library list.

                 The program  cannot start  with a  Q (this prevents  a
                 user  at  the   command  entry  display  from  locking
                 QCMD).

                 If  a specific  program is  named, the  test will only
                 be successful  if  the  named program  is  also  using
                 CHKACTPGM or ALCOBJ  has been used in the  job to lock
                 the  program.  If a specific  program is named without
                 a library qualifier, *LIBL is assumed.

   ALLOCATE      The  type  of  allocation.    *LOCK  is   the  default
                 meaning to attempt  to lock the program  with an *EXCL
                 lock.   You can lock  an object more than  once in the
                 same job.   Each lock  is unique.   Therefore, if  you
                 use CHKACTPGM  with *LOCK multiple  times in  the same
                 program, you  would have a  unique lock for  each use.

                 *UNLOCK  may be specified to  unlock the program.  The
                 command will complete  normally regardless of  whether
                 a  lock had been  held or  not.   The system  does not
                 send   an  escape  message   if  the   object  is  not
                 currently locked by the same job.

                 *TEST may be specified to  determine if an *EXCL  lock
                 can be achieved.   This performs both  an allocate and
                 deallocate  function.   If the  object can  be locked,
                 it is automatically unlocked on return.

Restrictions
------------

If a specific  program is named,  the test will  only be successful  if
the  named  program is  also  using  CHKACTPGM  or any  job  using  the
program has run ALCOBJ and locked the program.

If PGM(*) is used, the program must exist on the library list.

The program name must not start with a Q.

Prerequisites
-------------

The following TAA Tools must be on your system:

         SNDCOMPMSG      Send completion message
         SNDESCMSG       Send escape message

Implementation
--------------

None, the tool is ready to use.

Objects used by the tool
------------------------

   Object        Type        Attribute      Src member    Src file
   ------        ----        ---------      ----------    ----------

   CHKACTPGM     *CMD                       TAAPGMG       QATTCMD
   TAAPGMGC      *PGM           CLP         TAAPGMGC      QATTCL
					

Added to TAA Productivity tools April 1, 1995


Home Page Up to Top