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 unique to a 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.

 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

Last modified on November 19, 2014 © 1995, 2014 - TAA Tools, Inc.