TAA Tools
DYNMNU          DYNAMIC MENU                           TAAMNUA

The Dynamic  Menu tool is  a way  to write menus  where the options  on
the  menus are driven  from data  base records.   The Dynamic  Menu has
the following advantages:

  **   The  menu  options are  kept in  data base  files.   Each option
       performs either  a command  or invokes  a  sub menu.   Any  data
       base change  takes affect the  next time the menu  is displayed.

  **   Each  menu option  may be  secured so  that only  non-secured or
       authorized options  will appear  on  a users  menu.   An  option
       exists  to utilize  group  and supplemental  group user  profile
       names.

  **   Each  menu has an  optional command line  with functions similar
       to a  system command  line.   The option  can be  controlled  by
       user or  menu.  If  a command  line is allowed  and the user  is
       LMTCPB(*YES),  only commands that  are not  limited may  be run.
       By  default, all commands  that are entered  on the command line
       run without any adopted authority.

  **   Each menu has  a message subfile to  bubble up messages sent  by
       the options or commands that have been entered.

  **   If  a  user  is  a  member  of a  group  or  supplemental  group
       profile,  an option exists to enter only  the group name and use
       the assigned menu for  the group when the  user enters the  menu
       system.   This  can  eliminate many  entries  as  new users  are
       added  to  the menu  system.   See  the  section  on Application
       Value Options to set the option.

  **   A history log exists to provide  an audit trail of what  options
       were taken.   The beginning  use of  an option is  automatically
       logged  as is the  beginning of a  menu.   The ending use  of an
       option  may be  requested.   A command  is available  to display
       the current  status  of  users using  the  Dynamic Menu.    This
       allows you  to determine  what options are  in use and  what the
       users are doing.

  **   A  group   job  function  exists  so  that  any  option  can  be
       performed in a  group job.   There  are 3 basic  types of  Group
       Jobs supported:

         --   Simple  flip/flop  to   a  second  job  by   use  of  the
              Attention Key.

         --   Primary/Secondary  Group  Job where  the  Secondaries are
              defined on a  Primary menu  and always  transfer back  to
              the Primary when the Attention Key is used.

         --   An Attention  Key Handling  menu that  allows a  transfer
              to any Group Job from any other Group Job.

       By  default, the  Attention Key cannot  be used  when a  job has
       any locked records.

       The  Group Job function  can be used to  replace the 'Group Jobs
       Made Easy' tool  which was part of  QUSRTOOL, but was not  a TAA
       Tool.

  **   A  'Hold'  option  exists   that  allows  the  Administrator  to
       prevent  the  use of  an  Option if  it  is being  changed  or a
       problem exists.

  **   Options exist to  handle any  errors (escape  messages) sent  by
       the  options that  are  run.   You  can  choose  to ignore  (the
       escape message  will be displayed), send a  message to a message
       queue and/or capture the job log.

  **   Options exist  for  the  user  to run  commands  when  the  user
       begins/ends the  Dynamic Menu  function and  to set options  for
       such things  as the initial menu, error  handling, and Attention
       Key setting.

  **   Options  exist  for  each menu  to  run commands  when  the menu
       begins/ends or to modify the base options set for the user.

  **   A normal  menu object  is  available for  the Administrator  (GO
       DYNMNU)   which  provides   for   entry  and   control  of   the
       information.  This includes:

         --   A Maintenance command to enter User records.

         --   A   Maintenance  command  to   enter  Menu,  Option,  and
              Security records.

         --   A command to  duplicate an existing menu  to a new  name.

         --   A display  command to  determine what  options are  being
              used.

         --   An  Analyze  command  to  perform  basic query  functions
              against the history log.

         --   A testing aid to display  the menus that a specific  user
              will see and navigate through the sub menu options.

         --   A command to create the files required.

         --   A command  (DSPDYNMNUU) which will  provide a  display or
              listing of  what an individual user may  do via menus and
              options.

         --   A  command (CHKDYNMNUU)  which will provide  a display or
              listing  of what  user  profiles  are defined  and  still
              exist on the system.

  **   Specific  commands  also  exist   to  make  changes,  additions,
       deletions  and retrieve the  information from the  user and menu
       files.

  **   Language translation exists for  most functions that appear  for
       the  end  user.   This  allows  a  system  that has  users  with
       multiple  languages to vary the  text that appears  on the menu.

Demonstration of the Dynamic Menu
---------------------------------

You  can  see  a  demonstration  of  the  Dynamic  Menu  by  doing  the
following:

  1.   Use the  CRTDYNMNU  command to  build the  required  files in  a
       library of your choice:

             CRTDYNMNU   DYNMNULIB(xxxx)

  2.   Run  the program  which  copies sample  data to  the  files just
       created and specify the library name as the parameter.

             CALL        PGM(TAATOOL/TAAMNUAC22) PARM(xxxx)

  3.   Start   the  Dynamic  Menu  function  and  specify  the  library
       containing the  files.    A test  menu  MENUA has  already  been
       established and is the default for your user name.

             STRDYNMNU   MENU(*USER) DYNMNULIB(xxx)

  4.   Try the various options and menus.

  5.   End the menu and try the Administrator's function.

             GO          DYNMNU

  6.   Prompt and/or  try the  various options.   Do not change  any of
       the data at this point.

         --   Note  the layout of  the menu.   It is  similar to system
              supplied menus.

         --   Work your way thru all  the options including the  option
              to test  the Dynamic  Menu.   Notice the  difference when
              an option is requested when testing.

         --   Note  that some  menus allow  command  lines and  some do
              not.

         --   MENUD does not  allow F3  or F12 to  end the  menu.   You
              must use an option.

         --   Enter a bad option number and note the error message.

         --   Enter  some sample  display commands  such  as DSPJOB  or
              DSPNETA on  one of the menu command lines  to see how the
              command line operates.

         --   Use  the F9  key to roll  backward thru  the commands you
              entered and re-execute one of them.

         --   Enter a CALL  to a program that  does not exist and  note
              the error message subfile rolling capability.

  7.   To try  the security function, use  GO DYNMNU and the  Option to
       'Maintain  menu records'.   Use  Option 6  for MENUA  to display
       the detail records  (one record  per option).   Change Option  2
       (Display Job Description QINTER) for Secure field to '*YES'.

  8.   End the function  and use STRDYNMNU again.  You  should see that
       Option 2 does not display because no security record exists.

  9.   To allow  Option 2 to appear  on your menu, use  GO DYNMNU again
       and the Option  to 'Maintain menu  records'.  Use  Option 6  for
       MENUA to  display the  detail records  (one record per  option).
       For Option  02, request Option 6 (Work with  Security) and add a
       record  with  your name  (using F6).   When  you enter  Add mode
       (F6), it  is assumed  you want to  enter another  record so  you
       will be prompted with the same display.

  10.  End  the function (see  the later  discussion about  using group
       user profiles or supplemental groups).

  11.  Use STRDYNMNU again.  You should now see Option 2 on MENUA.

  12.  If  you want to  try the Group  Job functions, skip  to the next
       section.  When complete, start at the next point.

  13.  You may change any  of the test data or  try your own menus  and
       options.

  14.  To reset  to the  original test  data you  must first clear  the
       data files that were created:

             CLRPFM      MNUUSRP
             CLRPFM      MNUMSTP
             CLRPFM      MNUDTLP
             CLRPFM      MNUHSTP
             CLRPFM      MNUCMDP

       Then call the program that adds the test data:

             CALL        TAATOOL/TAAMNUACxx PARM(xxxx)

Demonstration of the Dynamic Menu Group Job Functions
-----------------------------------------------------

If  you are not  currently using Group  Jobs, you may  proceed with the
next several steps to demonstrate the Group Job capability.

  1.   To ensure that you are not currently using Group jobs do:

             CHGGRPA     GRPJOB(*NONE)

  2.   You should not see any messages.   If you see a message  denying
       the request,  you already have  some group jobs.   You must  end
       these to do the demonstration.

  3.   To see the Administrator's function, use the menu provided:

             GO          DYNMNU

  4.   When  the sample  data was created,  a record  was added  to the
       MNUUSRP  file with your name  and the test menu  MENUA.  To test
       the  Flip/Flop  Group  Job  support,  access  this  record  with
       Option  1 'Maintain  user record'.    Use the  Change option  to
       your  record  and change  the  Attention Key  Handling  field to
       *FLIPFLOP.

  5.   End the Administrator's Menu and enter the command:

             STRDYNMNU   MENU(*USER) DYNMNULIB(xxx)

  6.   This is the same menu you  saw previously.  Use Option 1.   When
       the display appears,  press the Attention Key to  flip/flop to a
       second job.   The second job  starts with the same  menu and the
       Attention Key may be  used to flip back  and forth.  Try  Option
       3 that masks off the use of the Attention Key.

  7.   End both  Group Jobs by  using F3.   To determine that  you have
       successfully ended both Group Jobs do:

             CHGGRPA     GRPJOB(*NONE)

       If  you cannot  make the change,  you have  a Group  Job active.
       To  end  the Group  Job, use  STRDYNMNU  again, followed  by the
       Attention Key, and  then F3.   Use F3 to  end the initial  group
       job.

  8.   To  test the  Primary/Secondary  Group Job  support, access  the
       Administrator's function again:

             GO          DYNMNU

  9.   Request  the  option  to  'Maintain  user  records'.   Make  the
       following changes to your own record:

          Default menu             MENUE
          Attention key handling   *NONE
          Default group job name   PRIGRP

  10.  End the function  and request 'Maintain  menu records' from  the
       GO DYNMNU  menu.   Use Option  2 to Change  the MENUC  and MENUD
       records.   Change  the Attention key  handling value  to *TFRPRV
       for each.   This will  cause a standard  Attention Key  handling
       program to transfer back to the Primary Group Job.

  11.  End the function and use:

             STRDYNMNU   MENU(*USER) DYNMNULIB(xxx)

  12.  You should see  MENUE which is a  Primary Group Job menu.   Most
       of the  options will be  performed using a  Secondary Group Job.
       When  you use the Attention Key  in the Secondary Group Job, you
       will transfer back to  the Primary Job (if the Attention  Key is
       valid).   If the Group  Job is still  active when you  return to
       the  Primary Job, you can request  the option and transfer back.
       The transfer time  is fairly fast  if the Group  Job is  already
       active.

  13.  When you return  to the Primary Group Job, the  Attention Key is
       not defined.  Try it.  You must use an option to transfer.

       It  is  possible  to  define  the  MENUE  record  Attention  Key
       Handling function as *TFRPRV.   This will  allow a flip/flop  to
       the last Group Job  Used.  A special message occurs  if no Group
       Job has been started.

  14.  The  option 'Lock  1st  Record TAA  Tool'  is an  example  of an
       application  that locks a record.   Normally, you would not want
       the user to  be able to  transfer from a  Group Job when  record
       locks  exist so the  default is  to ensure  that no  records are
       locked.    If you  try  the 'Lock  1st Record'  option  and then
       press  the  Attention  Key,   you  should  see  an   appropriate
       message.   You  must  end the  function to  get  to a  different
       Group Job.

  15.  End  the Group  Jobs  by using  F3 for  each Group  Job  and the
       Primary menu.   To determine  that you  have successfully  ended
       all Group Jobs do:

             CHGGRPA     GRPJOB(*NONE)

       If you  cannot make  the change,  you have a  Group Job  active.
       To end  the Group Job,  use STRDYNMNU again,  access each option
       and  end with  F3.   End the  Primary menu  and test  again with
       CHGGRPA.

  16.  To test  the  Attention Key  handling  menu Group  Job  support,
       access the Administrative Menu again with:

             GO          DYNMNU

  17.  Request  the  option  to  'Maintain  User Records'.    Make  the
       following changes to your own record:

          Default menu             MENUF
          Attention key handling   ATNKEY      (name of a Dynamic menu)
          Default group job name   GRPMNUF

  18.  End the function and use:

             STRDYNMNU   MENU(*USER) DYNMNULIB(xxx)

  19.  Try  some of the  options on MENUF  and press  the Attention Key
       while on  an option  or on  the Attention  Key Menu.   Select  a
       Group Job.

       You should be  transferred to a Group  Job and see a  menu.  Try
       some  of the options  in the Group  Job and press  the Attention
       Key again.  You  can transfer back to  an existing Group Job  or
       start a new one.

  20.  End the  Group Jobs by  using F3 for  each group job  and MENUF.
       To  determine that you  have successfully  ended all  Group Jobs
       do:

             CHGGRPA     GRPJOB(*NONE)

       If  you cannot  make the  change, you  have a Group  Job active.
       To end the  Group Job, use  STRDYNMNU again, access each  option
       and end with F3.


Getting Started with the Dynamic Menu
-------------------------------------

The Administrator  begins by using  the CRTDYNMNU command and  naming a
library  where data base files will be  created.  There may be multiple
sets of files, but each set must be all in the same library.

All control files  allow public use  of 'read', but  are authorized  so
that only  the Administrator may  change the  files.  He  may authorize
other  users to  make changes  with standard  system commands.   During
the end users use of the  Dynamic Menu, the control files are  accessed
for 'read only'.

Before you  begin to add  user and menu  records to the  control files,
you should  be familiar with what options exist  and what your strategy
will  be.  It is  not necessary that you consider  every detail at this
point as you  can always tune  the menu structure  once it is  running.
But you should have  a good grasp of the types of  things that you will
need  to consider.  Playing  with the demonstration and  a brief review
of this document is recommended.

In addition  to making  decisions regarding  the menus,  you must  also
consider:

  **   A  retention strategy  for the  History  files.   See the  later
       section on History Cleanup.

  **   A  backup strategy for  the data that  you have entered  and the
       History files.  See the later section on Backup.

Menu Options
------------

Each option is  specified with a  number of 01-99,  RU (Rollup), or  RD
(Rolldown) - see  the section on Rollup/Rolldown.   Consecutive numbers
need not  be used.   The options are  not re-numbered when  the menu is
generated  (the user will see  the number as you  specified it with the
leading zero suppressed).

The selection line allows for  either 2 character input (if  no command
line is  requested) or a large command  entry field.  To  select the 01
Option,  the user may  enter a  1 followed by  a blank, 01,  or a blank
followed by a 1.

You may  specify  that  a blank  line  appear before  and/or  after  an
option to  provide better  grouping on  a menu.   Instead of  one blank
following,  you may specify  a number  2-9 for additional  blank lines.
The intent of additional blank lines  is to allow better formatting  of
2 column menus.

