CONTENTS Title Page Copyright Page Preface 1 Introduction 1.1 The VAX DIBOL Language Product 1.2 DIBOL Language Statements 1.3 Program Structure 1.3.1 Data Types 1.3.2 Subroutine Libraries 1.3.3 Utilities 1.4 Program Development 2 Creating a Program 2.1 VAX DIBOL File Specifications 2.1.1 VAX Language-Sensitive Editor File Types 2.2 VAX Language-Sensitive Editor 2.2.1 Entering LSE 2.2.2 Placeholders 2.2.3 Tokens 2.2.4 LSE Commands 2.2.4.1 EXPAND 2.2.4.2 GOTO PLACEHOLDER/FORWARD 2.2.4.3 GOTO PLACEHOLDER/REVERSE 2.2.4.4 ERASE PLACEHOLDER/FORWARD 2.2.4.5 HELP/LANGUAGE 2.3 Switching Templates 2.3.1 Exiting LSE 3 Compiling a Program 3.1 The DIBOL Compiler 3.1.1 The Compiler Command 3.1.2 Command and File Specification Qualifiers 3.1.3 Specifying Output Files 3.1.4 Contents of the Listing File 3.1.4.1 The Program Listing 3.1.4.2 The Symbol Table 3.1.4.3 The Label Table 3.1.4.4 The Error Report 3.1.4.5 The Cross-Reference Listing 3.1.4.6 A Listing File 3.1.5 Error Messages 4 VAX DIBOL DECWindows Compiler Interface 4.1 Invoking the VAX DIBOL DECwindows Compiler Interface 4.2 Compiling a DIBOL Program Using the DECwindows Compiler Interface 4.2.1 Listing Options 4.2.2 Tool Options 4.2.3 Source Interpretation Options 4.2.4 Object Code Options 4.2.5 Menu Generation Options 4.2.6 Common Data Dictionary Options 5 Linking and Executing a Program 5.1 Link VAX DIBOL Components 5.1.1 Linking Components of the DIBOL Run-Time Library 5.1.2 User Subroutines 5.1.3 The Universal External Subroutine Library (UESL) 5.1.4 The Operating System Specific Library (OSSL) 5.1.5 The Run-Time System Library (RTSL) 5.1.6 The User's Library 5.1.7 The Order of Object File and Library Specification 5.2 Program Execution 6 VMS Symbolic Debugger (DEBUG) 6.1 Preparing for DEBUG 6.1.1 Compiling with DEBUG 6.1.2 Linking with DEBUG 6.1.3 DEBUG Operation 6.1.3.1 Running with DEBUG 6.1.3.2 Specifying a Terminal for DEBUG 6.2 DEBUG Commands 7 Non-DIBOL Subroutines; Shareable Libraries 7.1 Introduction 7.1.1 XCALL Extensions 7.2 Calling Non-DIBOL Routines 7.2.1 Calling System Services 7.2.2 Calling VMS Run-Time Library Routines 7.2.3 Calling VAX DATATRIEVE 7.2.4 Calling VAX DBMS 7.3 Building a Shareable Subroutine Library 8 Sort/Merge (SORT) 8.1 Characteristics of SORT 8.1.1 Chapter Organization 8.1.2 Error Messages 8.2 SORT Commands and Parameters 8.2.1 ASSIGN (Optional) 8.2.1.1 Advantages of the ASSIGN Command 8.2.2 CHAIN (Optional) 8.2.3 COUNT (Optional) 8.2.4 DETACH (Optional) 8.2.5 DIBOL (Optional) 8.2.6 END (Required) 8.2.7 FLAGS (Optional) 8.2.8 IDENT (Optional) 8.2.8.1 The Effect of IDENT on Error Messages 8.2.9 INPUT (Required) 8.2.10 ISAM (Optional) 8.2.11 KEYS (Required) 8.2.12 LOCKCC (Optional) 8.2.13 MESSAGE (Optional) 8.2.14 OUTPUT (Required) 8.2.15 PAD (Optional) 8.2.16 RECLEN (Required) 8.2.17 SPACE (Optional) 8.2.18 TAGS (Optional) 8.2.19 TEMP (Optional) 8.2.20 TTNUM (Optional) 8.2.21 VERSION (Optional) 8.2.22 WORK (Optional) 8.2.23 The SORT Command Summary 8.3 Development and Execution of SORT 8.3.1 Interactive Input 8.3.2 Command File Input 8.3.3 Message Input 8.3.4 Stopping SORT 8.4 Examples of Sort Operations 9 Message Manager (DBLMSGMGR) 9.1 Overview of the Message Manager 9.2 Starting and Stopping the Message Manager 9.3 Message Manager Errors 10 Status (DBLSTATUS) 10.1 Overview 10.1.1 Chapter Organization 10.2 Starting and Running DBLSTATUS 10.3 Error Messages 10.4 Options 10.4.1 Option D 10.4.2 Option K 10.4.3 Option KA 10.4.4 Option M 10.4.5 Option MA 10.4.6 Option WA 10.4.7 Option S 10.4.8 Option X 11 Miscellaneous VAX DIBOL Concerns 11.1 VAX DIBOL Implementation 11.1.1 LPQUE 11.1.2 Job Numbers 11.1.3 Terminal Numbers 11.1.4 Detached Programs 11.1.5 Fatal Program Specification 11.1.6 Formatting Symbols 11.1.7 The WAIT Subroutine (UESL) 11.1.8 The DIBOL Statements SEND and RECV 11.1.9 The TTSTS (Terminal Status) Subroutine 11.1.10 The SLEEP Statement 11.1.11 Event Flags 11.2 RMS Attributes Set by VAX DIBOL 11.3 Handling Terminal Key Escape Sequences in VAX DIBOL 11.4 Internal Function Implementation Notes 11.5 Foreign Terminal Support for Terminal Attributes 11.6 Binding Programs 11.6.1 Notes on Binding 11.7 VAX Performance and Coverage Analyzer (PCA) 12 VAX DIBOL Interface with VAX CDD/Plus 12.1 Overview 12.2 A CDD/Plus Record 12.3 Using VAX CDD/Plus From VAX DIBOL 12.3.1 Specifying a CDD/Plus Pathname 12.3.2 Selecting a Top-level Structure 12.3.3 Choosing a New Name 12.3.4 Using the Redefinition Character 12.4 Pieces Tracking Using VAX DIBOL 12.5 Generating History Records for Entities Accessed by the VAX DIBOL Compiler 12.6 Using CDD/Plus Built-in Functions 12.7 Supported Data Structures and Data Types 12.8 Using the /ENABLE=DICTIONARY=D83 Switch 13 The DIBOL Menu Subsystem 13.1 Chapter Organization 13.1.1 Error Messages 13.2 General Description of Menus 13.3 Selecting Options 13.3.1 Sequential Selection 13.3.2 Direct Selection 13.4 Keyboards and Special Keys 13.5 The Menu Development Cycle 13.5.1 The Menu Source File 13.5.1.1 Menu Source File Characteristics 13.5.1.2 COLUMN2 13.5.1.3 GROUP 13.5.1.4 INCLUDE 13.5.1.5 MENU 13.5.1.6 SKIP 13.5.1.7 TASK 13.5.1.8 TEXT 13.5.1.9 Summary of Source Statements 13.6 The Menu Generator 13.7 Program Development and the Use of Menu External Subroutines 13.7.1 DBLMENU$EXIT 13.7.2 DBLMENU$INIT 13.7.3 DBLMENU$MESSAGE 13.7.4 DBLMENU$PARAMS 13.7.5 DBLMENU$PAUSE 13.7.6 DBLMENU$RESUME 13.7.7 DBLMENU$SELECT A Indexed File Utility (DBLISMUTL) A.1 Using DBLISMUTL A.2 DBLISMUTL Requirements A.2.1 REORG A.2.2 STATUS A.2.3 Auto-CREATE EXAMPLES 7-1 USE of %XTRNL, System Service Calls 7-2 Calling the VMS Run-Time Library (RTL) 7-3 DATATRIEVE Access Block 7-4 DATATRIEVE Example Program and Output 7-5 DBMS Utility Generated Data Definitions (PARTSDEF) 7-6 DBMS Bill-of-Material Explosion Program and Output 8-1 Interactive Input 8-2 Command File Input of a SORT Control File 8-3 Command File Input of a DBLSORTG Control File 8-4 Command Input as a Message Sent from a Program 11-1 Using an ACCEPT to a Numeric Field 11-2 Using an ACCEPT to an Alphanumeric Field 11-3 Using a READS Statement 11-4 Two Main Programs (AP and POST) Bound into a Single Image 11-5 Using the VAX Performance and Coverage Analyzer 12-1 Conversion of a Data Dictionary RECORD to a VAX DIBOL RECORD 13-1 Main Menu Program A-1 Sample Program to Perform a REORG Function Request A-2 Sample Program to Perform a STATUS Function Request A-3 Sample Program to Perform an Auto-CREATE Function Request A-4 Sample Auto-CREATE Answer File FIGURES 4-1 FileView Pop-Up Verb Menu 4-2 Compile a DIBOL Program Menu 4-3 Compile a DIBOL Program Commands Menu 4-4 Compile a DIBOL Program Options Menu 4-5 Compile a DIBOL Program Help Menu 4-6 Listing Options Menu 4-7 Listing Options Menu Activated 4-8 Tool Options Menu 4-9 Source Interpretation Options Menu 4-10 Object Code Options Menu 4-11 MENU Options Menu 4-12 Common Data Dictionary Options Menu 7-1 VMS Argument Passing Mechanisms 7-2 VAX DIBOL Descriptor Format 12-1 Relationship of FILE Entity and Included Definitions to the COMPILED_MODULE Entity 13-1 General Menu Format 13-2 The VT100 Series Keyboard 13-3 The VT200-VT400 Series Keyboards 13-4 General Layout of a Menu Source File 13-5 Generation and Use of the Menu File TABLES 2-1 File Specification Element Default Values 3-1 DIBOL Compiler Command Qualifiers and System Defaults 3-2 Options for the /BIND Qualifier 3-3 Options for the /CHECK qualifier 3-4 Options for the /COMMON Qualifier 3-5 Options for the /DEBUG Qualifier 3-6 Choices for the /ENABLE Qualifier 3-7 Contents of the Symbol Table 3-8 Contents of Label Table 6-1 VMS DEBUG Commands 6-2 Commands Defined by DBLDBGINI.COM 7-1 Program Sections and Their Contents 8-1 Data Type and Range 11-1 RMS Control Block Fields 12-1 CDD/Plus Entities and Their Equivalent VAX DIBOL Structures 12-2 The Data Dictionary and VAX CDD/Plus to VAX DIBOL Data Types 13-1 Effect of Arrow Keys on Cursor Position in Single-Column and Double-Column Lists 13-2 Special Function Keys on the VT100-Series and VT200-VT400 Series Keyboards 13-3 Keys Available While Using Interactive Help 13-4 Source Statements 13-5 Menu Subroutine Names and Their Functions