CONTENTS Title Page Copyright Page Preface New and Changed Features 1 Introduction to the DEC Ada Program Development Environment 1.1 Getting Started with DEC Ada for the Experienced Programmer 1.2 Getting Started with DEC Ada for the Novice User 1.2.1 Creating a Working Directory and Defining a Current Default Directory 1.2.2 Creating a Source File 1.2.3 Creating a Program Library 1.2.4 Defining the Current Program Library 1.2.5 Compiling the Program 1.2.6 Displaying Unit Information 1.2.7 Linking the Program 1.2.8 Executing the Program 1.2.9 Debugging the Program 1.2.10 Compiling and Recompiling a Modified Program 1.3 Using the DEC Ada Program Library Manager 1.3.1 Overview of ACS Commands 1.3.2 Entering ACS Commands 1.3.3 Exiting from the Program Library Manager and Interrupting ACS Commands 1.3.4 Defining Synonyms for ACS Commands 1.3.5 Using DCL Commands with Program Libraries 1.4 Concepts and Terminology 1.4.1 Program and Compilation Units 1.4.1.1 Compilation Unit Dependences 1.4.1.2 Current and Obsolete Units 1.4.1.3 Unit and File-Name Conventions 1.4.2 Order-of-Compilation Rules 1.4.3 Closure 2 Working with DEC 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 3 Working with DEC Ada Library Search Paths 3.1 Understanding Current and Default Library Search Paths 3.2 Defining the Current Path 3.3 Identifying the Current and Default Paths 3.4 Modifying the Default Path 3.5 Configuring and Reconfiguring Program Libraries Using Library Search Paths 3.6 Specifying Library Search Paths 3.6.1 Understanding How Library Search Paths are Evaluated 3.6.2 Specifying Library Search Paths in Commands 3.6.3 Specifying Library Search Paths in Files 3.6.4 Specifying Library Search Paths in Default Paths 4 Compiling and Recompiling DEC Ada Programs 4.1 Compiling Units into a Program Library 4.2 Recompiling Obsolete Units 4.3 Completing Incomplete Generic Instantiations 4.4 Compiling a Modified Program 4.5 Forcing the Recompilation of a Set of Units 4.6 Using Search Lists for External Source Files 4.7 Choosing Optimization Options 4.8 Processing and Output Options 4.8.1 Loading Units and Executing Compilations in a Subprocess 4.8.2 Executing Compilations in Batch Mode 4.8.3 Conventions for Defaults, Symbols, and Logical Names 4.8.4 Directing Program Library Manager and Compiler Output 4.8.5 Setting Compiler Error Limits 5 Using the Professional Development Option 5.1 Overview of Smart Recompilation 5.1.1 Using Smart Recompilation to Recompile Obsolete Units 5.1.2 Determining the Impact of a Change 5.1.3 Forcing Recompilation when Smart Recompilation is in Effect 5.1.4 Optimizing the Development Environment for Smart Recompilation 5.1.5 Understanding Inter-Unit Dependences 5.1.6 Fragments, Inter-Dependence, and Independence 5.1.6.1 Searching for Identifiers and Overloading Resolution 5.1.6.2 Resolving Access Types 5.1.6.3 Inlining and Generic Expansion 5.1.6.4 With and Use Clauses 5.1.6.5 Pragmas and Representation Clauses 5.1.7 Coding Your Programs to Use Smart Recompilation Efficiently 5.2 Overview of Program Library File-Block Caching 5.3 Overview of the Directory Structure Feature 6 Linking Programs 6.1 Linking Programs Having Only DEC Ada Units 6.2 Linking Mixed-Language Programs 6.2.1 Using the ACS COPY FOREIGN and ENTER FOREIGN Commands 6.2.2 Using the ACS LINK Command 6.2.3 Using the ACS EXPORT and DCL LINK Commands 6.3 Processing and Output Options 6.3.1 Conventions for Defaults, Symbols, and Logical Names 6.3.2 Executing the Link Operation in a Subprocess or in Batch Mode 6.3.3 Saving the Linker Command File and Package Elaboration File 7 Managing Program Development 7.1 Decomposing Your Program for Efficient Development 7.2 Setting up an Efficient Program Library Structure 7.3 Integration with Other DEC Tools 7.3.1 Setting up Source Code Directories 7.3.2 Managing Source Code Modifications 7.4 Efficient Use of DEC Ada on VMS Systems 7.4.1 Reducing Disk Traffic Times 7.4.2 Reorganizing Library Structures 7.5 Protecting Program Libraries 7.5.1 Program Library Access Requirements for ACS Commands 7.5.2 Standard User Identification Code (UIC) Based Program Library Protection 7.5.3 Program Library Protection Through Access Control Lists 7.6 Accessing Program Libraries from Multiple Systems 7.7 General Guidelines for Network Access 7.7.1 Network Protection Mechanisms for Program Libraries 7.7.2 Achieving Efficient Network Access to Program Libraries 7.7.3 Effect of Network Failures 7.8 Accessing Program Libraries Using DFS 7.8.1 Configuring a Program Library using DFS 7.9 Accessing Progam Libraries with DECnet FAL 7.9.1 Configuring a Library Structure using DECnet FAL 7.9.2 Restrictions on Using Program Libraries Accessed by DECnet FAL 7.10 Maintaining Program Libraries 7.10.1 Making References to Program Libraries Independent of Specific Devices and Directories 7.10.1.1 Using Concealed-Device Logical Names 7.10.1.2 Using Rooted Directory Syntax 7.10.2 Copying Program Libraries 7.10.3 Backing Up and Restoring Program Libraries 7.10.4 Reorganizing Program Libraries 7.10.5 Verifying and Repairing Program Libraries 7.10.6 Recompiling Units After a New Release or Update of DEC Ada 7.11 Working with Multiple Targets 7.11.1 Determining DEC Ada Program Portability 7.11.1.1 Factors Affecting Portability 7.11.1.2 Features Listed in the Portability Summary 7.11.2 Setting the System Name 8 Debugging DEC Ada Tasks 8.1 A Sample Tasking Program 8.2 Referring to Tasks in Debugger Commands 8.2.1 Ada Language Expressions for Tasks 8.2.2 Task ID (%TASK) 8.2.3 Pseudotask Names 8.2.3.1 Active Task (%ACTIVE_TASK) 8.2.3.2 Visible Task (%VISIBLE_TASK) 8.2.3.3 Next Task (%NEXT_TASK) 8.2.3.4 Caller Task (%CALLER_TASK) 8.2.4 Debugger Support of Ada Task Attributes 8.3 Displaying Task Information (SHOW TASK) 8.3.1 Displaying Basic Information on All Tasks 8.3.2 Selecting Tasks for Display 8.3.2.1 Task List 8.3.2.2 Task-Selection Qualifiers 8.3.2.3 Task List and Task Selection Qualifiers 8.3.3 Obtaining Additional Information 8.4 Examining and Manipulating Tasks 8.5 Changing Task Characteristics (SET TASK) 8.6 Setting Breakpoints and Tracepoints 8.6.1 Task-Specific and Task-Independent Debugger Eventpoints 8.6.2 Task Bodies, Entry Calls, and Accept Statements 8.6.3 Monitoring Ada Task Events 8.7 Additional Task-Debugging Topics 8.7.1 Debugging Programs with Deadlock 8.7.2 Debugging Programs that Use Time Slicing 8.7.3 Using Ctrl/Y when Debugging Tasks 8.7.4 Automatic Stack Checking in the Debugger A ACS Command Dictionary ($) ADA ATTACH CHECK COMPILE 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 MODIFY LIBRARY RECOMPILE REENTER REORGANIZE SET LIBRARY SET PRAGMA SET SOURCE SHOW LIBRARY SHOW PROGRAM SHOW SOURCE SHOW VERSION SPAWN VERIFY B Comparison of DEC Ada Commands for ULTRIX and VMS Systems C Supplemental Information for Debugging Ada Programs C.1 Sample Debugging Session C.2 Using the Package GET_TASK_INFO D Program Design Language Support D.1 Program Design Support D.2 Program Processing D.3 Restrictions on Placeholders D.4 Name Resolution D.5 Design Qualifiers D.6 Processing Level Qualifiers E Diagnostic Messages E.1 Diagnostic Message Format E.2 Diagnostic Messages and Their Severity E.3 Informational Messages and the /[NO]WARNINGS Qualifier E.4 Run-Time Diagnostic Messages F Reporting Problems EXAMPLES 3-1 Output from the ACS SHOW LIBRARY/FULL Command 7-1 Decomposed Stack Application 7-2 Command Procedure for Doing LSE Ada Compilations in Batch Mode 8-1 Procedure TASK_EXAMPLE 8-2 Sample Debugger Initialization File for DEC Ada Tasking Programs FIGURES 1 Documentation Reading Path for Related Documents 2 Documentation Reading Path for DEC Ada Documentation 3 Figure Conventions 1-1 Dependences Among the Hotel Reservation Program Compilation Units 1-2 Source Files for the Hotel Reservation Program 1-3 Directory Structure for the Hotel Reservation Program 1-4 Sample Compilation Units Used to Show Closure 2-1 Simple Nested Sublibrary Structure 2-2 Sublibrary Configuration for the HOTEL Program 3-1 Program Library Configuration for Smith 3-2 Program Library Reconfiguration for Smith 7-1 Diagram of Decomposed Stack Application 7-2 Efficient Program Library and Sublibrary Structure 7-3 Ada Program Library and Sublibrary Structure with CMS Libraries 7-4 DECnet Program Library Configuration 8-1 Task State Transitions 8-2 Diagram of a Task Stack TABLES 1 Conventions Used in This Manual 1-1 ACS Program Library Management Commands 1-2 Compilation, Linking, and Execution Commands 1-3 Additional ACS Commands 1-4 Conventions for Naming DEC Ada Source Files 3-1 Results of Evaluating Terms in Path Expressions 4-1 Summary Comparison of the DCL ADA and ACS LOAD, RECOMPILE, and COMPILE Commands 4-2 Comparison of the DCL ADA and ACS LOAD Commands 4-3 Differences Between ACS RECOMPILE and COMPILE in Recompiling Obsolete Units 7-1 Program Library Access Needed to Use ACS Commands 7-2 Minimum UIC Protection for Each Kind of Library Access 7-3 Features or Constructs that May Appear in a Portability Summary 8-1 Task States 8-2 Task Substates 8-3 SHOW TASK Command Qualifiers for Task Selection 8-4 SHOW TASK Command Qualifiers for Information Selection 8-5 SET TASK Command Qualifiers 8-6 DEC Ada Event Names 8-7 Kinds of Deadlock and Debugger Commands for Diagnosing Them B-1 Comparison of DEC Ada Commands on ULTRIX and VMS Systems C-1 GET_TASK_INFO Functions