To also assist  in formatting, a heading  line may appear before  a set
of options such as:

           Accounts Payable

    1.  New vendor
    2.  Pay existing vendor

The heading  may be hi-lighted  and space before  and after used.   See
the *HDG1 and *HDG2 options for the internal description field.

Each   menu  Option  has   an  internal  description   field  that  the
Administrator can  enter  to  help describe  what  the option  is  for.
This is worthwhile  to do as the DSPDYNMNU and  ANZDYNMNU output can be
made more meaningful.

Each option may be either (it cannot be both):

  **   A  command.   Any command  may be entered  that can  be executed
       using QCMDEXC.    For  example,  it could  be  a  CALL,  SBMJOB,
       another system  command or  a user command.   When  the commands
       are  entered, by the  Administrator, F4  may be used  to prompt.
       See the  later  discussion of  the  RETURN command  which  is  a
       special case to use instead of F3 or F12.

       If  you  want to  prompt  for  a  command that  has  a  required
       parameter,  you may want  the user  to enter the  parameter when
       the  option is  selected.   For example,  DSPUSRPRF requires the
       USRPRF parameter and  you may want the  user to enter the  value
       as  opposed to hard  coding the  value.   The command  which you
       enter  is checked by QCMDCHK before it  is stored.  QCMDCHK will
       signal an  error if a  required parameter  does not  exist.   If
       this is your situation, consider the PMTCMD TAA command.

  **   A sub-menu.  Any  Dynamic Menu menu may be named that  is in the
       same set of files, in the same library.

Each option  can be executed within the same job  or a group job may be
named.   For example,  the user  may have  a frequently  used  function
that you want  to handle as  a group job by  having the user  select an
option  as  opposed  to  using  the  Attention  Key.    See  the  later
discussion of Group Jobs.

  **   Each  option may be secured  so that some users  of the menu may
       see the option.   If a user  is not authorized, the  option does
       not appear.  See the later section on 'Securing an option'.

Rollup/Rolldown (Multi-page menu)
---------------------------------

An option  (instead of 00-99) of  RU (Rollup) and RD  (Rolldown) may be
used to give a single menu an appearance of multiple pages.

The RU  and RD options require that a sub  menu be named.  The title of
the menu will  be used.   The  Secure option must  be *NO.   Any  other
parameters are  ignored during processing.   You can use  a description
to assist in identifying the option.

A  typical use of  Rollup/Rolldown is where  you want a  menu to appear
to have 3 pages.  Each page must have a unique menu name.

Assume the  3 pages  are  named MENUA1,  MENUA2,  and MENUA3.    MENUA1
would specify an  RU option to go  to MENUA2.  MENUA2 would  specify an
RU option  to go to  MENUA3 and an RD  option to go to  MENUA1.  MENUA3
would specify an RD option to go to MENUA1.

The  'More...' indication will  appear when an  RU option is specified.
When a  menu has  an RD  option, but  not  an RU  option, the  'Bottom'
indication will be displayed.

Error Handling
--------------

Each  option allows  you to  control the  type of  error  handling that
should  occur if the option  ends with an escape  message being sent to
the menu program.

For each menu you can establish  a default criteria and then modify  it
for a unique option.  The values are:

   *NONE         The  escape  message  appears  as  a  message  in  the
                 message  subfile.  The  selection line  is not blanked
                 out.

   *MSG          A message is sent  to a message  queue of your  choice
                 stating the error.

   *JOBLOG       The DSPJOBLOG  command occurs  to an  output queue  of
                 your  choice.  A  status message  appears to  the user
                 while the output is occurring.

   *ALL          Both a message is sent and the job log occurs.

Allowing F3 and F12
-------------------

The  default is that both Function keys are  allowed on any menu.  Both
have the same meaning which is  to return to the previous menu.   If no
previous   menu  exists  (F3   pressed  on   the  initial   menu),  the
controlling CL program does a normal return.

For  most menus, you  will want to  take the default and  allow both F3
and F12.   Another alternative is  to use the  RETURN command which  is
treated  as a  special case.   You  may  enter it  as a  command to  be
executed.    Internally,  it  means the  same  function  as  if F3  was
pressed.

For the initial  menu, you may prefer  to not offer  either F3 or  F12,
but allow the user an option for Signoff.

An optional  command may  be executed when  any menu  ends or  the user
ends  the Dynamic Menu  function.  The  end menu command  only executes
if  the user ends with F3/F12 or the  special case RETURN function.  If
the command Signoff is used, the end command will not execute.

You cannot define any other  command keys that will exist on  the menu.
Unique functions must be requested using a menu option.

Command line
------------

A command  line is optional on  each menu.  Two  functions help control
the command line:

  **   The  default  is to  execute  the commands  without  any adopted
       authority.  This is done by using the TAA Tool UNADOPT.

  **   If the  user is  limited in  his profile  by LMTCPB(*YES),  only
       commands   that  are   specified  as   ALWLMTUSR(*YES)  may   be
       executed.

Thus a  reasonably safe command line may  be considered for most users.

You may need to control the use  of the Signoff command on the  command
entry  line   to  prevent   the  users   from  prematurely  ending   an
application.   A similar concern  exists with the  System Request menu.
The  system Security  Guide describes  how to  make the  System Request
menu private.  A solution is to make the Signoff command private.

The F9 key  is available to allow  the retrieval of previously  entered
commands (up  to 100).   Only  commands entered on  the current  use of
the  Dynamic Menu may be  retrieved.  A restriction  exists relative to
retrieving commands that exceed 512 bytes of data.

Securing an option
------------------

Each option  on a  menu  may be  secured by  specifying the  GO  DYNMNU
command,  using 'Maintain  Menu'  records, using  Option  6 (Work  with
options),  Option  2   (Change  an  option  record),  and  setting  the
'Secure' field to *YES or *YS2.   This causes the STRDYNMNU command  to
check for records in the  MNUSECP file to see if a  user record exists.

The *YS2 entry  should be made when a secure  entry will be followed by
a  heading which must exist  in a fixed location.   The *YES entry will
cause the  heading to  'float' as  the option  will not  appear on  the
menu and  the following  options will  move up.   If the  second column
begins  with a fixed  heading, a prior  secure option with  an entry of
*YS2 will cause the option to appear as a blank line.

To enter  a user  record to  provide a  security check,  return to  the
'Option Record'  display and use  Option 6  (Work with security).   Add
one or more user records using F6.

The  simple approach is to  enter the user  name of the  user that will
be signed on.

You may also  use a Group  Profile name (or a  Supplemental Group  user
profile name).  See the section on Application Value Options.

An *ALLOBJ user cannot  be prevented from making changes  to the DYNMNU
objects  such as  adding  a new  user  or changing  a  security option.
However,  if an option on a menu  is controlled by security, an *ALLOBJ
user cannot access the option unless he is specifically named.

Application Value Options
-------------------------

The Application Value DYNMNU  in TAASECURE has two options  relative to
group profiles.

  **   Group Profile  Option -  Allows the authorities  for a  group or
       supplemental  group profile to be  used to check authorizations.
       This means the  group profile (or  supplemental group) would  be
       entered as record in the MNUSECP file.

  **   Group Profile  Option 2 - Allows  a group or  supplemental group
       name  to be  entered in  the  user file  and not  the individual
       members of the  group.  If  this option is  used, the user  does
       not have  to have  an individual  user record.   All members  of
       the group would receive the same menu.

If you  use group profiles and  want to simplify the  number of entries
in  the Dynamic  Menu files, you  would normally specify  *YES for both
options.

To allow for  these functions, an  *ALLOBJ special authority user  must
make a change the supplied Application Value in TAASECURE.

            EDTAPPVAL     APPVAL(TAASECURE/DYNMNU)

          First option - Group Profile Option
          -----------------------------------

This  option  was implemented  first  and  controls the  authorizations
entered into MNUSECP (and not user record in MNUUSRP).

Change the 'Group profile option' to *YES.

You  may  now  enter  the group  profile  name  (or  Supplemental Group
Profile  name)  as   a  record  in  the   MNUSECP  file  as   described
previously.

For  example,  assume  everyone  in  the  Accounts  Payable  department
should  be able  to access option  2, but  other users also  access the
same menu and  should be prevented  from seeing option 2.   Assume  all
users in  the Accounts Payable  department are all  part of the  ACCPAY
group  profile.   Instead of specifying  each user  name as  a security
record,  you can set the Application  Value to allow group profiles and
then add  one  record for  the  ACCPAY group  profile  to the  security
file.

Setting the Application  Value covers all uses of  checking security by
STRDYNMNU.  It cannot be subset to a specific menu option.

          Second option - Group Profile Option 2
          --------------------------------------

This  option allows entry  of the group  profile name as a  user in the
user file  (MNUUSRP).    *NO is  the  shipped default  meaning  a  user
record must exist for each signed on user.

If *YES is specified,  and the user who attempts  to access the Dynamic
Menu  is  not  found  in  the  MNUUSRP  file,  the  group  profile  and
supplemental groups  are  used to  determine  if a  corresponding  name
exists in the MNUUSRP file.

Processing occurs in order of:

              - The signed on user name
              - The group profile name in the user profile
              - The supplemental group profiles in the user
                  profile in the order they are specified

The  first   successful  match  determines   the  menu  that   will  be
displayed.

The group  profile used (if  any) is recorded  in the MNUHSTP  file and
can be displayed by DSPDYNMNU or ANZDYNMNU.

Holding an Option
-----------------

The  Administrator may  'Hold' an  option to  prevent its  use.   If an
option is held,  the user  sees an appropriate  message if he  attempts
to use the option.

Holding  an option  is desirable  if one  or more  of the  objects that
make  up   an  option  must  be  re-created  or  you  are  experiencing
problems.

To hold an Option, the Administrator  uses GO DYNMNU and the option  to
'Maintain menu  records'.  After locating  the proper Menu,  the option
to  Work with the Options  should be selected.   When the Option record
is displayed, enter *YES for the Hold field value.

At that point, no user  can invoke the Option,  but a user may  already
be using  the Option.  To  determine if any  user is using  the option,
use the DSPDYNMNU command.

The alternative to 'Maintain Menu' records, is to use the commands:

             HLDDYNMNUO   Hold Dynamic Menu Option
             RLSDYNMNUO   Release Dynamic Menu Option
             CHKDYNMNUO   Check Dynamic Menu Option

These commands  provide a command solution for  holding, releasing, and
checking  the hold option as opposed  to the interactive solution using
the  displays  of  MTNDYNMNUM.   The  user  of  the  commands  must  be
authorized to change the MNUMSTP file.

Display Dynamic Menu User
-------------------------

The DSPDYNMNUU  command displays  what a user  can do by  following the
chain  of  menus.    One line  prints  for  every  option  that is  not
secured.

Data Base files used
--------------------

There are four main data base files used for control information:

       MNUUSRP      MNUMSTP      MNUDTLP      MNUSECP
      *********    *********    *********    *********
      *       *    *       *    *       *    *       *
      *       *    *       *    *       *    *       *
      *********    *********    *********    *********

      One record   One record   One record   One record
       per user     per menu    per option   per option
                                             per auth user

These files are  all maintained  by the  GO DYNMNU menu  options.   The
MNUUSRP  file is  maintained  by the  'Maintain  user records'  option.
The other  files are maintained by the  'Maintain menu records' option.

The MNUMSTP  and  MNUDTLP  files  also  contain  separate  records  for
language translation.   See the later section on  Language Translation.

Two  other files  are 'output  only' when  use is  made of  the Dynamic
menu.

       MNUHSTP      MNUCMDP
      *********    *********
      *       *    *       *
      *       *    *       *
      *********    *********

      One record   One record
      per option   per command
      used, menu   entered on
      started,     a command line
      etc.

All files are created as part of the CRTDYNMNU command.

The  MNUHSTP file  is standard  and will  contain standard  log entries
such as the beginning  of an option.   You can provide more logging  by
requesting that the completion of a menu option be included.

The MNUHSTP file is processed by three commands which are provided.

   DSPDYNMNU     Displays  the  current  status  of who  is  using  the
                 Dynamic  Menu tool.    The last  entry in  the history
                 file for each user  on the current  day is shown.   If
                 Group Jobs  are being  used, a  record for  each group
                 job is shown.

   ANZDYNMNU     Analyzes   the  history   file   with  a   variety  of
                 selection criteria and allows  sequencing on a  single
                 field.  The intent  of the command is to  provide most
                 of  the  simple   analysis  reports  an  Administrator
                 might be interested in such as:

                      - All options entered by a user by date/time
                      - All users who used a specific option
                      - All options that were ended abnormally
   MTNMNUHST     The  Maintain Menu History  command provides a cleanup
                 command for old records  in the history file  that are
                 no longer needed.

The MNUCMDP  file is always created,  but will only contain  records if
you specify that commands entered on a command line be logged.

The  MTNMNUCMD command is provided  to help provide cleanup  based on a
number of retention days.

You must  consider when to  clear the  data in  these files.   See  the
discussion on History File Cleanup.

Display Dynamic Menu User
-------------------------

The DSPDYNMNUU  command displays  a listing  of the  menus that may  be
accessed  by a  user and  one line for  each option  that may  be used.
Options that are secured  and not authorized are  not displayed.   This
provides a summary of what a user can do.

History Cleanup
---------------

Records will be written  to the MNUHSTP file such as  for the beginning
of a  selected option.  You  may request additional logging  at the end
of  each option and  may log commands  executed from a  command line to
the MNUCMDP file.

Both files need to  be cleared at some point.   The more data you  have
in  the  MNUHSTP  file,  the  slower  the  functions  of  DSPDYNMNU  or
ANZDYNMNU will be.

A  solution would  be to  clear the  files every day  or every  week at
some quiet  point  when  users are  not  using  the Dynamic  Menu.    A
special command  MTNMNUHST is  provided to clean  out old  records from
the  MNUHSTP  file  based  on a  retention  date.    A special  command
MTNMNUCMD is provided to  clean out old records  from the MNUCMDP  file
based on a retention date.

Note that  you cannot clear the  files if an  active user is  using the
Dynamic  Menu  function because  the  files  will be  open.   You  must
select a quiet time when all users are off the function.

Retaining  an online copy  of last weeks history  could be an advantage
in analyzing  usage or  problems.  The  ANZDYNMNU command  can be  used
against any file  by the name of MNUHSTP.   You could make a  copy in a
separate  library and  then  refer to  the library  on ANZDYNMNU.   Use
CRTDUPOBJ to make a duplicate of the file in a different library.

