CONTENTS Title Page Copyright Page Preface Part I Introduction 1 Introduction 1.1 Features and Benefits 1.1.1 Implementing Client/Server Solutions 1.1.2 Generating High-Quality Code 1.1.3 Using the DECADMIRE Development Environment 1.1.4 Customizing the Generated Code 1.1.5 Supporting Internationalization 1.1.6 Using the Sample Applications 1.2 DECADMIRE Application Development Process 1.3 Menu and Screen Conventions 1.3.1 Menu Conventions and Keys 1.3.2 Screen Conventions and Keys 1.3.3 Programming the Function Keys 1.3.4 Using Online Help 2 Setting Up the Development Environment 2.1 Directory Structure of a Dataset 2.2 Creating Datasets 2.2.1 Creating Datasets and Assigning Logical Names with a Command File 2.2.2 Creating Datasets Manually 2.2.3 Using the PROJ_1 Dataset to Create a New Directory Structure 2.2.4 Defining Logical Names and Symbols for a New Dataset 2.2.5 Setting the Number of Datasets for Display 2.3 Selecting a Dataset 2.3.1 Displaying Datasets 2.4 DECADMIRE Support Functions 2.4.1 Maintaining Print Queues 2.4.1.1 Showing Print Queues 2.4.1.2 Showing Print Jobs 2.4.1.3 Stopping and Starting Print Queues 2.4.1.4 Changing the Form Name for Print Queues 2.4.1.5 Performing Print Job Maintenance 2.4.2 Maintaining Batch Queues 2.4.2.1 Showing Batch Queues 2.4.2.2 Showing Batch Jobs 2.4.2.3 Stopping and Starting Batch Queues 2.4.2.4 Performing Batch Queue Maintenance 2.4.3 Authorizing Users 2.4.3.1 Creating or Modifying Operator Authorization Records 2.4.3.2 Defining the Scope of Operator Authorization 2.4.3.3 Showing Files 2.5 Getting Information During Development 2.6 DECADMIRE System Definitions 2.6.1 Defining Default Function Keys 2.6.2 Defining Default Function Key Panels 2.6.3 Defining Default Display Options 2.6.4 Defining Default Panel Types For Building Blocks 2.6.5 Defining Default Messages Part II Designing and Defining Databases 3 Designing Databases for DECADMIRE Applications 3.1 Goals of Database Design 3.2 Overview of Database Design 3.3 Creating the Conceptual Design 3.3.1 Business Areas 3.3.2 Business Functions 3.3.3 Business Activities 3.3.4 Identifying Additional Requirements for Business Functions 3.4 Creating the Logical Design 3.4.1 Analyzing the Data 3.4.2 Creating an Entity-Attributes List 3.4.3 Normalizing the Database 3.4.4 Defining Relationships Among Entities 3.4.4.1 Selecting a Primary Key for Each Entity 3.4.4.2 Establishing a Foreign Key Relationship 3.5 Creating the Physical Design 3.6 Using Database Design Tools 3.6.1 Graphical Schema Editor 3.6.2 RdbExpert 4 Database Concepts and Elements 4.1 Benefits of Using a Relational Database Model 4.2 DECADMIRE Database Design and Prototyping Files 4.3 Use of SQL Services 4.4 Overview of DECADMIRE Database Definitions 4.4.1 Global Formats 4.4.2 Domains 4.4.2.1 Data Types 4.4.2.2 Storage Types 4.4.3 Support for International Character Sets 4.4.3.1 Rdb Character Set Attributes 4.4.3.2 DECforms Character Set Attributes 4.4.4 Tables 4.4.5 Columns 4.4.5.1 Setting Conditions for Columns 4.4.6 Views 4.4.7 List of Values 4.4.8 Keys 4.4.8.1 Primary Keys and Multipart Keys 4.4.8.2 Foreign Keys 4.4.8.3 Secondary Keys 4.5 Establishing Table Relationships 4.5.1 Defining Related Tables 4.5.2 Defining Parent-Child Table Relationships 4.5.2.1 Using the Check Option to Delete Child Records 4.5.2.2 Using the Delete Option to Delete Child Records 4.5.2.3 Using Triggers to Delete Child Records 4.6 Reserved Words 5 Defining a Database 5.1 Setting Up the Database 5.1.1 Importing a Database 5.1.2 Cloning a Database 5.1.3 Converting RMS Files to Rdb 5.2 Accessing the Data Dictionary 5.3 Defining Global Formats 5.4 Defining Domains 5.5 Defining a Table 5.5.1 Step 1: Creating the Table Definition 5.5.2 Step 2: Defining Columns 5.5.3 Step 3: Identifying the Primary Key 5.5.4 Step 4: Identifying Secondary Keys 5.5.5 Step 5: Checking Field Input 5.5.5.1 Specifying Input Conditions for Columns 5.5.5.2 Using Validations on Columns 5.5.6 Step 6: Providing Documentation for Columns 5.6 Defining Related Tables 5.7 Identifying Child Tables 5.8 Defining a List of Values 5.8.1 Step 1: Creating the List of Values Definition 5.8.2 Step 2: Adding Records to the List of Values 5.8.3 Step 3: Connecting a List of Values to a Column 5.9 Defining Views 5.9.1 Step 1: Creating the View Definition 5.9.2 Step 2: Choosing the View Columns 5.9.2.1 Choosing Columns for Single Table Views 5.9.2.2 Choosing Columns for Multitable Views 5.9.3 Step 3: Defining Foreign Key Connections For Views 5.10 Defining Reserved Words 5.11 Printing Reports for Dictionary Information 5.12 Copying Tables 6 Generating Dictionary Definitions 6.1 Database Logical Names and Assignments 6.1.1 BUILDER Database Definition 6.1.2 Defining the Database Handler 6.1.3 Defining the Compile-Time Database 6.1.4 Defining the Run-Time Database 6.2 Files Generated for Database Definitions 6.2.1 Copy Files Definitions 6.2.2 Database CDD/Plus Definitions 6.2.3 SQL Definitions and Files 6.2.4 List-of-Values Definitions 6.3 Generating Table Definitions 6.3.1 Generating copy Files for 3GL Applications 6.3.2 Generating copy Files for DECforms 6.3.3 Generating CDO Files 6.3.4 Generating SQL Command Files 6.3.5 Generating List-of-Values Definitions Part III Defining Application Elements 7 DECADMIRE Application Development Concepts 7.1 Moving from Planning to Development 7.2 Application Development Elements 7.2.1 Building Blocks 7.2.2 Templates 7.2.3 Modules 7.3 Screen Module Overview 7.3.1 Screen Module Data Access Features 7.3.2 Screen Module User Interface Concepts 7.3.3 Screen Module Task Flow Behavior 7.3.4 M_TAB Module Functional Overview 7.3.5 M_CHA Module Overview 7.3.6 M_KEY Module Functional Overview 7.3.7 M_FLD Module Functional Overview 7.3.8 F_TAB Module Functional Overview 7.3.9 S_TAB Module Functional Overview 7.3.10 S_CHA Module Functional Overview 7.4 Report Module Overview 7.4.1 Report Module Data Access Features 7.4.2 Report Module User Interface Concepts 7.4.3 Report Module Task Flow Behavior 7.4.4 R_ROW Module Functional Overview 7.4.5 R_BLK Module Functional Overview 7.4.6 R_CHA Module Functional Overview 7.4.7 R_HEA Module Functional Overview 7.4.8 R_SUM Module Functional Overview 7.4.9 R_TOT Module Functional Overview 7.5 Menu Module Overview 7.5.1 Menu Module User Interface Concepts 7.5.2 Menu Module Task Flow Behavior 7.5.3 MENU Module Functional Overview 7.6 Update Module Overview 7.6.1 U_TAB Module Data Access Concepts 7.6.2 U_TAB Module Task Flow Behavior 7.6.3 U_TAB Module Functional Overview 7.7 Prototyping 7.7.1 Prototyping All or Part of Your Application 7.7.2 Steps to Prototype Modules 7.7.3 Restrictions to Prototyping 7.8 Help and Documentation 7.8.1 Generating Documentation 7.9 Screen Module Reports 7.10 Copying Modules 8 Record Maintenance Modules 8.1 Creating Record Maintenance Modules 8.1.1 Step 1: Enter Basic Module Information 8.1.2 Step 2: Enter Panel Information 8.1.2.1 Changing Default Field Positions 8.1.2.2 Selecting the Field Panel Size 8.1.2.3 Selecting the Label Size 8.1.2.4 Selecting the Field Display Method 8.1.2.5 Deleting Columns from Panel Definitions 8.1.3 Step 3: Design the Screen Using the Screenpainter 8.1.3.1 Selecting a Panel to Edit 8.1.3.2 Editing Panel Objects 8.1.3.3 Creating Lines and Text Objects 8.1.3.4 Modifying Field Definitions 8.1.3.5 Determining Field Input Type 8.1.3.6 Activating Function Keys 8.1.3.7 Activating a Call to a Module 8.1.3.8 Refreshing Related Table Fields 8.1.3.9 Activating a Call to a Subroutine 8.1.3.10 Changing the Field Size 8.1.3.11 Creating Field Definitions 8.1.3.12 Getting Field Summary Information 8.1.3.13 Setting Field Groups 8.1.3.14 Setting Visitation Order 8.1.3.15 Viewing Field Types 8.1.3.16 Defining the Refresh Value 8.1.3.17 Activating Function Keys 8.2 Creating Panels 8.2.1 Creating New Panels 8.2.2 Key Panel Definitions 8.2.3 Field Panel Definitions 8.2.4 Extended Input Panel Definitions 8.2.5 Function Panel Definitions 8.2.6 Selection Panel Definitions 8.2.7 Defining Default Panel Definitions 8.3 Prototyping an M_TAB Module 8.4 Creating Modules that Perform Parent/Child Record Maintenance 8.4.1 Step 1: Enter Basic Module Information 8.4.2 Step 2: Enter Panel Information 8.4.3 Step 3: Design the Screen Using the Screenpainter 8.4.4 Step 4: Defining Received Key Part Parameters 8.5 Connecting Modules 8.5.1 Step 1: Define the Module Call to the M_CHA Module 8.5.2 Step 2: Define the Function Key to Call the M_CHA Module 8.5.3 Step 3: Activate the Module Call from a Field 9 Selection List Modules 9.1 Selection List Module Characteristics 9.1.1 S_CHA Module Characteristics 9.1.2 F_TAB Module Characteristics 9.1.3 S_TAB Module Characteristics 9.2 Creating Selection List Modules 9.2.1 Step 1: Enter Basic Module Information 9.2.2 Step 2: Enter Panel Definitions 9.2.3 Step 3: Design the Screen Using the Screenpainter 9.2.4 Step 4: Define S_TAB Selection Parameters 9.3 Calling F_TAB and S_CHA Modules 9.3.1 Step 1: Define the Module Call 9.3.2 Step 2: Define the Function Key 9.3.3 Step 3: Activate the Module Call from a Field 9.4 Calling S_TAB Modules 9.4.1 Step 1: Create a Selection Panel 9.4.2 Step 2: Define Variable Fields 9.4.3 Step 3: Draw Fields on the Selection Panel 9.4.4 Step 4: Define the Module Call to the S_TAB Module 9.4.5 Step 5: Define the Module Call Parameters 9.4.6 Step 6: Activate the Module Call from the Fields 10 Automatically Updating Database Table Records 10.1 Creating Noninteractive Table Updates 10.1.1 Step 1: Enter Basic U_TAB Module Information 10.1.2 Step 2: Select Columns to Update 10.2 Calling U_TAB Modules 10.2.1 Step 1: Define the Module Call to the U_TAB Module 10.2.2 Step 2: Define the U_TAB Module Call Parameter Values 11 Application Report Modules 11.1 Creating an R_ROW Module Report 11.1.1 Step 1: Enter Basic Module Information 11.1.2 Step 2: Design the Report Layout 11.1.3 Step 3: Define the Sort Order 11.1.4 Defining Selection Parameters 11.2 Prototyping Reports 11.3 Creating Multiple-Line Reports 11.3.1 Step 1: Enter Basic Module Information 11.3.2 Step 2: Design the Report Layout 11.3.3 Step 3: Define the Sort Order 11.4 Adding Report Heading Information 11.4.1 Creating an R_HEA Module 11.4.2 Adding an R_HEA Module to the Report 11.4.2.1 Step 1: Define a Module Call 11.4.2.2 Step 2: Modify the Sort Order 11.5 Adding Summary Information 11.5.1 Step 1: Enter Basic Information 11.5.2 Step 2: Define the Report Layout 11.5.2.1 Creating Fields for Accumulated Values 11.5.3 Adding the Summary to the Report 11.5.3.1 Step 1: Define a Module Call 11.5.3.2 Step 2: Modify the Sort Order 12 Creating Menus 12.1 Overview 12.2 Steps to Create a MENU Module 12.2.1 Step 1: Enter Basic Menu Information 12.2.2 Step 2: Enter Panel Definitions 12.2.3 Step 3: Define MENU Module Calls 12.2.4 Step 4: Design the Menu Screen Layout Part IV Building Applications 13 Generating DECADMIRE Applications 13.1 Dataset Directories and Files 13.2 Files Generated for an Application 13.2.1 Module Source Code 13.2.1.1 Screen Module Partition Structure 13.2.1.2 MENU Module Partition Structure 13.2.1.3 Report and U_TAB Module Partition Structure 13.2.2 Application Workspaces 13.2.2.1 Generating Database Workspace Definitions 13.2.2.2 Generating Module Parameter Workspace Definitions 13.2.2.3 Workspace Definition Locations 13.3 Types of DECADMIRE Applications 13.3.1 Timesharing and ACMS Applications 13.3.2 OpenVMS Server/PC Client Applications 13.3.3 RTR Applications 13.4 Considerations Before Generating Modules 13.5 Generating Application Code 13.5.1 Generating User Interface Attributes 13.5.2 Generating Modules 13.5.3 Generating One Module at a Time 13.5.3.1 Files Created by the Code Generation/Compilation Option 13.5.4 Generating All Modules 13.5.4.1 Files Created by the Create Executable Code Option 13.5.5 Generating U_TAB and Report Modules 13.5.6 Setting Default Generation Options 13.6 Building Applications 13.6.1 Generating Code 13.6.2 Compiling Files 13.6.3 Linking Applications 13.6.4 Logging the Generation, Compilation, and Linking Process 13.7 Running Applications 13.7.1 Running Timeshare Applications 13.7.2 Running ACMS Applications 13.7.2.1 Running ACMS Applications in Debug Mode 13.7.2.2 Building ACMS Run-Time Applications 13.7.2.3 ACMS Application Notes 13.8 Logical Names Used by DECADMIRE GENERATOR 14 Moving Generated Applications into Production 14.1 Logical Names Required by the Generated Application 14.2 Setting Up the Authority System 14.2.1 Switching the Security Setting 14.2.2 Authorizing Users for Module Access 14.3 Using ACMS Applications on an OpenVMS AXP System 14.4 Using CMS and MMS to Manage Application Building 14.5 Using MMS to Manage DECADMIRE Project Source Files A Module Parameters A.1 M_CHA Module Parameters A.2 M_FLD Module Parameters A.3 F_TAB Module Parameters A.4 S_TAB Module Parameters A.5 S_CHA Module Parameters A.6 U_TAB Module Parameters A.7 R_ROW Module Parameters A.8 R_BLK Module Parameters A.9 R_CHA Module Parameters A.10 R_HEA Module Parameters A.11 R_SUM Module Parameters A.12 R_TOT Module Parameters B Module Calls C Interaction Between Partitions D Character Set Information D.1 Domain Maintenance D.1.1 Data Type and Unit Information D.1.2 Data Type and Character-Set Information D.1.3 Storage Type and Unit Information D.1.4 Storage Type and Character Set E Error Messages E.1 List of Error Messages Glossary