ACMS Writing Applications

*HyperReader

CONTENTS

  Title Page

  Copyright Page

  Information Map

  Information Table

  Preface

  1      Writing Definitions with ADU
    1.1 Starting and Stopping ADU
      1.1.1      Starting ADU
      1.1.2      Stopping ADU
      1.1.3      Assigning a Default Text Editor
    1.2 ACMS and the Data Dictionary
      1.2.1      Dictionary Path Names
      1.2.2      Creating CDO Directories and Establishing Directory and Entity Protection
    1.3 Establishing Your ADU Environment
    1.4 Understanding ACMS Terminology
      1.4.1      Identifier
      1.4.2      File Specification
      1.4.3      Workspace Field Name
      1.4.4      Text Strings
    1.5 Creating and Processing Definitions
    1.6 How ACMS Uses Definitions
      1.6.1      Creating ADU Definition Files
      1.6.2      ACMS Definitions:  Placing in and Retrieving from CDD
      1.6.3      Annotating Definitions
      1.6.4      Abbreviating Commands and Keywords
      1.6.5      Using Command Qualifiers
      1.6.6      Using the Command Continuation Character
      1.6.7      Responding to Command Prompts
      1.6.8      Leaving ADU Temporarily
      1.6.9      Using ADU Interactively
      1.6.10     Using the Language-Sensitive Editor to Create Definition Files
    1.7 Getting Help

  2      Defining Tasks
    2.1 Structure of an ACMS Task
    2.2 Defining a Data Entry Task
      2.2.1      Using Workspaces to Pass Data Between Steps
      2.2.2      Defining the Block Step
      2.2.3      Defining Characteristics of the Task
      2.2.4      Storing a Task Definition in the Dictionary
      2.2.5      Additional Considerations:  Error Handling and Ease of Use
        2.2.5.1      Using ACMS Workspaces
          2.2.5.1.1       Using the CONTROL FIELD Clause in an Exchange Step
          2.2.5.1.2       Using the IF THEN ELSE Clause in a Processing Step
          2.2.5.1.3       Additional Workspace Definitions
        2.2.5.2      Repeating the Task Automatically
    2.3 Defining an Inquiry Task
      2.3.1      Getting Information from the User
      2.3.2      Retrieving Information from a File
      2.3.3      Displaying Information
      2.3.4      Completing the Task Definition
      2.3.5      Additional Considerations:  Displaying Multiple Records
        2.3.5.1      Getting Information from the User
        2.3.5.2      Retrieving Information
        2.3.5.3      Displaying Information to the User
        2.3.5.4      Completing the Task Definition
    2.4 Defining an Update Task
      2.4.1      Getting Information from the User
      2.4.2      Retrieving Information from a File
      2.4.3      Letting the User Update the Information
      2.4.4      Writing the New Information to the File
      2.4.5      Completing the Task Definition

  3      Using DECforms with ACMS
    3.1 ACMS Interface to DECforms
      3.1.1      Calls to External Requests
      3.1.2      Processing External Requests
      3.1.3      Responses to External Requests
    3.2 Writing and Compiling DECforms Escape Units
      3.2.1      Writing an Escape Unit
      3.2.2      Calling an Escape Unit in a Form Source IFDL File
    3.3 Linking DECforms Form Objects
    3.4 Linking Escape Units
      3.4.1      Managing Escape Unit Files
      3.4.2      Replacing Form Files
    3.5 Creating Forms Trace Files
    3.6 Naming Forms Image Files
    3.7 User Interface Features with DECforms
    3.8 Comparison of DECforms and TDMS

  4      Defining Workspaces
    4.1 Understanding the Types of ACMS Workspaces
    4.2 Handling Errors with a Task Workspace
    4.3 Using Data Supplied at the Menu
    4.4 Using Group Workspaces
    4.5 Using User Workspaces
    4.6 Moving Data to a Workspace Field
    4.7 Passing Data with User-Written Agents
    4.8 Using External Global Symbols in Task Definitions

  5      Using the Task-Call-Task Feature
    5.1 Calling Another Task
      5.1.1      Defining a Task Call
      5.1.2      Task Call Example
      5.1.3      Passing Workspaces
        5.1.3.1      Using System Workspaces
        5.1.3.2      Handling User and Group Workspaces
        5.1.3.3      Tasks You Also Select from a Menu
        5.1.3.4      Example of Updating Group and User Workspaces
      5.1.4      Controlling Called Tasks
        5.1.4.1      Passing Control Information in User-Defined Workspaces
        5.1.4.2      Ending a Called Task
        5.1.4.3      Controlling Parent Tasks
      5.1.5      Defining Local Tasks
      5.1.6      Mixing I/O Methods in Parent and Called Tasks
      5.1.7      Form and Server Context in Task Calling
      5.1.8      Using the NOT CANCELABLE BY TASK SUBMITTER Clause
      5.1.9      Auditing and Operation
        5.1.9.1      Task Auditing and Security
        5.1.9.2      Using ACMS Operator SHOW and CANCEL Commands

  6      Using the Detached Task Feature
    6.1 Overview of Detached Tasks
      6.1.1      Detached Tasks
      6.1.2      Designing Your Application to Use Detached Tasks
      6.1.3      Characteristics of Detached Tasks
    6.2 Managing Detached Tasks
      6.2.1      Starting a Detached Task
      6.2.2      Setting the Retry Limit
      6.2.3      Setting the Retry Wait Timer
      6.2.4      Showing the Status of Detached Tasks
        6.2.4.1      Using the ACMS/SHOW TASK Command
        6.2.4.2      Using the ACMS/SHOW APPLICATION/DETACHED_TASKS Command
      6.2.5      Stopping a Detached Task
      6.2.6      Forcing a Detached Task to Not Retry
        6.2.6.1      Task Failures that Cause ACMS Not to Retry a Task
      6.2.7      Broadcasting Detached Task Messages
    6.3 Using Group Workspaces in a Detached Task
    6.4 Concurrent-Use Licensing with Detached Tasks

  7      Defining Distributed Transactions
    7.1 Why Use Distributed Transactions
    7.2 Including Distributed Transactions Syntax in the Task Definition
    7.3 Including Multiple Resource Managers in a Distributed Transaction
    7.4 Using Task Sequencing Actions in a Distributed Transaction
    7.5 Including a Called Task in a Distributed Transaction
    7.6 How Distributed Transactions Affect Server Context
    7.7 Excluding a Processing Step from a Distributed Transaction
    7.8 Handling Deadlocks and Transaction Failures

  8      Handling Task Execution Errors
    8.1 Why Use Exception Handling
    8.2 What is an Exception
      8.2.1      Step Exceptions
      8.2.2      Transaction Exceptions
      8.2.3      Nonrecoverable Exceptions
    8.3 Using the RAISE EXCEPTION Clause
    8.4 Using Exception Handler Actions
    8.5 Examples of Exception Handling
      8.5.1      Recovering from a DECforms Time-Out Exception
      8.5.2      Recovering from a Task-Call-Task Exception
      8.5.3      Recovering from a Transaction Exception
    8.6 How ACMS Performs Exception Handling
      8.6.1      Executing a Step Exception Outside of a Distributed Transaction
      8.6.2      Executing a Step Exception Within a Distributed Transaction
      8.6.3      Executing a Transaction Exception
      8.6.4      Executing Nonrecoverable Exceptions
    8.7 How Exceptions Affect Server Cancel Procedures
      8.7.1      Step Exceptions and Server Cancel Procedures
      8.7.2      Nonrecoverable Exceptions Raised by Action Clauses
      8.7.3      Other Nonrecoverable Exceptions and Transaction Exceptions

  9      Queuing ACMS Tasks
    9.1 Understanding the ACMS Queuing Facility
    9.2 Using ACMS Queuing with Distributed Transactions
    9.3 Steps in Using ACMS Queuing
    9.4 Defining Queue Security
    9.5 Using the ACMS Queue Services to Queue and Dequeue Tasks
      9.5.1      Queuing Tasks Using the ACMS$QUEUE_TASK Service
      9.5.2      Dequeuing Task Elements Using the ACMS$DEQUEUE_TASK Service
    9.6 Using the QTI to Dequeue Tasks
      9.6.1      Characteristics of Queued Tasks That are Processed by the QTI
      9.6.2      Setting ACMSGEN Parameters for the QTI Process
        9.6.2.1      Assigning a User Name to the QTI Process
        9.6.2.2      Assigning a Priority to the QTI Process
        9.6.2.3      Controlling Submitter Sign-Ins
        9.6.2.4      Setting the Retry Time for Failed Tasks
        9.6.2.5      Setting the Polling Time for Task Queues
      9.6.3      Auditing Done by the QTI Process
      9.6.4      How the QTI Handles Errors
    9.7 Processing Error Queues
    9.8 Debugging Queued Tasks
    9.9 Online Backup of Task Queue Files
    9.10 Queuing Example
    9.11 Procedure Parameter Notation for Programming Services
    9.12 ACMS$DEQUEUE_TASK
    9.13 ACMS$QUEUE_TASK

  10     Defining Task Groups
    10.1 Defining a Task Group
    10.2 Identifying Which Tasks Belong to the Task Group
    10.3 Identifying Which Servers Are Required in the Group
      10.3.1     Assigning Server Attributes
    10.4 Naming Request Libraries
    10.5 Identifying Which Message Files Are Used in the Group
    10.6 Naming Workspaces in a Task Group Definition
    10.7 Naming the Task Database for a Task Group
    10.8 Changing Characteristics of Task Argument Workspaces

  11     Defining Applications
    11.1 Defining a Simple Application
    11.2 Describing the Application Environment
      11.2.1     Naming Task Groups
      11.2.2     Naming a User Name for the Application Execution Controller
      11.2.3     Assigning Characteristics to Tasks and Servers
    11.3 Controlling Tasks
      11.3.1     Controlling Access to Tasks
      11.3.2     Auditing Task Events
      11.3.3     Controlling What Happens When a Task Ends
      11.3.4     TASK ATTRIBUTES and TASK DEFAULTS Clauses
        11.3.4.1     Using the TASK ATTRIBUTES Clause
        11.3.4.2     Using the TASK DEFAULTS Clause
        11.3.4.3     Defaulting Task and Task Group Names
        11.3.4.4     Positioning TASK ATTRIBUTES and TASK DEFAULTS Clauses
      11.3.5     Enabling and Disabling Tasks in the Application Definition
      11.3.6     Controlling Transaction Timeouts in the Application Definition
    11.4 Controlling Servers
      11.4.1     Assigning a Server User Name
      11.4.2     Assigning a Dynamic or Fixed Server User Name
      11.4.3     Assigning Server Default Directories
      11.4.4     Assigning Server Logical Names
      11.4.5     Creating Logical Name Tables for Application Servers
      11.4.6     Controlling the Number of Server Processes
      11.4.7     Creating and Deleting Server Processes
      11.4.8     Replacing an Active Server
      11.4.9     SERVER ATTRIBUTES and SERVER DEFAULTS Clauses
      11.4.10    Defaulting Server and Task Group Names
      11.4.11    Positioning SERVER ATTRIBUTES and SERVER DEFAULTS Clauses
      11.4.12    Auditing Servers
      11.4.13    Enabling Procedure Server Process Dumps
    11.5 Controlling Applications
      11.5.1     Assigning an Application Execution Controller User Name
      11.5.2     Auditing Applications
      11.5.3     Assigning Application Default Directories
      11.5.4     Assigning Application Logical Names
      11.5.5     Assigning Application Database Files
      11.5.6     Controlling the Number of Server Processes
      11.5.7     Controlling the Number of Task Instances
    11.6 Modifying an Active Application
    11.7 Controlling Application Failover

  12     Defining Menus
    12.1 Planning the Menu Structure
    12.2 Defining Menus
      12.2.1     Creating a Title for a Menu
      12.2.2     Naming Entries on a Menu
      12.2.3     Naming Menus
      12.2.4     Naming Tasks on a Menu
      12.2.5     Specifying WAIT or DELAY Action
      12.2.6     Naming Default Application Files
      12.2.7     Application Specifications and Remote Tasks
      12.2.8     Naming Default Menu Files
      12.2.9     Defining a Menu Forms Product
    12.3 Processing the Menu Definition

  13     Defining Existing Applications as ACMS Tasks
    13.1 Defining Single-Step Tasks in ACMS Task Groups
      13.1.1     Defining OpenVMS Images as Tasks
      13.1.2     Defining DCL Commands and Command Procedures as Tasks
      13.1.3     Defining DATATRIEVE Commands and Procedures as Tasks
    13.2 Defining Servers to Handle Processing
    13.3 Using the Task Group in an Application

  14     Using the ACMS Request Interface
    14.1 Overview of the ACMS Request Interface
    14.2 The Request Interface and the ACMS Run-Time System
    14.3 Defining Tasks and Task Groups
      14.3.1     Task Definition
      14.3.2     Defining a Task Group
      14.3.3     How and When to Use the ACMS$RI_LIB Logical Name
    14.4 Writing User Request Procedures
      14.4.1     Writing an ACMS$RI_LIB_INIT Initialization Procedure
      14.4.2     Writing an ACMS$RI_LIB_CANCEL Cancellation Procedure
      14.4.3     Compiling and Linking URPs
    14.5 Providing an RI Agent
      14.5.1     Providing a Menu Interface
      14.5.2     Compiling and Linking Menu Interface URPs with the RI Agent
    14.6 Debugging Applications that Call URPs
      14.6.1     Using the OpenVMS Debugger to Debug URPs Using a Running Application
      14.6.2     Using the ACMS Task Debugger to Debug URPs and Their Tasks
    14.7 Defining an Application that Uses the Request Interface
    14.8 Running the Agent

  A Changing the ACMS Menu Format Using DECforms
    A.1 Modifying Menu Appearance Without Changing the Default Format
    A.2 Modifying the ACMS Menu Using DECforms
      A.2.1      Obtaining the ACMS DECforms Default Menu File
      A.2.2      How ACMS Uses Menu Form Record Definitions
      A.2.3      Instructions Performed by the Form File
      A.2.4      Modifying the Menu Appearance Only
      A.2.5      Changing SELECTION_STRING Field Lengths
      A.2.6      Changing the Number of Entries per Screen
      A.2.7      Changing the Size of the Command Line Recall Buffer
      A.2.8      Changing the DECforms Layout Size
      A.2.9      Using a Customized Response and Panel Definition
      A.2.10    Building and Installing the New Menu Form
    A.3 Disabling the SELECT Command in the ACMS Command Menu

  B Changing the ACMS Menu Format Using TDMS
    B.1 Modifying the Menu Format Using ACMS
    B.2 Modifying the ACMS Menu Using TDMS Requests
      B.2.1     Getting the ACMS Menu Request and Form
      B.2.2     Modifying the Menu Form Only
      B.2.3     Forms, Records, and Keypad Used by the Menu Request
      B.2.4     Instructions Performed by TDMS When ACMS Calls a Request
      B.2.5     Modifying the Menu Request
      B.2.6     Using the REQUEST Clause
      B.2.7     Changing the MENU_ENTRY_RECORD
      B.2.8     Modifying and Building the ACMS Menu Request Library
    B.3 Disabling the SELECT Command in the ACMS Command Menu

  C Using CDO for Pieces Tracking
    C.1 Overview of Dictionary Object Types
    C.2 Creating Relationships Between Entities

  D Using LSE with ACMS
    D.1 Using LSE with ACMS
    D.2 Creating ACMS Source Files with LSE
      D.2.1     Using Placeholders and Tokens in LSE
      D.2.2     Creating the Final Source File
        D.2.2.1      Syntax Differences
        D.2.2.2      Exiting Editing Mode
    D.3 Compiling Definitions with LSE COMPILE
    D.4 Examining Diagnostic Messages with LSE REVIEW
      D.4.1     Generating the Diagnostics File
      D.4.2     Examining the Diagnostics File with LSE REVIEW
    D.5 Using HELP in LSE

  E Request Interface Kit Components
    E.1 Application Independent Modules
    E.2 RI Sample Application
      E.2.1      RI Sample Application Source Modules
      E.2.2      RI Sample Application Run-Time Files
    E.3 FMS Sample Application
      E.3.1      FMS Sample Application Source Modules
      E.3.2      FMS Sample Application Run-Time Files

  F Modifying the FMS Menu Interface