# Compaq ACMS for OpenVMS
Version 4.4 Release Notes

Previous | Contents

## 5.3.8 Submitters on VAXstation Must Have SHARE Privilege

A submitter logged in to a VAXstation device (WT or TK) cannot select a task that passes the terminal to a server process unless the server process has OpenVMS SHARE privilege. If the SHARE privilege is not defined, the submitter receives the %ACMSTRM-F-NOSHRPRV error and an entry is logged to the Software Event Logger (SWL).

SHARE privilege allows the server process to assign channels to devices allocated to other users, such as a workstation device.

## 5.3.9 Task Debugger and Online Server Debugging

The following restrictions apply to the Task Debugger and online server debugging.

### 5.3.9.1 Examining Binary Date Data Types

The ACMS Task Debugger EXAMINE command misrepresents the value of an OpenVMS ADT (quadword binary date) data type under some conditions, and accurately displays its contents under other conditions. For example, the following command format displays incorrect results:

    ACMSDBG> EXAMINE <workspace-name>

The workaround is to examine any binary date fields as individual, fully qualified single field names, rather than as part of the entire workspace. The following command displays the correct value for the date field:

    ACMSDBG> EXAMINE/DATE <the-adt-date-field> OF <workspace-name>

### 5.3.9.2 Exiting the Task Debugger with Ctrl/C or Ctrl/Y

Exiting the ACMS Task Debugger with a Ctrl/C or Ctrl/Y may not delete the subprocess created for a server. This can happen if Ctrl/C or Ctrl/Y is used to exit the Task Debugger, and a server is attached to an Rdb database and is waiting for access to the database.

## 5.3.10 Application Management Commands and Tools

The following restrictions apply to the application management tools and commands.

### 5.3.10.1 ACMSPARAM May Generate an Excessive PGFLQUOTA Value for the CP Account

