CONTENTS Title Page Copyright Page Preface 1 Introduction 1.1 Terminals, Workspaces, Forms, and Fields 1.1.1 Terminals 1.1.2 Workspaces 1.1.3 Forms 1.1.4 Fields 1.2 Terminal Control Areas and Form Workspaces 1.3 Form Management Calls 1.3.1 Control Calls 1.3.2 Form-Level Calls 1.3.3 Field-Level Calls 1.3.4 Utility Calls 1.4 Memory-Resident Forms and Form Libraries 1.5 Multiterminal and Multiform Operations 1.6 Debug Mode 1.7 Scrolling Operations 1.8 User Action Routines 1.9 Named Data 1.10 Terminal Key Functions 1.11 Current States 1.12 Operator Aids 1.12.1 Help 1.12.2 Screen Refresh 2 Form Driver Interaction 2.1 Interaction with the Form Description 2.1.1 Storing and Accessing Form Descriptions 2.1.2 Displaying a Form 2.1.3 Terminal Control 2.1.4 Using Workspaces to Store Forms 2.1.5 The Help Function 2.1.6 Field Processing Order 2.1.7 Text, Field-Marker Characters, and Video Attributes 2.1.8 Processing Fields 2.1.8.1 Field Pictures 2.1.8.2 Right Justified and Left Justified Field Attributes 2.1.8.3 Clear Character and Fill Character Attributes 2.1.8.4 Default Field Value 2.1.8.5 Autotab Attribute 2.1.8.6 Response Required and Must Fill Attributes 2.1.8.7 Fixed Decimal Attribute 2.1.8.8 Display Only Attribute 2.1.8.9 No Echo Attribute 2.1.8.10 Supervisor Only Attribute 2.1.8.11 Scrolling 2.1.8.12 Date and Time Attributes 2.2 User Action Routines 2.2.1 Field Completion UARs 2.2.2 Help UARs 2.2.2.1 Pre-Help UAR 2.2.2.2 Post-Help UAR 2.2.3 Help Request Processing 2.2.4 Function Key UARs 2.2.5 Legal Actions in a UAR 2.3 Interaction with the Terminal Operator 2.3.1 Signaling and Recovering from Errors 2.3.1.1 Help Key and Help Messages 2.3.1.2 Checking Operator Responses from Your Program 2.3.1.3 Refreshing the Screen: Typing CTRL/R 2.3.2 Field Editing Functions 2.3.2.1 VT100 Alternate Keypad Mode 2.3.2.2 The Cursor's Initial Position in a Field 2.3.2.3 Inserting a Field Value: The Default Function 2.3.2.4 The Signed Numeric Picture 2.3.2.5 Deleting a Character 2.3.2.6 Deleting a Field 2.3.2.7 Moving the Cursor to the Right 2.3.2.8 Moving the Cursor to the Left 2.3.3 Switching the Insertion Modes 2.3.4 Field Terminators 2.3.5 Field Terminators and Form Driver Calls 2.3.6 Field Terminating Functions 2.3.6.1 Signaling that the Form Is Complete 2.3.6.2 Moving the Cursor to the Next Field 2.3.6.3 Moving the Cursor to the Previous Field 2.3.6.4 Scrolling Backward 2.3.6.5 Scrolling Forward 2.3.6.6 Exiting Scrolled Area Backward 2.3.6.7 Exiting Scrolled Area Forward 2.3.6.8 Illegal Terminator Interaction 2.3.7 Alternate Keypad Mode Terminators 2.4 Key Functions and Key Codes 2.4.1 Form Driver Key Functions 2.4.2 Form Driver Key Codes 2.4.2.1 Control Keys 2.4.2.2 Escape Sequences 2.4.2.3 Gold Sequences 2.4.3 Defining Keys 2.5 Checking Call Status 2.5.1 Debug Mode Support for Application Program Development 2.5.2 Signaling the Terminal Operator About Program Errors 2.6 AST Considerations 3 Programming Techniques and Examples 3.1 Scrolling 3.1.1 Controlling Scrolled Areas 3.1.2 Scrolling Forward 3.1.3 Scrolling Backward 3.2 Validating a One-Character Field-Using a UAR 3.3 Producing Hard Copy-Using Named Data 3.4 Storing Message Text-Using Named Data 3.5 Converting Function Keys to Field Entry 3.6 Filter for Function Keys 3.7 Range Checks for Fields 3.8 Simulating the GETAL Call 3.9 Reducing Display Times for Forms 3.10 Checking Status-Three Methods 3.11 Paging 3.12 FMS Advanced Programming 3.12.1 FMS Performance 3.12.1.1 FMS Library Performance 3.12.1.2 Form Driver Performance 3.12.2 Designing Overlaying Forms 3.12.2.1 FDV Screen Management Rules 3.12.2.1.1 Screen repair occurs when: 3.12.2.1.2 The screen or workspace is ``broken'' when: 3.12.2.1.3 Workspace Repair Sequence 3.12.2.2 Overlaying Form Design 4 Linking the Application and Setting up the Terminals 4.1 Linking 4.1.1 Linking with the Form Driver Library 4.1.2 Linking with Memory-Resident Forms 4.1.3 Linking with a UAR Vector 4.2 Terminal Use in FMS Programs 4.2.1 Terminal Characteristics 4.2.2 Direct Terminal Output 4.2.3 Terminal State at Program End 4.2.4 Firmware Bug Workaround 5 FORM DRIVER CALLS ADLVA-Alter Data Line Video Attributes AFCX-Alter Field Context AFVA-Alter Field Video Attributes ATERM-Attach Terminal AWKSP-Attach Form Workspace BELL-Ring Terminal Bell CANCL-Cancel Call CDISP-Clear Screen and Display Form CLEAR-Clear Screen CLEAR_VA-Clear Video Attributes DEL-Remove Form from Memory-Resident Form List DFKBD-Define Keyboard DISP-Display Form DISPW-Display Loaded Form DPCOM-Define Comma as Decimal Point DTERM-Detach Terminal DWKSP-Detach Form Workspace FCHAN-Return Free Channel FIX_SCREEN-Repair Overwritten Lines of Terminal Screen GET-Get Value for Specified Field GETAF-Get Value for Any Field GETAL-Get All Field Values GETDL-Get Data Line from Terminal GETSC-Get Current Line of Scrolled Area ILTRM-Return Illegal Terminators LCHAN-Set Channel for Form Library File LCLOS-Close Form Library LEDOF-Turn Terminal LED Off LEDON-Turn Terminal LED On LOAD-Load Form Without Display LOPEN-Open Form Library NDISP-Mark Form in Current Workspace as Not Displayed PFT-Process Field Terminator PRINT_SCREEN-Write Screen to Print File PUT-Output Value to Specified Field PUTAL-Output Values to All Fields PUTD-Output Default to Specified Field PUTDA-Output Default Values to All Fields PUTL-Output Line to Screen PUTSC-Output Data to Current Line of Scrolled Area READ-Read Form into Memory RET-Return Value for Specified Field RETAL-Return Values for All Fields RETCX-Return Current Context RETDI-Return Named Data by Index RETDN-Return Named Data by Name RETFL-Return Form Line RETFN-Return Current Field Name RETFO-Return Field Names in Order RETLE-Return Length of Specified Field RFRSH-Refresh Screen SCR_LENGTH-Set Screen Length SCR_WIDTH-Set Screen Width SIGOP Signal Operator SPADA-Set Keypad to Application Mode SPOFF-Turn Supervisor-Only Mode Off SPON -Turn Supervisor-Only Mode On SSIGQ-Set Signal to Quiet Mode SSRV-Specify Status Reporting Variables STAT-Return Status from Last Call STERM-Set Current Terminal STIME-Set Field Entry Timeout SWKSP-Set Current Workspace TCHAN-Set Terminal Channel USER_REFRESH-Set Up User Refresh Routine WAIT-Wait for Operator A VAX FMS Form Driver Calls A.1 VAX Language-Independent Notation A.2 Example A.3 Procedure Parameter Notation For Form Driver Calls FIGURES 1-1 Form Driver Communication 1-2 Terminal Control Areas and Workspaces 2-1 Building an Application Program 2-2 Attached Terminals and Related Form Workspaces 3-1 Overlaying Forms 3-2 Comparison of Overlaying Calls 4-1 Linking the FMS Application TABLES 2-1 Table Field Editing Keys, Functions, and Usage for the Form Driver 2-2 Default Field Terminator Keys, Values, Symbols, and Effects 2-3 GET-type Calls and Their Field Terminators 2-4 Key Functions 2-5 Key Codes for Control Characters 2-6 Key Codes for Escape Sequences 2-7 Key Codes for Gold Escape Sequences 2-8 Key Codes for Gold Sequence 2-9 FMS and VMS Status Codes A-1 VAX FMS Form Driver Calls