The Dynamic Menu tool is a way to write menus where the options on
the menus are driven from data base records. The Dynamic Menu has
the following advantages:
** The menu options are kept in data base files. Each option
performs either a command or invokes a sub menu. Any data
base change takes affect the next time the menu is displayed.
** Each menu option may be secured so that only non-secured or
authorized options will appear on a users menu. An option
exists to utilize group and supplemental group user profile
names.
** Each menu has an optional command line with functions similar
to a system command line. The option can be controlled by
user or menu. If a command line is allowed and the user is
LMTCPB(*YES), only commands that are not limited may be run.
By default, all commands that are entered on the command line
run without any adopted authority.
** Each menu has a message subfile to bubble up messages sent by
the options or commands that have been entered.
** If a user is a member of a group or supplemental group
profile, an option exists to enter only the group name and use
the assigned menu for the group when the user enters the menu
system. This can eliminate many entries as new users are
added to the menu system. See the section on Application
Value Options to set the option.
** A history log exists to provide an audit trail of what options
were taken. The beginning use of an option is automatically
logged as is the beginning of a menu. The ending use of an
option may be requested. A command is available to display
the current status of users using the Dynamic Menu. This
allows you to determine what options are in use and what the
users are doing.
** A group job function exists so that any option can be
performed in a group job. There are 3 basic types of Group
Jobs supported:
-- Simple flip/flop to a second job by use of the
Attention Key.
-- Primary/Secondary Group Job where the Secondaries are
defined on a Primary menu and always transfer back to
the Primary when the Attention Key is used.
-- An Attention Key Handling menu that allows a transfer
to any Group Job from any other Group Job.
By default, the Attention Key cannot be used when a job has
any locked records.
The Group Job function can be used to replace the 'Group Jobs
Made Easy' tool which was part of QUSRTOOL, but was not a TAA
Tool.
** A 'Hold' option exists that allows the Administrator to
prevent the use of an Option if it is being changed or a
problem exists.
** Options exist to handle any errors (escape messages) sent by
the options that are run. You can choose to ignore (the
escape message will be displayed), send a message to a message
queue and/or capture the job log.
** Options exist for the user to run commands when the user
begins/ends the Dynamic Menu function and to set options for
such things as the initial menu, error handling, and Attention
Key setting.
** Options exist for each menu to run commands when the menu
begins/ends or to modify the base options set for the user.
** A normal menu object is available for the Administrator (GO
DYNMNU) which provides for entry and control of the
information. This includes:
-- A Maintenance command to enter User records.
-- A Maintenance command to enter Menu, Option, and
Security records.
-- A command to duplicate an existing menu to a new name.
-- A display command to determine what options are being
used.
-- An Analyze command to perform basic query functions
against the history log.
-- A testing aid to display the menus that a specific user
will see and navigate through the sub menu options.
-- A command to create the files required.
-- A command (DSPDYNMNUU) which will provide a display or
listing of what an individual user may do via menus and
options.
-- A command (CHKDYNMNUU) which will provide a display or
listing of what user profiles are defined and still
exist on the system.
** Specific commands also exist to make changes, additions,
deletions and retrieve the information from the user and menu
files.
** Language translation exists for most functions that appear for
the end user. This allows a system that has users with
multiple languages to vary the text that appears on the menu.
Demonstration of the Dynamic Menu
---------------------------------
You can see a demonstration of the Dynamic Menu by doing the
following:
1. Use the CRTDYNMNU command to build the required files in a
library of your choice:
CRTDYNMNU DYNMNULIB(xxxx)
2. Run the program which copies sample data to the files just
created and specify the library name as the parameter.
CALL PGM(TAATOOL/TAAMNUAC22) PARM(xxxx)
3. Start the Dynamic Menu function and specify the library
containing the files. A test menu MENUA has already been
established and is the default for your user name.
STRDYNMNU MENU(*USER) DYNMNULIB(xxx)
4. Try the various options and menus.
5. End the menu and try the Administrator's function.
GO DYNMNU
6. Prompt and/or try the various options. Do not change any of
the data at this point.
-- Note the layout of the menu. It is similar to system
supplied menus.
-- Work your way thru all the options including the option
to test the Dynamic Menu. Notice the difference when
an option is requested when testing.
-- Note that some menus allow command lines and some do
not.
-- MENUD does not allow F3 or F12 to end the menu. You
must use an option.
-- Enter a bad option number and note the error message.
-- Enter some sample display commands such as DSPJOB or
DSPNETA on one of the menu command lines to see how the
command line operates.
-- Use the F9 key to roll backward thru the commands you
entered and re-execute one of them.
-- Enter a CALL to a program that does not exist and note
the error message subfile rolling capability.
7. To try the security function, use GO DYNMNU and the Option to
'Maintain menu records'. Use Option 6 for MENUA to display
the detail records (one record per option). Change Option 2
(Display Job Description QINTER) for Secure field to '*YES'.
8. End the function and use STRDYNMNU again. You should see that
Option 2 does not display because no security record exists.
9. To allow Option 2 to appear on your menu, use GO DYNMNU again
and the Option to 'Maintain menu records'. Use Option 6 for
MENUA to display the detail records (one record per option).
For Option 02, request Option 6 (Work with Security) and add a
record with your name (using F6). When you enter Add mode
(F6), it is assumed you want to enter another record so you
will be prompted with the same display.
10. End the function (see the later discussion about using group
user profiles or supplemental groups).
11. Use STRDYNMNU again. You should now see Option 2 on MENUA.
12. If you want to try the Group Job functions, skip to the next
section. When complete, start at the next point.
13. You may change any of the test data or try your own menus and
options.
14. To reset to the original test data you must first clear the
data files that were created:
CLRPFM MNUUSRP
CLRPFM MNUMSTP
CLRPFM MNUDTLP
CLRPFM MNUHSTP
CLRPFM MNUCMDP
Then call the program that adds the test data:
CALL TAATOOL/TAAMNUACxx PARM(xxxx)
Demonstration of the Dynamic Menu Group Job Functions
-----------------------------------------------------
If you are not currently using Group Jobs, you may proceed with the
next several steps to demonstrate the Group Job capability.
1. To ensure that you are not currently using Group jobs do:
CHGGRPA GRPJOB(*NONE)
2. You should not see any messages. If you see a message denying
the request, you already have some group jobs. You must end
these to do the demonstration.
3. To see the Administrator's function, use the menu provided:
GO DYNMNU
4. When the sample data was created, a record was added to the
MNUUSRP file with your name and the test menu MENUA. To test
the Flip/Flop Group Job support, access this record with
Option 1 'Maintain user record'. Use the Change option to
your record and change the Attention Key Handling field to
*FLIPFLOP.
5. End the Administrator's Menu and enter the command:
STRDYNMNU MENU(*USER) DYNMNULIB(xxx)
6. This is the same menu you saw previously. Use Option 1. When
the display appears, press the Attention Key to flip/flop to a
second job. The second job starts with the same menu and the
Attention Key may be used to flip back and forth. Try Option
3 that masks off the use of the Attention Key.
7. End both Group Jobs by using F3. To determine that you have
successfully ended both Group Jobs do:
CHGGRPA GRPJOB(*NONE)
If you cannot make the change, you have a Group Job active.
To end the Group Job, use STRDYNMNU again, followed by the
Attention Key, and then F3. Use F3 to end the initial group
job.
8. To test the Primary/Secondary Group Job support, access the
Administrator's function again:
GO DYNMNU
9. Request the option to 'Maintain user records'. Make the
following changes to your own record:
Default menu MENUE
Attention key handling *NONE
Default group job name PRIGRP
10. End the function and request 'Maintain menu records' from the
GO DYNMNU menu. Use Option 2 to Change the MENUC and MENUD
records. Change the Attention key handling value to *TFRPRV
for each. This will cause a standard Attention Key handling
program to transfer back to the Primary Group Job.
11. End the function and use:
STRDYNMNU MENU(*USER) DYNMNULIB(xxx)
12. You should see MENUE which is a Primary Group Job menu. Most
of the options will be performed using a Secondary Group Job.
When you use the Attention Key in the Secondary Group Job, you
will transfer back to the Primary Job (if the Attention Key is
valid). If the Group Job is still active when you return to
the Primary Job, you can request the option and transfer back.
The transfer time is fairly fast if the Group Job is already
active.
13. When you return to the Primary Group Job, the Attention Key is
not defined. Try it. You must use an option to transfer.
It is possible to define the MENUE record Attention Key
Handling function as *TFRPRV. This will allow a flip/flop to
the last Group Job Used. A special message occurs if no Group
Job has been started.
14. The option 'Lock 1st Record TAA Tool' is an example of an
application that locks a record. Normally, you would not want
the user to be able to transfer from a Group Job when record
locks exist so the default is to ensure that no records are
locked. If you try the 'Lock 1st Record' option and then
press the Attention Key, you should see an appropriate
message. You must end the function to get to a different
Group Job.
15. End the Group Jobs by using F3 for each Group Job and the
Primary menu. To determine that you have successfully ended
all Group Jobs do:
CHGGRPA GRPJOB(*NONE)
If you cannot make the change, you have a Group Job active.
To end the Group Job, use STRDYNMNU again, access each option
and end with F3. End the Primary menu and test again with
CHGGRPA.
16. To test the Attention Key handling menu Group Job support,
access the Administrative Menu again with:
GO DYNMNU
17. Request the option to 'Maintain User Records'. Make the
following changes to your own record:
Default menu MENUF
Attention key handling ATNKEY (name of a Dynamic menu)
Default group job name GRPMNUF
18. End the function and use:
STRDYNMNU MENU(*USER) DYNMNULIB(xxx)
19. Try some of the options on MENUF and press the Attention Key
while on an option or on the Attention Key Menu. Select a
Group Job.
You should be transferred to a Group Job and see a menu. Try
some of the options in the Group Job and press the Attention
Key again. You can transfer back to an existing Group Job or
start a new one.
20. End the Group Jobs by using F3 for each group job and MENUF.
To determine that you have successfully ended all Group Jobs
do:
CHGGRPA GRPJOB(*NONE)
If you cannot make the change, you have a Group Job active.
To end the Group Job, use STRDYNMNU again, access each option
and end with F3.
Getting Started with the Dynamic Menu
-------------------------------------
The Administrator begins by using the CRTDYNMNU command and naming a
library where data base files will be created. There may be multiple
sets of files, but each set must be all in the same library.
All control files allow public use of 'read', but are authorized so
that only the Administrator may change the files. He may authorize
other users to make changes with standard system commands. During
the end users use of the Dynamic Menu, the control files are accessed
for 'read only'.
Before you begin to add user and menu records to the control files,
you should be familiar with what options exist and what your strategy
will be. It is not necessary that you consider every detail at this
point as you can always tune the menu structure once it is running.
But you should have a good grasp of the types of things that you will
need to consider. Playing with the demonstration and a brief review
of this document is recommended.
In addition to making decisions regarding the menus, you must also
consider:
** A retention strategy for the History files. See the later
section on History Cleanup.
** A backup strategy for the data that you have entered and the
History files. See the later section on Backup.
Menu Options
------------
Each option is specified with a number of 01-99, RU (Rollup), or RD
(Rolldown) - see the section on Rollup/Rolldown. Consecutive numbers
need not be used. The options are not re-numbered when the menu is
generated (the user will see the number as you specified it with the
leading zero suppressed).
The selection line allows for either 2 character input (if no command
line is requested) or a large command entry field. To select the 01
Option, the user may enter a 1 followed by a blank, 01, or a blank
followed by a 1.
You may specify that a blank line appear before and/or after an
option to provide better grouping on a menu. Instead of one blank
following, you may specify a number 2-9 for additional blank lines.
The intent of additional blank lines is to allow better formatting of
2 column menus.
To also assist in formatting, a heading line may appear before a set
of options such as:
Accounts Payable
1. New vendor
2. Pay existing vendor
The heading may be hi-lighted and space before and after used. See
the *HDG1 and *HDG2 options for the internal description field.
Each menu Option has an internal description field that the
Administrator can enter to help describe what the option is for.
This is worthwhile to do as the DSPDYNMNU and ANZDYNMNU output can be
made more meaningful.
Each option may be either (it cannot be both):
** A command. Any command may be entered that can be executed
using QCMDEXC. For example, it could be a CALL, SBMJOB,
another system command or a user command. When the commands
are entered, by the Administrator, F4 may be used to prompt.
See the later discussion of the RETURN command which is a
special case to use instead of F3 or F12.
If you want to prompt for a command that has a required
parameter, you may want the user to enter the parameter when
the option is selected. For example, DSPUSRPRF requires the
USRPRF parameter and you may want the user to enter the value
as opposed to hard coding the value. The command which you
enter is checked by QCMDCHK before it is stored. QCMDCHK will
signal an error if a required parameter does not exist. If
this is your situation, consider the PMTCMD TAA command.
** A sub-menu. Any Dynamic Menu menu may be named that is in the
same set of files, in the same library.
Each option can be executed within the same job or a group job may be
named. For example, the user may have a frequently used function
that you want to handle as a group job by having the user select an
option as opposed to using the Attention Key. See the later
discussion of Group Jobs.
** Each option may be secured so that some users of the menu may
see the option. If a user is not authorized, the option does
not appear. See the later section on 'Securing an option'.
Rollup/Rolldown (Multi-page menu)
---------------------------------
An option (instead of 00-99) of RU (Rollup) and RD (Rolldown) may be
used to give a single menu an appearance of multiple pages.
The RU and RD options require that a sub menu be named. The title of
the menu will be used. The Secure option must be *NO. Any other
parameters are ignored during processing. You can use a description
to assist in identifying the option.
A typical use of Rollup/Rolldown is where you want a menu to appear
to have 3 pages. Each page must have a unique menu name.
Assume the 3 pages are named MENUA1, MENUA2, and MENUA3. MENUA1
would specify an RU option to go to MENUA2. MENUA2 would specify an
RU option to go to MENUA3 and an RD option to go to MENUA1. MENUA3
would specify an RD option to go to MENUA1.
The 'More...' indication will appear when an RU option is specified.
When a menu has an RD option, but not an RU option, the 'Bottom'
indication will be displayed.
Error Handling
--------------
Each option allows you to control the type of error handling that
should occur if the option ends with an escape message being sent to
the menu program.
For each menu you can establish a default criteria and then modify it
for a unique option. The values are:
*NONE The escape message appears as a message in the
message subfile. The selection line is not blanked
out.
*MSG A message is sent to a message queue of your choice
stating the error.
*JOBLOG The DSPJOBLOG command occurs to an output queue of
your choice. A status message appears to the user
while the output is occurring.
*ALL Both a message is sent and the job log occurs.
Allowing F3 and F12
-------------------
The default is that both Function keys are allowed on any menu. Both
have the same meaning which is to return to the previous menu. If no
previous menu exists (F3 pressed on the initial menu), the
controlling CL program does a normal return.
For most menus, you will want to take the default and allow both F3
and F12. Another alternative is to use the RETURN command which is
treated as a special case. You may enter it as a command to be
executed. Internally, it means the same function as if F3 was
pressed.
For the initial menu, you may prefer to not offer either F3 or F12,
but allow the user an option for Signoff.
An optional command may be executed when any menu ends or the user
ends the Dynamic Menu function. The end menu command only executes
if the user ends with F3/F12 or the special case RETURN function. If
the command Signoff is used, the end command will not execute.
You cannot define any other command keys that will exist on the menu.
Unique functions must be requested using a menu option.
Command line
------------
A command line is optional on each menu. Two functions help control
the command line:
** The default is to execute the commands without any adopted
authority. This is done by using the TAA Tool UNADOPT.
** If the user is limited in his profile by LMTCPB(*YES), only
commands that are specified as ALWLMTUSR(*YES) may be
executed.
Thus a reasonably safe command line may be considered for most users.
You may need to control the use of the Signoff command on the command
entry line to prevent the users from prematurely ending an
application. A similar concern exists with the System Request menu.
The system Security Guide describes how to make the System Request
menu private. A solution is to make the Signoff command private.
The F9 key is available to allow the retrieval of previously entered
commands (up to 100). Only commands entered on the current use of
the Dynamic Menu may be retrieved. A restriction exists relative to
retrieving commands that exceed 512 bytes of data.
Securing an option
------------------
Each option on a menu may be secured by specifying the GO DYNMNU
command, using 'Maintain Menu' records, using Option 6 (Work with
options), Option 2 (Change an option record), and setting the
'Secure' field to *YES or *YS2. This causes the STRDYNMNU command to
check for records in the MNUSECP file to see if a user record exists.
The *YS2 entry should be made when a secure entry will be followed by
a heading which must exist in a fixed location. The *YES entry will
cause the heading to 'float' as the option will not appear on the
menu and the following options will move up. If the second column
begins with a fixed heading, a prior secure option with an entry of
*YS2 will cause the option to appear as a blank line.
To enter a user record to provide a security check, return to the
'Option Record' display and use Option 6 (Work with security). Add
one or more user records using F6.
The simple approach is to enter the user name of the user that will
be signed on.
You may also use a Group Profile name (or a Supplemental Group user
profile name). See the section on Application Value Options.
An *ALLOBJ user cannot be prevented from making changes to the DYNMNU
objects such as adding a new user or changing a security option.
However, if an option on a menu is controlled by security, an *ALLOBJ
user cannot access the option unless he is specifically named.
Application Value Options
-------------------------
The Application Value DYNMNU in TAASECURE has two options relative to
group profiles.
** Group Profile Option - Allows the authorities for a group or
supplemental group profile to be used to check authorizations.
This means the group profile (or supplemental group) would be
entered as record in the MNUSECP file.
** Group Profile Option 2 - Allows a group or supplemental group
name to be entered in the user file and not the individual
members of the group. If this option is used, the user does
not have to have an individual user record. All members of
the group would receive the same menu.
If you use group profiles and want to simplify the number of entries
in the Dynamic Menu files, you would normally specify *YES for both
options.
To allow for these functions, an *ALLOBJ special authority user must
make a change the supplied Application Value in TAASECURE.
EDTAPPVAL APPVAL(TAASECURE/DYNMNU)
First option - Group Profile Option
-----------------------------------
This option was implemented first and controls the authorizations
entered into MNUSECP (and not user record in MNUUSRP).
Change the 'Group profile option' to *YES.
You may now enter the group profile name (or Supplemental Group
Profile name) as a record in the MNUSECP file as described
previously.
For example, assume everyone in the Accounts Payable department
should be able to access option 2, but other users also access the
same menu and should be prevented from seeing option 2. Assume all
users in the Accounts Payable department are all part of the ACCPAY
group profile. Instead of specifying each user name as a security
record, you can set the Application Value to allow group profiles and
then add one record for the ACCPAY group profile to the security
file.
Setting the Application Value covers all uses of checking security by
STRDYNMNU. It cannot be subset to a specific menu option.
Second option - Group Profile Option 2
--------------------------------------
This option allows entry of the group profile name as a user in the
user file (MNUUSRP). *NO is the shipped default meaning a user
record must exist for each signed on user.
If *YES is specified, and the user who attempts to access the Dynamic
Menu is not found in the MNUUSRP file, the group profile and
supplemental groups are used to determine if a corresponding name
exists in the MNUUSRP file.
Processing occurs in order of:
- The signed on user name
- The group profile name in the user profile
- The supplemental group profiles in the user
profile in the order they are specified
The first successful match determines the menu that will be
displayed.
The group profile used (if any) is recorded in the MNUHSTP file and
can be displayed by DSPDYNMNU or ANZDYNMNU.
Holding an Option
-----------------
The Administrator may 'Hold' an option to prevent its use. If an
option is held, the user sees an appropriate message if he attempts
to use the option.
Holding an option is desirable if one or more of the objects that
make up an option must be re-created or you are experiencing
problems.
To hold an Option, the Administrator uses GO DYNMNU and the option to
'Maintain menu records'. After locating the proper Menu, the option
to Work with the Options should be selected. When the Option record
is displayed, enter *YES for the Hold field value.
At that point, no user can invoke the Option, but a user may already
be using the Option. To determine if any user is using the option,
use the DSPDYNMNU command.
The alternative to 'Maintain Menu' records, is to use the commands:
HLDDYNMNUO Hold Dynamic Menu Option
RLSDYNMNUO Release Dynamic Menu Option
CHKDYNMNUO Check Dynamic Menu Option
These commands provide a command solution for holding, releasing, and
checking the hold option as opposed to the interactive solution using
the displays of MTNDYNMNUM. The user of the commands must be
authorized to change the MNUMSTP file.
Display Dynamic Menu User
-------------------------
The DSPDYNMNUU command displays what a user can do by following the
chain of menus. One line prints for every option that is not
secured.
Data Base files used
--------------------
There are four main data base files used for control information:
MNUUSRP MNUMSTP MNUDTLP MNUSECP
********* ********* ********* *********
* * * * * * * *
* * * * * * * *
********* ********* ********* *********
One record One record One record One record
per user per menu per option per option
per auth user
These files are all maintained by the GO DYNMNU menu options. The
MNUUSRP file is maintained by the 'Maintain user records' option.
The other files are maintained by the 'Maintain menu records' option.
The MNUMSTP and MNUDTLP files also contain separate records for
language translation. See the later section on Language Translation.
Two other files are 'output only' when use is made of the Dynamic
menu.
MNUHSTP MNUCMDP
********* *********
* * * *
* * * *
********* *********
One record One record
per option per command
used, menu entered on
started, a command line
etc.
All files are created as part of the CRTDYNMNU command.
The MNUHSTP file is standard and will contain standard log entries
such as the beginning of an option. You can provide more logging by
requesting that the completion of a menu option be included.
The MNUHSTP file is processed by three commands which are provided.
DSPDYNMNU Displays the current status of who is using the
Dynamic Menu tool. The last entry in the history
file for each user on the current day is shown. If
Group Jobs are being used, a record for each group
job is shown.
ANZDYNMNU Analyzes the history file with a variety of
selection criteria and allows sequencing on a single
field. The intent of the command is to provide most
of the simple analysis reports an Administrator
might be interested in such as:
- All options entered by a user by date/time
- All users who used a specific option
- All options that were ended abnormally
MTNMNUHST The Maintain Menu History command provides a cleanup
command for old records in the history file that are
no longer needed.
The MNUCMDP file is always created, but will only contain records if
you specify that commands entered on a command line be logged.
The MTNMNUCMD command is provided to help provide cleanup based on a
number of retention days.
You must consider when to clear the data in these files. See the
discussion on History File Cleanup.
Display Dynamic Menu User
-------------------------
The DSPDYNMNUU command displays a listing of the menus that may be
accessed by a user and one line for each option that may be used.
Options that are secured and not authorized are not displayed. This
provides a summary of what a user can do.
History Cleanup
---------------
Records will be written to the MNUHSTP file such as for the beginning
of a selected option. You may request additional logging at the end
of each option and may log commands executed from a command line to
the MNUCMDP file.
Both files need to be cleared at some point. The more data you have
in the MNUHSTP file, the slower the functions of DSPDYNMNU or
ANZDYNMNU will be.
A solution would be to clear the files every day or every week at
some quiet point when users are not using the Dynamic Menu. A
special command MTNMNUHST is provided to clean out old records from
the MNUHSTP file based on a retention date. A special command
MTNMNUCMD is provided to clean out old records from the MNUCMDP file
based on a retention date.
Note that you cannot clear the files if an active user is using the
Dynamic Menu function because the files will be open. You must
select a quiet time when all users are off the function.
Retaining an online copy of last weeks history could be an advantage
in analyzing usage or problems. The ANZDYNMNU command can be used
against any file by the name of MNUHSTP. You could make a copy in a
separate library and then refer to the library on ANZDYNMNU. Use
CRTDUPOBJ to make a duplicate of the file in a different library.
Backup
------
You will need a backup strategy for the data you have entered and the
History files. You should consider the library or libraries where
you have created the files used by the Dynamic Menu tool to be like
your own data and treat it accordingly.
Because the History files (MNUHSTP and MNUCMDP) are kept open by the
STRDYNMNU function, you cannot do a normal backup of the files if a
user is using the Dynamic Menu function. You will need a quiet point
to backup the History files or use the system Save While Active
function.
The other files are opened for 'read only' by STRDYNMNU and can be
saved at any time the Administrator is not working on them.
Group Jobs
----------
Group Jobs offer a simple solution for allowing users to have
multiple functions active. Group jobs allow the user to retain the
performance benefit of keeping the programs and files open for
several application functions without the cost and programming
complexity of having the entire structure within a single job.
The Dynamic Menu makes it very easy to perform Group Jobs by
eliminating a lot of programmer complexity. Multiple levels of
support are available and you only need to make entries into the
existing control files to cause the functions to occur.
Depending on how Group Jobs are done, they can be very confusing for
the end user. The Dynamic Menu provides assistance for the end user
to help minimize the confusion. Assistance occurs by sending status
messages when group jobs are started and ended and by displaying the
name of the current Group Job on an Attention Key menu. If the
Attention Key is not valid (not defined or not allowed for a specific
option), appropriate status messages are also displayed.
To allow for all of the flexibility provided by the system for Group
Jobs is generally way beyond an end users comprehension level.
However, if you keep the design fairly simple, you can generally
provide a valuable end user function.
In this document, three typical alternatives will be discussed.
There are many variations that could be made as well. Names will be
given to the solutions to assist in comprehending them. The system
does not use this terminology.
** Flip/Flop Group Jobs. The user just presses the Attention Key
to flip/flop between two Group Jobs. No Attention Key
handling menu is used.
** Primary/Secondary Group Jobs. A primary Group Job exists
which contains a menu of standard functions (such as DSPMSG)
which are done in the primary job. Other options on the
Primary menu are done using Secondary Group Jobs. When an
option is requested that causes a Secondary Group Job, the
Group Job is transferred to. When the user presses the
Attention Key in the Secondary Group Job, he always returns to
the Primary. No Attention Key menu is used. The Attention
Key is not valid in the Primary Group Job.
** Attention Key Handling Menu Group Jobs. The same Attention
Key Handling Menu exists in any Group Job and the user sees it
when he presses the Attention Key. He may transfer to any of
the Group Jobs on the menu.
Later sections describe how to implement these basic approaches.
To allow the Group Job function to be performed, the Dynamic Menu
tool reserves the last 150 bytes of the Group Job data area (*GDA).
These are bytes 363-512.
Group Jobs - Attention key - Dynamic Menu Support
-------------------------------------------------
Switching to a Group Job with an Attention Key is like the System
Request function of signing onto a secondary job with a few major
exceptions. The following describes the basic system support:
** Up to 16 group jobs are supported.
** No signon is required.
** The Attention Key can only be pressed when the keyboard is
open for input. The System Request key can be pressed at any
time to interrupt an application. Consequently, the Attention
Key is a lot safer to use in terms of protecting an
application.
** Some system functions (such as DSPMSG) prevent the use of the
Attention Key by masking its use. There is no message that
occurs if the Attention Key is masked or not defined. The key
is inoperative.
** The users current environment (such as the library list) is
copied when the Group Job is started.
** Signoff is not required for each Group Job. When any of the
Group jobs does a SIGNOFF, all jobs in the Group will be
ended.
** The Attention Key handling program is invocation level
sensitive (similar to Override commands). If you call a
program, it can change the program that is called or mask off
(prevent) the use of the Attention key. When a program is
called, the system saves the name of the Attention Key
handling program. When the program ends, the system will
automatically reset the Attention Key handling program.
In addition to the system restriction that the Attention Key cannot
be pressed when the keyboard is unlocked, the Dynamic Menu provides
additional protection and feedback. By default, the Attention key
will not be usable if the Group Job has any locked records. If it
does, the user will see an appropriate status message for 2 seconds.
A menu option can be totally masked from allowing the Attention key.
You would use this function if you wanted to make sure the end user
completed the option and was back at the menu before allowing an
interrupt. If you have masked the Attention Key and it is pressed,
the user will see an appropriate status message for 2 seconds.
Note that the user does not have to be on a menu when the Attention
Key is pressed. The user can be several screens or programs into an
application when a need arises to switch to a different group job.
When the user switches back, the same screen will be displayed.
Use with Application Functions that use the Attention Key
---------------------------------------------------------
Most application functions that use the Attention Key will be invoked
from a menu option. You will not have access to the Dynamic Menu use
of the Attention Key if the application uses the SETATNPGM command
and names a program or masks off the use of the key. On return, the
system will reset it to the definition set by the Dynamic Menu.
If you are using the office function (STROFC) as an an option from a
Dynamic Menu, Office uses the SETATNPGM command. Office establishes
a Group Job by the name of QUOPT. You may define Option 50 on the
Office menu to transfer to a Dynamic Menu Group Job.
Flip/Flop Group Jobs
--------------------
This simple approach allows the end user to press the Attention Key
to flip/flop between two Group Jobs. The only function you need to
specify is *FLIPFLOP in the Attention Key handling field of the user
record. The name DYNMNU1 must be used in the User record for the
'Default group job name' (it is the default). The second group job
that is started will be given the name DYNMNU2.
You cannot have any other Group Jobs active with the Flip/Flop
solution (do not attempt to mix this solution with an Attention Key
handling program).
When the user first presses the Attention Key, a status message will
appear stating that a Group Job is being started. A standard program
is used to execute STRDYNMNU. The user would see his initial menu as
defined in the User record.
When Attention is pressed again, the Dynamic Menu function does a
transfer back to the first job. The first job continues where it
left off. If Attention is pressed again, the second job is
transferred to where it left off. No status message occurs if the
group job has already been started.
If the user presses F3 on the initial menu of the second job, a
message is displayed stating that the job is ending and a transfer
occurs back to the first job. If Attention is pressed again, the
second job will be be started again and transferred to.
Obviously, there is more overhead in starting a Group Job than in
transferring to an existing Group Job. Users should be told not to
end the Group Jobs unless they do not plan to go back.
You can control by Option whether the Attention Key is valid. The
default is to check if any locked records exist and prevent a
transfer if they do. You may have certain options where the user
should complete the option before being allowed to transfer.
Primary/Secondary Group Jobs
----------------------------
The Dynamic Menu tool allows you to define a menu where an option can
be defined to be executed in a Group Job. For example, assume you
define a menu named PRIMARY with options to:
- Display messages
- Use a group job for PAYMNU (menu of payables functions)
- Use a group job for RCVMNU (menu of receivables functions)
- Use a group job for INQ1 (a standard inquiry program)
When you define the PRIMARY menu, no special entries are needed to
identify it as a Primary Group Job.
The options for the PRIMARY menu would be entered such as:
Option Descrp Sub menu Command Group job name
------ ------ -------- ------- --------------
01 DSPMSG DSPMSG *NONE
02 ACCPAYABL PAYMNU PAYGRP
03 ACCRCVABL RCVMNU RCVGRP
04 INQ1 CALL xxx INQGRP
You can use the same Group Job names as menu names, but different
names are used in this example to assist in understanding. The
'Descrp' field is only used for internal use (not seen by the end
user) and can be any value you want to make the entry more
understandable.
The PAYMNU and RCVMNU menus would be defined normally plus the
special value *TFRPRV as the Attention Key Handling function. This
specifies that if the Attention Key is pressed, the Group Job
transfers back to the previously active Group Job.
The PRIMARY menu would use the default of *USER for the Attention Key
and the user record would specify *NONE. This means that the
Attention Key cannot be used to transfer from the PRIMARY menu. The
user must enter an option to transfer to a Group Job. It would be
possible to define the Attention Key for MENUE as *TFRPRV. This
would mean to transfer to the most recently active Secondary Group
Job. If no Group Job was active, a special message would occur.
The INQGRP does not use STRDYNMNU. It specifies that some command be
executed (in this case a CALL). Because a Group Job is specified,
the Dynamic Menu will establish a Group Job by the name of INQGRP. A
specific program is assigned to the Attention Key that does the same
function as *TFRPRV (it just transfers back to the previously active
Group Job).
The *TFRPRV function transfers back to the most recently active Group
Job. In the case of the Primary/Secondary approach, this always
means to transfer back to the Primary Group Job.
The Group Job names will be seen by the user in status messages. The
first job that performs a Transfer to a Group Job must be given a
name as a Group Job. The Dynamic Menu tool handles this by using the
value assigned to the user record (the default is DYNMNU1). For this
example, you could change the User record to specify PRIGRP as the
Default Group Job Name.
In a typical solution, you would also want to specify PRIMARY as the
initial menu in the user record. When STRDYNMNU was invoked, the
user would see the PRIMARY menu. It would not become a Group Job
until the first Group Job option was requested.
Thus the user record would reflect:
Default menu PRIMARY
Default GRPJOB name PRIGRP
When Option 01 (DSPMSG) is used, the DSPMSG command is executed in
the same job as a normal menu option. You can execute any command
from the PRIMARY menu. There are no restrictions as there are in an
Attention Key handling program as described in the next solution.
When Option 02 is requested, a group job named PAYGRP is started (or
transferred to). The user would see the PAYMNU menu and could
perform normal functions.
If the user presses the Attention Key at that point, the Dynamic Menu
will transfer back to the Primary Group Job. The picture would look
like this:
Primary Group Job Secondary Group Jobs
----------------- --------------------
PAYGRP
***********
....... * PAYMNU *
PRIGRP . ***********
************ .
* * . RCVGRP
* PRIMARY * ..... ***********
* * ....... * RCVMNU *
************ . ***********
.
. INQGRP
. ***********
....... * INQ1 *
***********
The Secondary Group jobs cannot transfer to each other. This is a
fairly simple approach to comprehend and use. The user would
normally see the same set of menus that he would use if all functions
were handled in a single job. The advantage is he does not have to
'back out' of one application (such as 'payables') to perform a task
in another application (such as 'receivables').
The disadvantage is that if the user is in the PAYGRP Group Job and
wants to go to the RCVGRP Group Job, it takes two Group Job transfers
to get there. However, this is not as significant a performance
consideration as it may appear. See the discussion in the next
section.
The major cost overhead to be avoided is not the Group Job transfer
time, but rather the start up time for a new Group Job and the
overhead of getting the application files open, etc.
You could minimize the start up time by ensuring that it only occurs
once. You would do this by preventing the user from ending a Group
Job. For the PAYMNU and RCVMNU menus, you could just prevent the use
of F3 and F12 (a *YES/*NO field in the Menu record). The only way to
end the job would be to return to the Primary Group Job and do a
Signoff. The system ends all of the Group Jobs when Signoff occurs.
The INQ1 program would have to be coded so that it did not offer the
user a choice of ending.
To improve the performance of the solution, it would be desirable to
code the major menu options so that the program caused by the option
does a return without closing the files or program. In general, you
should find that the Group Job transfer time is small compared to the
time it takes to start a Group Job and begin the application (open
the files etc.).
Attention Key Handling Menu Group Jobs
--------------------------------------
The major disadvantage of the Primary/Secondary approach is that the
user must make two Group Job transfers to move from one Secondary
Group Job to another. You can eliminate this by having an Attention
Key handling menu that allows the user to transfer to any Group Job.
The disadvantage of this is that the user sees more displays and it
can result in more confusion.
What appears to be a performance advantage of this solution is not as
significant in actual practice. When an Attention Key handling
program puts up a display, the current display must be saved by the
system. If the user selects an option to transfer to another Group
Job and that Group Job is already active, the program that is active
is the Attention Key handling program for the other Group Job. The
system must end the Attention Key handling program and restore the
application display that was interrupted. Saving and restoring
screens is not a high performing solution particularly on remote
displays.
The simplest form of the Attention Key Handling approach is to use
the same Attention Key handling menu in every Group Job. Instead of
using the menu named PRIMARY in the Primary/Secondary solution, the
name of the menu would be changed to ATNKEY. The menu could offer
the same options.
You must be careful with an option like DSPMSG which will be executed
in the same job where the Attention Key is pressed and not in a
unique Group Job. The system recommends only simple commands like
DSPMSG. See the Work Management Guide for further discussion.
To code the ATNKEY menu, you would use the same entries as described
for the PRIMARY menu in the Primary/Secondary example.
The user needs some initial menu when STRDYNMNU is used. It would be
typical to choose the menu where the user does most of his work from.
Assume that you will use the PAYMNU menu for this. PAYMNU is already
defined for the ATNKEY menu as invoking the Group Job PAYGRP.
Therefore, you would need to change the User record to specify PAYMNU
as the initial menu
To specify that the ATNKEY menu be the Attention Key Handling program
is also done in the User Record. You would also need to change the
name of the Default Group Job name in the User record to PAYGRP (the
name specified as the Group Job name of the PAYMNU menu).
Thus the user record would reflect:
Default menu PAYMNU
Attn key handling ATNKEY
Default GRPJOB name PAYGRP
When the user invokes STRDYNMNU the initial menu PAYMNU would be
displayed. When the Attention Key is pressed, the ATNKEY menu would
be displayed. If the user chose an option that caused a group job,
it would be started and the user would be transferred to the menu.
When the Attention key was pressed, the user would see the same
ATNKEY menu as in the first Group Job. If the user chose Option 2, a
transfer would occur back to the PAYGRP job.
Changing a Menu or Option
-------------------------
If you change or delete a menu name (using GO DYNMNU) in the MNUMSTP
file, the corresponding records in the MNUDTLP and MNUSECP files will
also be changed or deleted.
If you change or delete an option number (using GO DYNMNU) in the
MNUDTLP file, any corresponding records in the MNUSECP will also be
changed or deleted.
If you change or delete the name of a user, any corresponding records
in the MNUSECP file will not be changed.
Implementation approach
-----------------------
When STRDYNMNU is used, a single CL program is placed in the program
stack. The CL program is used to display the menu, execute the
options, etc.
All data base accesses are done using a standard RPG program which
returns data in a large data structure. In order to be truly
'dynamic', the RPG program is called each time a menu is displayed.
Thus a user could take an option on a menu and find the menu changed
on return. The RPG program remains open until the CL program is
ended.
The CL program uses the information in the data structure to set user
and menu level options. It then displays the menu and waits for user
input. If the selected option requires a command be run, the command
is executed using QCMDEXC and the same menu is displayed again. If
the option requires a sub-menu, the RPG program is called and returns
with the new menu information.
The CL program keeps a stack of active menus and returns to the next
menu in the stack when a sub-menu ends. There is a limit of 20 menus
in the stack.
All logging is done using a separate RPG program which uses
SEQONLY(*NO) to force each entry to the history files. The RPG
program remains open until the CL program is ended.
A separate RPG program is used to write messages to the message
subfile.
If an Attention Key handling menu is requested, the name of the menu
is stored in the Group Data Area (*GDA). The STRDYNMNU command is
executed again which causes a second version of the CL program to
come into the program stack. It uses a unique display file and RPG
message subfile program. The same RPG program is used for data base
accesses. The second version of the CL program determines how to
handle the request and then returns to the previous display.
If a group job is requested, the group job information is passed in
the Group Job data area and used by standard programs in the separate
Group Job.
Commands and Menus provided
---------------------------
The only command provided for end users is STRDYNMNU:
STRDYNMNU Invokes the Dynamic Menu.
The following menu is provided for the Administrator.
GO DYNMNU Invokes the Administrator's Menu which.
The following commands are on the Administrator's menu or can be
invoked separately.
CRTDYNMNU Creates the data base files used by the Dynamic
Menu.
DSPDYNMNU Provides a simple display or listing of the current
status of each user using the Dynamic Menu.
ANZDYNMNU Provides simple queries against the history file to
assist in managing the Dynamic Menu system.
MTNDYNMNUM Maintains the MNUMSTP file of menu records. It
allows access to maintain the MNUDTLP file of option
records. An option from the subfile display will
access a program that maintains the MNUSECP file of
security records.
DUPDYNMNU Duplicates an existing menu and all corresponding
records to a new menu name. The command can be
useful when you want to create a new menu where most
of the information will be identical. You can
duplicate from a set of files in one library to
another if properly authorized.
MTNDYNMNUU Maintains the MNUUSRP file of user records.
CPYDYNMNUU Copies a user record in the MNUUSRP file to a new
name. Also copies any security records and changes
to the new name.
DSPDYNMNUU Displays a list of menus that a user can access
beginning with his initial menu. One line is listed
for each available option. If the option is secured
and the user is not authorized, the option is
bypassed.
CHKDYNMNUU Checks the users defined for the dynamic menu system
to see if they still exist and describes the last
signon date/time.
TSTDYNMNU Tests a Dynamic Menu for a specified user.
Note that no commands exist to print the Command logging history
(MNUCMDP) nor the control files (MNUUSRP, MNUMSTP, MNUDTLP, and
MNUSECP). For a simple listing function, consider either:
** DSPDBF TAA Tool. Front end to RUNQRY.
** PRTDB TAA Tool. Provides a generalized print program which
allows printing of one or more fields.
The following commands allow batch interfaces to the options for the
functions performed by MTNDYNMNUU.
ADDDYNMNUU Adds a user record to the MNUUSRP file. This is a
command interface instead of the MTNDYNMNUU
interactive interface.
CHGDYNMNUU Changes a user record in the MNUUSRP file. This is
a command interface instead of the MTNDYNMNUU
interactive interface.
DLTDYNMNUU Deletes a user record in the MNUUSRP file. This is
a command interface instead of the MTNDYNMNUU
interactive interface (maintains user records).
RTVDYNMNUU Retrieves the attributes of a user record from the
MNUUSRP file.
The following commands allow batch interfaces to the options for the
functions performed by MTNDYNMNU (maintains menu records).
ADDDYNMNUM Adds a menu record to the MNUMSTP file. This is a
command interface instead of the MTNDYNMNUM
interactive interface.
CHGDYNMNUM Changes a menu record in the MNUMSTP file. This is
a command interface instead of the MTNDYNMNUM
interactive interface.
DLTDYNMNUM Deletes a menu record in the MNUMSTP file and any
options and security information associated with the
menu. This is a command interface instead of the
MTNDYNMNUM interactive interface.
RTVDYNMNUM Retrieves the attributes of a menu record from the
MNUMSTP file.
HLDDYNMNUO Holds a menu option. This is a command interface
instead of the MTNDYNMNUM interactive interface.
RLSDYNMNUO Releases a menu option. This is a command interface
instead of the MTNDYNMNUM interactive interface.
CHKDYNMNUO Checks if a menu option is held. If so, the TAA9891
message is sent as an escape.
The following special command is used for reformatting.
RFMDYNMNU Reformats the files for field additions.
CRTDYNMNU command parameters *CMD
----------------------------
DYNMNULIB The library where the data base files will exist.
SRCLIB The source library of the DDS source. *TAAARC is
the default to access the source from the TAA
Archive. A specific library may also be used if you
have first copied the source from the Archive to
your library. The source file name QATTDDS must be
used.
STRDYNMNU command parameters *CMD
----------------------------
MENU The menu that will first be displayed. The default
is *USER which means the menu specified for the user
record in MNUUSRP.
DYNMNULIB The library where the data base files will exist.
MTNDYNMNUU command parameters *CMD
-----------------------------
USER The 'Position To- user. If specified, the subfile
will begin with that user. If blank, the subfile
begins with the first user in the file.
DYNMNULIB The library where the data base files will exist.
MTNDYNMNUM command parameters *CMD
-----------------------------
MENU The 'Position To- menu. If specified, the subfile
will begin with that menu. If blank, the subfile
begins with the first menu in the file.
DYNMNULIB The library where the data base files will exist.
DUPDYNMNU command parameters *CMD
----------------------------
MENU The menu to be duplicated.
NEWMENU The new menu name to be used. The menu must not
exist in the MNUMSTP file in the 'To' menu library.
FROMMNULIB The library where the data base files exist that
contain the menu to be duplicated.
TOMNULIB The library where the data base files exist that
will contain the new menu.
DSPDYNMNU command parameters *CMD
----------------------------
DYNMNULIB The library where the data base files will exist.
NONACT Lets you control whether non-active users will
appear in the display or listing.
*EXCLUDE is the default which means the output will
only contain users that are using the Dynamic Menu
for the current day.
If a Group Job is ended via signoff, no entry exists
that states the Dynamic Menu was ended. Therefore,
a certain amount of 'noise' from Group Jobs is
considered normal.
*INCLUDE allows you to see the current status of all
users who have used the Dynamic Menu for the current
day.
OUTPUT The standard system function for whether the output
will be displayed or printed.
ANZDYNMNU command parameters *CMD
----------------------------
The first set of parameters allow selection. The defaults allow all
the data to be included. You may specify one or more selection
criteria.
WRKSTN The Work Station name (Job name) to be included.
The default is *ALL.
USER The User name to be included. The default is *ALL.
JOBNBR The Job Number to be included. The default is *ALL.
MENU The Menu name (that assigned to a Dynamic menu) to
be included. The default is *ALL.
OPTION The Option ID to be included. The default is *ALL.
DESCRP The Option description to be included. The default
is *ALL.
ACTION The 2 character code assigned to each record. The
default is *ALL.
The possible values are:
BD Begin Dynamic Menu
ED End Dynamic Menu
BM Begin menu
BO Begin option
EN End option normal
EA End option abnormal
The EN and EA values will only exist if you have
requested logging of the completion of each option.
FROMDATE The 'from date' in the form of CYYMMDD. The default
is *FIRST meaning the first record in the file.
TODATE The 'to date' in the form of CYYMMDD. The default
is *LAST meaning the last record in the file.
FROMTIME The 'from time' in the form of HHMMSS. The default
is *FIRST meaning the first record in the file.
TOTIME The 'to time' in the form of HHMMSS. The default is
*LAST meaning the last record in the file.
The next parameter controls the sequence of the output.
SEQ The sequence of the listing. The default is
*DATETIME which is the same order the data is
written to the file.
The other options are:
*WRKSTN The workstation name (job name)
*USER The user name
*JOBNBR The job number
*MENU The menu name (Dynamic Menu name)
*OPTION The Option ID
*DESCRP The Option description
*ACTION The action (entry) code
Since the data in the file is in date/time sequence,
an option like *USER will always sequence the
records within user by date and time.
The last option is the library containing the data:
DYNMNULIB The library where the data base files exist.
ADDDYNMNUU command parameters *CMD
-----------------------------
USER The user to a add a record for.
DFTMNU The default menu to be used if STRDYNMNU(*USER) is
specified.
LANG The language attribute. The default is blank. If
you have a single language, leave this field blank.
For multiple languages, see the tool documentation.
BGNCMD The command to be executed prior to the first menu
being displayed. You can use this for a unique user
function such as setting the library list. The
default is *NONE.
ENDCMD The command to be executed when a return occurs
using F3 or F12 from the first menu displayed to the
user. The command will be executed if an option
causes a Signoff. The default is *NONE.
ATNKEY The action to be performed when the Attention key is
pressed. The default is *NONE for no action.
*FLIPFLOP may be entered to change to a second group
job in a flip-flop manner.
A dynamic menu name may be entered to display a
menu. Menus which can be accessed using the GO
command are not supported.
DFTGRP The default group job name assigned to the current
job if the user selects an option that causes a
group job. The default is DYNMNU1.
LOGCMD A *NONE, *YES, or *MENU option for whether to log
the commands run from the optional command line.
The default is *NONE.
*YES may be specified to log commands run from the
command line.
*MENU may be specified to use the option as
described for the menu.
CMDLIN A *NONE, *YES, or *MENU option for whether a command
line will be displayed. *NONE is the default
meaning a command line will not appear.
*YES may be entered to cause a command line to
appear so the user may enter commands.
*MENU may be entered to mean the menu record
controls whether a command line will be displayed.
LOGOPT Whether to log the beginning and end of each option
the user enters. *BGN is the default meaning that
logging occurs when the user enters the option, but
not when the option is completed.
*BGNEND means that logging occurs when the option is
entered and when it is completed.
SYSNAM A *YES or *NO option for whether the system name
will be be displayed on all menus. The default is
*YES to display the system name.
*NO may be specified to prevent the system name from
being displayed.
DATTIM A *YES or *NO option for whether the current date
and time will be displayed on all menus. The
default is *YES to display the current date and
time.
*NO may be specified to prevent the current date and
time from being displayed.
MSGF The name of the message file to be used to override
the messages from the QCPFMSG message file. This
allows for message translation. The default is
*NONE.
MSGFLIB The name of the message file library to be used to
override the messages from the QCPFMSG message file.
This allows for message translation. The default is
*NONE.
DYNMNULIB The library where the data base files exist.
CHGDYNMNUU command parameters *CMD
-----------------------------
USER The user record to changed.
DFTMNU The default menu to be used if STRDYNMNU(*USER) is
specified. The default is *SAME.
LANG The language attribute. The default is *SAME. If
you have a single language, use the default.
For multiple languages, see the tool documentation.
BGNCMD The command to be executed prior to the first menu
being displayed. You can use this for a unique user
function such as setting the library list. The
default is *SAME.
ENDCMD The command to be executed when a return occurs
using F3 or F12 from the first menu displayed to the
user. The command will be executed if an option
causes a Signoff. The default is *SAME.
ATNKEY The action to be performed when the Attention key is
pressed. The default is *SAME.
*NONE may may be entered to prevent an action when
the Attention key is pressed.
*FLIPFLOP may be entered to change to a second group
job in a flip-flop manner.
A dynamic menu name may be entered to display a
menu.
DFTGRP The default group job name assigned to the current
job if the user selects an option that causes a
group job. The default is *SAME.
LOGCMD A *NONE, *YES, *MENU, or *SAME option for whether to
log the commands run from the optional command line.
The default is *SAME.
*NONE may be be specified to prevent logging.
*YES may be specified to log commands run from the
command line.
*MENU may be specified to use the option as
described for the menu.
CMDLIN A *NONE, *YES, *MENU, or *SAME option for whether a
command line will be displayed. *SAME is the
default.
*NONE may be entered to mean a command line will not
appear.
*YES may be entered to cause a command line to
appear so the user may enter commands.
*MENU may be entered to mean the menu record
controls whether a command line will be displayed.
LOGOPT Whether to log the beginning and end of each option
the user enters. *SAME is the default.
Enter *BGN to mean that logging occurs when the user
enters the option, but not when the option is
completed.
*BGNEND means that logging occurs when the option is
entered and when it is completed.
SYSNAM A *YES, *NO, or *SAME option for whether the system
name will be be displayed on all menus. The default
is *SAME.
*YES may be specified to display the system name.
*NO may be specified to prevent the system name from
being displayed.
DATTIM A *YES, *NO, or *SAME option for whether the current
date and time will be displayed on all menus. The
default is *SAME.
*YES may be specified to display the current date
and time.
*NO may be specified to prevent the current date and
time from being displayed.
MSGF The name of the message file to be used to override
the messages from the QCPFMSG message file. This
allows for message translation. The default is
*SAME.
MSGFLIB The name of the message file library to be used to
override the messages from the QCPFMSG message file.
This allows for message translation. The default is
*SAME.
DYNMNULIB The library where the data base files exist.
DLTDYNMNUU command parameters *CMD
-----------------------------
USER The user record to deleted.
DYNMNULIB The library where the data base files exist.
RTVDYNMNUU command parameters *CMD
-----------------------------
USER The user record to retrieved.
DFTMNU The default menu to be used. This is an optional
parameter that if used must be specified as *CHAR
LEN(10).
LANG The language attribute. This is an optional
parameter that if used must be specified as *CHAR
LEN(1).
BGNCMD The command to be executed prior to the first menu
being displayed. This is an optional parameter that
if used must be specified as *CHAR LEN(100).
ENDCMD The command to be executed when a return occurs
using F3 or F12 from the first menu displayed to the
user. This is an optional parameter that if used
must be specified as *CHAR LEN(100).
ATNKEY The action to be performed when the Attention key is
pressed. This is an optional parameter that if used
must be specified as *CHAR LEN(10).
DFTGRP The default group job name assigned to the current
job if the user selects an option that causes a
group job. This is an optional parameter that if
used must be specified as *CHAR LEN(10).
LOGCMD The value for whether whether to log the commands
run from the optional command line. This is an
optional parameter that if used must be specified as
*CHAR LEN(5).
CMDLIN The value for whether a command line will be
displayed. This is an optional parameter that if
used must be specified as *CHAR LEN(5).
LOGOPT The value for logging as a user enters and exits and
option. This is an optional parameter that if used
must be specified as *CHAR LEN(7).
SYSNAM The value for whether the system name will be be
displayed on all menus. This is an optional
parameter that if used must be specified as *CHAR
LEN(4).
DATTIM The value for whether the current date and time will
be displayed on all menus. This is an optional
parameter that if used must be specified as *CHAR
LEN(4).
MSGF The name of the message file used to override the
messages from the QCPFMSG message file. This is an
optional parameter that if used must be specified as
*CHAR LEN(10).
MSGFLIB The name of the message file library used to
override the messages from the QCPFMSG message file.
This is an optional parameter that if used must be
specified as *CHAR LEN(10).
CHGDAT The last change date of activity on the user record
in the form CYMD. This is an optional parameter
that if used must be specified as *CHAR LEN(7).
DYNMNULIB The library where the data base files exist.
ADDDYNMNUM command parameters *CMD
-----------------------------
MENU The name of the menu record to be added.
LANG The language attribute. The default is blank. If
you have a single language, leave this field blank.
For multiple languages, see the tool documentation.
TITLE The title of the menu which will be centered.
COLUMNS The number of columns of options on the menu. The
default is 1 for a single column where each
description can be up to 60 bytes.
2 may be entered for a double column of options
where each description can be up to 30 bytes.
CMDLIN A *NONE or *YES option for whether a command line
will be displayed. *NONE is the default meaning a
command line will not appear.
*YES may be entered to cause a command line to
appear so the user may enter commands.
UNADOPT Whether to run the commands from the optional
command line without the program adopt function.
*YES is the default meaning any command entered
would be run as the user profile who signed on
without any benefit of the program adopt function.
*NO may be specified to run any commands including
any program adopt function.
BGNCMD The command to be executed prior to the menu being
displayed. You can use this for a unique user
function such as setting the library list. The
default is *NONE.
ENDCMD The command to be executed when a return occurs
using F3 or F12 from the menu. The command will be
executed if an option causes a Signoff. The default
is *NONE.
ALWF3 A *YES or *NO option for whether F3 will be valid on
the menu to be used as an exit. The default is *YES
to allow F3.
*NO may be specified to prevent the use of F3.
ALWF12 A *YES or *NO option for whether F12 will be valid
on the menu to be used as an exit. The default is
*YES to allow F12.
*NO may be specified to prevent the use of F12.
ATNKEY The action to be performed when the Attention key is
pressed. The default is *USER meaning the group job
function assigned to the user record.
*FLIPFLOP may be entered to change to a second group
job in a flip-flop manner.
*TFRPRV may be entered to transfer to the previous
group job.
A dynamic menu name may be entered to display a
menu.
LOGCMD A *USER or *YES option for whether to log the
commands run from the optional command line. The
default is *USER which means the value in the user
record determines whether logging occurs.
*YES may be specified to log commands run from the
command line.
LOGOPT Whether to log the beginning and end of each option
the user enters. The default is *USER meaning the
value in the user record determines what logging
will occur.
*BGN may be entered to cause logging when the user
enters the option, but not when the option is
completed.
*BGNEND may be entered to cause logging when the
option is entered and when it is completed.
ERROPT The type of error handling to be provided if an
option fails.
*NONE is the default meaning no special error
handling is provided.
*MSG may be entered to cause a message to be sent to
the name of the message queue specified for the
ERRMSGQ parameter.
*JOBLOG may be entered to cause DSPJOBLOG
OUTPUT(*PRINT). See the ERROUTQ parameter.
*ALL may be entered to cause both the *MSG and
*JOBLOG function.
ERRMSGQ The name of the message queue to be used if
ERROPT(*MSG) is specified.
ERRMSGQLIB The name of the message queue library to be used if
ERROPT(*MSG) is specified.
ERROUTQ The name of the output queue to be used if
ERROPT(*JOBLOG) is specified.
ERROUTQLIB The name of the output queue library to be used if
ERROPT(*JOBLOG) is specified.
DYNMNULIB The library where the data base files exist.
CHGDYNMNUM command parameters *CMD
-----------------------------
MENU The name of the menu record to be changed.
LANG The language attribute. The default is *SAME. If
you have a single language, use the default.
For multiple languages, see the tool documentation.
TITLE The title of the menu which will be centered. The
default is *SAME.
COLUMNS The number of columns of options on the menu. The
default is *SAME.
Enter 1 for a single column where each description
can be up to 60 bytes.
Enter 2 for a double column of options where each
description can be up to 30 bytes.
CMDLIN A *NONE, *YES, or *SAME option for whether a command
line will be displayed. *SAME is the default.
*NONE may be entered to mean a command line will not
appear.
*YES may be entered to cause a command line to
appear so the user may enter commands.
UNADOPT Whether to run the commands from the optional
command line without the program adopt function.
*SAME is the default.
Enter *YES to mean any command entered would be run
as the user profile who signed on without any
benefit of the program adopt function.
*NO may be specified to run any commands including
any program adopt function.
BGNCMD The command to be executed prior to the menu being
displayed. *SAME is the default. You can use this
for a unique user function such as setting the
library list.
Enter *NONE if no command is to be executed.
ENDCMD The command to be executed when a return occurs
using F3 or F12 from the menu. The command will be
executed if an option causes a Signoff. The default
is *SAME.
Enter *NONE if no command is to be executed.
ALWF3 A *YES, *NO, or *SAME option for whether F3 will be
valid on the menu to be used as an exit. The
default is *SAME.
Enter *YES to allow F3.
*NO may be specified to prevent the use of F3.
ALWF12 A *YES, *NO, or *SAME option for whether F12 will be
valid on the menu to be used as an exit. The
default is *SAME.
Enter *YES to allow F12.
*NO may be specified to prevent the use of F12.
ATNKEY The action to be performed when the Attention key is
pressed. The default is *SAME.
*USER may be entered to mean that the group job
function assigned to the user record will be used.
*FLIPFLOP may be entered to change to a second group
job in a flip-flop manner.
*TFRPRV may be entered to transfer to the previous
group job.
A dynamic menu name may be entered to display a
menu.
LOGCMD A *USER, *YES, or *SAME option for whether to log
the commands run from the optional command line.
The default is *SAME.
Enter *USER to mean the value in the user record
determines whether logging occurs.
*YES may be specified to log commands run from the
command line.
LOGOPT Whether to log the beginning and end of each option
the user enters. The default is *SAME.
Enter *USER to mean the value in the user record
determines what logging will occur.
*BGN may be entered to cause logging when the user
enters the option, but not when the option is
completed.
*BGNEND may be entered to cause logging when the
option is entered and when it is completed.
ERROPT The type of error handling to be provided if an
option fails. The default is *SAME.
Enter *NONE to mean no special error handling will
be provided.
*MSG may be entered to cause a message to be sent to
the name of the message queue specified for the
ERRMSGQ parameter.
*JOBLOG may be entered to cause DSPJOBLOG
OUTPUT(*PRINT). See the ERROUTQ parameter.
*ALL may be entered to cause both the *MSG and
*JOBLOG function.
ERRMSGQ The name of the message queue to be used if
ERROPT(*MSG) is specified. The default is *SAME.
ERRMSGQLIB The name of the message queue library to be used if
ERROPT(*MSG) is specified. The default is *SAME.
ERROUTQ The name of the output queue to be used if
ERROPT(*JOBLOG) is specified. The default is *SAME.
ERROUTQLIB The name of the output queue library to be used if
ERROPT(*JOBLOG) is specified. The default is *SAME.
DYNMNULIB The library where the data base files exist.
DLTDYNMNUM command parameters *CMD
-----------------------------
MENU The name of the menu record to be deleted. All
options and security information are also deleted.
DYNMNULIB The library where the data base files exist.
RTVDYNMNUM command parameters *CMD
-----------------------------
MENU The name of the menu record to be retrieved.
LANG The language attribute. An optional parameter that
if used must be specified as *CHAR LEN(1).
TITLE The title of the menu. An optional parameter that
if used must be specified as *CHAR LEN(50).
COLUMNS The number of columns of options on the menu. An
optional parameter that if used must be specified as
*CHAR LEN(1).
CMDLIN The option for whether a command line will be
displayed. An optional parameter that if used must
be specified as *CHAR LEN(4).
UNADOPT Whether to run the commands from the optional
command line without the program adopt function. An
optional parameter that if used must be specified as
*CHAR LEN(4).
BGNCMD The command to be executed prior to the menu being
displayed. An optional parameter that if used must
be specified as *CHAR LEN(100).
ENDCMD The command to be executed when a return occurs
using F3 or F12 from the menu. An optional
parameter that if used must be specified as *CHAR
LEN(100).
ALWF3 The option for whether F3 will be valid on the menu
to be used as an exit. An optional parameter that
if used must be specified as *CHAR LEN(4).
ALWF12 The option for whether F12 will be valid on the menu
to be used as an exit. An optional parameter that
if used must be specified as *CHAR LEN(4).
ATNKEY The action to be performed when the Attention key is
pressed. An optional parameter that if used must be
specified as *CHAR LEN(10).
LOGCMD The option for whether to log the commands run from
the optional command line. An optional parameter
that if used must be specified as *CHAR LEN(10).
LOGOPT Whether to log the beginning and end of each option
the user enters. An optional parameter that if used
must be specified as *CHAR LEN(7).
ERROPT The type of error handling to be provided if an
option fails. An optional parameter that if used
must be specified as *CHAR LEN(7).
ERRMSGQ The name of the message queue used if ERROPT(*MSG)
is specified. An optional parameter that if used
must be specified as *CHAR LEN(10).
ERRMSGQLIB The name of the message queue library used if
ERROPT(*MSG) is specified. An optional parameter
that if used must be specified as *CHAR LEN(10).
ERROUTQ The name of the output queue used if ERROPT(*JOBLOG)
is specified. An optional parameter that if used
must be specified as *CHAR LEN(10).
ERROUTQLIB The name of the output queue library used if
ERROPT(*JOBLOG) is specified. An optional parameter
that if used must be specified as *CHAR LEN(10).
CHGDAT The last change date of activity on the user record
in the form CYMD. This is an optional parameter
that if used must be specified as *CHAR LEN(7).
DYNMNULIB The library where the data base files exist.
HLDDYNMNUO command parameters *CMD
-----------------------------
MENU The menu where the option exists to be held.
OPTION The option number on the menu to be held.
LANG The option language to be held. The value should be
blank if you have only a single language. If you
have multiple languages, see the tool documentation.
DYNMNULIB The library where the data base files exist.
RLSDYNMNUO command parameters *CMD
-----------------------------
MENU The menu where the option exists to be released.
OPTION The option number on the menu to be released.
LANG The option language to be released. The value
should be blank if you have only a single language.
If you have multiple languages, see the tool
documentation.
DYNMNULIB The library where the data base files exist.
CHKDYNMNUO command parameters *CMD
-----------------------------
MENU The menu where the option exists to be checked.
OPTION The option number on the menu to be checked.
LANG The option language to be released. The value
should be blank if you have only a single language.
If you have multiple languages, see the tool
documentation.
DYNMNULIB The library where the data base files exist.
CHKDYNMNUU command parameters *CMD
-----------------------------
DYNMNULIB The library where the data base files exist.
OUTPUT How to output the results. * is the default to
display the spooled file if the command is entered
interactively. The spooled file is deleted after it
is displayed.
If the command is entered in batch or *PRINT is
specified, the spooled file is output and retained.
CPYDYNMNUU command parameters *CMD
-----------------------------
FROMUSER The user to copy the user information and any
security records from.
TOUSER The user to copy the user information to.
DYNMNULIB The library where the data base files exist.
DSPDYNMNUU command parameters *CMD
-----------------------------
USER The user who's menu is to be displayed. The default
is * meaning the current user.
DYNMNULIB The library where the data base files will exist.
OUTPUT How to output the results. * is the default to
display the spooled file if the command is entered
interactively. The spooled file is deleted after it
is displayed.
If the command is entered in batch or *PRINT is
specified, the spooled file is output and retained.
RFMDYNMNU command parameters *CMD
----------------------------
DYNMNULIB The library where the data base files currently
exist. They will be re-created in the same library
and the existing data will be retained.
WRKLIB The work library that will be used to copy the
current files to. A unique library is desirable so
you can simplify review and deletion.
After the command completes, the old versions of the
files will be retained in the work library. When
you are satisfied with the new versions, delete the
files from the work library.
MTNMNUHST command parameters *CMD
----------------------------
RTNDAYS The number of days of history records to retain.
The default is 30 meaning that any history records
with a date prior to 30 days ago will be deleted
from the MNUHSTP file.
DYNMNULIB The name of the library where the dynamic menu files
exist. The default is *LIBL. *CURLIB may also be
used.
MTNMNUCMD command parameters *CMD
----------------------------
RTNDAYS The number of days of command records to retain.
The default is 30 meaning that any command records
with a date prior to 30 days ago will be deleted
from the MNUCMDP file.
DYNMNULIB The name of the library where the dynamic menu files
exist. The default is *LIBL. *CURLIB may also be
used.
TSTDYNMNU command parameters *CMD
----------------------------
MENU The menu to be displayed. The default is *USER
meaning the initial menu of the user specified in
the USER parameter.
USER The user who's menu is to be displayed. The default
is * meaning the current user.
DYNMNULIB The library where the data base files will exist.
MNUUSRP File - User file
------------------------
There is one record per user.
MUUSER User name. This must be the name of a user profile
that will use the Dynamic Menu function. The name
must be unique.
MUMENU Menu name. The default menu used by the user. This
menu will be used unless a named menu is specified
on STRDYNMNU.
MULANG Language. The one character language code. Leave
blank unless you have multiple languages used. See
the section on Language Translation.
MUBGNC Beginning command. A command that will be executed
when the user begins the STRDYNMNU function.
MUENDC Ending command. A command that will be executed
when the user ends the STRDYNMNU function. The
command will only be executed if F3/F12 is used to
end from the highest level menu or if the special
RETURN command is used for an option.
MUATN Attention key handling. How the Attention Key will
be handled.
*NONE is the default and means that the Attention
Key is not supported.
*FLIPFLOP means the Flip/Flop form of Group Jobs
described previously.
A menu name means to display the menu when the
Attention Key is pressed. This is the example used
for the ATNKEY menu in the demonstration.
MUGRPN Default Group Job name. DYNMNU1 is the default
which is intended to work with the simplest form of
Group Job support (Flip/Flop). Enter a name if you
intend to use one of the other Group Job approaches.
MUCMDL Command line. A *YES/*NO, *MENU value that
determines if a command line will exist on the menu
for this user.
*MENU is the default meaning the decision is based
on the corresponding field in the menu record.
*YES means a command line will always exist
regardless of what the menu option is. If the user
is LMTCPB(*YES), only commands that are allowed to
limited users may be entered. See the ALWLMTUSR
parameter on CRT/CHGCMD. By default, any commands
entered operate under only the users profile
(adopted authority is not included).
*NO means a command line will never appear for the
user.
MULOGC Log Commands. A *YES/*NONE value that determines
whether commands entered on a command line will be
logged to the MNUCMDP file. *NONE is the default.
The commands executed by options are not logged by
this option.
MULOGO Log Options. *BGN is the default and causes the
logging at the beginning of the option before any
application code has been invoked. Logging occurs
to the MNUHSTP file.
*BGNEND logs both the beginning and end of the
option. The ending entry contains a code field for
whether the option completed normally or abnormally.
MUMNUS System name on menu. The default is *YES which
causes the system name to to be displayed in the
upper right hand corner of any menus for the user.
MUMNUD Date/time on menu. The default is *YES which causes
the current date/time to be displayed on the right
side of line 2 of any menus for the user.
MUMOVF Message override file. *NONE is the default and
should be used unless you have multiple languages.
See Language Translation.
MUMOVL Message override library. *NONE is the default and
should be used unless you have multiple languages.
See Language Translation.
MUCDAT Last change date in CYYMMDD format. Auditing field
which cannot be input. It is entered for a new
record or if the record is changed.
MNUMSTP File - Menu master file
-------------------------------
There is one record per menu.
MAMENU Menu name. The name of the menu. It must be
unique. The name appears in the upper left hand
corner of the menu.
MALANG Language. The one character language code. Leave
blank unless you have multiple languages used. See
the section on Language Translation.
MATITL Title. The title of the menu that will appear on
Line 1 of the menu. Up to 50 characters may be
entered. The title is automatically centered in the
space available at the top of the menu.
MACOLS Number of columns. A value of 1 (up to 13 lines) or
2 (up to 26 lines) may be used.
MACMDL Command line. A *YES/*NO value for should a command
line exist. This value is only used if the
corresponding field in the user record is *MENU.
*NO is the default and means only a 2 digit
selection field is displayed.
*YES means a command line may be entered by the
user. If the user is LMTCPB(*YES) in his user
profile, only commands which are ALWLMTUSR(*YES) can
be executed.
MAADPC Use unadopt for command line. A *YES/*NO value for
whether authority should be unadopted. *YES is the
default and means that any command entered will be
executed using 'unadopt' (meaning no adopted
authority from any programs higher in the program
stack will apply).
MABGNC Beginning command. An optional command that if
entered will be executed when the menu begins.
*NONE is the default.
MAENDC Ending command. An optional command that if entered
will be executed when the menu ends. *NONE is the
default. The command will only be executed if
F3/F12 is used to end from the highest level menu or
if the special RETURN command is used for an option.
MAF3 Allow F3. A *YES/*NO value for whether F3 will be
valid to end the menu. *YES is the default.
MAF12 Allow F12. A *YES/*NO value for whether F12 will be
valid to end the menu. *YES is the default.
MAATN Attention key handling. How attention key handling
should occur if the Attention key is pressed.
The default is *USER meaning to take the value from
the user record.
*FLIPFLOP means the Flip/Flop form of Group Jobs
described previously.
*TFRPRV may be entered to mean transfer to the
previously active Group Job.
A menu name means to display the menu when the
Attention Key is pressed. This is the example used
for the ATNKEY menu in the demonstration.
MALOGC Log commands. Whether commands entered on a command
line will be logged to the MNUCMDP file. The
commands executed by options are not logged by this
option.
The default is *USER meaning to use the value
specified in the user record.
*YES means that commands are logged regardless of
how the user record is specified.
MALOGO Log Options. The default is *USER meaning to use
the value specified in the user record.
*BGN causes the logging at the beginning of the
option before any application code has been invoked.
Logging occurs to the MNUHSTP file.
*BGNEND logs both the beginning and end of the
option. The ending entry contains a code field for
whether the option completed normally or abnormally.
MAERRO Error Option.
How errors should be handled if the option fails
(sends an escape message). *NONE is the default and
means the escape message will appear in the message
subfile as the only indication.
*MSG means a message will be sent to a message
queue. See the MAEMSG and MAEMSGL fields.
*JOBLOG means that DSPJOBLOG will be used to output
the current job log to print. An output queue may
be named with the MAEOT and MAEOTL fields.
MAEMSG Error Message Queue. The message queue to receive a
special message indicating an option failed. See
the MAERRO field.
MAEMSL Error Message Queue Library. The message queue
library to receive a special message indicating an
option failed. See the MAERRO field.
MAEOT Error Output Queue. The Output queue for the job
log if an option fails. See the MAERRO field.
MAEOTL Error Output Queue Library. The Output queue
library for the job log if an option fails. See the
MAERRO field.
MACDAT Last change date in CYYMMDD format. Auditing field
only which cannot be input. It is entered for a new
record or if the record is changed.
MNUDTLP File - Menu detail file
-------------------------------
There is one record per option on a menu.
MDMENU Menu name. The name of the menu.
MDOPT Option. The two digit option identifier.
MDLANG Language. The one character language code. Leave
blank unless you have multiple languages used. See
the section on Language Translation.
MDDESC Description. The text description of the option (10
characters). This is an optional field that should
be entered to provide a description for an option.
The description does not appear to the end user.
The description is used on the DSPDYNMNU and
ANZDYNMNU output and assists you in reviewing the
option.
*HDG1 should be entered to mean the option text will
be used as a heading. The heading will be indented
3 positions to the right and will not be hi-lighted.
*HDG2 should be entered to mean the option text will
be used as a heading. The heading will be indented
3 positions to the right and will be hi-lighted.
MDBLKL Blank line before. *NO is the default and means
there is no blank line before the option on the
menu.
*YES should be entered when a blank line will
provide better readability on the menu.
*AFT should be entered when a blank line should
appear after the option.
*BTH should be entered when a blank line should
appear both before and after the option.
A 2-9 value should be entered to cause 2-9 blank
lines to appear after the option.
MDSEC Secure option. *NO is the default and means the
option is not secure. Any user who can access the
menu can access the option. If *YES is entered, the
option will not be displayed unless there is a
record in the MNUSECP file for the user. The option
will not appear on the menu and does not take up a
blank line. Following options will 'move up'. If
*YS2 is entered, the option will not be displayed
unless there is a record in the MNUSECP file for the
user, but the option will appear as a blank line.
The intent of this value is to allow a heading line
that should appear in a fixed location (such as the
top of the second column) to appear as a blank line.
MDOPTT Option text. The text for the option that will
appear on the menu. Up to 60 characters can be
entered for a single column menu and up to 30
characters for a double column menu.
If *HDG1 or *HDG2 is entered into the MDDESC field,
the text is used as a heading and will be indented 3
positions (no option field will appear).
MDHOLD Hold the option. *NO is the default and means to
allow the option to occur. *YES may be entered to
prevent a user from using the option. *YES does not
prevent an existing user of the option from
continuing to use the option.
MDSUBM Sub-menu. *NONE is the default which means a
command must be entered for MDCMD. If a sub-menu is
named, it must be a menu defined in the STRDYNMNU
files.
MDCMD Command. *NONE is the default which means a
sub-menu must be entered for MDSUBM. Any command
that can be executed by QCMDEXC is valid. This
excludes 'CL Program only' commands such as DCL.
The RETURN command is special cased to that it may
be used for a menu which does not support F3/F12 to
end the menu.
MDGRPJ Group Job. *NONE is the default which means the
option is to be executed in the same job. If a name
is entered it means to execute the option in a Group
Job by that name.
MDALWA Allow Attention Key. *CHK is the default which
means the Attention Key is valid to be used if no
Record Locks are held by the job. If record locks
exist, the user will see an appropriate message.
*YES means to allow the Attention Key without
checking for Record Locks.
*NO means to disallow the Attention Key. The user
will see an appropriate message.
MDERRO Error Option.
How errors should be handled if the option fails
(sends an escape message). *MENU is the default
which means to take the action from the
corresponding field in the menu record.
*NONE means the escape message will appear in the
message subfile as the only indication.
*MSG means a message will be sent to a message
queue. See the MAEMSG and MAEMSGL fields in the
menu record.
*JOBLOG means that DSPJOBLOG will be used to output
the current job log to print. An output queue may
be named with the MAEOT and MAEOTL fields in the
menu record.
MACDAT Last change date in CYYMMDD format. Auditing field
which cannot be input. It is entered for a new
record or if the record is changed.
MNUSECP File - Security file
-----------------------------
There is one record per user per secure option.
MSMENU Menu name. The name of the menu.
MSOPT Option. The two digit option identifier.
MSUSER User name. The user who may use the option. This
must be the signed on user profile name (Group
Profiles are not supported).
Language Translation
--------------------
The Dynamic Menu allows the Menu text (top line) and the Option text
to be translated for a users native language. You do not need this
function if you have a single native language.
The following discussion is intended for systems where end users have
multiple languages.
Each user must be identified as to what language he uses. The user
record contains a one byte field. For example, you could enter I for
Italian.
The menu maintenance subfile contains an option to add language
records. Use this to enter unique records for each desired language.
Use the F10 key to display the language records in the same subfile.
You can change an existing language record by using the normal Change
Option.
The Option maintenance subfile contains a similar option to add
language records for each Option. Use this to enter unique records
for each desired language. Use the F10 key to display the language
records in the same subfile. You can change an existing language
record by using the normal Change Option.
You must create a separate message file for each unique language.
The base messages are stored in the TAAMNUAM message file in TAATOOL.
Use CRTDUPOBJ and name any TOLIB as needed (it does not have to be
the same library as the Dynamic Menu files) such as:
CRTDUPOBJ OBJ(TAAMNUAM) FROMLIB(TAATOOL)
OBJTYPE(*MSGF) TOLIB(xxx)
NEWOBJ(ITALIAN)
The message file contains both constants that appear on the Dynamic
Menu and messages used from the programs. Modify these with the
command:
WKRMSGD MSGF(ITALIAN)
For each message ID, change the text to the desired language. Create
as many message files as needed.
You must then create a special data area in the same library as your
Dynamic Menu data base files which will allow the Dynamic Menu
program to find the appropriate Message file that you just created.
The TAA Tool CRTLNGMSGF is used.
CRTLNGMSGF LIB(xxx)
Use the TAA Tool CONARR to edit the data area:
EDTCONARR DTAARA(xxx/LNGMSGF)
The Language section must contain the one character code assigned to
the language. The QLFD MSGF area contains the corresponding name of
the message files you created previously.
After you have entered the data, the data area might appear as:
Sequence Language Len = 1 Qlfd MSGF Len = 20
010 E___________________ ENGLISH___QGPL______
020 G___________________ GERMAN____QGPL______
030 I___________________ ITALIAN___QGPL______
.
.
When the Dynamic Menu program begins, it determines the language to
be used for the user and uses the LNGMSGF tool to determine the name
of the qualified message file containing the constants and messages.
It accesses the message file to retrieve the constant information and
uses this for the standard Menu description text. When the menu text
and option text information is accessed from the Dynamic Menu data
base files, the program recognizes that different language text is
needed and searches in the appropriate file for the text. This is
used to overlay the native language text.
The message file used to contain the TAA messages sent to the user
during the execution of the Dynamic Menu is overridden automatically.
You may specify in the User record an Override message file name to
be used instead of QCPFMSG. You would normally use the specific
language message file provided by the system for that language.
Note that the intent is that the end user will see constants, text,
and messages in the appropriate native language. Disaster exceptions
will appear in English. The Administrator will see all displays in
English as he uses the functions on GO DYNMNU.
Note that the code page is not changed during the processing of the
Dynamic Menu. If this is important, it must be changed before the
Dynamic Menu is invoked.
Restrictions
------------
Several restrictions are stated throughout the document. The system
has several restrictions regarding Group Jobs that also exist. If an
Attention Key menu is used to execute commands in the same job (not
as a Group Job), use only very simple commands such as DSPMSG.
To reiterate some of the major restrictions:
** The last 150 bytes of the Group Job data area (*GDA) are
reserved (positions 363-512).
** There can be 13 options and blank lines on a single column
menu. There can be 26 options and blank lines on a double
column menu.
The RU (Rollup) and RD (Rolldown) options may be
used to give the appearance that a menu has multiple
pages.
** All commands entered as data for options are executed using
QCMDEXC. The Dynamic Menu tool checks these commands using an
API which inserts keywords and performs syntax checking. This
does not ensure that the commands will be valid using QCMDEXC.
** It is valid to have a menu that has already been invoked at
one level specified again as a submenu. It is also valid to
use STRDYNMNU as a command for an option or allow the user to
enter it on a command line. In most cases, something
meaningful will happen with the Dynamic Menu, but this is a
user beware situation.
Prerequisites
-------------
The following TAA Tools must be on your system:
ADJVAR Adjust variable
CHKOBJ2 Check object 2
CPYTAADDS Copy TAA DDS
EDTVAR Edit variable
EXTCMD Extract command
FMTLIN Format line
LNGMSGF Language message file
RTVCMDA Retrieve command attributes
RTVSYSVAL3 Retrieve system value 3
SNDCOMPMSG Send completion message
SNDESCMSG Send escape message
SNDSTSMSG Send status message
TRNVAL Translate value
WRTSRC Write source
Implementation
--------------
None, the tool is ready to use. The data must be entered into the
files to cause the menu function.
Objects used by the tool
------------------------
Object Type Attribute Src member Src file
------ ---- --------- ---------- ----------
STRDYNMNU *CMD TAAMNUA QATTCMD
CRTDYNMNU *CMD TAAMNUA2 QATTCMD
MTNDYNMNUU *CMD TAAMNUA3 QATTCMD
MTNDYNMNUM *CMD TAAMNUA4 QATTCMD
DSPDYNMNU *CMD TAAMNUA7 QATTCMD
ANZDYNMNU *CMD TAAMNUA8 QATTCMD
TSTDYNMNU *CMD TAAMNUA9 QATTCMD
DUPDYNMNU *CMD TAAMNUA10 QATTCMD
ADDDYNMNUU *CMD TAAMNUA11 QATTCMD
CHGDYNMNUU *CMD TAAMNUA12 QATTCMD
DLTDYNMNUU *CMD TAAMNUA13 QATTCMD
RTVDYNMNUU *CMD TAAMNUA14 QATTCMD
ADDDYNMNUM *CMD TAAMNUA15 QATTCMD
CHGDYNMNUM *CMD TAAMNUA16 QATTCMD
DLTDYNMNUM *CMD TAAMNUA17 QATTCMD
RTVDYNMNUM *CMD TAAMNUA18 QATTCMD
HLDDYNMNUO *CMD TAAMNUA23 QATTCMD
RLSDYNMNUO *CMD TAAMNUA24 QATTCMD
CHKDYNMNUO *CMD TAAMNUA25 QATTCMD
DSPDYNMNUU *CMD TAAMNUA51 QATTCMD
CHKDYNMNUU *CMD TAAMNUA52 QATTCMD
CPYDYNMNUU *CMD TAAMNUA53 QATTCMD
RFMDYNMNU *CMD TAAMNUA54 QATTCMD
MTNMNUHST *CMD TAAMNUA55 QATTCMD
MTNMNUCMD *CMD TAAMNUA56 QATTCMD
TAAMNUAC *PGM CLP TAAMNUAC QATTCL
TAAMNUAC2 *PGM CLP TAAMNUAC2 QATTCL
TAAMNUAC3 *PGM CLP TAAMNUAC3 QATTCL
TAAMNUAC4 *PGM CLP TAAMNUAC4 QATTCL
TAAMNUAC7 *PGM CLP TAAMNUAC7 QATTCL
TAAMNUAC8 *PGM CLP TAAMNUAC8 QATTCL
TAAMNUAC9 *PGM CLP TAAMNUAC9 QATTCL
TAAMNUAC10 *PGM CLP TAAMNUAC10 QATTCL
TAAMNUAC11 *PGM CLP TAAMNUAC11 QATTCL
TAAMNUAC12 *PGM CLP TAAMNUAC12 QATTCL
TAAMNUAC13 *PGM CLP TAAMNUAC13 QATTCL
TAAMNUAC14 *PGM CLP TAAMNUAC14 QATTCL
TAAMNUAC15 *PGM CLP TAAMNUAC15 QATTCL
TAAMNUAC16 *PGM CLP TAAMNUAC16 QATTCL
TAAMNUAC17 *PGM CLP TAAMNUAC17 QATTCL
TAAMNUAC18 *PGM CLP TAAMNUAC18 QATTCL
TAAMNUAC19 *PGM CLP TAAMNUAC19 QATTCL
Objects used by the tool - Continued
------------------------------------
Object Type Attribute Src member Src file
------ ---- --------- ---------- ----------
TAAMNUAC22 *PGM CLP TAAMNUAC22 QATTCL
TAAMNUAC23 *PGM CLP TAAMNUAC23 QATTCL
TAAMNUAC24 *PGM CLP TAAMNUAC24 QATTCL
TAAMNUAC25 *PGM CLP TAAMNUAC25 QATTCL
TAAMNUAC26 *PGM CLP TAAMNUAC26 QATTCL
TAAMNUAC31 *PGM CLP TAAMNUAC31 QATTCL
TAAMNUAC32 *PGM CLP TAAMNUAC32 QATTCL
TAAMNUAC33 *PGM CLP TAAMNUAC33 QATTCL
TAAMNUAC34 *PGM CLP TAAMNUAC34 QATTCL
TAAMNUAC35 *PGM CLP TAAMNUAC35 QATTCL
TAAMNUAC36 *PGM CLP TAAMNUAC36 QATTCL
TAAMNUAC37 *PGM CLP TAAMNUAC37 QATTCL
TAAMNUAC51 *PGM CLP TAAMNUAC51 QATTCL
TAAMNUAC52 *PGM CLP TAAMNUAC52 QATTCL
TAAMNUAC53 *PGM CLP TAAMNUAC53 QATTCL
TAAMNUAC54 *PGM CLP TAAMNUAC54 QATTCL
TAAMNUAC55 *PGM CLP TAAMNUAC55 QATTCL
TAAMNUAC56 *PGM CLP TAAMNUAC56 QATTCL
TAAMNUAC72 *PGM CLP TAAMNUAC72 QATTCL
TAAMNUAR *PGM RPG TAAMNUAR QATTRPG
TAAMNUAR3 *PGM RPG TAAMNUAR3 QATTRPG
TAAMNUAR4 *PGM RPG TAAMNUAR4 QATTRPG
TAAMNUAR5 *PGM RPG TAAMNUAR5 QATTRPG
TAAMNUAR6 *PGM RPG TAAMNUAR6 QATTRPG
TAAMNUAR7 *PGM RPG TAAMNUAR7 QATTRPG
TAAMNUAR8 *PGM RPG TAAMNUAR8 QATTRPG
TAAMNUAR10 *PGM RPG TAAMNUAR10 QATTRPG
TAAMNUAR11 *PGM RPG TAAMNUAR11 QATTRPG
TAAMNUAR15 *PGM RPG TAAMNUAR15 QATTRPG
TAAMNUAR16 *PGM RPG TAAMNUAR16 QATTRPG
TAAMNUAR19 *PGM RPG TAAMNUAR19 QATTRPG
TAAMNUAR21 *PGM RPG TAAMNUAR21 QATTRPG
TAAMNUAR22 *PGM RPG TAAMNUAR22 QATTRPG
TAAMNUAR23 *PGM RPG TAAMNUAR23 QATTRPG
TAAMNUAR25 *PGM RPG TAAMNUAR25 QATTRPG
TAAMNUAR33 *PGM RPG TAAMNUAR33 QATTRPG
TAAMNUAR51 *PGM RPG TAAMNUAR51 QATTRPG
TAAMNUAR52 *PGM RPG TAAMNUAR52 QATTRPG
TAAMNUAR53 *PGM RPG TAAMNUAR53 QATTRPG
TAAMNUAB *FILE PF TAAMNUAB QATTDDS
TAAMNUAD *FILE DSPF TAAMNUAD QATTDDS
TAAMNUAE *FILE DSPF TAAMNUAE QATTDDS
Objects used by the tool - Continued
------------------------------------
Object Type Attribute Src member Src file
------ ---- --------- ---------- ----------
TAAMNUAF *FILE DSPF TAAMNUAF QATTDDS
TAAMNUAG *FILE DSPF TAAMNUAG QATTDDS
TAAMNUAH *FILE PF TAAMNUAH QATTDDS
TAAMNUAI *FILE DSPF TAAMNUAI QATTDDS
TAAMNUAJ *FILE DSPF TAAMNUAJ QATTDDS
TAAMNUAK *FILE DSPF TAAMNUAK QATTDDS
TAAMNUAP *FILE PF TAAMNUAP QATTDDS
TAAMNUAQ *FILE PF TAAMNUAQ QATTDDS
TAAMNUAS *FILE PF TAAMNUAS QATTDDS
TAAMNUAU *FILE PF TAAMNUAU QATTDDS
TAAMNUAW *FILE LF TAAMNUAW QATTDDS
TAAMNUAX *FILE LF TAAMNUAX QATTDDS
TAAMNUAY *FILE LF TAAMNUAY QATTDDS
TAAMNUAZ *FILE LF TAAMNUAZ QATTDDS
TAAMNUAM *MSGF No source
The following files are created in TAATOOL as part of the Create
process, but no specific member exists. The files are used to allow
a random keyed access in several programs. The source is used as
follows:
Source TAATOOL file Description
------ ------------ -----------
TAAMNUAP TAAMNUAN Menu master
TAAMNUAQ TAAMNUAO Menu detail
TAAMNUAS TAAMNUAT Menu security
When CRTDYNMNU is used, the following source is used to create files
in the specified libraries:
Source User object Description
------ ----------- -----------
TAAMNUAB MNUCMDP Command history
TAAMNUAH MNUHSTP Option history
TAAMNUAP MNUMSTP Menu master
TAAMNUAQ MNUDTLP Menu detail (Options)
TAAMNUAS MNUSECP Security
TAAMNUAU MNUUSRP User record
TAAMNUAW MNUUSRLA User record by arrival sequence
TAAMNUAX MNUMSTLA Menu master by arrival sequence
TAAMNUAY MNUDTLLA Menu detail by arrival sequence
TAAMNUAZ MNUSECLA Security by arrival sequence
Structure
---------
STRDYNMNU Cmd
TAAMNUAC CL pgm
TAAMNUAC21 CL Pgm to access App Value in TAASECURE
TAAMNUAD Dsp file
TAAMNUAR RPG Pgm to write to message subfile
TAAMNUAR19 RPG Pgm for data base accesses
For Attention key use
TAAMNUAC CL pgm
TAAMNUAE Dsp file
TAAMNUAR33 RPG Pgm to write to message subfile
CRTDYNMNU Cmd
TAAMNUAC2 CL pgm
MTNDYNMNUU Cmd
TAAMNUAC3 CL pgm
TAAMNUAR3 RPG Pgm Maintain user record
TAAMNUAF Dsp file Maintain user record
MTNDYNMNUM Cmd
TAAMNUAC4 CL pgm
TAAMNUAR4 RPG Pgm Maintain menu record
TAAMNUAG Dsp file Maintain menu record
TAAMNUAR5 RPG Pgm Maintain option record
TAAMNUAI Dsp file Maintain option record
TAAMNUAR6 RPG Pgm Maintain security record
TAAMNUAJ Dsp file Maintain security record
DUPDYNMNU Cmd
TAAMNUAC10 CL pgm
TAAMNUAR10 RPG Pgm
DSPDYNMNU Cmd
TAAMNUAC7 CL pgm
TAAMNUAR7 RPG pgm
ANZDYNMNU Cmd
TAAMNUAC8 CL pgm
TAAMNUAR8 RPG pgm
Structure - Continued
---------------------
ADDDYNMNUU Cmd
TAAMNUAC11 CL pgm
TAAMNUAR11 RPG pgm
CHGDYNMNUU Cmd
TAAMNUAC12 CL pgm
TAAMNUAR11 RPG pgm
DLTDYNMNUU Cmd
TAAMNUAC13 CL pgm
TAAMNUAR11 RPG pgm
RTVDYNMNUU Cmd
TAAMNUAC14 CL pgm
TAAMNUAR11 RPG pgm
ADDDYNMNUM Cmd
TAAMNUAC15 CL pgm
TAAMNUAR16 RPG pgm
CHGDYNMNUM Cmd
TAAMNUAC16 CL pgm
TAAMNUAR11 RPG pgm
DLTDYNMNUM Cmd
TAAMNUAC17 CL pgm
TAAMNUAR15 RPG pgm Deletes detail options and security
TAAMNUAR16 RPG pgm Deletes menu
RTVDYNMNUM Cmd
TAAMNUAC18 CL pgm
TAAMNUAR16 RPG pgm
HLDDYNMNUO Cmd
TAAMNUAC23 CL pgm
TAAMNUAR23 RPG pgm
RLSDYNMNUO Cmd
TAAMNUAC24 CL pgm
TAAMNUAR23 RPG pgm
CHKDYNMNUU Cmd
TAAMNUAC52 CL pgm
TAAMNUAR52 RPG pgm
TAAMNUAC72 CL pgm - Does RTVUSRPRF
Structure - Continued
---------------------
CPYDYNMNUU Cmd
TAAMNUAC53 CL pgm
TAAMNUAR53 RPG Pgm
CHKDYNMNUO Cmd
TAAMNUAC25 CL pgm
TAAMNUAR23 RPG pgm
DSPDYNMNUU Cmd
TAAMNUAC51 CL pgm
TAAMNUAR51 RPG pgm
RFMDYNMNU Cmd
TAAMNUAC54 CL pgm
MTNMNUHST Cmd
TAAMNUAC55 CL pgm
MTNMNUCMD Cmd
TAAMNUAC56 CL pgm
TSTDYNMNU Cmd
TAAMNUAC9 CL pgm
DYNMNU Menu (Created by CRTMNU for administrator)
TAAMNUAC19 CL pgm
TAAMNUAK Display file
Create demonstration data
TAAMNUAC22 CL pgm
TAAMNUAR22 RPG Pgm
Attention Key programs
----------------------
TAAMNUAC31 *FLIPFLOP function
Messages TAA5063, TAA5067
TAAMNUAC32 Transfer program for *FLIPFLOP
Messages TAA5064, TAA5065
TAAMNUAC33 Named menu
Messages TAA5067
TAAMNUAC34 Transfer program for named menu
Messages TAA5064, TAA5065
TAAMNUAC35 Command options (used non-menus and *TFRPRV)
Messages TAA5067, TAA5069
TAAMNUAC36 Masked off option (used for *NO Attn Key)
Messages TAA5068
TAAMNUAC37 No Attention Key handling assigned
Messages TAA5068
Messages used by Attention Key handling
---------------------------------------
TAA5063 Group jobs are already active
TAA5064 Group job is starting
TAA5065 Group job is ending
TAA5066 No Attention Key handling program assigned
TAA5067 Record locks exist
TAA5068 Attention key is masked off
TAA5069 No group job has been started
|