The current formula for calculating the PGFLQUOTA value of the CP account is liberal. The formula assumes that each exchange step involves the sending or receiving of the LARGEST_MESSAGE (see the Variables Required for ACMSPARAM.COM table in the Compaq ACMS for OpenVMS Managing Applications manual.

After executing ACMSPARAM, review the value of CP_PGFLQUOTA. If this value appears to be excessively large, then replace the LARGEST_MESSAGE variable with the average size of workspaces used in exchange steps, or with the size of the workspace most often used in exchange steps.

The formula for calculating the CP_PGFLQUOTA provides only a rough approximation of this quota. To fine-tune your system, calculate the quota for your particular system.

### 5.3.10.2 ACMSPARAM and ACMEXCPAR Do Not Support Search Lists

ACMSPARAM.COM and ACMEXCPAR.COM do not support logical name search lists for the TDB file specifications.

### 5.3.10.3 MSS Process Pool Exhausted Errors are Reported Incorrectly

If a process runs out of ACMS message switch subsystem (MSS) process pool when allocating a buffer prior to reading a message from a network link, the status is truncated and the following error is written to the software error log:

    %ACMSMSS-I-ERRLNKREAD, Error reading network link
    Unknown message - error code 0000A342

The correct reason is:

    ACMSMSS-E-PROPOOEXH, Process local pool is exhausted

To correct this problem, increase the MSS_PROCESS_POOL parameter in ACMSGEN, and restart the ACMS system.

## 5.3.11 Task Queuing Restrictions

The following restrictions apply to task queuing.

### 5.3.11.1 Processing of Failed Queued Task Elements

If you are using a task queue file marked for RMS recovery-unit journaling, and a large number of queued task instances fail at the same time, in rare circumstances the QTI is unable to correctly process a failed queued task element. When this happens, the QTI cannot set the queued task element into a retry state, move it on to an error queue, or delete the queued task element. Instead, the failed queued task element is processed again immediately.

The QTI logs the following error entry in the ACMS audit log when this error occurs:

    ************************************************************
    Type   : ERROR     Time   : 14-OCT-1996 10:35:20.22
    Queue  : QLT$QUEUE1
    ErrQue : QLT$ERRQUEUE1
    Appl   : QLT_APPL
    Task   : QLT_TASK_X
    User   : QLT_USER_42
    Elem Id: 00000309-0000007E-D032A4E0-00948E68
    Text   : Error processing queued task
    -ACMSQUE-E-ERRPRCREC, Error trying to read the failed queued
    task record during error processing
    -RMS-S-OK_RRL, record locked against read but read anyway
    ************************************************************

## 5.3.12 Application Definition Utility (ADU) Restrictions

The following restrictions apply to the Application Definition Utility.

### 5.3.12.1 ADU Migration from DMU Dictionary to CDO Dictionary

If the 26th character of an ACMS definition name is an underscore (_) or a dollar sign ($), ADU is not able to convert the definition automatically from the DMU dictionary to the CDO dictionary.

The reason that ACMS is unable to do the conversion is that in order to migrate to the CDO dictionary, ADU must save a copy of the original definition in DMU while it is putting the new copy in CDO. Because you cannot have a definition with the same name in DMU format and CDO format, ADU renames the definition by prefixing the object name with ACMS$.

If the object name was longer than 26 characters to begin with, ADU has to truncate the object name. If the 26th character is a dollar sign or an underscore, DMU does not allow ADU to write this definition to the DMU side of the CDD dictionary.

The workaround is to migrate manually any ACMS definitions with this characteristic.

### 5.3.12.2 Workaround for MMS Restriction with ADU

The way that ADU handles procedure server transfer modules causes the DEC/Module Management System (MMS) to process the server transfer object module (.OBJ) as if it were out of date. This is because ADU closes the .OBJ before it writes the BUILD audit record to the dictionary. The workaround is to copy the server transfer object module to itself in the action line in which you build your group. For example:

    VR_TASK_GROUP.TDB DEPENDS_ON -
        VR_CHECKIN_TASK^, -
        VR_CHECKOUT_TASK^, -
        ...
        VR_VEHICLES_WKSP^
            ADU BUILD GROUP VR_TASK_GROUP VR_TASK_GROUP.TDB
            COPY VR_READ_SERVER.OBJ VR_READ_SERVER.OBJ
            PURGE VR_READ_SERVER.OBJ

This changes the modification date on the server transfer object module so that it is newer than the group definition in the dictionary. This ensures that MMS re-creates the server transfer object module only when necessary.

### 5.3.12.3 Invalid Characters in ADU Cause ADU to Terminate with TKN_INVALID Error Message

If you use an invalid character in an ACMS definition, ADU terminates after giving the following error message:

    ADU> @UPDATE_TASK.TDF
    %ACMSTDU-F-TKN_INVALID, Invalid token class 1 detected by PARSER
    -CMU-F-INROUTINE, error detected in routine PAT$LS_OUTPUT_TOKEN

The valid characters for identifiers are:

- A through Z
- a through z
- 0 through 9
- Dollar sign ($)
- Underscore (_)

### 5.3.12.4 Using Search Lists to Point to Multiple Dictionaries in ADU

In ADU, if you set default to a logical name defined as a search list, ADU sets default to only the first dictionary in the search list. If you include a search list logical name in an object's path name, ADU uses all dictionaries included in the search list to process that object.

### 5.3.12.5 "End of Task-Referenced Workspace Table" Error on Selection of Invalid Task

If you incorrectly specify the same workspace twice while using the TASK ARGUMENTS clause, ADU does not recognize the problem. For example, the following statement should produce a syntax error, but it does not:

    TASK ARGUMENTS ARE EMPLOYEE_REC WITH ACCESS READ,
                       EMPLOYEE_REC;

If you select this task, it is canceled. The message "end of task-referenced workspace table" is included as a part of the task's Audit Trail record, and it is written to SWL.

If you attempt to dump a task group containing this task, ADU gives an ACCVIO error.

## 5.3.13 Request Interface (RI) Restrictions

The following restrictions apply to the Request Interface.

### 5.3.13.1 User-Written Menus for the ACMS$RI_AGENT

When you write a user-written menu routine for the ACMS$RI_AGENT, it is important to be aware of how your chosen language handles dynamic string descriptors. The task name and application name arguments in the ACMS$RI_AGENT are passed to the ACMS$RI_MENU_ROUTINE as dynamic descriptors. If the language you have chosen does not support dynamic string descriptors, you must use an OpenVMS run-time library routine to return the task and application names to the ACMS$RI_AGENT.

The following FORTRAN example accepts an application name and a task name into two fixed-length strings. The STR$TRIM OpenVMS RTL routine is then used to remove trailing spaces and copy the names into the arguments supplied by the ACMS$RI_AGENT.

    !
    !   THIS ROUTINE GETS THE TASK AND APPLICATION
    !   NAMES FROM THE USER....
    !
    INTEGER FUNCTION ACMS$RI_MENU_ROUTINE(TASK,APPL,TASK_STS)
    !
    ! Addresses of appl and task name dynamic string descriptors
    INTEGER*4 TASK, APPL
    !
    ! Completion status of previous task (0 if 1st time through)
    INTEGER*4 TASK_STS
    !
    ! Local strings to input application and task names
    CHARACTER*32 TNAME, ANAME
    !
    ! RTL completion status
    INTEGER*4 STATUS
    !
    ! RTL routine to trim spaces from a string
    INTEGER*4 STR$TRIM
    !
    WRITE( UNIT=5,FMT='(A,$)' ) ' INPUT APPLICATION SELECTION: '
    READ ( UNIT=5,FMT='(A32)' ) ANAME
    WRITE( UNIT=5,FMT='(A,$)' ) ' INPUT TASK SELECTION: '
    READ ( UNIT=5,FMT='(A32)' ) TNAME
    !
    STATUS = STR$TRIM( %REF(TASK), %DESCR(TNAME) )
    IF (STATUS) THEN
    STATUS = STR$TRIM( %REF(APPL), %DESCR(ANAME) )
    END IF
    !
    ACMS$RI_MENU_ROUTINE = STATUS
    RETURN
    END

## 5.3.14 ACMS and DECforms Restrictions

The following restrictions apply to ACMS and DECforms.

### 5.3.14.1 Problems Using DECforms and TDMS in the Same ACMS Application

DECforms does not know when screen management routines or other forms products have changed the state of the display. This situation can result in incorrect painting of the screen, particularly during a sequence of task calls or chained tasks performing DECforms I/O and non-DECforms I/O.

In this case, add the REFRESH and the REMOVE statements to the form source file to eliminate incorrect repainting.

### 5.3.14.2 DECforms Timeout Values

DECforms allows you to specify an infinite number of seconds as a timeout value for a panel or icon by specifying a zero or a negative value with the TIMEOUT subclause.

As an alternative, ACMS allows you to specify an infinite timeout value in ACMS in one of the following ways:

- You can code a zero value in the ADU subclause WITH TIMEOUT. The ADU subclause WITH TIMEOUT does not allow a negative value. If you code a negative value in this subclause, ADU returns the following syntax error:

      %ACMSTDU-E-SYNTAXERR: Found '-' when expecting ';'

- You can place a negative value in the workspace field for WITH TIMEOUT.

Note that if you specify timeout values in both the DECforms and the ACMS definitions, the ACMS timeout value overrides the DECforms timeout value.

### 5.3.14.3 Naming Form Image Files

Each form image file must have a unique name. If two form image files have the same name, problems occur.

DECforms uses the OpenVMS image activator to activate form images. The activator uses the file name to keep track of the images. Each image can be activated only once in a process. If an image file has been activated, then a different image file with the same name cannot be activated. Rather than giving two form image files the same name, use different file names. For example:

    FORMS ARE
        form_a IN "DISK1$:[USER1]FORM.EXE" WITH NAME F1,
        form_b IN "DISK2$:[USER2]FORM.EXE" WITH NAME F2;

    FORMS ARE
        form_a IN "DISK1$:[USER1]FORM_1.EXE" WITH NAME F1,
        form_b IN "DISK2$:[USER2]FORM_2.EXE" WITH NAME F2;

### 5.3.14.4 BOLD Video Attribute Carried Forward from Menus

If a task selected from a DECforms menu performs terminal I/O, stream I/O, or runs a DCL server, the characters in the task are displayed on the screen with the BOLD video attribute.

In the DECforms form that displays the menu, the message panel uses the BOLD video attribute to display messages. After you enter input for the menu, the message line is updated and the BOLD video attribute is turned on. The BOLD video attribute is not turned off until DECforms or TDMS displays something on the terminal. Therefore, if you select a task that uses terminal I/O or stream I/O, or that runs a DCL server, the screen displays characters in the task with the BOLD video attribute.

There are two workarounds to this problem. Both of them change the appearance of the menu slightly and require the modification of the DECforms form that displays the menu.

If it is not necessary to use the BOLD video attribute in the message panel, change the definition of the message panel as follows:

    /* Message Panel */

    Message Panel MSGS_PANEL

    End Panel

If it is necessary to use the BOLD video attribute in the message panel, an alternative solution is to add a panel to display a blank space at the upper left hand corner of the terminal. This panel is displayed by the control text response for clearing the screen. When you select a task from a menu displayed by DECforms, ACMS calls this control text response to clear the screen. When this control text response displays the added panel, the BOLD video attribute is turned off. Change the control text response and add a new panel as follows:

    /* Control Text Response for clearing the screen */

    Control Text Response "CLSCR"
        Remove All
        Display
            VIDEO_OFF_PANEL
    End Response

    /* Dummy panel to turn off video attributes from
       previous display */

    Panel VIDEO_OFF_PANEL
        Viewport DEFAULT_VIEW

        Literal Text
            Line 1
            Column 1
            Value " "
        End Literal

    End Panel

# Chapter 6
General Information

This chapter discusses topics of general interest concerning the ACMS Version 4.4 release.

# 6.1 Compaq DECforms Web Connector Version 3.0 Available

Compaq DECforms Web Connector Version 3.0 is now available. This software product provides transparent Web access to existing DECforms applications running on OpenVMS systems, including ACMS based applications.

For more information, see the following World Wide Web (WWW) address:

    http://www.openvms.compaq.com/commercial/webconnector/index.htm

# 6.2 Periodically Delete Remote Manager Credential Files

The Remote Manager automatically creates credential files in the current local directory or in the specified by the logical ACMS$MGMT_CREDS_DIR. To conserve disk space, Compaq recommends that you periodically delete these files.

The credential file names follow the format Username_PID_local-node_remote-node.DAT and are valid for the period of time specified by the proxy_creds_lifetime parameter (default value is 60 minutes). All files older than proxy_creds_lifetime value can be deleted.

# 6.3 Add SYSLCK Privilege to Accounts That Run ACMS Processes

The SYSLCK (system lock) privilege should be added to all accounts running the following ACMS processes:

> ACMS01ACC001000
> ACMS01EXC001000
> ACMS01TSC001000
> ACMS01CP001000

# 6.4 Setting Remote Manager Stacksize Parameters

The Remote Manager is implemented using DECthreads, which means that each thread within a Remote Manager process maintains its own stack. The Remote Manager contains the following parameters that enable the ACMS system managers to control the size of each thread stack:

> dcl_stacksize (default=300)
> log_stacksize (default=300)
> msg_proc_stacksize (default=300)
> proc_mon_stacksize (default=300)
> rpc_stacksize (default=300)
> snap_stacksize (default=30)
> snmp_stacksize (default=300)
> timer_stacksize (default=300)
> trap_stacksize (default=300)

Each stack unit represents 1024 bytes for VAX and 8192 bytes for Alpha.

The current default values allow all threads to execute during normal operation. A single thread is required for each of the parameters, except for the snapshot thread (which uses the snap_stacksize parameter). For each data snapshot collection enabled, there is a thread associated with that snapshot collection. Therefore, the default stacksize for the snap_stacksize is 30 which equates to approximate 262 KB (on Alpha).

If any of the stacksize values are set too low, the related thread will fail, which may also cause the Remote Manager process to fail.

# 6.5 ACMSTRC$_NOSUCHPGM Warning Message

A warning message, ACMSTRC$_NOSUCHPGM, may occasionally appear in the SWL log file. The following information was extracted from the trace message file that describes the most common circumstance that causes this message, and what, if anything, you should do when you see it.

Problem: This message is signaled when a trace mail message is received by the trace monitor from a program indicating that the program is about to exit and the trace manager was unaware that the program was running.

Action: In some cases, this message is normal, such as when some ACMS processes are started before the trace monitor starts and the processes exit shortly after the trace monitor starts. If you see an unusually high number of these messages, then you should report this to your Compaq support representative.

To minimize the occurrence of these messages, start the Remote Manager process before starting ACMS. The Remote Manager will start the Trace monitor process.

# 6.6 ACMS Does Not Support Pixel-Based Display Devices

DECforms Version 2.1 and higher provide display support for character-cell (VT series) and pixel (DECwindows Motif) devices. ACMS support is limited to the character-cell devices.

# 6.7 ACMS$TRACE_SHR.EXE Cannot be Installed Resident

ACMS$TRACE_SHR.EXE cannot be installed resident because it is built with traceback. It could be built with notraceback, but the image never really needs to be installed resident anyway.

ACMSTART.COM was modified to remove the optional resident flag from the install command for ACMS$TRACE_SHR.COM.

# 6.8 Remote Manager Shutdown Causes Accounting Records to be Written

When the ACMSMGR STOP MANAGER command is issued, records similar to the following are written to the accounting file:

         Date / Time      Type     Subtype     Username      ID     Source   Status
    --------------------------------------------------------------------------------
    15-JUL-1999 11:08:50 PROCESS SUBPROCESS  THOMPSON    2160056A          00FDA8AA
    15-JUL-1999 11:08:52 PROCESS DETACHED    THOMPSON    21600569          00FE9F49

# 6.9 Logical Names for Workspace Pool Sizes in EXC

Prior to ACMS Version 4.2, the execution controller (EXC) used ACMSGEN parameters to size the workspace pools used during the execution of a task.

In ACMS Version 4.2, logical names can be defined to size the workspace pools on a per-application basis. The logicals that can be defined are:

- ACMS$EXC_WS_POOLSIZE
- ACMS$EXC_WSC_POOLSIZE
- ACMS$EXC_TWS_POOLSIZE
- ACMS$EXC_TWSC_POOLSIZE

The logicals can be defined at any level. To make them application-specific, reference logicals in the application definition or in a name table associated with an application. For example, in the application definition:

     APPLICATION LOGICAL NAMES ARE
         ACMS$EXC_TWS_POOLSIZE = "1750",
         ACMS$EXC_TWSC_POOLSIZE = "75";

EXC allows one additional translation of the logical name so that an application definition does not have to be rebuilt to change a value. For example:

> In the Application Definition Utility (ADU):

>      APPLICATION LOGICAL NAMES ARE
>          ACMS$EXC_TWS_POOLSIZE = "ACMS$EXC_SAMPLE_TWS_POOLSIZE";

> At DCL level:

>      $ DEFINE/SYSTEM ACMS$EXC_SAMPLE_TWS_POOLSIZE  "1750"

The logical name (or the translation of it) must contain a valid decimal number (in pages for VAX, in pagelets for Alpha).

The ACMSGEN parameters are used if the logical cannot be translated or if the logical contains an invalid value or character.

If the value in one or more of the logicals is too high, the application will not start. (This behavior is the same for any value specified by ACMSGEN.)

The ACMSPARAM and ACMEXCPAR procedures do not have any knowledge of the changes being made to the workspace pools. Any calculations done by these procedures reflects the values in ACMSGEN.

Previous | Next | Contents