Backup
------

You will need a backup strategy  for the data you have entered and  the
History files.   You  should consider  the library  or libraries  where
you  have created the files  used by the  Dynamic Menu tool  to be like
your own data and treat it accordingly.

Because the History files  (MNUHSTP and MNUCMDP) are  kept open by  the
STRDYNMNU function,  you cannot do  a normal backup  of the files  if a
user is using  the Dynamic Menu function.  You  will need a quiet point
to  backup  the  History files  or  use  the system  Save  While Active
function.

The other  files are opened  for 'read  only' by STRDYNMNU  and can  be
saved at any time the Administrator is not working on them.

Group Jobs
----------

Group  Jobs  offer  a  simple  solution  for  allowing  users  to  have
multiple  functions active.   Group jobs  allow the user  to retain the
performance  benefit  of  keeping  the  programs  and  files  open  for
several  application   functions  without  the  cost   and  programming
complexity of having the entire structure within a single job.

The  Dynamic  Menu  makes  it  very  easy  to  perform  Group  Jobs  by
eliminating a  lot  of  programmer  complexity.    Multiple  levels  of
support  are available  and you  only  need to  make  entries into  the
existing control files to cause the functions to occur.

Depending on  how Group Jobs are  done, they can be  very confusing for
the  end user.  The  Dynamic Menu provides assistance  for the end user
to help minimize  the confusion.   Assistance occurs by sending  status
messages when  group jobs are started  and ended and by  displaying the
name  of  the current  Group Job  on  an Attention  Key  menu.   If the
Attention Key is not valid (not  defined or not allowed for a  specific
option), appropriate status messages are also displayed.

To allow for  all of the flexibility  provided by the system  for Group
Jobs  is  generally  way  beyond  an  end  users  comprehension  level.
However, if  you  keep the  design  fairly simple,  you  can  generally
provide a valuable end user function.

In  this  document,  three  typical  alternatives  will  be  discussed.
There are  many variations that could  be made as well.   Names will be
given  to the  solutions to assist  in comprehending them.   The system
does not use this terminology.

  **   Flip/Flop Group Jobs.   The user just presses the  Attention Key
       to  flip/flop  between  two   Group  Jobs.    No  Attention  Key
       handling menu is used.

  **   Primary/Secondary  Group  Jobs.    A  primary  Group  Job exists
       which contains a  menu of  standard functions  (such as  DSPMSG)
       which  are done  in  the  primary job.    Other  options on  the
       Primary  menu are  done  using Secondary  Group Jobs.    When an
       option is  requested  that causes  a  Secondary Group  Job,  the
       Group  Job  is  transferred to.    When  the  user  presses  the
       Attention Key  in the Secondary Group Job,  he always returns to
       the  Primary.   No Attention  Key menu  is used.   The Attention
       Key is not valid in the Primary Group Job.

  **   Attention Key  Handling Menu  Group  Jobs.   The same  Attention
       Key Handling Menu  exists in any Group Job and  the user sees it
       when  he presses the Attention  Key.  He may  transfer to any of
       the Group Jobs on the menu.

Later sections describe how to implement these basic approaches.

To allow  the Group  Job function  to be  performed,  the Dynamic  Menu
tool reserves  the last 150  bytes of the  Group Job data  area (*GDA).
These are bytes 363-512.

Group Jobs - Attention key - Dynamic Menu Support
-------------------------------------------------

Switching  to a  Group Job  with an  Attention Key  is like  the System
Request function  of signing  onto a  secondary job  with  a few  major
exceptions.  The following describes the basic system support:

  **   Up to 16 group jobs are supported.

  **   No signon is required.

  **   The Attention  Key  can only  be pressed  when  the keyboard  is
       open for  input.  The System  Request key can be  pressed at any
       time  to interrupt an application.   Consequently, the Attention
       Key  is  a  lot  safer   to  use  in  terms  of   protecting  an
       application.

  **   Some system  functions (such as  DSPMSG) prevent the use  of the
       Attention  Key by  masking its  use.  There  is no  message that
       occurs if the Attention Key is  masked or not defined.  The  key
       is inoperative.

  **   The  users current  environment (such  as the  library list)  is
       copied when the Group Job is started.

  **   Signoff  is not required  for each Group  Job.  When  any of the
       Group jobs  does  a SIGNOFF,  all  jobs  in the  Group  will  be
       ended.

  **   The  Attention   Key  handling   program  is  invocation   level
       sensitive  (similar  to  Override  commands).   If  you  call  a
       program,  it can change  the program that is  called or mask off
       (prevent) the  use of  the  Attention key.   When  a program  is
       called,  the  system  saves   the  name  of  the  Attention  Key
       handling  program.    When the  program  ends,  the  system will
       automatically reset the Attention Key handling program.

In addition to  the system  restriction that the  Attention Key  cannot
be pressed  when the  keyboard is unlocked,  the Dynamic  Menu provides
additional  protection and  feedback.   By  default, the  Attention key
will not be  usable if the  Group Job has  any locked  records.  If  it
does, the user  will see an  appropriate status message for  2 seconds.

A menu  option can be  totally masked from allowing  the Attention key.
You  would use this  function if you  wanted to make  sure the end user
completed the  option  and was  back  at the  menu before  allowing  an
interrupt.   If you have  masked the Attention  Key and it  is pressed,
the user will see an appropriate status message for 2 seconds.

Note  that the user  does not have to  be on a  menu when the Attention
Key is pressed.   The user can be several  screens or programs into  an
application when  a need  arises to  switch to  a different group  job.
When the user switches back, the same screen will be displayed.

Use with Application Functions that use the Attention Key
---------------------------------------------------------

Most application  functions that use the Attention  Key will be invoked
from a menu option.  You will  not have access to the Dynamic Menu  use
of the  Attention Key  if the  application uses  the SETATNPGM  command
and names  a program or masks off  the use of the key.   On return, the
system will reset it to the definition set by the Dynamic Menu.

If  you are using the  office function (STROFC) as an  an option from a
Dynamic Menu, Office  uses the SETATNPGM  command.  Office  establishes
a Group  Job by the  name of QUOPT.   You may  define Option 50  on the
Office menu to transfer to a Dynamic Menu Group Job.

Flip/Flop Group Jobs
--------------------

This  simple approach allows  the end user  to press  the Attention Key
to flip/flop between  two Group Jobs.   The only  function you need  to
specify is  *FLIPFLOP in the Attention  Key handling field of  the user
record.   The  name DYNMNU1  must be used  in the  User record  for the
'Default group job  name' (it is  the default).   The second group  job
that is started will be given the name DYNMNU2.

You  cannot  have  any other  Group  Jobs  active  with  the  Flip/Flop
solution  (do not attempt  to mix this  solution with an  Attention Key
handling program).

When  the user first  presses the Attention Key,  a status message will
appear stating that a Group  Job is being started.  A  standard program
is used to  execute STRDYNMNU.  The user would see  his initial menu as
defined in the User record.

When  Attention  is pressed  again, the  Dynamic  Menu function  does a
transfer back  to the  first job.   The  first job  continues where  it
left  off.    If  Attention  is   pressed  again,  the  second  job  is
transferred  to where  it left off.   No  status message occurs  if the
group job has already been started.

If the  user presses  F3  on the  initial menu  of  the second  job,  a
message is  displayed stating  that the  job is ending  and a  transfer
occurs  back to  the first  job.   If Attention  is pressed  again, the
second job will be be started again and transferred to.

Obviously,  there  is more  overhead in  starting a  Group Job  than in
transferring to an  existing Group Job.   Users should  be told not  to
end the Group Jobs unless they do not plan to go back.

You can  control by  Option whether  the Attention Key  is valid.   The
default  is  to  check  if  any  locked  records  exist  and prevent  a
transfer if  they do.   You  may have  certain options  where the  user
should complete the option before being allowed to transfer.

Primary/Secondary Group Jobs
----------------------------

The Dynamic Menu tool  allows you to define a menu where  an option can
be  defined to be  executed in  a Group Job.   For example,  assume you
define a menu named PRIMARY with options to:

          - Display messages
          - Use a group job for PAYMNU (menu of payables functions)
          - Use a group job for RCVMNU (menu of receivables functions)
          - Use a group job for INQ1 (a standard inquiry program)

When you define  the PRIMARY  menu, no  special entries  are needed  to
identify it as a Primary Group Job.

The options for the PRIMARY menu would be entered such as:

    Option   Descrp     Sub menu   Command        Group job name
    ------   ------     --------   -------        --------------

      01     DSPMSG                DSPMSG             *NONE
      02     ACCPAYABL  PAYMNU                        PAYGRP
      03     ACCRCVABL  RCVMNU                        RCVGRP
      04     INQ1                  CALL xxx           INQGRP

You can  use the  same Group  Job names  as menu  names, but  different
names  are  used in  this  example  to assist  in  understanding.   The
'Descrp'  field is  only used  for internal  use (not  seen by  the end
user)  and  can  be  any  value  you  want  to  make   the  entry  more
understandable.

The  PAYMNU  and  RCVMNU  menus  would be  defined  normally  plus  the
special  value *TFRPRV  as the Attention  Key Handling  function.  This
specifies  that  if  the  Attention  Key  is  pressed,  the  Group  Job
transfers back to the previously active Group Job.

The PRIMARY menu would  use the default of *USER  for the Attention Key
and  the  user  record  would  specify  *NONE.    This means  that  the
Attention Key cannot be  used to transfer from  the PRIMARY menu.   The
user must  enter an option  to transfer to  a Group Job.   It  would be
possible  to define  the  Attention Key  for  MENUE as  *TFRPRV.   This
would  mean to  transfer to  the most  recently active  Secondary Group
Job.  If no Group Job was active, a special message would occur.

The INQGRP does not use  STRDYNMNU.  It specifies that some  command be
executed (in  this case  a CALL).   Because a  Group Job  is specified,
the Dynamic  Menu will establish a Group Job by  the name of INQGRP.  A
specific program is assigned  to the Attention Key  that does the  same
function as  *TFRPRV (it just transfers  back to the  previously active
Group Job).

The *TFRPRV  function transfers back to the  most recently active Group
Job.   In  the case  of  the Primary/Secondary  approach,  this  always
means to transfer back to the Primary Group Job.

The Group Job names will  be seen by the user in status  messages.  The
first  job that  performs a Transfer  to a  Group Job  must be  given a
name  as a Group Job.  The Dynamic  Menu tool handles this by using the
value assigned to the user  record (the default is DYNMNU1).   For this
example,  you could change  the User  record to  specify PRIGRP  as the
Default Group Job Name.

In  a typical solution, you  would also want to  specify PRIMARY as the
initial menu  in the  user record.   When  STRDYNMNU  was invoked,  the
user would  see the  PRIMARY menu.   It  would not  become a  Group Job
until the first Group Job option was requested.

Thus the user record would reflect:

          Default menu          PRIMARY
          Default GRPJOB name   PRIGRP

When  Option 01  (DSPMSG) is  used, the DSPMSG  command is  executed in
the same job  as a normal  menu option.   You can  execute any  command
from the PRIMARY  menu.  There are no  restrictions as there are  in an
Attention Key handling program as described in the next solution.

When Option  02 is requested, a  group job named PAYGRP  is started (or
transferred  to).    The  user  would see  the  PAYMNU  menu  and could
perform normal functions.

If the user presses the  Attention Key at that point, the  Dynamic Menu
will transfer  back to the Primary  Group Job.  The  picture would look
like this:

       Primary Group Job       Secondary Group Jobs
       -----------------       --------------------

                                    PAYGRP
                                  ***********
                          ....... * PAYMNU  *
            PRIGRP        .       ***********
         ************     .
         *          *     .         RCVGRP
         * PRIMARY  * .....       ***********
         *          *     ....... * RCVMNU  *
         ************     .       ***********
                          .
                          .         INQGRP
                          .       ***********
                          ....... *  INQ1   *
                                  ***********

The  Secondary Group  jobs cannot transfer  to each  other.   This is a
fairly  simple  approach  to  comprehend  and  use.    The  user  would
normally see the same  set of menus that he would use  if all functions
were  handled in a single  job.  The  advantage is he does  not have to
'back out' of one  application (such as 'payables')  to perform a  task
in another application (such as 'receivables').

The disadvantage  is that if the  user is in  the PAYGRP Group  Job and
wants to go  to the RCVGRP Group Job, it  takes two Group Job transfers
to  get  there.   However,  this is  not  as significant  a performance
consideration as  it  may  appear.   See  the  discussion in  the  next
section.

The major  cost overhead to  be avoided is  not the Group  Job transfer
time,  but  rather the  start  up time  for  a  new Group  Job  and the
overhead of getting the application files open, etc.

