You can use either the ACMS Request Interface (RI) or Compaq TP Desktop Connector (formerly ACMS Desktop) to perform REQUEST I/O from a task in place of TDMS requests. If you use the RI or Compaq TP Desktop Connector (formerly ACMS Desktop) in your ACMS application to perform REQUEST I/O, then some of the restrictions in Table 18-3 and all of the restrictions in Table 18-4 regarding REQUEST I/O on the block step do not apply.
See Compaq ACMS for OpenVMS Writing Applications for more information about the Request Interface. See
the TP Desktop Connector for OpenVMS Programming and Management
Guide for more information about using Compaq TP Desktop Connector
(formerly ACMS Desktop).
18.3.2 Alternative to DECforms FORM I/O
If you are using OpenVMS Alpha Version 1.5, you can use Compaq TP Desktop Connector (formerly ACMS Desktop) to perform FORM I/O from a task in place of DECforms FORM I/O. If you use Compaq TP Desktop Connector in your ACMS application to perform FORM I/O, then some of the restrictions in Table 18-3 and all of the restrictions in Table 18-4 regarding FORM I/O on the block step do not apply.
See the TP Desktop Connector for OpenVMS Programming and Management
Guide for more information about using FORM I/O with Compaq TP
Desktop Connector (formerly ACMS Desktop).
18.4 Selecting Tasks and Menus on OpenVMS Alpha
You can use the ACMS/ENTER command on OpenVMS Alpha to select the following kinds of tasks:
Because TDMS is not on the OpenVMS Alpha platform, a menu that uses
this request option appears as a command line menu when you issue the
ACMS/ENTER command on OpenVMS Alpha. The following sections describe
the commands and keys that are available in the command line menu
18.4.1 ACMS Menu Commands
If you issue the ACMS/ENTER command on an OpenVMS Alpha system, ACMS returns the Selection prompt as the following example shows:
$ ACMS/ENTER Selection:
Enter a dollar sign ($) at the Selection prompt to enable the ACMS command menu prompt. Table 18-5 lists the ACMS commands that are available at the selection prompt.
|CONTINUE||Returns to a selection menu from a command menu|
|EXIT||Ends your ACMS session and signs you out of ACMS|
|HELP||Provides information on ACMS commands and menus|
|MENU||Displays selection or command menu|
|NOMENU||Displays a Command: or Selection: prompt without displaying the command or selection menu|
|SELECT||Selects a task that is not in your menu tree without including the menu path for the task|
A selection menu is application-specific. Issue the MENU command at the Selection prompt to display menu items. Figure 18-1 shows the selection menu from the AVERTZ sample application.
Figure 18-1 AVERTZ Rental Menu
You select an item from the menu by either name or number. For example, to select the reservation task, type RESERVE or 1.
Menus can display tasks and menus. The letter (T or M) following the task name in the selection menu indicates whether the menu item is a task or another menu (called a submenu). If you know the name of the task you want to select from a submenu, you can enter both the menu keyword and the task keyword at the Selection prompt.
You can also select a task without specifying the menu path by including the application name and the task name on the command line. For example, suppose that you want to access the DELETE task, which is an item on a submenu of the PAYROLL application. You can select it directly by issuing the following command:
Selection: SELECT SAMPLE::PAYROLL DELETE
If you know the menu path of the task you want to select, you can access the task directly from the Selection prompt. For example:
Selection: 1 2 1
This allows you to select the task without going through every menu in
the menu path.
18.4.2 ACMS Function Keys
Table 18-6 lists the keys that are available in the command line menu interface.
|Asterisk||Enables the default menu|
|Ctrl/Y||Cancels the current ACMS task|
|DELETE||Erases the last character typed|
|Dollar sign||Enables the command menu|
|Hyphen||Enables the menu one level above the current menu|
You manage and monitor ACMS applications on OpenVMS Alpha the same way as you do on OpenVMS VAX. The ACMS operator commands, utilities, and tools are the same for both platforms. However, there are some differences based on the architecture of OpenVMS Alpha and OpenVMS VAX.
Take the following into consideration when managing an ACMS application on OpenVMS Alpha:
See the following for more information:
Do not attempt to make changes in the standard ACMS menu unless you are thoroughly familiar with DECforms. Errors in the DECforms records and definitions that ACMS uses for menu work can produce fatal exceptions that cause other parts of the ACMS system to fail; avoid changing the ACMS menu format except when there is a serious need.
This appendix also describes how to disable the SELECT command, which
gives the user the ability to select a task by application name and
task name from the ACMS Command Menu. Disabling the SELECT command does
not require using DECforms.
A.1 Modifying Menu Appearance Without Changing the Default Format
There are two ways to revise the ACMS menu format without changing the default format. First, you can include OpenVMS images that use option lists or menus in your application. Second, when you set up a menu using ADU, you can make a number of choices in the menu format that ACMS supplies. For example, you can define the text that appears at the top of the menu. You define the entries that are displayed on the screen and the descriptive text for these entries.
By using the HEADER, DEFAULT APPLICATION, and ENTRIES clauses (and the subclauses under ENTRIES), you can change what is displayed on the menu. The format of the menu, however, is the same from menu to menu:
You can change some parts of this format just by changing the DECforms panel definitions that ACMS uses. For example, you can change the Selection: prompt or the "Press <RET> ..." message lines by changing the Default and Command panel definitions in the ACMS_MENU.IFDL file. Other changes can require you to change other parts of the ACMS_MENU.IFDL source file that is the source of the menu form. The rest of this appendix explains how to change the source file, ACMS_MENU.IFDL, in order to modify the ACMS menu format.
ACMS uses two panel definitions contained in the ACMS_MENU.IFDL file to control the display of menus on the system:
There are two corresponding definitions in the ACMS_MENU.IFDL for the ACMS Command Menu: panel COMMAND_PANEL, and panel EXPERT_COM_PANEL. The latter displays only the Command: prompt while the former displays eight entries plus the Command: prompt.
To modify the default ACMS menu format, you need to change the ACMS_MENU.IFDL file that displays and controls the menu form. For example, if you want to change the number of entries that can appear on a menu, you must change the ACMS_MENU.IFDL file. After it has been modified, you use DECforms to create a new .EXE file to produce the menu format. For more information on creating a new .EXE file after you have modified the ACMS_MENU.IFDL file, see DECforms Guide to Developing an Application.
To change the menu, you must either modify the ACMS_MENU.IFDL file supplied by ACMS or create a new ACMS_MENU.IFDL file.
You can modify the ACMS menu ACMS_MENU.IFDL file and keep the same name for it. Alternatively, you can make a copy of the ACMS_MENU.IFDL file and make your changes in the copy. In either case, you use DECforms procedures to create a new .EXE file.
ACMS always looks for the menu form file in the same place with a fixed
name: SYS$SHARE:ACMS_MENU.EXE. So after you have modified the
ACMS_MENU.IFDL file or a copy of it and created a new .EXE file, it must
always be copied to the SYS$SHARE directory with the ACMS_MENU.EXE file
name. All menus on your ACMS system then use the modified default
A.2.1 Obtaining the ACMS DECforms Default Menu File
To create a new default menu file, you can make a copy of the source file, ACMS_MENU.IFDL, and alter it as explained in this appendix in order to meet your needs. Or, you can alter the ACMS_MENU.IFDL file itself if you are sure the changes you are making are permanent. The ACMS_MENU.IFDL is also stored in the SYS$SHARE directory.
Do not, under any conditions, change the HEADER RECORD DATA or the MENU CONTROL RECORD DATA definitions. There is only one entry in the MENU ENTRY RECORD DATA definition that can be changed, as explained in the following sections. Changes in any other fields of these definitions can cause the ACMS system to fail.
Five form record definitions in the ACMS menu definition file control how the information you supply in the menu definitions you write as part of an application is used.
The first is the menu header record. Example A-1 shows how this form record definition appears in the ACMS_MENU.IFDL file.
|Example A-1 Definition for ACMS Menu Header|
Form Record MENU_HEADER NUM_ENTRIES Unsigned Longword MENU_PATH Character(70) MENU_HEADER_1 Character(80) MENU_HEADER_2 Character(80) End Record
ACMS uses the NUM_ENTRIES field to pass to the form the number of entries in the MENU_ENTRIES record.
ACMS uses the two menu header fields to pass the menu header, or title, to the form file. It takes this text from the HEADER clause of the menu definition.
The default ACMS menu does not use the MENU_PATH field of this record. The menu path is the sequence of menus, identified by keyword, that the user followed in reaching the current menu; ACMS maintains this information. But this field can be used to display the user's current location in the menu tree.
Example A-2 shows the ACMS_MENU.IFDL file definition for the second record used by the ACMS form file, MENU_ENTRIES.
|Example A-2 Definition for Menu Entries Record|
Form Record MENU_ENTRIES Group ENTRIES Occurs 16 ENTRY_ENABLE Character(1) ENTRY_NUMBER Character(6) ENTRY_FILL Character(3) ENTRY_KEY Character(10) ENTRY_FLAG_TEXT Character(56) End Group End Record
ACMS uses the form record MENU_ENTRIES to pass the number, keyword, identifying flag, and descriptive text to the form file. It derives all this information for each entry from the menu database. The number for an entry is derived from the sequence in which the entry occurs in the ENTRIES clause of the menu definition you write as part of an application. The keyword is derived from the name used for the entry in the ENTRIES clause; the text is taken from the TEXT subclause for the entry. The ENTRY_ENABLE field contains one of two values: T (for tasks) or M (for menus).
Example A-3 shows MENU_CONTROL, the third form record used by the form file.
|Example A-3 Definition for Menu Control|
Form Record MENU_CONTROL CTL_EXPERT_MENU Character(1) CTL_NEW_ENTRIES Character(1) CTL_MULTI_PAGE Character(1) CTL_LAST_PAGE Character(1) End Record
The information in the menu control record does not come directly from the menu database. Rather, it is information that ACMS maintains for each user and for the user's current menu. The value of CTL_EXPERT_MENU determines whether the user sees the complete ACMS menu, in which case the field is set to F (False), or sees only the selection prompt, in which case the field is set to T (True). The initial value is set from the user definition file (ACMSUDF.DAT). Each time the user types in the terminal user MENU or NOMENU command, that field is updated.
ACMS uses the MULTI_PAGE and LAST_PAGE fields in the record to tell the form file whether more menu entries are available than would fit on a single screen. It uses the NEW_ENTRIES field to tell the form file whether the entries to be displayed differ from the entries last displayed.
Example A-4 shows MENU_SELECTION_RECORD, the fourth record used by the form file.
|Example A-4 Definition for Menu Selection Record|
Form Record MENU_SELECTION Group APPL_SELECT_LINE_GROUP APPL_SELECTION_STRING_1 Character(68) Transfer APPL_SELECT_LINE_GROUP.APPL_SELECTION_STRING_1 Source SELECT_LINE_GROUP.SELECTION_STRING_1 APPL_SELECTION_STRING_2 Character(187) Transfer APPL_SELECT_LINE_GROUP.APPL_SELECTION_STRING_2 Source SELECT_LINE_GROUP.SELECTION_STRING_2 End Group End Record
This record consists of two fields which accept the selection strings from the menu. The APPL_SELECTION_STRING_1 and APPL_SELECTION_STRING_2 fields are the actual fields received by the ACMS Command Process (CP). The user input is made in the SELECTION_STRING fields. The two APPL_SELECTION_STRING fields accept up to a maximum of 255 characters. If the actual input is less, the strings are padded with blanks. The size of the APPL_SELECTION_STRING fields cannot be changed.
Example A-5 shows the fifth record, which tells the ACMS CP if any control text response with an accept phase has been executed.
|Example A-5 Control Text Response Found Record|
Form Record MENU_CTRL_TEXT_FOUND CTRL_TEXT_RESP_FOUND Longword Integer End Record
The .EXE file built from the ACMS_MENU.IFDL file carries out a number of functions when ACMS calls a menu you defined in the course of constructing an application. This section explains those functions.
First, either a complete menu or the selection prompt only is displayed.
After the user has typed in a selection keyword or number (and, optionally, a selection string) and pressed [Return], the request moves that information to the menu selection record.
The form file uses the value passed in the CTL_EXPERT_MENU field to determine whether to display the complete menu or only the expert menu. If the CTL_EXPERT_MENU field is set to T, the expert menu is displayed, the selection is entered in the menu selection record, and the process ends.
If the CTL_EXPERT_MENU field is not set to T, the form file then checks whether the entries to be displayed are the same ones as the last entries the user saw. If the value of the CTL_NEW_ENTRIES field of the control record is set to a value other than T, then the menu is the same as the last one. In this case, the form file displays the last menu, accepts the selection string, and ends.
If the menu to be displayed does contain new entries, then ACMS has set the value of CTL_NEW_ENTRIES to T. In this case, the form file displays the menu form and outputs the menu header. It then begins displaying the entries to the indexed fields on the menu form. As long as there is an entry, which the form file checks by looking at one of the fields to be displayed, it continues to produce the entry information. As soon as there are no more entries, or when the sixteenth entry has been displayed, the process stops.
If there are more entries than the number of entries allowed per screen, ACMS sets the value of CTL_MULTI_PAGE to "T". This indicates that the menu has multiple pages.
If there are more than 16 entries, which is the default number of
entries for each screen, then the request tests the CTL_LAST_PAGE field
to determine whether or not this is the last page of the menu displayed
to the user. ACMS indicates the last page of the menu by setting the
CTL_LAST_PAGE field to T. If this is a multiple page menu and it is the
last page, the form file displays the message "Press <RET>
for first page". If it is not the last page of the menu, the form
file outputs the message "Press <RET> for more". It
then accepts the selection from the user and ends.
A.2.4 Modifying the Menu Appearance Only
If you are changing only the appearance of the menu without changing the number of entries, you can make the changes by modifying the panel definitions in the ACMS_MENU.IFDL file. By modifying the panel definitions, you can change:
For a detailed explanation of how to modify DECforms form definitions, see DECforms Guide to Developing an Application. If you are changing only the Selection: or Command: prompts or adding more background text, or want to change the text of the instructions for multiple page menus, you will be altering the panel definitions only.
The ACMS_MENU.IFDL file supplied with ACMS includes a number of DECforms panel definitions. To make the changes detailed in the following paragraphs, you must alter two of these panel definitions, those for DEFAULT_PANEL and COMMAND_PANEL.
These two definitions are very similar, but you must be sure to make the changes you want in both definitions so that your menus will be consistent. Example A-6 shows how the DEFAULT_PANEL definition appears in the ACMS_MENU.IFDL file.
|Example A-6 Panel Definition|
Panel DEFAULT_PANEL Viewport DEFAULT_VIEW Field MENU_HEADER_1 Line 1 Column 1 Display Bold Output Picture X(80) End Field Field MENU_HEADER_2 Line 2 Column 1 Display Bold Output Picture X(80) End Field Literal Text Next Line Value "" End Literal Group ENTRIES Vertical Displays 16 Entry Response Reset INFO_LINE_1 End Response Exit Response Message "" If (RECALL_HOLD = 1) Then Let RECALL_HOLD = 0 Else If (PREVIOUS_PAGE = 1) Then Let SELECT_LINE_GROUP.SELECTION_STRING_1 = "\" Reset SELECT_LINE_GROUP.SELECTION_STRING_2 Else If (NEXT_PAGE = 1) Then Reset SELECT_LINE_GROUP.SELECTION_STRING_1 Reset SELECT_LINE_GROUP.SELECTION_STRING_2 Else Let SELECT_LINE_GROUP.SELECTION_STRING_1 = ENTRIES(MENU_ENTRIES_INDEX).ENTRY_KEY Reset SELECT_LINE_GROUP.SELECTION_STRING_2 Include RESET_RECALL_LIST End If End If End If End Response Function Response CHANGE Let ON_ENTRIES = 0 Let RECALL_HOLD = 1 Deactivate All Activate Field SELECT_LINE_GROUP.SELECTION_STRING_2 on DEFAULT_PANEL Activate Field SELECT_LINE_GROUP.SELECTION_STRING_1 on DEFAULT_PANEL Position To Field SELECT_LINE_GROUP.SELECTION_STRING_1 On DEFAULT_PANEL End Response Function Response GO_UP If (MENU_ENTRIES_INDEX = 1) Then Let PREVIOUS_PAGE = 1 Return Else Position To Up Occurrence End If End Response Function Response GO_DOWN If (MENU_ENTRIES_INDEX = NUM_ENTRIES) Then Let NEXT_PAGE = 1 Return Else Position To Down Occurrence End If End Response Field ENTRY_NUMBER Next Line Column 3 Active Highlight Reverse Output Picture X(6) No Data Input End Field Field ENTRY_KEY Same Line Column 12 Output Picture X(10) End Field Field ENTRY_FLAG_TEXT Same Line Column 22 Output Picture X(56) End Field End Group Field INFO_LINE_1 Line 21 Column 1 Output Picture X(80) End Field Group SELECT_LINE_GROUP Entry Response If (CTL_MULTI_PAGE = "T") Then If (CTL_LAST_PAGE = "T") Then Let INFO_LINE_1 = " ....... "- "Press <RET> for first page ......." Else Let INFO_LINE_1 = " ....... "- "Press <RET> for more ......." End If Else Reset INFO_LINE_1 End If End Response Exit Response Message "" If (RECALL_HOLD = 1) Then Let RECALL_HOLD = 0 Else If (PREVIOUS_PAGE = 1) Then Let SELECT_LINE_GROUP.SELECTION_STRING_1 = "\" Reset SELECT_LINE_GROUP.SELECTION_STRING_2 Let PREVIOUS_PAGE = 0 Else If (NEXT_PAGE = 1) Then Reset SELECT_LINE_GROUP.SELECTION_STRING_1 Reset SELECT_LINE_GROUP.SELECTION_STRING_2 Let NEXT_PAGE = 0 Else Include RESET_RECALL_LIST End If End If End If End Response Function Response CHANGE Let ON_ENTRIES = 1 Let RECALL_HOLD = 1 Reset SELECT_LINE_GROUP.SELECTION_STRING_1 Reset SELECT_LINE_GROUP.SELECTION_STRING_2 Deactivate All Activate Field ENTRIES.ENTRY_NUMBER on DEFAULT_PANEL Position To Field ENTRIES(1).ENTRY_NUMBER On DEFAULT_PANEL End Response Function Response GO_UP Include GET_PREVIOUS_RECALL_ITEM End Response Function Response GO_DOWN Include GET_NEXT_RECALL_ITEM End Response Literal Text Line 22 Column 1 Value "Selection: " End Literal Field SELECTION_STRING_1 Line 22 Column 12 Autoskip Output Picture X(68) End Field Field SELECTION_STRING_2 Line 23 Column 1 Output Picture X(79) End Field End Group End Panel