CONTENTS Title Page Copyright Page Preface Acknowledgment 1 Overview of DSM DSM History DSM on the PDP-11 Processor, DSM-11 DSM on the VAX Processor, VAX DSM DSM Components DSM Programming Language DSM Database System Review Exercises 2 Getting Started with DSM Using the Computer Terminal VT220 Main Keypad VT220 Auxiliary Keypad VT220 Editing Keypad VT220 Top-Row Function Keypad Beginning a DSM Session Getting Started on DSM-11 Logging In to DSM-11 Getting Started on VAX DSM Running the VAX DSM Image Ending a DSM Session Logging Out of DSM-11 Exiting from VAX DSM DSM Work Area Using Programmer Mode DSM Commands Using Multiple Commands Constructing an Argument Concatenating Expressions String Literals Numeric Literals Mathematical Operations Exponential Notation Variables Assigning Values to Local Variables Listing Local Variables Deleting Local Variables Evaluating Expressions Error Messages and Correcting Mistakes Review Exercises 3 Writing and Running DSM Routines DSM Routines Entering Routines into the Routine Buffer Executing Routines in Your Routine Buffer Printing Routines on Your Terminal Using the ZSAVE Command to Save Routines Displaying the Routine Directory Executing Saved Routines Executing a Routine from Your Routine Directory Using Entry References Loading and Executing a Routine in Your Routine Buffer Using Offsets, Line References, and Line Specifications Offsets Line References and Line Specifications Using ZPRINT, ZREMOVE, and ZINSERT to Edit Routines Using ZINSERT to Insert Lines into a Routine Adding Lines to the End of a Routine Adding New Lines to the Beginning of a Routine Replacing Lines in a Routine Making Copies of Routines Deleting Routines Renaming Routines Using Interactive Routines Formatting Output Form-Feed Character New-Line Character Horizontal-Tabulation Character $X and $Y Special Variables Review Exercises 4 Editing DSM Routines DSM Editors Using the % and %ED Editors Editing Example Editing a Single Line Editing a Range of Lines Adding a Line Label Using DSM Commands in the Editor Ending an Editing Session Using the VAX EDT Editor with VAX DSM ( ^%EDT ) Using the EDI Editor ( ^%EDI ) EDI Commands Review Exercises 5 Controlling Routine Execution Abbreviating Commands Using Comments in Routines Using Alternate Execution Paths IF Command Relational Operators Numeric Relational Operators String Relational Operators Logical Operators ELSE Command Performing Repetitive Operations GOTO Command QUIT Command $RANDOM Function FOR Command Using Subroutines Block Structuring Execution Levels Line Structure for Block Structuring Routine Structure and Execution NEW Command Review Exercises 6 Using Globals and Arrays Global Variables Assigning Values to Global Variables Using Global Directories Arrays Array Names and Subscripts Physical Array Structure Logical Array Structure Determining the Status of Variables $DATA Function $GET Function $ORDER Function Writing a Routine that Uses Arrays Planning an Application ^NAME Array ^CLASS Array Creating a Database Review Exercises 7 Using String Relational Operators and Functions String Relational Operators Binary CONTAINS Binary FOLLOWS Binary PATTERN MATCH Using a Period Character with PATTERN MATCH Using Literals with PATTERN MATCH Writing Routines to Validate User Input Entering Student Profile Information Enrolling Students in Courses Using the String-Manipulation Functions $EXTRACT Function $FIND Function $JUSTIFY Function $LENGTH Function $PIECE Function $PIECE Argument Formats Setting Substrings $TRANSLATE Function Using String-Manipulation Functions in Routines Entering Student Grades Using Postconditional Expressions Reporting Student Grades Killing Global Variables Review Exercises 8 Xecute Code and Indirection XECUTE Command Executing Data Using Indirection Argument Indirection Name Indirection Subscript Indirection Pattern Indirection Writing a Menu Driver Routine $TEXT Function $CHAR Function Review Exercises 9 Performing Input/Output Using Devices Defining Devices OPEN Command OPEN Arguments Timeout Expressions USE Command CLOSE Command Performing Device Input/Output Device Input/Output with WRITE and READ Timeout Expressions with the READ Command Device I/O with Other Commands ZPRINT Command ZLOAD Command ZWRITE Command Input/Output Special Variables Review Exercises A ASCII Character Set B Answers to Exercise Questions Chapter 1 Overview of DSM Chapter 2 Getting Started with DSM Chapter 3 Writing and Running DSM Routines Chapter 4 Editing DSM Routines Chapter 5 Controlling Routine Execution Chapter 6 Using Globals and Arrays Chapter 7 Using String Relational Operators and Functions Chapter 8 Xecute Code and Indirection Chapter 9 Performing Input/Output Using Devices C DSM Command, Function, and Special Variable Abbreviations Glossary FIGURES 2-1 VT220 Keyboard 2-2 DSM Work Area 6-1 Global Directory 6-2 DSM Array 6-3 JAY Array 6-4 Student Application Global Arrays A-1 ASCII Character Set TABLES 2-1 VT220 Keyboard 2-2 Top-Row Function Keypad 3-1 Line Offsets 3-2 Line Specifications and Line References 4-1 EDI Commands 5-1 Numeric Relational Operators 5-2 Logical Operators 7-1 String Relational Operators 7-2 Pattern Code Characters C-1 DSM Command, Function, and Special Variable Abbreviations