You could minimize the  start up time by  ensuring that it only  occurs
once.   You would do  this by preventing the  user from ending  a Group
Job.   For the PAYMNU and RCVMNU menus, you  could just prevent the use
of F3 and F12 (a *YES/*NO field in  the Menu record).  The only way  to
end the  job would  be to  return to  the Primary  Group Job  and do  a
Signoff.   The system ends all  of the Group Jobs  when Signoff occurs.
The  INQ1 program would have to  be coded so that  it did not offer the
user a choice of ending.

To improve the  performance of the solution,  it would be desirable  to
code the  major menu options so  that the program caused  by the option
does  a return without closing  the files or program.   In general, you
should find that the Group Job  transfer time is small compared to  the
time it  takes to  start a Group  Job and  begin the  application (open
the files etc.).

Attention Key Handling Menu Group Jobs
--------------------------------------

The  major disadvantage of  the Primary/Secondary approach  is that the
user must  make two  Group Job  transfers to  move  from one  Secondary
Group Job to  another.  You can  eliminate this by having  an Attention
Key handling  menu that allows the  user to transfer to  any Group Job.
The  disadvantage of this  is that the  user sees more  displays and it
can result in more confusion.

What appears to be a  performance advantage of this solution is  not as
significant  in  actual  practice.    When an  Attention  Key  handling
program  puts up a  display, the current  display must be  saved by the
system.  If  the user selects  an option to  transfer to another  Group
Job and that  Group Job is already  active, the program that  is active
is  the Attention Key  handling program for  the other Group  Job.  The
system must  end the  Attention Key  handling program  and restore  the
application  display  that  was  interrupted.    Saving  and  restoring
screens  is  not a  high  performing  solution  particularly on  remote
displays.

The  simplest form  of the  Attention Key  Handling approach is  to use
the same Attention  Key handling menu in  every Group Job.   Instead of
using  the menu named  PRIMARY in  the Primary/Secondary  solution, the
name  of the menu  would be  changed to ATNKEY.   The  menu could offer
the same options.

You must be careful with an  option like DSPMSG which will be  executed
in  the same  job where  the  Attention Key  is  pressed and  not in  a
unique  Group Job.   The  system recommends  only simple  commands like
DSPMSG.  See the Work Management Guide for further discussion.

To code the ATNKEY  menu, you would use  the same entries as  described
for the PRIMARY menu in the Primary/Secondary example.

The user needs some initial  menu when STRDYNMNU is used.   It would be
typical to choose  the menu where the user does  most of his work from.
Assume  that you will use the PAYMNU menu  for this.  PAYMNU is already
defined  for  the  ATNKEY  menu  as  invoking  the  Group  Job  PAYGRP.
Therefore, you would  need to change the User  record to specify PAYMNU
as the initial menu

To  specify that the ATNKEY menu be  the Attention Key Handling program
is also done in  the User Record.   You would  also need to change  the
name of the  Default Group Job name  in the User record  to PAYGRP (the
name specified as the Group Job name of the PAYMNU menu).

Thus the user record would reflect:

          Default menu          PAYMNU
          Attn key handling     ATNKEY
          Default GRPJOB name   PAYGRP

When  the  user invokes  STRDYNMNU  the initial  menu  PAYMNU  would be
displayed.  When the  Attention Key is pressed,  the ATNKEY menu  would
be displayed.   If the user  chose an option  that caused a  group job,
it would be started and the user would be transferred to the menu.

When  the  Attention key  was  pressed,  the user  would  see the  same
ATNKEY  menu as in the first Group Job.   If the user chose Option 2, a
transfer would occur back to the PAYGRP job.

Changing a Menu or Option
-------------------------

If you change or  delete a menu name  (using GO DYNMNU) in  the MNUMSTP
file, the corresponding  records in the MNUDTLP and  MNUSECP files will
also be changed or deleted.

If  you change  or delete  an option  number (using  GO DYNMNU)  in the
MNUDTLP file, any  corresponding records  in the MNUSECP  will also  be
changed or deleted.

If you change or  delete the name of a  user, any corresponding records
in the MNUSECP file will not be changed.

Implementation approach
-----------------------

When STRDYNMNU  is used, a single  CL program is placed  in the program
stack.   The  CL program  is  used to  display  the menu,  execute  the
options, etc.

All data  base accesses  are done  using a standard  RPG program  which
returns  data  in  a large  data  structure.    In  order to  be  truly
'dynamic',  the RPG  program is called  each time a  menu is displayed.
Thus a user could  take an option on a  menu and find the menu  changed
on  return.   The RPG  program  remains open  until the  CL program  is
ended.

The  CL program uses the information in  the data structure to set user
and menu level options.  It  then displays the menu and waits for  user
input.  If the  selected option requires a command  be run, the command
is  executed using QCMDEXC  and the same  menu is displayed  again.  If
the option requires a sub-menu, the  RPG program is called and  returns
with the new menu information.

The CL program  keeps a stack of active  menus and returns to  the next
menu in the  stack when a sub-menu ends.  There is  a limit of 20 menus
in the stack.

All   logging  is  done  using  a   separate  RPG  program  which  uses
SEQONLY(*NO)  to force  each  entry to  the  history  files.   The  RPG
program remains open until the CL program is ended.

A  separate  RPG program  is  used to  write  messages  to the  message
subfile.

If  an Attention Key handling  menu is requested, the  name of the menu
is stored in  the Group  Data Area  (*GDA).  The  STRDYNMNU command  is
executed  again which  causes a  second version  of the  CL program  to
come  into the program stack.   It uses  a unique display  file and RPG
message subfile program.   The same RPG program  is used for data  base
accesses.   The  second version  of the  CL program  determines how  to
handle the request and then returns to the previous display.

If a  group job is  requested, the group  job information is  passed in
the  Group Job data area and used  by standard programs in the separate
Group Job.

Commands and Menus provided
---------------------------

The only command provided for end users is STRDYNMNU:

   STRDYNMNU     Invokes the Dynamic Menu.

The following menu is provided for the Administrator.

   GO DYNMNU     Invokes the Administrator's Menu which.

The following  commands  are  on the  Administrator's  menu or  can  be
invoked separately.

   CRTDYNMNU     Creates  the  data  base  files used  by  the  Dynamic
                 Menu.

   DSPDYNMNU     Provides  a simple display  or listing  of the current
                 status of each user using the Dynamic Menu.

   ANZDYNMNU     Provides simple queries  against the  history file  to
                 assist in managing the Dynamic Menu system.

   MTNDYNMNUM    Maintains  the  MNUMSTP  file  of menu  records.    It
                 allows  access to maintain the  MNUDTLP file of option
                 records.   An option  from  the subfile  display  will
                 access a  program that maintains  the MNUSECP  file of
                 security records.

   DUPDYNMNU     Duplicates  an  existing  menu and  all  corresponding
                 records  to  a  new menu  name.   The  command  can be
                 useful when you want  to create a new menu  where most
                 of  the  information  will  be  identical.    You  can
                 duplicate  from  a  set of  files  in  one  library to
                 another if properly authorized.

   MTNDYNMNUU    Maintains the MNUUSRP file of user records.

   CPYDYNMNUU    Copies a  user record  in the  MNUUSRP file  to a  new
                 name.   Also copies any  security records  and changes
                 to the new name.

   DSPDYNMNUU    Displays  a  list  of menus  that  a  user can  access
                 beginning with his initial menu.   One line is  listed
                 for each available  option.  If the option  is secured
                 and  the  user   is  not  authorized,  the  option  is
                 bypassed.

   CHKDYNMNUU    Checks  the users defined for  the dynamic menu system
                 to see  if they  still  exist and  describes the  last
                 signon date/time.

   TSTDYNMNU     Tests a Dynamic Menu for a specified user.

Note  that no  commands  exist  to print  the  Command logging  history
(MNUCMDP)  nor  the  control  files  (MNUUSRP,  MNUMSTP,  MNUDTLP,  and
MNUSECP).  For a simple listing function, consider either:

  **   DSPDBF TAA Tool.  Front end to RUNQRY.

  **   PRTDB TAA  Tool.   Provides a  generalized  print program  which
       allows printing of one or more fields.

The following  commands allow batch interfaces  to the options  for the
functions performed by MTNDYNMNUU.

   ADDDYNMNUU    Adds  a user record  to the MNUUSRP  file.  This  is a
                 command   interface   instead   of   the    MTNDYNMNUU
                 interactive interface.

   CHGDYNMNUU    Changes a user  record in the  MNUUSRP file.   This is
                 a   command  interface   instead  of   the  MTNDYNMNUU
                 interactive interface.

   DLTDYNMNUU    Deletes  a user record  in the MNUUSRP  file.  This is
                 a  command   interface  instead   of  the   MTNDYNMNUU
                 interactive interface (maintains user records).

   RTVDYNMNUU    Retrieves  the attributes  of a  user record  from the
                 MNUUSRP file.

The  following commands allow  batch interfaces to the  options for the
functions performed by MTNDYNMNU (maintains menu records).

   ADDDYNMNUM    Adds a menu  record to the  MNUMSTP file.   This is  a
                 command   interface   instead    of   the   MTNDYNMNUM
                 interactive interface.

   CHGDYNMNUM    Changes  a menu record in  the MNUMSTP file.   This is
                 a  command   interface  instead   of  the   MTNDYNMNUM
                 interactive interface.

   DLTDYNMNUM    Deletes a  menu  record in  the MNUMSTP  file and  any
                 options and  security information associated  with the
                 menu.    This is  a command  interface instead  of the
                 MTNDYNMNUM interactive interface.

   RTVDYNMNUM    Retrieves the  attributes of  a menu  record from  the
                 MNUMSTP file.

   HLDDYNMNUO    Holds  a menu  option.   This is  a  command interface
                 instead of the MTNDYNMNUM interactive interface.

   RLSDYNMNUO    Releases  a menu option.  This  is a command interface
                 instead of the MTNDYNMNUM interactive interface.

   CHKDYNMNUO    Checks if a menu option  is held.  If so, the  TAA9891
                 message is sent as an escape.

The following special command is used for reformatting.

   RFMDYNMNU     Reformats the files for field additions.

CRTDYNMNU command parameters                          *CMD
----------------------------

   DYNMNULIB     The library where the data base files will exist.

   SRCLIB        The  source library  of the  DDS source.   *TAAARC  is
                 the  default   to  access  the  source  from  the  TAA
                 Archive.  A specific library  may also be used if  you
                 have  first copied  the  source  from the  Archive  to
                 your library.   The source  file name QATTDDS  must be
                 used.

STRDYNMNU command parameters                          *CMD
----------------------------

   MENU          The  menu that will  first be displayed.   The default
                 is *USER which means  the menu specified for  the user
                 record in MNUUSRP.

   DYNMNULIB     The library where the data base files will exist.


MTNDYNMNUU command parameters                         *CMD
-----------------------------

   USER          The  'Position To-  user.   If specified,  the subfile
                 will  begin with  that  user.   If blank,  the subfile
                 begins with the first user in the file.

   DYNMNULIB     The library where the data base files will exist.

MTNDYNMNUM command parameters                         *CMD
-----------------------------

   MENU          The 'Position  To- menu.   If  specified, the  subfile
                 will  begin with  that menu.   If  blank, the  subfile
                 begins with the first menu in the file.

   DYNMNULIB     The library where the data base files will exist.

DUPDYNMNU command parameters                         *CMD
----------------------------

   MENU          The menu to be duplicated.

   NEWMENU       The  new menu  name to  be  used.   The menu  must not
                 exist in the  MNUMSTP file in  the 'To' menu  library.

   FROMMNULIB    The  library where  the  data  base files  exist  that
                 contain the menu to be duplicated.

   TOMNULIB      The  library  where the  data  base  files exist  that
                 will contain the new menu.

DSPDYNMNU command parameters                         *CMD
----------------------------

   DYNMNULIB     The library where the data base files will exist.

   NONACT        Lets   you  control  whether   non-active  users  will
                 appear in the display or listing.

                 *EXCLUDE is the  default which  means the output  will
                 only  contain users  that are  using the  Dynamic Menu
                 for the current day.

                 If  a Group Job is ended  via signoff, no entry exists
                 that states the  Dynamic Menu  was ended.   Therefore,
                 a  certain  amount  of  'noise'  from  Group  Jobs  is
                 considered normal.

                 *INCLUDE allows  you to see the  current status of all
                 users who have used the  Dynamic Menu for the  current
                 day.

   OUTPUT        The standard  system function  for whether the  output
                 will be displayed or printed.

ANZDYNMNU command parameters                         *CMD
----------------------------

The first  set of parameters  allow selection.  The  defaults allow all
the  data  to be  included.   You  may  specify one  or  more selection
criteria.

   WRKSTN        The  Work Station  name  (Job  name) to  be  included.
                 The default is *ALL.

   USER          The User  name to be  included.  The default  is *ALL.

   JOBNBR        The  Job Number to be included.   The default is *ALL.

   MENU          The Menu name  (that assigned  to a  Dynamic menu)  to
                 be included.  The default is *ALL.

   OPTION        The Option  ID to be included.   The default  is *ALL.

   DESCRP        The  Option description to  be included.   The default
                 is *ALL.

   ACTION        The 2 character  code assigned  to each  record.   The
                 default is *ALL.

                 The possible values are:

                       BD  Begin Dynamic Menu
                       ED  End Dynamic Menu
                       BM  Begin menu
                       BO  Begin option
                       EN  End option normal
                       EA  End option abnormal

                 The EN  and  EA values  will only  exist  if you  have
                 requested  logging of the  completion of  each option.

   FROMDATE      The  'from date' in the form  of CYYMMDD.  The default
                 is *FIRST meaning the first record in the file.

   TODATE        The 'to  date' in the  form of  CYYMMDD.  The  default
                 is *LAST meaning the last record in the file.

   FROMTIME      The 'from  time' in the  form of HHMMSS.   The default
                 is *FIRST meaning the first record in the file.

   TOTIME        The  'to time' in the form of  HHMMSS.  The default is
                 *LAST meaning the last record in the file.

The next parameter controls the sequence of the output.

   SEQ           The  sequence  of  the   listing.    The  default   is
                 *DATETIME  which  is  the   same  order  the  data  is
                 written to the file.

                 The other options are:

                      *WRKSTN    The workstation name (job name)
                      *USER      The user name
                      *JOBNBR    The job number
                      *MENU      The menu name (Dynamic Menu name)
                      *OPTION    The Option ID
                      *DESCRP    The Option description
                      *ACTION    The action (entry) code

                 Since the  data in the file  is in date/time sequence,
                 an  option  like  *USER   will  always  sequence   the
                 records within user by date and time.

The last option is the library containing the data:

   DYNMNULIB     The library where the data base files exist.

ADDDYNMNUU command parameters                        *CMD
-----------------------------

   USER          The user to a add a record for.

   DFTMNU        The default  menu to  be used  if STRDYNMNU(*USER)  is
                 specified.

   LANG          The  language attribute.   The default  is blank.   If
                 you  have a  single language, leave  this field blank.

                 For multiple  languages, see  the tool  documentation.

   BGNCMD        The  command to be  executed prior  to the  first menu
                 being  displayed.  You can use  this for a unique user
                 function such  as  setting  the  library  list.    The
                 default is *NONE.

   ENDCMD        The  command  to  be executed  when  a  return  occurs
                 using F3  or F12 from the first  menu displayed to the
                 user.   The  command will  be  executed if  an  option
                 causes a Signoff.  The default is *NONE.

   ATNKEY        The action to  be performed when the Attention  key is
                 pressed.  The default is *NONE for no action.

                 *FLIPFLOP may  be entered to change to  a second group
                 job in a flip-flop manner.

                 A  dynamic  menu  name  may be  entered  to  display a
                 menu.   Menus  which  can  be accessed  using  the  GO
                 command are not supported.

   DFTGRP        The  default group  job name  assigned to  the current
                 job  if  the  user selects  an  option  that  causes a
                 group job.  The default is DYNMNU1.

   LOGCMD        A *NONE,  *YES, or  *MENU option  for  whether to  log
                 the  commands  run  from the  optional  command  line.
                 The default is *NONE.

                 *YES  may be  specified to log  commands run  from the
                 command line.

                 *MENU  may  be   specified  to  use   the  option   as
                 described for the menu.

   CMDLIN        A *NONE, *YES,  or *MENU option for whether  a command
                 line  will  be   displayed.    *NONE  is  the  default
                 meaning a command line will not appear.

                 *YES  may  be  entered  to  cause  a  command  line to
                 appear so the user may enter commands.

                 *MENU  may  be   entered  to  mean  the   menu  record
                 controls whether a command line will be displayed.

   LOGOPT        Whether to  log the beginning  and end of  each option
                 the  user enters.   *BGN  is the default  meaning that
                 logging occurs when  the user  enters the option,  but
                 not when the option is completed.

                 *BGNEND means that  logging occurs when the  option is
                 entered and when it is completed.

   SYSNAM        A  *YES  or *NO  option  for whether  the  system name
                 will be be  displayed on  all menus.   The default  is
                 *YES to display the system name.

                 *NO may be  specified to prevent the system  name from
                 being displayed.

   DATTIM        A  *YES or  *NO option  for  whether the  current date
                 and  time  will  be  displayed  on  all  menus.    The
                 default  is *YES  to  display  the  current  date  and
                 time.

                 *NO may  be specified to prevent the  current date and
                 time from being displayed.

   MSGF          The  name of the  message file to be  used to override
                 the messages  from  the QCPFMSG  message file.    This
                 allows  for  message  translation.    The  default  is
                 *NONE.

   MSGFLIB       The  name of the  message file  library to be  used to
                 override the messages from  the QCPFMSG message  file.
                 This allows for  message translation.  The  default is
                 *NONE.

   DYNMNULIB     The library where the data base files exist.

CHGDYNMNUU command parameters                        *CMD
-----------------------------

   USER          The user record to changed.

   DFTMNU        The  default menu  to be  used if  STRDYNMNU(*USER) is
                 specified.  The default is *SAME.

   LANG          The  language attribute.   The  default is  *SAME.  If
                 you have a single language, use the default.

                 For multiple  languages, see  the tool  documentation.

   BGNCMD        The  command to be  executed prior  to the  first menu
                 being  displayed.  You can use  this for a unique user
                 function such  as  setting  the  library  list.    The
                 default is *SAME.

   ENDCMD        The  command  to  be executed  when  a  return  occurs
                 using F3  or F12 from the first  menu displayed to the
                 user.   The  command will  be  executed if  an  option
                 causes a Signoff.  The default is *SAME.

   ATNKEY        The action to  be performed when the Attention  key is
                 pressed.  The default is *SAME.

                 *NONE  may may be  entered to  prevent an  action when
                 the Attention key is pressed.

                 *FLIPFLOP  may be entered to  change to a second group
                 job in a flip-flop manner.

                 A dynamic  menu  name  may  be entered  to  display  a
                 menu.

   DFTGRP        The  default group  job name  assigned to  the current
                 job  if  the  user selects  an  option  that  causes a
                 group job.  The default is *SAME.

   LOGCMD        A *NONE, *YES, *MENU, or  *SAME option for whether  to
                 log the commands  run from the optional  command line.
                 The default is *SAME.

                 *NONE may be be specified to prevent logging.

                 *YES  may be  specified to log  commands run  from the
                 command line.

                 *MENU  may  be   specified  to  use   the  option   as
                 described for the menu.

   CMDLIN        A *NONE,  *YES, *MENU, or  *SAME option for  whether a
                 command  line  will   be  displayed.    *SAME  is  the
                 default.

                 *NONE  may be entered to mean  a command line will not
                 appear.

                 *YES  may  be entered  to  cause  a  command  line  to
                 appear so the user may enter commands.

                 *MENU  may   be  entered  to  mean   the  menu  record
                 controls whether a command line will be displayed.

   LOGOPT        Whether  to log the  beginning and end  of each option
                 the user enters.  *SAME is the default.

                 Enter *BGN to mean that  logging occurs when the  user
                 enters  the  option,  but  not   when  the  option  is
                 completed.

                 *BGNEND means  that logging occurs when  the option is
                 entered and when it is completed.

   SYSNAM        A *YES, *NO,  or *SAME option  for whether the  system
                 name will be be  displayed on all menus.   The default
                 is *SAME.

                 *YES may be specified to display the system name.

                 *NO may  be specified to prevent the  system name from
                 being displayed.

   DATTIM        A  *YES, *NO, or *SAME  option for whether the current
                 date and  time will be  displayed on  all menus.   The
                 default is *SAME.

                 *YES  may be  specified  to display  the current  date
                 and time.

                 *NO  may be specified to prevent  the current date and
                 time from being displayed.

   MSGF          The name of  the message file to  be used to  override
                 the  messages from  the  QCPFMSG message  file.   This
                 allows  for  message  translation.    The  default  is
                 *SAME.

   MSGFLIB       The name of  the message  file library to  be used  to
                 override the messages  from the QCPFMSG  message file.
                 This allows  for message translation.   The default is
                 *SAME.

   DYNMNULIB     The library where the data base files exist.

DLTDYNMNUU command parameters                        *CMD
-----------------------------

   USER          The user record to deleted.

   DYNMNULIB     The library where the data base files exist.

RTVDYNMNUU command parameters                        *CMD
-----------------------------

   USER          The user record to retrieved.

   DFTMNU        The  default menu  to be  used.   This is  an optional
                 parameter that  if  used must  be  specified as  *CHAR
                 LEN(10).

   LANG          The  language   attribute.     This  is   an  optional
                 parameter  that  if used  must be  specified  as *CHAR
                 LEN(1).

   BGNCMD        The command to  be executed  prior to  the first  menu
                 being displayed.   This is an optional  parameter that
                 if used must be specified as *CHAR LEN(100).

   ENDCMD        The  command  to  be  executed  when  a return  occurs
                 using F3 or F12 from  the first menu displayed to  the
                 user.   This  is an  optional parameter  that if  used
                 must be specified as *CHAR LEN(100).

   ATNKEY        The action  to be performed when the  Attention key is
                 pressed.   This is an  optional parameter that if used
                 must be specified as *CHAR LEN(10).

   DFTGRP        The default  group job  name assigned  to the  current
                 job  if  the user  selects  an  option  that causes  a
                 group  job.   This  is an  optional parameter  that if
                 used must be specified as *CHAR LEN(10).

   LOGCMD        The value  for  whether whether  to log  the  commands
                 run  from  the optional  command  line.   This  is  an
                 optional  parameter that if used  must be specified as
                 *CHAR LEN(5).

   CMDLIN        The  value  for  whether   a  command  line  will   be
                 displayed.   This  is an  optional  parameter that  if
                 used must be specified as *CHAR LEN(5).

   LOGOPT        The value  for logging as a user  enters and exits and
                 option.   This is  an optional parameter  that if used
                 must be specified as *CHAR LEN(7).

   SYSNAM        The value  for  whether the  system  name will  be  be
                 displayed  on   all  menus.    This   is  an  optional
                 parameter  that  if used  must be  specified  as *CHAR
                 LEN(4).

   DATTIM        The value for whether the  current date and time  will
                 be  displayed  on all  menus.    This is  an  optional
                 parameter  that  if used  must be  specified  as *CHAR
                 LEN(4).

   MSGF          The name  of the  message file  used to  override  the
                 messages from  the QCPFMSG message  file.  This  is an
                 optional parameter  that if used must  be specified as
                 *CHAR LEN(10).

   MSGFLIB       The   name  of  the  message   file  library  used  to
                 override the messages  from the QCPFMSG message  file.
                 This  is an optional  parameter that  if used  must be
                 specified as *CHAR LEN(10).

   CHGDAT        The  last change date  of activity on  the user record
                 in the  form  CYMD.   This  is an  optional  parameter
                 that if used must be specified as *CHAR LEN(7).

   DYNMNULIB     The library where the data base files exist.

ADDDYNMNUM command parameters                         *CMD
-----------------------------

   MENU          The name of the menu record to be added.

   LANG          The language  attribute.   The default  is blank.   If
                 you  have a single  language, leave  this field blank.

                 For multiple  languages, see  the tool  documentation.

   TITLE         The title of the menu which will be centered.

   COLUMNS       The number  of columns of  options on  the menu.   The
                 default   is  1  for   a  single  column   where  each
                 description can be up to 60 bytes.

                 2  may  be  entered  for a  double  column  of options
                 where each description can be up to 30 bytes.

   CMDLIN        A *NONE  or *YES  option  for whether  a command  line
                 will  be displayed.   *NONE is  the default  meaning a
                 command line will not appear.

                 *YES  may  be  entered  to  cause  a  command line  to
                 appear so the user may enter commands.

   UNADOPT       Whether  to  run  the   commands  from  the   optional
                 command  line  without  the  program  adopt  function.
                 *YES  is  the  default  meaning  any  command  entered
                 would be  run  as  the  user  profile  who  signed  on
                 without any benefit of the program adopt function.

                 *NO may  be specified  to run  any commands  including
                 any program adopt function.

   BGNCMD        The  command to be  executed prior  to the  menu being
                 displayed.    You  can  use  this  for  a  unique user
                 function  such as  setting  the  library  list.    The
                 default is *NONE.

   ENDCMD        The  command  to  be  executed when  a  return  occurs
                 using  F3 or F12 from  the menu.   The command will be
                 executed if an option causes  a Signoff.  The  default
                 is *NONE.

   ALWF3         A *YES or  *NO option for whether F3 will  be valid on
                 the menu  to be used as an exit.   The default is *YES
                 to allow F3.

                 *NO may be specified to prevent the use of F3.

   ALWF12        A *YES or  *NO option  for whether F12  will be  valid
                 on the  menu to be  used as an  exit.  The  default is
                 *YES to allow F12.

                 *NO may be specified to prevent the use of F12.

   ATNKEY        The action  to be performed when the  Attention key is
                 pressed.   The default is  *USER meaning the group job
                 function assigned to the user record.

                 *FLIPFLOP may be entered  to change to a  second group
                 job in a flip-flop manner.

                 *TFRPRV  may be  entered to  transfer to  the previous
                 group job.

                 A  dynamic  menu  name may  be  entered  to  display a
                 menu.

   LOGCMD        A  *USER  or  *YES  option  for  whether  to  log  the
                 commands  run from  the optional  command  line.   The
                 default  is *USER  which means the  value in  the user
                 record determines whether logging occurs.

                 *YES may be  specified to  log commands  run from  the
                 command line.

   LOGOPT        Whether to  log the beginning  and end of  each option
                 the  user enters.   The default  is *USER  meaning the
                 value  in  the  user  record  determines  what logging
                 will occur.

                 *BGN may  be entered to  cause logging  when the  user
                 enters  the  option,  but   not  when  the  option  is
                 completed.

                 *BGNEND  may  be  entered to  cause  logging  when the
                 option is entered and when it is completed.

   ERROPT        The type  of  error  handling  to be  provided  if  an
                 option fails.

                 *NONE  is   the  default  meaning  no   special  error
                 handling is provided.

                 *MSG may  be entered to cause a  message to be sent to
                 the name  of  the  message  queue  specified  for  the
                 ERRMSGQ parameter.

                 *JOBLOG   may   be   entered    to   cause   DSPJOBLOG
                 OUTPUT(*PRINT).  See the ERROUTQ parameter.

                 *ALL  may  be  entered  to  cause both  the  *MSG  and
                 *JOBLOG function.

   ERRMSGQ       The   name  of  the  message   queue  to  be  used  if
                 ERROPT(*MSG) is specified.

   ERRMSGQLIB    The name of  the message queue  library to be used  if
                 ERROPT(*MSG) is specified.

   ERROUTQ       The  name   of  the  output   queue  to  be   used  if
                 ERROPT(*JOBLOG) is specified.

   ERROUTQLIB    The  name of  the output queue  library to  be used if
                 ERROPT(*JOBLOG) is specified.

   DYNMNULIB     The library where the data base files exist.

CHGDYNMNUM command parameters                         *CMD
-----------------------------

   MENU          The name of the menu record to be changed.

   LANG          The language attribute.   The  default is  *SAME.   If
                 you have a single language, use the default.

                 For multiple  languages, see  the tool  documentation.

   TITLE         The  title of the  menu which  will be centered.   The
                 default is *SAME.

   COLUMNS       The number of  columns of  options on the  menu.   The
                 default is *SAME.

                 Enter 1  for a  single column  where each  description
                 can be up to 60 bytes.

                 Enter  2 for  a double  column  of options  where each
                 description can be up to 30 bytes.

   CMDLIN        A  *NONE, *YES, or *SAME  option for whether a command
                 line will be displayed.  *SAME is the default.

                 *NONE may be entered  to mean a command line  will not
                 appear.

                 *YES  may  be  entered  to  cause a  command  line  to
                 appear so the user may enter commands.

   UNADOPT       Whether   to  run  the   commands  from  the  optional
                 command  line  without  the  program  adopt  function.
                 *SAME is the default.

                 Enter *YES  to mean any  command entered would  be run
                 as  the   user  profile  who  signed  on  without  any
                 benefit of the program adopt function.

                 *NO may  be specified  to run  any commands  including
                 any program adopt function.

   BGNCMD        The command  to be  executed prior  to the menu  being
                 displayed.   *SAME is the  default.  You  can use this
                 for  a  unique  user  function  such  as  setting  the
                 library list.

                 Enter *NONE if no command is to be executed.

   ENDCMD        The  command  to be  executed  when  a  return  occurs
                 using F3  or F12 from the  menu.  The command  will be
                 executed  if an option causes a  Signoff.  The default
                 is *SAME.

                 Enter *NONE if no command is to be executed.

   ALWF3         A *YES, *NO,  or *SAME option for  whether F3 will  be
                 valid  on  the menu  to  be  used  as  an exit.    The
                 default is *SAME.

                 Enter *YES to allow F3.

                 *NO may be specified to prevent the use of F3.

   ALWF12        A *YES,  *NO, or *SAME option for  whether F12 will be
                 valid on  the  menu  to  be used  as  an  exit.    The
                 default is *SAME.

                 Enter *YES to allow F12.

                 *NO may be specified to prevent the use of F12.

   ATNKEY        The action to  be performed when the Attention  key is
                 pressed.  The default is *SAME.

                 *USER  may  be  entered to  mean  that  the group  job
                 function assigned to the user record will be used.

                 *FLIPFLOP  may be entered to  change to a second group
                 job in a flip-flop manner.

                 *TFRPRV may  be entered  to transfer  to the  previous
                 group job.

                 A  dynamic  menu name  may  be  entered  to display  a
                 menu.

   LOGCMD        A  *USER, *YES,  or  *SAME option  for whether  to log
                 the commands  run  from  the  optional  command  line.
                 The default is *SAME.

                 Enter  *USER to  mean  the value  in  the user  record
                 determines whether logging occurs.

                 *YES  may be  specified to log  commands run  from the
                 command line.

   LOGOPT        Whether to log  the beginning and  end of each  option
                 the user enters.  The default is *SAME.

                 Enter  *USER to  mean  the value  in  the user  record
                 determines what logging will occur.

                 *BGN  may be entered  to cause  logging when  the user
                 enters   the  option,  but  not  when  the  option  is
                 completed.

                 *BGNEND  may be  entered  to  cause logging  when  the
                 option is entered and when it is completed.

   ERROPT        The  type  of error  handling  to  be  provided if  an
                 option fails.  The default is *SAME.

                 Enter  *NONE to  mean no  special error  handling will
                 be provided.

                 *MSG may be entered to  cause a message to be sent  to
                 the  name  of  the message  queue  specified  for  the
                 ERRMSGQ parameter.

                 *JOBLOG   may    be   entered   to   cause   DSPJOBLOG
                 OUTPUT(*PRINT).  See the ERROUTQ parameter.

                 *ALL may  be  entered  to  cause  both  the  *MSG  and
                 *JOBLOG function.

   ERRMSGQ       The  name  of   the  message  queue  to  be   used  if
                 ERROPT(*MSG) is specified.  The default is *SAME.

   ERRMSGQLIB    The name  of the message  queue library to  be used if
                 ERROPT(*MSG) is specified.  The default is *SAME.

   ERROUTQ       The   name  of  the   output  queue  to   be  used  if
                 ERROPT(*JOBLOG) is specified.   The default is  *SAME.

   ERROUTQLIB    The name  of the  output queue library  to be  used if
                 ERROPT(*JOBLOG)  is specified.   The default is *SAME.

   DYNMNULIB     The library where the data base files exist.

DLTDYNMNUM command parameters                         *CMD
-----------------------------

   MENU          The name  of  the menu  record  to  be deleted.    All
                 options and security information are also deleted.

   DYNMNULIB     The library where the data base files exist.

RTVDYNMNUM command parameters                         *CMD
-----------------------------

   MENU          The name of the menu record to be retrieved.

   LANG          The language  attribute.   An optional  parameter that
                 if used must be specified as *CHAR LEN(1).

   TITLE         The  title of  the menu.   An optional  parameter that
                 if used must be specified as *CHAR LEN(50).

   COLUMNS       The number  of columns  of options  on the  menu.   An
                 optional parameter that  if used must be  specified as
                 *CHAR LEN(1).

   CMDLIN        The  option  for   whether  a  command  line  will  be
                 displayed.   An  optional parameter that  if used must
                 be specified as *CHAR LEN(4).

   UNADOPT       Whether  to  run   the  commands  from   the  optional
                 command line  without the program adopt  function.  An
                 optional  parameter that if used  must be specified as
                 *CHAR LEN(4).

   BGNCMD        The command to  be executed  prior to  the menu  being
                 displayed.   An optional parameter  that if  used must
                 be specified as *CHAR LEN(100).

   ENDCMD        The  command  to  be  executed  when  a return  occurs
                 using  F3  or  F12  from   the  menu.    An   optional
                 parameter  that if  used must  be  specified as  *CHAR
                 LEN(100).

   ALWF3         The option  for whether F3  will be valid  on the menu
                 to  be used  as an exit.   An  optional parameter that
                 if used must be specified as *CHAR LEN(4).

   ALWF12        The option for whether  F12 will be valid on  the menu
                 to be  used as  an exit.   An optional  parameter that
                 if used must be specified as *CHAR LEN(4).

   ATNKEY        The  action to be performed when  the Attention key is
                 pressed.  An optional parameter  that if used must  be
                 specified as *CHAR LEN(10).

   LOGCMD        The option  for whether to  log the commands  run from
                 the  optional  command line.    An  optional parameter
                 that if used must be specified as *CHAR LEN(10).

   LOGOPT        Whether to log  the beginning and  end of each  option
                 the user enters.   An optional parameter that  if used
                 must be specified as *CHAR LEN(7).

   ERROPT        The  type  of error  handling  to  be  provided if  an
                 option  fails.   An  optional  parameter that  if used
                 must be specified as *CHAR LEN(7).

   ERRMSGQ       The name  of the  message queue  used if  ERROPT(*MSG)
                 is  specified.   An  optional parameter  that if  used
                 must be specified as *CHAR LEN(10).

   ERRMSGQLIB    The  name   of  the  message  queue  library  used  if
                 ERROPT(*MSG) is  specified.    An  optional  parameter
                 that if used must be specified as *CHAR LEN(10).

   ERROUTQ       The name of  the output queue used  if ERROPT(*JOBLOG)
                 is  specified.   An  optional parameter  that  if used
                 must be specified as *CHAR LEN(10).

   ERROUTQLIB    The  name  of  the   output  queue  library  used   if
                 ERROPT(*JOBLOG) is  specified.  An  optional parameter
                 that if used must be specified as *CHAR LEN(10).

   CHGDAT        The last  change date of  activity on the  user record
                 in  the  form CYMD.    This is  an  optional parameter
                 that if used must be specified as *CHAR LEN(7).

   DYNMNULIB     The library where the data base files exist.

HLDDYNMNUO command parameters                         *CMD
-----------------------------

   MENU          The menu where the option exists to be held.

   OPTION        The option number on the menu to be held.

   LANG          The option language to  be held.  The value  should be
                 blank  if you  have only  a single  language.   If you
                 have  multiple languages, see  the tool documentation.

   DYNMNULIB     The library where the data base files exist.

RLSDYNMNUO command parameters                         *CMD
-----------------------------

   MENU          The menu where the option exists to be released.

   OPTION        The option number on the menu to be released.

   LANG          The  option  language  to  be  released.    The  value
                 should be  blank if you  have only a  single language.
                 If   you  have   multiple  languages,  see   the  tool
                 documentation.

   DYNMNULIB     The library where the data base files exist.

CHKDYNMNUO command parameters                         *CMD
-----------------------------

   MENU          The menu where the option exists to be checked.

   OPTION        The option number on the menu to be checked.

   LANG          The  option  language  to  be  released.    The  value
                 should be  blank if you  have only a  single language.
                 If   you  have  multiple   languages,  see   the  tool
                 documentation.

   DYNMNULIB     The library where the data base files exist.

CHKDYNMNUU command parameters                         *CMD
-----------------------------

   DYNMNULIB     The library where the data base files exist.

   OUTPUT        How  to  output  the results.    * is  the  default to
                 display the  spooled file  if the  command is  entered
                 interactively.   The spooled file is  deleted after it
                 is displayed.

                 If  the  command  is entered  in  batch  or  *PRINT is
                 specified, the spooled  file is  output and  retained.

CPYDYNMNUU command parameters                         *CMD
-----------------------------

   FROMUSER      The  user  to  copy  the   user  information  and  any
                 security records from.

   TOUSER        The user to copy the user information to.

   DYNMNULIB     The library where the data base files exist.

DSPDYNMNUU command parameters                         *CMD
-----------------------------

   USER          The user  who's menu is to be  displayed.  The default
                 is * meaning the current user.

   DYNMNULIB     The library where the data base files will exist.

   OUTPUT        How to  output  the results.    * is  the  default  to
                 display the  spooled file  if the  command is  entered
                 interactively.   The spooled file is  deleted after it
                 is displayed.

                 If  the  command  is  entered in  batch  or  *PRINT is
                 specified, the  spooled file is  output and  retained.

RFMDYNMNU command parameters                          *CMD
----------------------------

   DYNMNULIB     The  library  where  the  data  base  files  currently
                 exist.   They will  be re-created in  the same library
                 and the existing data will be retained.

   WRKLIB        The  work library  that  will  be  used  to  copy  the
                 current files  to.  A  unique library is  desirable so
                 you can simplify review and deletion.

                 After  the command completes, the  old versions of the
                 files will  be retained  in the  work library.    When
                 you are  satisfied with the  new versions,  delete the
                 files from the work library.

MTNMNUHST command parameters                         *CMD
----------------------------

   RTNDAYS       The  number  of days  of  history  records to  retain.
                 The  default is  30 meaning  that any  history records
                 with a  date  prior to  30 days  ago  will be  deleted
                 from the MNUHSTP file.

   DYNMNULIB     The name  of the library where the  dynamic menu files
                 exist.   The  default is *LIBL.   *CURLIB  may also be
                 used.

MTNMNUCMD command parameters                         *CMD
----------------------------

   RTNDAYS       The number  of  days  of command  records  to  retain.
                 The default  is 30  meaning that  any command  records
                 with  a date  prior  to 30  days ago  will  be deleted
                 from the MNUCMDP file.

   DYNMNULIB     The name of the library  where the dynamic menu  files
                 exist.   The default is  *LIBL.   *CURLIB may also  be
                 used.

TSTDYNMNU command parameters                         *CMD
----------------------------

   MENU          The  menu  to  be displayed.    The  default is  *USER
                 meaning  the  initial menu  of  the user  specified in
                 the USER parameter.

   USER          The user who's menu  is to be displayed.   The default
                 is * meaning the current user.

   DYNMNULIB     The library where the data base files will exist.

MNUUSRP File - User file
------------------------

There is one record per user.

   MUUSER        User name.   This must be  the name of  a user profile
                 that  will use  the Dynamic  Menu function.   The name
                 must be unique.

   MUMENU        Menu name.  The default  menu used by the user.   This
                 menu will  be used  unless a  named menu  is specified
                 on STRDYNMNU.

   MULANG        Language.   The  one character  language code.   Leave
                 blank unless you  have multiple languages  used.   See
                 the section on Language Translation.

   MUBGNC        Beginning command.   A command  that will  be executed
                 when the user begins the STRDYNMNU function.

   MUENDC        Ending  command.   A  command  that  will be  executed
                 when  the  user  ends  the  STRDYNMNU  function.   The
                 command will  only be  executed if F3/F12  is used  to
                 end  from the  highest level  menu or  if  the special
                 RETURN command is used for an option.

   MUATN         Attention  key handling.   How the  Attention Key will
                 be handled.

                 *NONE is  the default  and  means that  the  Attention
                 Key is not supported.

                 *FLIPFLOP  means  the  Flip/Flop form  of  Group  Jobs
                 described previously.

                 A  menu  name  means  to  display  the menu  when  the
                 Attention Key is  pressed.  This  is the example  used
                 for the ATNKEY menu in the demonstration.

   MUGRPN        Default  Group  Job  name.   DYNMNU1  is  the  default
                 which is  intended to work  with the simplest  form of
                 Group  Job support (Flip/Flop).   Enter a  name if you
                 intend to use one  of the other Group Job  approaches.

   MUCMDL        Command   line.     A  *YES/*NO,   *MENU  value   that
                 determines  if a command  line will exist  on the menu
                 for this user.

                 *MENU is  the default  meaning the  decision is  based
                 on the corresponding field in the menu record.

                 *YES   means  a   command  line   will  always   exist
                 regardless  of what the menu  option is.   If the user
                 is LMTCPB(*YES),  only commands  that are  allowed  to
                 limited  users may  be  entered.   See  the  ALWLMTUSR
                 parameter  on CRT/CHGCMD.   By  default,  any commands
                 entered   operate   under  only   the   users  profile
                 (adopted authority is not included).

                 *NO means  a command  line will never  appear for  the
                 user.

   MULOGC        Log  Commands.   A  *YES/*NONE  value that  determines
                 whether  commands entered  on a  command line  will be
                 logged to the  MNUCMDP file.   *NONE  is the  default.
                 The commands  executed by  options are  not logged  by
                 this option.

   MULOGO        Log  Options.   *BGN  is  the default  and  causes the
                 logging at  the beginning  of  the option  before  any
                 application code  has  been invoked.   Logging  occurs
                 to the MNUHSTP file.

                 *BGNEND  logs  both  the  beginning  and  end  of  the
                 option.   The ending  entry contains a  code field for
                 whether the option  completed normally or  abnormally.

   MUMNUS        System  name  on menu.    The  default  is *YES  which
                 causes  the  system name  to  to be  displayed  in the
                 upper right hand corner of any menus for the user.

   MUMNUD        Date/time on menu.  The  default is *YES which  causes
                 the current  date/time to  be displayed  on the  right
                 side of line 2 of any menus for the user.

   MUMOVF        Message  override  file.   *NONE  is  the  default and
                 should be  used unless  you have  multiple  languages.
                 See Language Translation.

   MUMOVL        Message override  library.  *NONE  is the  default and
                 should  be used  unless you  have  multiple languages.
                 See Language Translation.

   MUCDAT        Last  change date  in CYYMMDD format.   Auditing field
                 which cannot  be  input.   It  is  entered for  a  new
                 record or if the record is changed.

MNUMSTP File - Menu master file
-------------------------------

There is one record per menu.

   MAMENU        Menu  name.    The name  of  the  menu.   It  must  be
                 unique.    The name  appears  in the  upper  left hand
                 corner of the menu.

   MALANG        Language.   The one  character language  code.   Leave
                 blank unless  you have multiple  languages used.   See
                 the section on Language Translation.

   MATITL        Title.   The  title of  the menu  that will  appear on
                 Line 1  of the  menu.   Up  to  50 characters  may  be
                 entered.  The  title is automatically centered  in the
                 space available at the top of the menu.

   MACOLS        Number of  columns.  A value of 1  (up to 13 lines) or
                 2 (up to 26 lines) may be used.

   MACMDL        Command  line.  A *YES/*NO  value for should a command
                 line  exist.    This   value  is  only  used  if   the
                 corresponding  field  in  the  user record  is  *MENU.
                 *NO   is  the  default  and  means   only  a  2  digit
                 selection field is displayed.

                 *YES means  a  command  line  may be  entered  by  the
                 user.    If  the  user is  LMTCPB(*YES)  in  his  user
                 profile,  only commands which  are ALWLMTUSR(*YES) can
                 be executed.

   MAADPC        Use unadopt for  command line.   A *YES/*NO value  for
                 whether authority  should be unadopted.   *YES  is the
                 default  and means  that any  command entered  will be
                 executed   using   'unadopt'   (meaning   no   adopted
                 authority  from any  programs  higher in  the  program
                 stack will apply).

   MABGNC        Beginning  command.    An  optional  command  that  if
                 entered  will   be  executed  when  the  menu  begins.
                 *NONE is the default.

   MAENDC        Ending command.  An  optional command that if  entered
                 will be  executed when  the menu ends.   *NONE  is the
                 default.    The  command  will  only  be  executed  if
                 F3/F12 is used to end  from the highest level menu  or
                 if the special  RETURN command is used for  an option.

   MAF3          Allow  F3.  A  *YES/*NO value  for whether F3  will be
                 valid to end the menu.  *YES is the default.

   MAF12         Allow  F12.  A *YES/*NO value  for whether F12 will be
                 valid to end the menu.  *YES is the default.

   MAATN         Attention key  handling.  How  attention key  handling
                 should occur if the Attention key is pressed.

                 The default  is *USER meaning  to take the  value from
                 the user record.

                 *FLIPFLOP  means  the  Flip/Flop  form  of  Group Jobs
                 described previously.

                 *TFRPRV  may  be  entered  to  mean  transfer  to  the
                 previously active Group Job.

                 A  menu  name  means  to display  the  menu  when  the
                 Attention  Key is pressed.   This is  the example used
                 for the ATNKEY menu in the demonstration.

   MALOGC        Log commands.  Whether  commands entered on a  command
                 line  will  be  logged  to  the  MNUCMDP  file.    The
                 commands  executed by options  are not logged  by this
                 option.

                 The   default  is  *USER  meaning  to  use  the  value
                 specified in the user record.

                 *YES  means that  commands  are logged  regardless  of
                 how the user record is specified.

   MALOGO        Log  Options.   The default  is *USER  meaning  to use
                 the value specified in the user record.

                 *BGN  causes  the  logging  at  the  beginning of  the
                 option before any application  code has been  invoked.
                 Logging occurs to the MNUHSTP file.

                 *BGNEND  logs  both  the  beginning  and  end  of  the
                 option.   The ending  entry contains a  code field for
                 whether the option  completed normally or  abnormally.

   MAERRO        Error Option.

                 How  errors should  be  handled  if the  option  fails
                 (sends an  escape message).  *NONE is  the default and
                 means  the escape  message will appear  in the message
                 subfile as the only indication.

                 *MSG  means a  message  will  be  sent  to  a  message
                 queue.  See the MAEMSG and MAEMSGL fields.

                 *JOBLOG means  that DSPJOBLOG  will be used  to output
                 the  current job  log to print.   An  output queue may
                 be named with the MAEOT and MAEOTL fields.

   MAEMSG        Error Message Queue.  The  message queue to receive  a
                 special  message indicating  an  option  failed.   See
                 the MAERRO field.

   MAEMSL        Error  Message  Queue  Library.    The  message  queue
                 library to  receive a  special message  indicating  an
                 option failed.  See the MAERRO field.

   MAEOT         Error Output  Queue.   The  Output queue  for the  job
                 log if an option fails.  See the MAERRO field.

   MAEOTL        Error  Output   Queue  Library.     The  Output  queue
                 library  for the job log if  an option fails.  See the
                 MAERRO field.

   MACDAT        Last change  date in CYYMMDD  format.  Auditing  field
                 only which cannot  be input.  It is  entered for a new
                 record or if the record is changed.

MNUDTLP File - Menu detail file
-------------------------------

There is one record per option on a menu.

   MDMENU        Menu name.  The name of the menu.

   MDOPT         Option.  The two digit option identifier.

   MDLANG        Language.   The  one character  language code.   Leave
                 blank unless you  have multiple  languages used.   See
                 the section on Language Translation.

   MDDESC        Description.  The  text description of the  option (10
                 characters).   This is  an optional  field that should
                 be entered  to provide  a description  for an  option.
                 The  description does  not  appear  to the  end  user.
                 The   description  is  used   on  the   DSPDYNMNU  and
                 ANZDYNMNU  output  and  assists you  in  reviewing the
                 option.

                 *HDG1 should be entered  to mean the option text  will
                 be used  as a heading.   The heading will  be indented
                 3  positions to the right and  will not be hi-lighted.

                 *HDG2 should be entered to  mean the option text  will
                 be used  as a heading.   The heading will  be indented
                 3 positions to the right and will be hi-lighted.

   MDBLKL        Blank  line  before.   *NO  is the  default  and means
                 there is  no  blank  line before  the  option  on  the
                 menu.

                 *YES  should  be  entered  when   a  blank  line  will
                 provide better readability on the menu.

                 *AFT  should  be  entered  when  a blank  line  should
                 appear after the option.

                 *BTH  should  be  entered  when  a  blank  line should
                 appear both before and after the option.

                 A 2-9  value  should be  entered  to cause  2-9  blank
                 lines to appear after the option.

   MDSEC         Secure  option.   *NO  is the  default  and means  the
                 option  is not  secure.  Any  user who  can access the
                 menu can access the option.   If *YES is entered,  the
                 option  will  not  be  displayed  unless  there  is  a
                 record in  the MNUSECP file for the  user.  The option
                 will not appear  on the menu  and does not  take up  a
                 blank line.   Following  options will  'move up'.   If
                 *YS2  is entered,  the  option will  not  be displayed
                 unless  there is a record in  the MNUSECP file for the
                 user, but  the option  will  appear as  a blank  line.
                 The intent  of this value  is to allow a  heading line
                 that  should appear in  a fixed location  (such as the
                 top of the second column)  to appear as a blank  line.

   MDOPTT        Option  text.   The  text  for  the option  that  will
                 appear  on  the menu.    Up to  60  characters  can be
                 entered  for  a  single  column  menu  and  up  to  30
                 characters for a double column menu.

                 If *HDG1  or *HDG2 is  entered into the  MDDESC field,
                 the text  is used as a heading and  will be indented 3
                 positions (no option field will appear).

   MDHOLD        Hold  the option.   *NO  is the  default and  means to
                 allow the  option to occur.   *YES  may be entered  to
                 prevent a user  from using the option.   *YES does not
                 prevent   an  existing   user   of  the   option  from
                 continuing to use the option.

   MDSUBM        Sub-menu.    *NONE  is  the  default  which   means  a
                 command must be  entered for MDCMD.  If  a sub-menu is
                 named,  it must  be a  menu  defined in  the STRDYNMNU
                 files.

   MDCMD         Command.    *NONE  is   the  default  which  means   a
                 sub-menu  must be  entered for  MDSUBM.   Any  command
                 that  can  be  executed by  QCMDEXC  is  valid.   This
                 excludes  'CL  Program  only'  commands  such  as DCL.
                 The RETURN  command is special  cased to  that it  may
                 be used  for a menu  which does not support  F3/F12 to
                 end the menu.

   MDGRPJ        Group  Job.   *NONE  is  the default  which  means the
                 option is to be executed in  the same job.  If a  name
                 is entered it  means to execute the option  in a Group
                 Job by that name.

   MDALWA        Allow  Attention  Key.    *CHK  is  the default  which
                 means the  Attention Key  is valid  to be  used if  no
                 Record Locks  are held by  the job.   If record  locks
                 exist, the user will see an appropriate message.

                 *YES  means   to  allow  the   Attention  Key  without
                 checking for Record Locks.

                 *NO  means to  disallow the  Attention Key.   The user
                 will see an appropriate message.

   MDERRO        Error Option.

                 How  errors should  be  handled  if the  option  fails
                 (sends  an  escape message).    *MENU  is the  default
                 which   means    to   take   the   action   from   the
                 corresponding field in the menu record.

                 *NONE means  the escape  message  will appear  in  the
                 message subfile as the only indication.

                 *MSG  means  a  message  will be  sent  to  a  message
                 queue.    See the  MAEMSG  and MAEMSGL  fields  in the
                 menu record.

                 *JOBLOG means that  DSPJOBLOG will be  used to  output
                 the current  job log to  print.   An output queue  may
                 be  named  with the  MAEOT  and MAEOTL  fields  in the
                 menu record.

   MACDAT        Last  change date  in CYYMMDD format.   Auditing field
                 which cannot  be  input.   It  is  entered for  a  new
                 record or if the record is changed.

MNUSECP File - Security file
-----------------------------

There is one record per user per secure option.

   MSMENU        Menu name.  The name of the menu.

   MSOPT         Option.  The two digit option identifier.

   MSUSER        User name.   The  user who may  use the option.   This
                 must  be  the  signed  on  user  profile  name  (Group
                 Profiles are not supported).

Language Translation
--------------------

The Dynamic Menu allows  the Menu text (top  line) and the Option  text
to be  translated for a  users native language.   You do not  need this
function if you have a single native language.

The following  discussion is intended for systems  where end users have
multiple languages.

Each user must be  identified as to  what language he  uses.  The  user
record contains a one byte  field.  For example, you could  enter I for
Italian.

The  menu  maintenance  subfile  contains  an option  to  add  language
records.   Use this to enter  unique records for each desired language.
Use the F10  key to display the  language records in the  same subfile.
You can change  an existing language record by  using the normal Change
Option.

The  Option  maintenance  subfile  contains  a  similar  option to  add
language records for  each Option.   Use this to  enter unique  records
for each  desired language.   Use the F10  key to display  the language
records  in the  same subfile.    You can  change an  existing language
record by using the normal Change Option.

You must  create a  separate  message file  for each  unique  language.
The base messages are  stored in the TAAMNUAM message  file in TAATOOL.
Use  CRTDUPOBJ and name  any TOLIB as  needed (it  does not have  to be
the same library as the Dynamic Menu files) such as:

             CRTDUPOBJ   OBJ(TAAMNUAM) FROMLIB(TAATOOL)
                           OBJTYPE(*MSGF) TOLIB(xxx)
                           NEWOBJ(ITALIAN)

The  message file  contains both constants  that appear  on the Dynamic
Menu and  messages  used from  the  programs.   Modify these  with  the
command:

             WKRMSGD     MSGF(ITALIAN)

For each message  ID, change the text to the  desired language.  Create
as many message files as needed.

You  must then create a special  data area in the  same library as your
Dynamic  Menu data  base  files  which  will  allow  the  Dynamic  Menu
program to  find the  appropriate Message file  that you  just created.
The TAA Tool CRTLNGMSGF is used.

             CRTLNGMSGF  LIB(xxx)

Use the TAA Tool CONARR to edit the data area:

             EDTCONARR   DTAARA(xxx/LNGMSGF)

The  Language section must contain  the one character  code assigned to
the language.  The  QLFD MSGF area contains  the corresponding name  of
the message files you created previously.

After you have entered the data, the data area might appear as:

  Sequence   Language     Len =  1       Qlfd MSGF    Len = 20
    010      E___________________        ENGLISH___QGPL______
    020      G___________________        GERMAN____QGPL______
    030      I___________________        ITALIAN___QGPL______
     .
     .

When the  Dynamic Menu program  begins, it  determines the language  to
be used  for the user and  uses the LNGMSGF tool to  determine the name
of  the qualified message  file containing the  constants and messages.
It accesses the message  file to retrieve the constant  information and
uses this for  the standard Menu description text.   When the menu text
and  option text  information is  accessed from  the Dynamic  Menu data
base files,  the program  recognizes that  different  language text  is
needed and  searches in  the appropriate file  for the  text.   This is
used to overlay the native language text.

The  message file  used to contain  the TAA  messages sent to  the user
during the execution of the  Dynamic Menu is overridden  automatically.

You may  specify in the  User record an  Override message file  name to
be  used instead  of  QCPFMSG.   You  would normally  use  the specific
language message file provided by the system for that language.

Note  that the intent  is that the  end user will  see constants, text,
and messages in the  appropriate native language.  Disaster  exceptions
will appear  in English.   The Administrator  will see all  displays in
English as he uses the functions on GO DYNMNU.

Note  that the code  page is not  changed during the  processing of the
Dynamic Menu.   If this  is important,  it must be  changed before  the
Dynamic Menu is invoked.

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

Several restrictions  are stated throughout  the document.   The system
has several  restrictions regarding Group Jobs that  also exist.  If an
Attention Key menu  is used to  execute commands in the  same job  (not
as a Group Job), use only very simple commands such as DSPMSG.

To reiterate some of the major restrictions:

  **   The  last 150  bytes  of  the Group  Job  data area  (*GDA)  are
       reserved (positions 363-512).

  **   There  can be  13 options  and blank  lines  on a  single column
       menu.   There  can be  26 options  and blank  lines on  a double
       column menu.

                 The  RU (Rollup)  and  RD  (Rolldown) options  may  be
                 used to  give the appearance that a  menu has multiple
                 pages.

  **   All  commands entered  as  data for  options are  executed using
       QCMDEXC.  The Dynamic Menu  tool checks these commands using  an
       API which inserts  keywords and performs syntax  checking.  This
       does not  ensure that the commands will  be valid using QCMDEXC.

  **   It is valid  to have  a menu  that has already  been invoked  at
       one level  specified again as  a submenu.   It is also  valid to
       use STRDYNMNU  as a command for  an option or allow  the user to
       enter   it  on  a  command  line.    In  most  cases,  something
       meaningful will  happen with  the Dynamic  Menu, but  this is  a
       user beware situation.

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

The following TAA Tools must be on your system:

     ADJVAR          Adjust variable
     CHKOBJ2         Check object 2
     CPYTAADDS       Copy TAA DDS
     EDTVAR          Edit variable
     EXTCMD          Extract command
     FMTLIN          Format line
     LNGMSGF         Language message file
     RTVCMDA         Retrieve command attributes
     RTVSYSVAL3      Retrieve system value 3
     SNDCOMPMSG      Send completion message
     SNDESCMSG       Send escape message
     SNDSTSMSG       Send status message
     TRNVAL          Translate value
     WRTSRC          Write source

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

None, the  tool is  ready to use.   The data  must be entered  into the
files to cause the menu function.

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

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

   STRDYNMNU     *CMD                   TAAMNUA       QATTCMD
   CRTDYNMNU     *CMD                   TAAMNUA2      QATTCMD
   MTNDYNMNUU    *CMD                   TAAMNUA3      QATTCMD
   MTNDYNMNUM    *CMD                   TAAMNUA4      QATTCMD
   DSPDYNMNU     *CMD                   TAAMNUA7      QATTCMD
   ANZDYNMNU     *CMD                   TAAMNUA8      QATTCMD
   TSTDYNMNU     *CMD                   TAAMNUA9      QATTCMD
   DUPDYNMNU     *CMD                   TAAMNUA10     QATTCMD
   ADDDYNMNUU    *CMD                   TAAMNUA11     QATTCMD
   CHGDYNMNUU    *CMD                   TAAMNUA12     QATTCMD
   DLTDYNMNUU    *CMD                   TAAMNUA13     QATTCMD
   RTVDYNMNUU    *CMD                   TAAMNUA14     QATTCMD
   ADDDYNMNUM    *CMD                   TAAMNUA15     QATTCMD
   CHGDYNMNUM    *CMD                   TAAMNUA16     QATTCMD
   DLTDYNMNUM    *CMD                   TAAMNUA17     QATTCMD
   RTVDYNMNUM    *CMD                   TAAMNUA18     QATTCMD
   HLDDYNMNUO    *CMD                   TAAMNUA23     QATTCMD
   RLSDYNMNUO    *CMD                   TAAMNUA24     QATTCMD
   CHKDYNMNUO    *CMD                   TAAMNUA25     QATTCMD
   DSPDYNMNUU    *CMD                   TAAMNUA51     QATTCMD
   CHKDYNMNUU    *CMD                   TAAMNUA52     QATTCMD
   CPYDYNMNUU    *CMD                   TAAMNUA53     QATTCMD
   RFMDYNMNU     *CMD                   TAAMNUA54     QATTCMD
   MTNMNUHST     *CMD                   TAAMNUA55     QATTCMD
   MTNMNUCMD     *CMD                   TAAMNUA56     QATTCMD
   TAAMNUAC      *PGM       CLP         TAAMNUAC      QATTCL
   TAAMNUAC2     *PGM       CLP         TAAMNUAC2     QATTCL
   TAAMNUAC3     *PGM       CLP         TAAMNUAC3     QATTCL
   TAAMNUAC4     *PGM       CLP         TAAMNUAC4     QATTCL
   TAAMNUAC7     *PGM       CLP         TAAMNUAC7     QATTCL
   TAAMNUAC8     *PGM       CLP         TAAMNUAC8     QATTCL
   TAAMNUAC9     *PGM       CLP         TAAMNUAC9     QATTCL
   TAAMNUAC10    *PGM       CLP         TAAMNUAC10    QATTCL
   TAAMNUAC11    *PGM       CLP         TAAMNUAC11    QATTCL
   TAAMNUAC12    *PGM       CLP         TAAMNUAC12    QATTCL
   TAAMNUAC13    *PGM       CLP         TAAMNUAC13    QATTCL
   TAAMNUAC14    *PGM       CLP         TAAMNUAC14    QATTCL
   TAAMNUAC15    *PGM       CLP         TAAMNUAC15    QATTCL
   TAAMNUAC16    *PGM       CLP         TAAMNUAC16    QATTCL
   TAAMNUAC17    *PGM       CLP         TAAMNUAC17    QATTCL
   TAAMNUAC18    *PGM       CLP         TAAMNUAC18    QATTCL
   TAAMNUAC19    *PGM       CLP         TAAMNUAC19    QATTCL

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

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

   TAAMNUAC22    *PGM       CLP         TAAMNUAC22    QATTCL
   TAAMNUAC23    *PGM       CLP         TAAMNUAC23    QATTCL
   TAAMNUAC24    *PGM       CLP         TAAMNUAC24    QATTCL
   TAAMNUAC25    *PGM       CLP         TAAMNUAC25    QATTCL
   TAAMNUAC26    *PGM       CLP         TAAMNUAC26    QATTCL
   TAAMNUAC31    *PGM       CLP         TAAMNUAC31    QATTCL
   TAAMNUAC32    *PGM       CLP         TAAMNUAC32    QATTCL
   TAAMNUAC33    *PGM       CLP         TAAMNUAC33    QATTCL
   TAAMNUAC34    *PGM       CLP         TAAMNUAC34    QATTCL
   TAAMNUAC35    *PGM       CLP         TAAMNUAC35    QATTCL
   TAAMNUAC36    *PGM       CLP         TAAMNUAC36    QATTCL
   TAAMNUAC37    *PGM       CLP         TAAMNUAC37    QATTCL
   TAAMNUAC51    *PGM       CLP         TAAMNUAC51    QATTCL
   TAAMNUAC52    *PGM       CLP         TAAMNUAC52    QATTCL
   TAAMNUAC53    *PGM       CLP         TAAMNUAC53    QATTCL
   TAAMNUAC54    *PGM       CLP         TAAMNUAC54    QATTCL
   TAAMNUAC55    *PGM       CLP         TAAMNUAC55    QATTCL
   TAAMNUAC56    *PGM       CLP         TAAMNUAC56    QATTCL
   TAAMNUAC72    *PGM       CLP         TAAMNUAC72    QATTCL
   TAAMNUAR      *PGM       RPG         TAAMNUAR      QATTRPG
   TAAMNUAR3     *PGM       RPG         TAAMNUAR3     QATTRPG
   TAAMNUAR4     *PGM       RPG         TAAMNUAR4     QATTRPG
   TAAMNUAR5     *PGM       RPG         TAAMNUAR5     QATTRPG
   TAAMNUAR6     *PGM       RPG         TAAMNUAR6     QATTRPG
   TAAMNUAR7     *PGM       RPG         TAAMNUAR7     QATTRPG
   TAAMNUAR8     *PGM       RPG         TAAMNUAR8     QATTRPG
   TAAMNUAR10    *PGM       RPG         TAAMNUAR10    QATTRPG
   TAAMNUAR11    *PGM       RPG         TAAMNUAR11    QATTRPG
   TAAMNUAR15    *PGM       RPG         TAAMNUAR15    QATTRPG
   TAAMNUAR16    *PGM       RPG         TAAMNUAR16    QATTRPG
   TAAMNUAR19    *PGM       RPG         TAAMNUAR19    QATTRPG
   TAAMNUAR21    *PGM       RPG         TAAMNUAR21    QATTRPG
   TAAMNUAR22    *PGM       RPG         TAAMNUAR22    QATTRPG
   TAAMNUAR23    *PGM       RPG         TAAMNUAR23    QATTRPG
   TAAMNUAR25    *PGM       RPG         TAAMNUAR25    QATTRPG
   TAAMNUAR33    *PGM       RPG         TAAMNUAR33    QATTRPG
   TAAMNUAR51    *PGM       RPG         TAAMNUAR51    QATTRPG
   TAAMNUAR52    *PGM       RPG         TAAMNUAR52    QATTRPG
   TAAMNUAR53    *PGM       RPG         TAAMNUAR53    QATTRPG
   TAAMNUAB      *FILE      PF          TAAMNUAB      QATTDDS
   TAAMNUAD      *FILE      DSPF        TAAMNUAD      QATTDDS
   TAAMNUAE      *FILE      DSPF        TAAMNUAE      QATTDDS

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

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

   TAAMNUAF      *FILE      DSPF        TAAMNUAF      QATTDDS
   TAAMNUAG      *FILE      DSPF        TAAMNUAG      QATTDDS
   TAAMNUAH      *FILE      PF          TAAMNUAH      QATTDDS
   TAAMNUAI      *FILE      DSPF        TAAMNUAI      QATTDDS
   TAAMNUAJ      *FILE      DSPF        TAAMNUAJ      QATTDDS
   TAAMNUAK      *FILE      DSPF        TAAMNUAK      QATTDDS
   TAAMNUAP      *FILE      PF          TAAMNUAP      QATTDDS
   TAAMNUAQ      *FILE      PF          TAAMNUAQ      QATTDDS
   TAAMNUAS      *FILE      PF          TAAMNUAS      QATTDDS
   TAAMNUAU      *FILE      PF          TAAMNUAU      QATTDDS
   TAAMNUAW      *FILE      LF          TAAMNUAW      QATTDDS
   TAAMNUAX      *FILE      LF          TAAMNUAX      QATTDDS
   TAAMNUAY      *FILE      LF          TAAMNUAY      QATTDDS
   TAAMNUAZ      *FILE      LF          TAAMNUAZ      QATTDDS
   TAAMNUAM      *MSGF                       No source

The  following  files are  created  in TAATOOL  as part  of  the Create
process, but no specific  member exists.  The  files are used to  allow
a random  keyed access  in several  programs.   The source  is used  as
follows:

        Source      TAATOOL file     Description
        ------      ------------     -----------

        TAAMNUAP    TAAMNUAN         Menu master
        TAAMNUAQ    TAAMNUAO         Menu detail
        TAAMNUAS    TAAMNUAT         Menu security

When  CRTDYNMNU is used, the  following source is used  to create files
in the specified libraries:

        Source      User object    Description
        ------      -----------    -----------

        TAAMNUAB    MNUCMDP        Command history
        TAAMNUAH    MNUHSTP        Option history
        TAAMNUAP    MNUMSTP        Menu master
        TAAMNUAQ    MNUDTLP        Menu detail (Options)
        TAAMNUAS    MNUSECP        Security
        TAAMNUAU    MNUUSRP        User record
        TAAMNUAW    MNUUSRLA       User record by arrival sequence
        TAAMNUAX    MNUMSTLA       Menu master by arrival sequence
        TAAMNUAY    MNUDTLLA       Menu detail by arrival sequence
        TAAMNUAZ    MNUSECLA       Security by arrival sequence

Structure
---------

STRDYNMNU   Cmd
   TAAMNUAC   CL pgm
     TAAMNUAC21  CL Pgm to access App Value in TAASECURE
     TAAMNUAD    Dsp file
     TAAMNUAR    RPG Pgm to write to message subfile
     TAAMNUAR19  RPG Pgm for data base accesses

 For Attention key use
   TAAMNUAC   CL pgm
     TAAMNUAE   Dsp file
     TAAMNUAR33  RPG Pgm to write to message subfile

CRTDYNMNU   Cmd
   TAAMNUAC2   CL pgm

MTNDYNMNUU  Cmd
   TAAMNUAC3   CL pgm
     TAAMNUAR3   RPG Pgm     Maintain user record
       TAAMNUAF   Dsp file   Maintain user record

MTNDYNMNUM  Cmd
   TAAMNUAC4   CL pgm
     TAAMNUAR4   RPG Pgm           Maintain menu record
       TAAMNUAG   Dsp file         Maintain menu record
       TAAMNUAR5   RPG Pgm         Maintain option record
         TAAMNUAI   Dsp file         Maintain option record
         TAAMNUAR6   RPG Pgm          Maintain security record
           TAAMNUAJ   Dsp file          Maintain security record

DUPDYNMNU   Cmd
   TAAMNUAC10  CL pgm
     TAAMNUAR10  RPG Pgm

DSPDYNMNU   Cmd
   TAAMNUAC7   CL pgm
     TAAMNUAR7   RPG pgm

ANZDYNMNU   Cmd
   TAAMNUAC8   CL pgm
     TAAMNUAR8   RPG pgm

Structure - Continued
---------------------

ADDDYNMNUU  Cmd
   TAAMNUAC11  CL pgm
      TAAMNUAR11   RPG pgm

CHGDYNMNUU  Cmd
   TAAMNUAC12  CL pgm
      TAAMNUAR11   RPG pgm

DLTDYNMNUU  Cmd
   TAAMNUAC13  CL pgm
      TAAMNUAR11   RPG pgm

RTVDYNMNUU  Cmd
   TAAMNUAC14  CL pgm
      TAAMNUAR11   RPG pgm

ADDDYNMNUM  Cmd
   TAAMNUAC15  CL pgm
      TAAMNUAR16   RPG pgm

CHGDYNMNUM  Cmd
   TAAMNUAC16  CL pgm
      TAAMNUAR11   RPG pgm

DLTDYNMNUM  Cmd
   TAAMNUAC17  CL pgm
      TAAMNUAR15   RPG pgm  Deletes detail options and security
      TAAMNUAR16   RPG pgm  Deletes menu

RTVDYNMNUM  Cmd
   TAAMNUAC18  CL pgm
      TAAMNUAR16   RPG pgm

HLDDYNMNUO  Cmd
   TAAMNUAC23  CL pgm
      TAAMNUAR23   RPG pgm

RLSDYNMNUO  Cmd
   TAAMNUAC24  CL pgm
      TAAMNUAR23   RPG pgm

CHKDYNMNUU  Cmd
   TAAMNUAC52  CL pgm
      TAAMNUAR52   RPG pgm
         TAAMNUAC72  CL pgm  - Does RTVUSRPRF

Structure - Continued
---------------------

CPYDYNMNUU  Cmd
   TAAMNUAC53  CL pgm
      TAAMNUAR53  RPG Pgm

CHKDYNMNUO  Cmd
   TAAMNUAC25  CL pgm
      TAAMNUAR23   RPG pgm

DSPDYNMNUU  Cmd
   TAAMNUAC51  CL pgm
     TAAMNUAR51  RPG pgm

RFMDYNMNU  Cmd
   TAAMNUAC54  CL pgm

MTNMNUHST  Cmd
   TAAMNUAC55  CL pgm

MTNMNUCMD  Cmd
   TAAMNUAC56  CL pgm

TSTDYNMNU   Cmd
   TAAMNUAC9   CL pgm

DYNMNU  Menu  (Created by CRTMNU for administrator)
   TAAMNUAC19  CL pgm
     TAAMNUAK    Display file

Create demonstration data
   TAAMNUAC22  CL pgm
     TAAMNUAR22  RPG Pgm

Attention Key programs
----------------------

TAAMNUAC31     *FLIPFLOP function
                  Messages TAA5063, TAA5067

TAAMNUAC32     Transfer program for *FLIPFLOP
                  Messages TAA5064, TAA5065

TAAMNUAC33     Named menu
                  Messages TAA5067

TAAMNUAC34     Transfer program for named menu
                  Messages TAA5064, TAA5065

TAAMNUAC35     Command options (used non-menus and *TFRPRV)
                  Messages TAA5067, TAA5069

TAAMNUAC36     Masked off option (used for *NO Attn Key)
                  Messages TAA5068

TAAMNUAC37     No Attention Key handling assigned
                  Messages TAA5068

Messages used by Attention Key handling
---------------------------------------

TAA5063    Group jobs are already active
TAA5064    Group job is starting
TAA5065    Group job is ending
TAA5066    No Attention Key handling program assigned
TAA5067    Record locks exist
TAA5068    Attention key is masked off
TAA5069    No group job has been started
					

Added to TAA Productivity tools May 1, 1996


Home Page Up to Top