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.

   **   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

Powered by AS/400Powered by AS/400 Last modified on March 27, 2013 © 1995, 2013 - Jim Sloan, Inc.