Developing Ada Programs on VMS Systems

Company:Digital Equipment Corporation
Part:AA-EF86B-TE
Date:1989-05
Keywords:VAX
Operating System:VMS Version 5.0 or higher
Supersedes:

Table of Contents

  • Chapter 1 Introduction to the VAX Ada Program Development Environment
    • 1.1 Getting Started with VAX Ada
      • 1.1.1 Creating a Working Directory and Defining a Current Default Directory
      • 1.1.2 Creating a Source File
      • 1.1.3 Creating a Program Library
      • 1.1.4 Defining the Current Program Library
      • 1.1.5 Compiling the Program
      • 1.1.6 Displaying Unit Information
      • 1.1.7 Linking the Program
      • 1.1.8 Executing the Program
      • 1.1.9 Debugging the Program
      • 1.1.10 Compiling and Recompiling a Modified Program
    • 1.2 Using the VAX Ada Program Library Manager
      • 1.2.1 Overview of ACS Commands
      • 1.2.2 Entering ACS Commands
      • 1.2.3 Exiting from the Program Library Manager and Interrupting ACS Commands
      • 1.2.4 Defining Synonyms for ACS Commands
      • 1.2.5 Using DCL Commands with Program Libraries
    • 1.3 Concepts and Terminology
      • 1.3.1 Program and Compilation Units
        • 1.3.1.1 Compilation Unit Dependencies
        • 1.3.1.2 Current and Obsolete Units
        • 1.3.1.3 Unit and File-Name Conventions
      • 1.3.2 Order-of-Compilation Rules
      • 1.3.3 Closure
  • Chapter 2 Working with VAX Ada Program Libraries and Sublibraries
    • 2.1 Program Library and Sublibrary Operations
      • 2.1.1 Creating a Program Library or Sublibrary
      • 2.1.2 Defining the Current Program Library
      • 2.1.3 Identifying the Current Program Library
      • 2.1.4 Obtaining Library Information
      • 2.1.5 Controlling Library Access
        • 2.1.5.1 Read-Only Access
        • 2.1.5.2 Exclusive Access
      • 2.1.6 Deleting a Program Library or Sublibrary
    • 2.2 Unit Operations
      • 2.2.1 Specifying Units in ACS Commands
      • 2.2.2 Displaying General Unit Information
      • 2.2.3 Displaying Dependence and Portability Information
      • 2.2.4 Checking Unit Currency and Completeness
      • 2.2.5 Using Units from Other Program Libraries
        • 2.2.5.1 Copying Units into the Current Program Library
        • 2.2.5.2 Entering Units into the Current Program Library
      • 2.2.6 Introducing Foreign (Non-Ada) Code into a Library
      • 2.2.7 Deleting Units from the Current Program Library
    • 2.3 Using Program Sublibraries
      • 2.3.1 Using ACS Commands with Program Sublibraries
      • 2.3.2 Creating a Nested Sublibrary Structure
      • 2.3.3 Changing the Parent of a Sublibrary
      • 2.3.4 Merging Modified Units into the Parent Library
      • 2.3.5 Modifying and Testing Units in a Sublibrary Environment
  • Chapter 3 Compiling and Recompiling VAX Ada Programs
    • 3.1 Compiling Units into a Program Library
    • 3.2 Recompiling Obsolete Units
    • 3.3 Completing Incomplete Generic Instantiations
    • 3.4 Compiling a Modified Program
    • 3.5 Forcing the Compilation or Recompilation of a Set of Units
    • 3.6 Using Search Lists for External Source Files
    • 3.7 Choosing Optimization Options
    • 3.8 Processing and Output Options
      • 3.8.1 Executing Compilations in Batch Mode
      • 3.8.2 Saving the Load or Compiler Command File
      • 3.8.3 Loading Units and Executing Compilations in a Subprocess
      • 3.8.4 Conventions for Defaults, Symbols, and Logical Names
      • 3.8.5 Directing Program Library Manager and Compiler Output
    • 3.9 Compiler Diagnostic Messages
      • 3.9.1 Diagnostic Messages and Their Severity
      • 3.9.2 Informational Messages and the /[NO]WARNINGS Qualifier
      • 3.9.3 Setting Compiler Error Limits
    • 3.10 Compiler Listing Format
  • Chapter 4 Linking Programs
    • 4.1 Linking Programs Having Only VAX Ada Units
    • 4.2 Linking Mixed-Language Programs
      • 4.2.1 Using the ACS COPY FOREIGN and ENTER FOREIGN Commands
      • 4.2.2 Using the ACS LINK Command
      • 4.2.3 Using the ACS EXPORT and DCL LINK Commands
    • 4.3 Processing and Output Conventions
      • 4.3.1 Conventions for Defaults, Symbols, and Logical Names
      • 4.3.2 Executing the Link Operation in a Subprocess or in Batch Mode
      • 4.3.3 Saving the Linker Command File and Package Elaboration File
  • Chapter 5 Managing Program Development
    • 5.1 Decomposing Your Program for Efficient Development
    • 5.2 Setting up an Efficient Program Library Structure
    • 5.3 Integration with Other VAX Tools
      • 5.3.1 Setting up Source Code Directories
      • 5.3.2 Managing Source Code Modifications
    • 5.4 System Considerations
    • 5.5 Distributed Programming Considerations
      • 5.5.1 Configuring a Library Structure Across DECnet
      • 5.5.2 Accessing a Program Library Across DECnet
      • 5.5.3 Achieving Efficient DECnet Access to Program Libraries
      • 5.5.4 Effect of Network Failures
      • 5.5.5 Restrictions on Using Program Libraries Across DECnet
    • 5.6 Protecting Program Libraries
      • 5.6.1 Program-Library Access Requirements for ACS Commands
      • 5.6.2 Standard User-Identification-Code (UIC) Based Program Library Protection
      • 5.6.3 Program Library Protection Through Access Control Lists
    • 5.7 Maintaining Program Libraries
      • 5.7.1 Making References to Program Libraries Independent of Specific Devices and Directories
        • 5.7.1.1 Using Concealed-Device Logical Names
        • 5.7.1.2 Using Rooted Directory Syntax
      • 5.7.2 Copying Program Libraries
      • 5.7.3 Backing Up and Restoring Program Libraries
      • 5.7.4 Reorganizing Program Libraries
      • 5.7.5 Verifying and Repairing Program Libraries
      • 5.7.6 Recompiling Units After a New Release or Update of VAX Ada
    • 5.8 Working with Multiple Targets
      • 5.8.1 Determining VAX Ada Program Portability
        • 5.8.1.1 Factors Affecting Portability
        • 5.8.1.2 Features Listed in the Portability Summary
      • 5.8.2 Setting the System Name
  • Chapter 6 Debugging VAX Ada Programs
    • 6.1 VMS Debugger Overview
    • 6.2 Getting Started with the Debugger
      • 6.2.1 Compiling and Linking a Program to Prepare for Debugging
      • 6.2.2 Starting and Ending a Debugging Session
      • 6.2.3 Entering Debugger Commands
      • 6.2.4 Viewing Your Source Code
        • 6.2.4.1 Noscreen Mode
        • 6.2.4.2 Screen Mode
        • 6.2.4.3 Source Code Display Considerations
    • 6.3 Controlling and Monitoring Program Execution
      • 6.3.1 Starting and Resuming Program Execution
        • 6.3.1.1 The GO Command
        • 6.3.1.2 The STEP Command
      • 6.3.2 Determining Where Execution is Suspended
      • 6.3.3 Suspending Program Execution
      • 6.3.4 Tracing Program Execution
      • 6.3.5 Monitoring Changes in Variables
      • 6.3.6 Debugging Ada Library Packages
      • 6.3.7 Monitoring Ada Exceptions
        • 6.3.7.1 Monitoring Any Exception
        • 6.3.7.2 Monitoring Specific Exceptions
        • 6.3.7.3 Monitoring Handled Exceptions and Exception Handlers
    • 6.4 Examining and Manipulating Data
      • 6.4.1 Displaying the Values of Variables
      • 6.4.2 Changing the Values of Variables
      • 6.4.3 Current, Previous, and Next Locations
      • 6.4.4 Evaluating Expressions
      • 6.4.5 Debugger Support for VAX Ada Data
        • 6.4.5.1 Ada Names
        • 6.4.5.2 Ada Language Expressions
      • 6.4.6 Special EXAMINE, DEPOSIT, and EVALUATE Options
        • 6.4.6.1 Specifying Data Type and Radix
        • 6.4.6.2 Obtaining Virtual Addresses
      • 6.4.7 Ada Data Types---Debugging Examples
        • 6.4.7.1 Scalar Types
        • 6.4.7.2 Array Types
        • 6.4.7.3 Record Types
        • 6.4.7.4 Access Types
    • 6.5 Controlling Symbol References
      • 6.5.1 Creating Symbol Information for the Debugger
      • 6.5.2 Module Setting
        • 6.5.2.1 Dynamic and Related Module Setting
        • 6.5.2.2 The SHOW MODULE Command
        • 6.5.2.3 The SHOW MODULE/RELATED Command
        • 6.5.2.4 The SET MODULE Command
        • 6.5.2.5 The CANCEL MODULE Command
      • 6.5.3 Resolving Multiply-Defined Symbols
        • 6.5.3.1 Scope
        • 6.5.3.2 Path Name Conventions
        • 6.5.3.3 Symbol Lookup Conventions
        • 6.5.3.4 Using the SHOW SYMBOL Command and Path Names to Specify Symbols Uniquely
        • 6.5.3.5 Using the SET SCOPE Command to Specify a Symbol Search Scope
      • 6.5.4 Resolving Overloaded Names and Symbols
    • 6.6 Supplementary Debugger Features
      • 6.6.1 Logging a Debugging Session into a File
      • 6.6.2 Invoking an Editor from the Debugger
      • 6.6.3 Using a Debugger Initialization File
      • 6.6.4 Using Command Procedures to Control Debugging Sessions
      • 6.6.5 The CALL Command
    • 6.7 Sample Debugging Session
  • Chapter 7 Debugging VAX Ada Tasks
    • 7.1 A Sample Tasking Program
    • 7.2 Referring to Tasks in Debugger Commands
      • 7.2.1 Ada Language Expressions for Tasks
      • 7.2.2 Task ID (%TASK)
      • 7.2.3 Pseudotask Names
        • 7.2.3.1 Active Task (%ACTIVE_TASK)
        • 7.2.3.2 Visible Task (%VISIBLE_TASK)
        • 7.2.3.3 Next Task (%NEXT_TASK)
        • 7.2.3.4 Caller Task (%CALLER_TASK)
      • 7.2.4 Debugger Support of Ada Task Attributes
    • 7.3 Displaying Task Information (SHOW TASK)
      • 7.3.1 Displaying Basic Information on All Tasks
      • 7.3.2 Selecting Tasks for Display
        • 7.3.2.1 Task List
        • 7.3.2.2 Task-Selection Qualifiers
        • 7.3.2.3 Task List and Task Selection Qualifiers
      • 7.3.3 Obtaining Additional Information
    • 7.4 Examining and Manipulating Tasks
    • 7.5 Changing Task Characteristics (SET TASK)
    • 7.6 Setting Breakpoints and Tracepoints
      • 7.6.1 Task-Specific and Task-Independent Debugger Eventpoints
      • 7.6.2 Task Bodies, Entry Calls, and Accept Statements
      • 7.6.3 Monitoring Ada Task Events
    • 7.7 Additional Task-Debugging Topics
      • 7.7.1 Debugging Programs with Deadlock
      • 7.7.2 Debugging Programs that Use Time Slicing
      • 7.7.3 Using CTRL/Y when Debugging Tasks
      • 7.7.4 Automatic Stack Checking in the Debugger
  • Appendix A ACS Command Dictionary
    • ($) ADA
    • ATTACH
    • CHECK
    • COMPILE
    • CONVERT LIBRARY
    • COPY FOREIGN
    • COPY UNIT
    • CREATE LIBRARY
    • CREATE SUBLIBRARY
    • DELETE LIBRARY
    • DELETE SUBLIBRARY
    • DELETE UNIT
    • DIRECTORY
    • ENTER FOREIGN
    • ENTER UNIT
    • EXIT
    • EXPORT
    • EXTRACT SOURCE
    • HELP
    • LINK
    • LOAD
    • MERGE
    • RECOMPILE
    • REENTER
    • REORGANIZE
    • SET LIBRARY
    • SET PRAGMA
    • SET SOURCE
    • SHOW LIBRARY
    • SHOW PROGRAM
    • SHOW SOURCE
    • SHOW VERSION
    • SPAWN
    • VERIFY
  • Appendix B Debugger Command Summary
    • B.1 Starting and Terminating a Debugging Session
    • B.2 Controlling and Monitoring Program Execution
    • B.3 Examining and Manipulating Data
    • B.4 Controlling Type Selection and Symbolization
    • B.5 Controlling Symbol Lookup
    • B.6 Displaying Source Code
    • B.7 Using Screen Mode
    • B.8 Editing Source Code
    • B.9 Defining Symbols
    • B.10 Using Keypad Mode
    • B.11 Using Command Procedures and Log Files
    • B.12 Using Control Structures
    • B.13 Additional Commands
  • Appendix C Using VAX Ada with the VAX Language-Sensitive Editor and Source Code Analyzer
    • C.1 Using VAX Ada with LSE
      • C.1.1 Starting and Ending an Editing Session
      • C.1.2 Obtaining Help
      • C.1.3 Entering Source Code Using Tokens and Placeholders
      • C.1.4 Compiling and Reviewing Source Code
      • C.1.5 Sample LSE Session
    • C.2 Using VAX Ada with SCA
      • C.2.1 Setting Up an SCA Environment
        • C.2.1.1 Creating an SCA Library
        • C.2.1.2 Generating Data Analysis Files
        • C.2.1.3 Loading Data Analysis Files into a Local Library
      • C.2.2 Using SCA for Cross-Referencing
        • C.2.2.1 Finding Files
        • C.2.2.2 Finding Ada Symbols
          • C.2.2.2.1 Declarations
          • C.2.2.2.2 References
          • C.2.2.2.3 Symbol Classes
      • C.2.3 Navigating Through Ada Source Code
      • C.2.4 Using SCA for Static Analysis
      • C.2.5 Multimodular Development
      • C.2.6 Additional Ada-Specific SCA Considerations
        • C.2.6.1 Library Differences
        • C.2.6.2 Ada-Related Effects and Restrictions
  • Appendix D Program Library and Sublibrary Structure and Contents
  • Appendix E Efficient Compilation
    • E.1 Memory Usage
      • E.1.1 Working Sets
        • E.1.1.1 Effect of Working Set on Paging Rate
        • E.1.1.2 Effect of Working Set on Compilation Rate
        • E.1.1.3 Suggestions for Controlling Working Set Sizes
      • E.1.2 Virtual Address Space
    • E.2 Resource Requirements
      • E.2.1 ASTLM---AST Queue Limit Parameter
      • E.2.2 ENQLM---Enqueue Quota Parameter
      • E.2.3 FILLM---Open File Limit Parameter
      • E.2.4 PRCLM---Subprocess Creation Limit Parameter
      • E.2.5 TQELM---Timer Queue Entry Limit Parameter
      • E.2.6 Virtual Memory Usage
        • E.2.6.1 VIRTUALPAGECNT---Maximum Number of Virtual Pages Parameter
        • E.2.6.2 PGFLQUOTA---Paging File Quota Parameter
        • E.2.6.3 System Paging File
        • E.2.6.4 WSQUOTA and WSEXTENT---Working Set Quota and Extent Parameters
        • E.2.6.5 Batch Queue Parameters
        • E.2.6.6 WSMAX---Working Set Maximum Number of Pages Parameter
      • E.2.7 Program Library Networking Effects
      • E.2.8 Channel Count Parameters
  • Appendix F Compile-Time Diagnostic Messages
    • F.1 Diagnostic Message Format
    • F.2 Diagnostic Message Severity Codes
    • F.3 VAX Ada Compiler Informational Messages
    • F.4 VAX Ada Compiler Diagnostic Messages
  • Appendix G ACS Diagnostic Messages
    • G.1 Diagnostic Message Format
    • G.2 Diagnostic Message Severity Codes
    • G.3 ACS Diagnostic Messages
  • Appendix H Run-Time Diagnostic Messages
    • H.1 Diagnostic Message Format
    • H.2 Diagnostic Message Severity Codes
    • H.3 VAX Ada Run-Time Diagnostic Messages
  • Appendix I Reporting Problems

Copies

No copies are known to be online. Feel free to create a bug report on our GitHub project if you know of an online copy of this publication.