Museum

Home

Lab Overview

Retrotechnology Articles

⇒ Online Manual

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

ALIGN

ANALYZE

ATTACH

CALL

CANCEL

CAPITALIZE

CENTER

CHANGE

CHECK

CLOSE

CMS

COLLAPSE

COMPILE

CONTINUE

CONVERT

CREATE

CUT

DCL

DEFINE

DELETE

DO

END

ENLARGE

ENTER

ERASE

EXIT

EXPAND

EXTEND

EXTRACT

FILL

FIND

FOCUS

GOTO

HELP

INCLUDE

INSPECT

LINE

LOAD

LOWERCASE

MODIFY

NEXT

ONE

OTHER

PASTE

PREVIOUS

QUIT

QUOTE

READ

RECALL

RECOVER

REFRESH

REORGANIZE

REPEAT

REPLACE

REPORT

RESERVE

REVIEW

SAVE

SEARCH

SELECT

SET

SHIFT

SHOW

SHRINK

SPAWN

SPELL

SPLIT

SUBSTITUTE

TAB

TOGGLE

TWO

UNDO

UNERASE

UNEXPAND

UNRESERVE

UNTAB

UPPERCASE

VERIFY

VIEW

WHAT

WRITE

Commands

Features

New Features

New Users

SCA Topics

Overview

Issuing Commands

Windows

Buffers

Placeholders

Languages

Getting Started

Command Categories

Entering Code

Compiling

CMS Interface

Screen Commands

Buffer Commands

Terminal Placeholders

Nonterminal Placeholders

Menu Placeholders

Defining a Language

Language Commands

Using Menus

Edit Sessions

Entering Code

Text Manipulation

Compile and Review

CMS Interface

Indenting Code

Cursor Movement

Screen Control

Tailor Environments

Files and Buffers

Help and Status

Tokens

Placeholders

Aliases

New Files

Old Files

New LSE Commands

FIND

INSPECT

Callable SCA

Command Categories

Features

Getting Started

Issuing Commands

Invoking SCA

Libraries

Navigation

New Users

Overview

Queries

Query Language

SCA Example

Features

The Current Query

Syntax

Functions

Attribute Selection

Operators

Expansion

Negation

Indicated

Query Usage

Relationship

IN Function

Examples

Non-structured Relationship Expressions

Structured Relationship Expressions

Individual Relationship Functions

Relationship Parameters

Examples

Name Selection

Symbol Class Selection

Symbol Domain Selection

Occurrence Selection

File Specification Selection

Pathname

Intersection

Union

Exclusive-Or

Language Sensitive Editor — VMS LSE_3.0

Additional information available:

ALIGNANALYZEATTACHCALLCANCELCAPITALIZE
CENTERCHANGECHECKCLOSECMSCOLLAPSECOMPILE
CONTINUECONVERTCREATECUTDCLDEFINEDELETE
DOENDENLARGEENTERERASEEXITEXPAND
EXTENDEXTRACTFILLFINDFOCUSGOTOHELP
INCLUDEINSPECTLINELOADLOWERCASEMODIFY
NEXTONEOTHERPASTEPREVIOUSQUITQUOTE
READRECALLRECOVERREFRESHREORGANIZEREPEAT
REPLACEREPORTRESERVEREVIEWSAVESEARCHSELECT
SETSHIFTSHOWSHRINKSPAWNSPELLSPLIT
SUBSTITUTETABTOGGLETWOUNDOUNERASE
UNEXPANDUNRESERVEUNTABUPPERCASEVERIFY
VIEWWHATWRITE

CommandsFeaturesNew FeaturesNew UsersSCA Topics

Commands

 The LSE line mode commands are:


ALIGN
    Aligns comments within the selected  range  without  performing  a
    fill.

ANALYZE [SCA Command]
    Creates an analysis data file that describes a source file.

ATTACH [SCA Command]
    Allows you to attach the terminal to another process.

CALL
    Allows you to call a specified VAXTPU procedure.

CANCEL MARK
    Deletes a specified mark.

CANCEL SELECT_MARK
    Cancels the effect of a SET SELECT_MARK command.

CAPITALIZE WORD
    Capitalizes the first letter of the current word.

CENTER LINE
    Centers the current line between the left and right margins.

CHANGE CASE
    Alters the case (upper/lower)  of  each  letter  in  the  selected
    range.

CHANGE DIRECTION
    Alters the direction (forward/reverse) of the current buffer.

CHANGE INDENTATION
    Adds or deletes leading blanks and tabs from lines.

CHANGE TEXT_ENTRY_MODE
    Alters the text entry  mode  (insert/overstrike)  of  the  current
    buffer.

CHANGE WINDOW_MODE
    Alters the number of displayed windows.

CHECK LANGUAGE
    Analyzes the definitions associated with a  language  and  reports
    errors

CLOSE BUFFER
    Deletes the current buffer

CMS
    Enables the execution of a DEC/CMS command within LSE.

COLLAPSE
    Compresses text at the current cursor position.

COMPILE
    Writes and compiles a buffer.

CONTINUE
    Ends command line prompts and returns to keypad mode.

CONVERT LIBRARY [SCA Command]
    Converts the specified library from Version 1.n format to  Version
    2.0 format.

CREATE LIBRARY [SCA Command]
    Creates SCA libraries in specified directories.

CUT
    Moves the selected range to the indicated buffer.

DCL
    Executes a DCL command from within your editing session.

DEFINE ADJUSTMENT
    Defines the behavior of the LSE  viewing  commands  on  individual
    lines of a source file.

DEFINE ALIAS
    For use with the EXPAND command , determines a reference name  for
    text or an identifier.

DEFINE COMMAND
    Determines a name for a user or LSE command.

DEFINE KEY
    Determines the key for an LSE command.

DEFINE KEYWORDS
    Defines the indicated keyword list.

DEFINE LANGUAGE
    Determines language characteristics.

DEFINE PACKAGE
    Determines a subroutine  package  for  which  call  templates  are
    generated.

DEFINE PARAMETER
    Determines parameters within a package.

DEFINE PLACEHOLDER
    Determines placeholder characteristics.

DEFINE ROUTINE
    Determines templates for a routine within a subroutine package.

DEFINE TAG
    Defines the specified tag.

DEFINE TOKEN
    Determines token characteristics.

DELETE ADJUSTMENT
    Removes a name from the list  of  adjustments  associated  with  a
    language.

DELETE ALIAS
    Cancels the effect of a DEFINE ALIAS command.

DELETE BUFFER
    Eliminates the specified buffer.

DELETE COMMAND
    Cancels the effect of a DEFINE COMMAND command.

DELETE KEY
    Cancels the effect of a DEFINE KEY command.

DELETE KEYWORDS
    Cancels the indicated keywords definition.

DELETE LANGUAGE
    Cancels the effect of a DEFINE LANGUAGE command.

DELETE LIBRARY [SCA Command]
    Deletes an SCA library from a VMS directory.

DELETE MODULE [SCA Command]
    Deletes specified modules from SCA libraries.

DELETE PACKAGE
    Deletes a package definition without deleting associated  routines
    or parameters.

DELETE PARAMETER
    Deletes a parameter definition from a package.

DELETE PLACEHOLDER
    Cancels the effect of a DEFINE PLACEHOLDER command.

DELETE QUERY [SCA Command]
    Deletes a specified query from an editing session.

DELETE ROUTINE
    Deletes a routine definition from a package.

DELETE TAG
    Removes a name from the list of tags associated with a language.

DELETE TOKEN
    Cancels the effect of a DEFINE TOKEN command.

DELETE WINDOW
    Deletes the current window.

DO
    Executes LSE commands or TPU program.  statements.

END DEFINE
    Terminates a DEFINE PLACEHOLDER or TOKEN command.

END REVIEW
    Terminates the current review session.

ENLARGE WINDOW
    Enlarges the current window.

ENTER COMMENT
    Converts pseudocode into comments.

ENTER LINE
    Inserts a line break  (carriage  return)  at  the  current  cursor
    position.

ENTER PSEUDOCODE
    Inserts pseudocode placeholder delimiters.

ENTER SPACE
    Inserts a blank character and performs a fill on the current line.

ENTER SPECIAL
    Inserts  a  specified  ASCII  character  at  the  current   cursor
    position.

ENTER TAB
    Inserts indentation, if at beginning of line; otherwise inserts  a
    tab at the current cursor position.

ENTER TEXT
    Inserts a specified string at the current cursor position.

ERASE CHARACTER
    Deletes a character at the current cursor position.

ERASE LINE
    Deletes a line of text from the current cursor position.

ERASE PLACEHOLDER
    Deletes the text of a selected placeholder.

ERASE SELECTION
    Removes the text within the selected range.

ERASE WORD
    Deletes a word at the current cursor position.

EXIT [SCA Command]
    Terminates an editing session and returns to the  calling  program
    or DCL.

EXPAND
    Replaces the placeholder, token, or alias with the body.

EXTEND
    Compiles one or more VAXTPU procedures to extend LSE.

EXTRACT ADJUSTMENT
    Extracts the definition of the named adjustment  and  formats  the
    definition as a command.

EXTRACT ALIAS
    Selects the definition of the alias  name  and  formats  it  as  a
    command.

EXTRACT KEYWORDS
    Extracts the definition of the named keyword list and formats  the
    definition as a command.

EXTRACT LANGUAGE
    Selects the definition of the named language and formats it  as  a
    command.

EXTRACT MODULE
    Extracts specified modules of source analysis  data  from  an  SCA
    library.

EXTRACT PACKAGE
    Extracts the definition of  the  named  package  and  formats  the
    definition as a command.

EXTRACT PARAMETER
    Extracts the definition of the named  parameter  and  formats  the
    definition as a command.

EXTRACT PLACEHOLDER
    Extracts the definition of the named placeholder and  formats  the
    definition as a command.

EXTRACT ROUTINE
    Extracts the definition of  the  named  routine  and  formats  the
    definition as a command.

EXTRACT TAG
    Extracts  the  definition  of  the  named  tag  and  formats   the
    definition as a command.

EXTRACT TOKEN
    Extracts the  definition  of  the  named  token  and  formats  the
    definition as a command.

FILL
    Fills the lines in the selected range.

FIND [SCA Command]
    Locates occurrences of symbol or file sources described by the SCA
    libraries.

FOCUS
    Displays an overview of the buffer and compresses the rest of  the
    buffer as much as possible.

GOTO BOTTOM
    Moves the cursor to the bottom of the current buffer.

GOTO BUFFER
    Moves the cursor to  the  last  position  held  in  the  specified
    buffer.

GOTO CHARACTER
    Moves the cursor to the specified character.

GOTO COMMAND
    Produces the LSE Command> prompt at which LSE or SCA commands  can
    be issued.

GOTO DECLARATION [SCA Required]
    Displays the declaration of the source symbol indicated.

GOTO FILE
    Moves the cursor to a buffer containing the specified file.

GOTO LINE
    Moves the cursor to the next line.

GOTO MARK
    Moves the cursor to the mark created by  the  preceding  SET  MARK
    command.

GOTO PAGE
    Moves the cursor to the next page.

GOTO PLACEHOLDER
    Moves the cursor to the next placeholder.

GOTO QUERY [SCA Command]
    Moves to the specified SCA query session.

GOTO REVIEW
    Moves to the currently active review session.

GOTO SCREEN
    Moves the cursor in the current direction by the number  of  lines
    in the current window.

GOTO SOURCE
    Uses the current cursor position in the review or query buffer  to
    select  an  associated  diagnostic  or  item in the related source
    buffer.

GOTO TOP
    Moves the cursor to the top of the current buffer.

GOTO WORD
    Moves the cursor to the next word in the current buffer.

HELP
    Displays information about a specified LSE topic.

INCLUDE
    Inserts the specified file at the current cursor position.

INSPECT [SCA Command]
    Inspects the consistency between declarations  or  references  for
    the same symbol.

LINE
    Moves the cursor in the current buffer to the start of the  source
    line you specify.

LOAD [SCA Command]
    Loads one or more modules of source  analysis  data  into  an  SCA
    library.

LOWERCASE WORD
    Changes the letters in the current word to lowercase.

MODIFY LANGUAGE
    Modifies the characteristics of a specified language.

NEXT BUFFER
    Moves your next buffer into the current window, returning to  your
    last position in that buffer.

NEXT ERROR
    Selects the  next  diagnostic  from  the  current  set  in  buffer
    $REVIEW.

NEXT OCCURRENCE [SCA Required]
    Moves the cursor forward to the next  occurrence  of  the  current
    item in the current query.

NEXT QUERY [SCA Command]
    Moves the cursor to the next SCA query session.

NEXT STEP
    Moves the cursor  forward  to  the  next  error,  item,  name,  or
    occurrence depending on whether you are in REVIEW or QUERY mode.

NEXT SYMBOL [SCA Required]
    Moves the cursor forward to the next item in the current query.

NEXT WINDOW
    Selects the alternate window.

ONE WINDOW
    Deletes all but the current window.

OTHER WINDOW
    Moves the cursor from the current window to the next window if the
    screen is split into multiple windows.

PASTE
    Copies the contents of a specified buffer into the current buffer.

PREVIOUS BUFFER
    Moves your previous buffer into the current window,  returning  to
    your last position in that buffer.

PREVIOUS ERROR
    Selects the previous diagnostic from the  current  set  in  buffer
    $REVIEW.

PREVIOUS OCCURRENCE [SCA Required]
    Moves the cursor back to the previous occurrence  of  the  current
    item in the current query.

PREVIOUS QUERY [SCA Command]
    Moves the cursor to the previous SCA query session.

PREVIOUS STEP
    Moves the cursor back  to  the  previous  error,  item,  name,  or
    occurrence depending on whether LSE is in REVIEW or QUERY mode.

PREVIOUS SYMBOL [SCA Required]
    Moves the cursor back to the previous item in the current query.

PREVIOUS WINDOW
    Selects the alternate window.

QUIT
    Terminates an editing session without saving any modified buffers.

QUOTE
    Enters a control code or other character, either as  text  in  the
    buffer you are editing or as a string command

READ
    Opens a specified file for input and  places  its  contents  in  a
    specified buffer.

RECALL
    Recalls a previous LSE command, which you  can  edit  and  execute
    again.

RECOVER BUFFER
    Reconstructs the contents of a buffer from a buffer change journal
    file.

REFRESH
    Rewrites the screen display.

REORGANIZE [SCA Command]
    Optimizes the size and organization of an SCA library.

REPEAT
    Executes a command a specified number of times.

REPLACE
    Creates a new generation of the indicated element in your  current
    CMS library.

REPORT
    Produces the specified report.

RESERVE
    Reserves an element in your current CMS library.

REVIEW
    Displays  a  set  of  diagnostic   messages   resulting   from   a
    compilation.

SAVE ENVIRONMENT
    Writes all user-defined languages, placeholders, and tokens  to  a
    specified file.

SAVE SECTION
    Writes  the  binary  form  of  current  key   definitions,   learn
    sequences,   user-defined  commands,  mode  settings,  and  VAXTPU
    procedures and variables to a section file.

SEARCH
    Positions the cursor at a specified string in the current buffer.

SELECT ALL
    Selects the entire contents of the current buffer.

SET AUTO_ERASE
    Enables automatic erasing of placeholders.

SET CMS
    Sets the default values for the CMS reservations and fetches  that
    LSE  performs when you issue the appropriate LSE file manipulation
    commands.

SET CURSOR
    Selects either bound cursor motion or free cursor motion

SET DEFAULT_DIRECTORY
    Changes your default device and directory specifications.

SET DIRECTORY
    Sets the default read-only/write status of files from a  specified
    directory.

SET FONT
    Sets the specified fonts for the screen.

SET FORWARD
    Sets the current direction of the buffer forward.

SET INDENTATION
    Changes the current indentation level for the buffer.

SET INSERT
    Sets the text entry mode of the buffer to insert mode.

SET JOURNALING
    Enables buffer change journaling for the specified buffers.

SET LANGUAGE
    Changes the language associated with the buffer.

SET LEFT_MARGIN
    Specifies the left margin for FILL and ENTER SPACE commands.

SET LIBRARY [SCA Command]
    Specifies the SCA libraries to be used for SCA functions.

SET MARK
    Specifies a name at the current cursor position for  a  GOTO  MARK
    command.

SET MODE
    Changes the setting of the BELL, KEYPAD, and MENU modes.

SET MODIFY
    Sets buffer status to modifiable.

SET NOAUTO_ERASE
    Disables automatic erasing of placeholders.

SET NOJOURNALING
    Disables buffer journaling for the specified buffers.

SET NOLANGUAGE
    Disassociates the language associated with the indicated buffer.

SET NOLIBRARY [SCA Command]
    Removes the specified SCA  libraries  from  the  current  list  of
    active libraries.

SET NOMODIFY
    Sets a buffer to nomodify (unmodifiable).

SET NOOUTPUT_FILE
    Disassociates the buffer from any output file.

SET NOOVERVIEW
    Disables overview operations in the indicated buffer.

SET NOSOURCE_DIRECTORY
    Specifies the directories to be removed from the  list  of  source
    directories.

SET NOWRAP
    Disables wrapping in the indicated buffer.

SET OUTPUT_FILE
    Changes the output file associated with the buffer.

SET OVERSTRIKE
    Sets the text entry mode of the buffer to overstrike mode.

SET OVERVIEW
    Enables overview operations in the indicated buffer.

SET READ_ONLY
    Specifies that following a COMPILE command or an  exit  from  LSE,
    the buffer not be written to a file.

SET REVERSE
    Sets the current direction of the buffer to reverse.

SET RIGHT_MARGIN
    Specifies the right margin for FILL and ENTER SPACE commands.

SET SCREEN
    Changes the characteristics of the terminal display screen.

SET SCROLL_MARGINS
    Delimits the lines at which the cursor triggers scrolling.

SET SEARCH
    Sets text search options.

SET SELECT_MARK
    Specifies a position as one end of a select range.

SET SOURCE_DIRECTORY
    Specifies a search list of directories to be used to  find  source
    files.

SET TAB_INCREMENT
    Specifies the number of columns between tab stops for the buffer.

SET WRAP
    Enables wrapping in the indicated buffer.

SET WRITE
    Specifies that following a COMPILE command or an  exit  from  LSE,
    the buffer will be written to a file.

SHIFT
    Scrolls a window horizontally (left or right).

SHOW ADJUSTMENT
    Displays the characteristics of indicated adjustments.

SHOW ALIAS
    Displays the characteristics of the specified alias.

SHOW BUFFER
    Displays the characteristics of the specified buffer.

SHOW CMS
    Displays the current SET CMS settings.

SHOW COMMAND
    Displays the characteristics of the specified command.

SHOW DEFAULT_DIRECTORY
    Displays the current default device and directory.

SHOW DIRECTORY
    Displays the setting of the SET DIRECTORY command.

SHOW KEY
    Displays the characteristics of the specified key.

SHOW KEYWORDS
    Displays the characteristics of the specified keyword.  list.

SHOW LANGUAGE
    Displays the characteristics of the specified language.

SHOW LIBRARY [SCA Command]
    Displays the directory specifications of SCA libraries.

SHOW MARK
    Displays the setting of the specified mark.

SHOW MODE
    Displays the current mode settings.

SHOW MODULE [SCA Command]
    Displays SCA library module information.

SHOW PACKAGE
    Displays the characteristics of specified packages.

SHOW PARAMETER
    Displays the characteristics of specified parameters.

SHOW PLACEHOLDER
    Displays the characteristics of the specified placeholder.

SHOW QUERY [SCA Command]
    Displays information about current SCA query sessions.

SHOW ROUTINE
    Displays the characteristics of specified routines.

SHOW SCREEN
    Displays the current values set with the SET SCREEN command

SHOW SEARCH
    Displays the settings of text search options.

SHOW SOURCE_DIRECTORY
    Displays the setting of the SET SOURCE_DIRECTORY command.

SHOW SUMMARY
    Shows statistics and other information about LSE.

SHOW TAG
    Displays the characteristics of indicated tags.

SHOW TOKEN
    Displays the characteristics of the specified token.

SHOW VERSION [SCA Command]
    Displays the version of LSE and SCA you are working with.

SHRINK WINDOW
    Shrinks the current window.

SPAWN [SCA Command]
    Suspends the editing session and runs the  DCL  interpreter  in  a
    subprocess.

SPELL
    Runs DECspell to check the currently selected text or  the  entire
    buffer.

SPLIT WINDOW
    Divides the current window into two or more windows.

TWO WINDOWS
    Splits the current window into two windows.

SUBSTITUTE
    Searches for a specified text string and replaces it with  another
    specified string.

TAB
    Inserts indentation, if  at  the  beginning  of  line;  otherwise,
    spaces to the next tab stop.

TOGGLE SELECT_MARK
    Sets and resets the state of SELECT_MARK.

UNDO ENTER COMMENT
    Reverses the effect of the last ENTER COMMENT command.

UNERASE
    Restores text previously deleted by an ERASE command.

UNEXPAND
    Reverses the effect of the last EXPAND command.

UNRESERVE
    Cancels the reservation of the indicated CMS element.

UNTAB
    Removes spaces to the previous tab stop.

UPPERCASE WORD
    Changes the current word to uppercase.

VERIFY [SCA Command]
    Verifies that the specified SCA libraries are complete.

VIEW SOURCE
    Displays an overview of the buffer.

WHAT LINE
    Shows the current line number and total number  of  lines  in  the
    buffer.  Also shows what percentage of the lines in the buffer are
    located above the current line.

WRITE
    Outputs the contents of a specified buffer or selected range to  a
    specified file.

Features

Additional information available:

OverviewIssuing CommandsWindowsBuffersPlaceholdersLanguages
Getting StartedCommand CategoriesEntering CodeCompiling
CMS Interface

Overview

 LSE is a multilanguage, advanced text editor that is layered  on  the
 VAX  Text  Processing Utility (VAXTPU).  LSE works with VMS languages
 and other VMS productivity tools to enhance program development.

 LSE allows you to control your  editing  environment  and  use  LSE's
 knowledge  of  specific  languages  to  develop  programs quickly and
 accurately.

 LSE provides the following features:

  o  Error Correction and Review

     This  feature  allows  you  to  compile,  review,   and   correct
     compilation errors within a single editing session.  LSE provides
     an interface to the supported VMS language compilers so that  you
     can  perform  compilations  without  leaving  LSE.  The compilers
     provide LSE with compilation diagnostics in a way that allows you
     to   review  compilation  errors  in  one  editing  window  while
     displaying the related source in another window.

  o  Language-Specific Templates

     Templates permit fast  and  efficient  source  code  entry.   LSE
     accesses  a  collection  of formatted language constructs, called
     templates, that provide keywords, punctuation, and  placeholders,
     for each supported VMS language.

     LSE allows you to modify existing templates or  define  your  own
     language or text templates.

  o  Integrated Programming Environment

     LSE is integrated into the VMS development  environment.   It  is
     invoked using the DIGITAL Command Language (DCL).  LSE works with
     supported VMS languages, SCA, DEC/CMS  (CMS),  the  VMS  Debugger
     (debugger),  and  the  VAX  Performance  and Coverage Analyzer to
     provide  a  highly  interactive  environment.   This  environment
     enables  you  to  create  and  edit code, to view multiple source
     modules,  to  compile  programs,  and  to  review   and   correct
     compile-time errors in one editing session.

     LSE can be invoked directly from the debugger to  correct  source
     code  problems found during debugging sessions.  In addition, LSE
     can be invoked from the VAX Performance and Coverage Analyzer  to
     correct performance problems found during analyzing sessions.

  o  Online HELP Facility

     LSE provides online HELP for information on  unfamiliar  language
     constructs  and routines.  HELP is also provided for all of LSE's
     commands and key definitions.

  o  Source Code Analysis

     LSE's integration with SCA allows  you  to  search  for  specific
     information contained in your source files.

     SCA is a source code cross-reference  and  static  analysis  tool
     that   helps  programmers  familiarize  themselves  with  complex
     systems.  SCA accesses source information generated by  supported
     VMS  language  compilers.   Thus,  SCA allows you to move through
     this information and gain  access  to  related  source  files  as
     necessary.   You  can find out how a program symbol was declared,
     where a particular routine is called, or what module needs to  be
     recompiled.

  o  Source Code Management

     An interface with DEC/CMS simplifies  the  functions  of  program
     development.

     All CMS commands can be issued within LSE.  LSE can  be  directed
     to  fetch  files  directly  from  a  CMS  library  when you issue
     standard LSE file manipulation commands.  In  addition,  LSE  has
     commands   RESERVE,  REPLACE  and  UNRESERVE  which  perform  the
     corresponding CMS operation on LSE buffers.

  o  Program Design

     The /DESIGN qualifier allows the compiler  to  process  an  input
     file  as  a  detailed  design.   Used  with LSE and SCA, this new
     capability   provides   an   integrated   software    development
     environment  that  includes  the  low-level  design  phase of the
     software development life cycle.

     During the design phase, any supported VAX language can  be  your
     Program  Design  Language  (PDL).   In  the  VMS environment, you
     create detailed designs as follows:

      -  Using a supported VAX language

      -  Embedding design information in comments

      -  Writing algorithms with pseudocode and regular placeholders


     With LSE, you can use pseudocode placeholders to  express  design
     information.   Supported VAX languages use the special brackets «
     and » to delimit pseudocode placeholders.  You can express  other
     design  information  in tagged header comments.  In addition, you
     can convert pseudocode placeholders into comments and  store  the
     design information in SCA libraries.

     With SCA, you can perform cross-referencing and  static  analysis
     on  the  design  information.  In addition, SCA provides a report
     tool that allows you to process and analyze designs to produce  a
     variety  of  design reports.  Design reports can show the current
     state of design work and help you understand existing code.   You
     can  generate  help  libraries  and  routine templates from these
     design reports.

  o  LSE Customization

     LSE allows you to  extend  your  editing  environment  to  handle
     highly  specialized  editing needs.  LSE provides an interface to
     VAXTPU.  VAXTPU is part of  the  VMS  operating  system.   VAXTPU
     features  include  a  compiler and an interpreter, and procedures
     for screen management and text manipulation.  The VAXTPU language
     is  block-structured and provides looping, conditional, case, and
     assignment statements, and many built-in procedures to allow  you
     to perform more powerful editing tasks.

  o  EVE/EDT Keypads

     LSE provides  a  SET  MODE  KEYPAD  command  that  sets  the  key
     definitions to be similiar to EVE or EDT.

  o  System Services and Run-Time Library Templates

     LSE provides packages for VMS Systems Services and for the  LIB$,
     SMG$,  and  STR$  Run-Time  Library  routines.   In addition, LSE
     allows  you  to  define  templates  for  packages  of  subroutine
     libraries.

Issuing Commands

 LSE provides two ways to issue commands:   keypad  mode  and  command
 line  mode.   When you invoke LSE, you are in keypad mode.  In keypad
 mode, text that you type is inserted into a buffer.  Keypad,  cursor,
 and  control keys execute LSE functions.  Thus, you can press keys to
 perform editing functions rather than typing commands on the  command
 line.

 LSE provides two keypads:  EDT keypad and EVE keypad.  The default is
 the  EDT  keypad.  You can use the SET MODE KEYPAD command to get the
 EVE keypad.  The EDT key bindings are used in  the  examples  in  the
 manual.

 Some LSE commands are not bound to keys.   Therefore,  they  must  be
 entered  in  command  line mode.  There are two command line prompts:
 LSE Command> and LSE>.

 The LSE Command> prompt will process one command.  After that command
 is  processed, LSE returns to keypad mode.  There are two ways to get
 the LSE  command>  prompt:   pressing  the  DO  key  or  COMMAND  key
 (PF1-KP7).  LSE will place the LSE Command> prompt near the bottom of
 the screen.

 Alternatively, the LSE> prompt allows you to issue as  many  commands
 as  you  want.   To  get the LSE> prompt, you press CTRL/Z.  LSE will
 place the LSE> prompt near the bottom of the screen.   To  return  to
 keypad  mode,  you  can  press  CTRL/Z  again  or  issue the CONTINUE
 command.

Windows

 A window is a section of your screen that displays the contents of  a
 buffer.

 LSE allows you to create two text windows, each mapped to a different
 buffer.   By  splitting the screen into two windows, you can view any
 two buffers simultaneously.

 The status line is highlighted and  provides  information  about  the
 associated buffer.  The status line tells you the name of the buffer,
 whether you are in insert or overstrike mode, whether the  buffer  is
 in  a forward or reverse direction, and whether the buffer is a write
 or read-only buffer.

 The message area is located at  the  bottom  and  displays  broadcast
 messages and messages issued by LSE and SCA.

 The prompt area overlays the top line of the message window with  the
 LSE>  or  LSE Command> prompts, which prompt for commands or required
 parameters for commands.  LSE commands can be used to manipulate  the
 screen and its format.

 The following describes a common use of  some  of  the  commands  and
 default  key  bindings  used to manipulate screens.  If, for example,
 you are editing a file called MODULES.AS, you can issue the following
 commands  to move a procedure from the MODULE2.AS file to the current
 file.

 1.  Press the CHANGE WINDOW_MODE key (PF1-=).

     This command will  split  the  screen  into  two  windows.   Both
     windows  will  contain  the  current  buffer.  The cursor will be
     placed in the bottom window.

 2.  Issue the command:  GOTO FILE MODULE2.PAS.

     This command will put the contents of the file, MODULE2.AS,  into
     the  bottom  window.  Now that the two files are displayed on the
     screen, you can locate both the procedure you want to select  and
     the  location  in  the  current file where you want the procedure
     placed.

 3.  Move to the  desired  procedure  and  press  the  SELECT  (Keypad
     Period)  key.   Use the arrow keys to select the entire procedure
     and press the CUT (Keypad 6) key to capture the procedure.

 4.  Press the PREVIOUS WINDOW key (PF1-(UPARROW)) to place the cursor
     in file MODULE1.PAS.

 5.  Press the PASTE key (PF1-KP6) at the location where the procedure
     should be placed.

 6.  Press the CHANGE WINDOW_MODE key (PF1-=) to return the screen  to
     one window containing the current buffer.


 The commands for manipulating buffers, along  with  the  default  key
 bindings, are listed under subtopic "Screen_Commands".

Additional information available:

Screen Commands

Screen Commands

 LSE provides the following commands for manipulating screens:

      CHANGE WINDOW_MODE (PF1-=)
          toggles the number of windows (between one and two) displayed.

      DELETE WINDOW
          deletes the current window.

      GOTO BUFFER
          moves to the specified buffer.

      GOTO FILE
          moves the cursor to the buffer containing the specified file.

      GOTO SCREEN
          moves the cursor by the number of lines in the current window.

      NEXT WINDOW (PF1-(DOWN ARROW))
          selects the alternate window.

      PREVIOUS WINDOW (PF1-(UP ARROW))
          selects the alternate window.

      REFRESH
          rewrites the display screen.

      SET SCREEN
          defines the display screen characteristics.

      SHIFT
          scrolls a window to the left or to the right.

Buffers

 A buffer is a temporary holding area that provides a work  space  for
 editing  text.  You can create a new file or edit an existing file in
 a buffer.  A buffer becomes visible when  it  is  associated  with  a
 window  that  is  mapped  to  the screen.  Buffers exist only for the
 duration of your editing  session.   When  you  exit  from  LSE,  the
 current buffer is discarded and the contents of the buffer are stored
 in a file.

 LSE allows you to  create  multiple  buffers.   Thus,  you  can  edit
 several  different  files  in  one  editing  session.  You can create
 additional buffers to store portions of text that you might  want  to
 look at, but not edit, during your editing session.

 BUFFER ATTRIBUTES

 Buffers have many  attributes.   This  section  provides  details  on
 buffer  attributes  and  properties.   You  can  use  the SHOW BUFFER
 command to display the characteristics of one or more buffers.

   Buffer Names

   A buffer has a name that is displayed in the status line.   Buffers
   are  usually  named  by the name and type of their associated input
   file.  The GOTO FILE or GOTO BUFFER commands can create buffers.

   Insert/Overstrike

   LSE has two text entry modes:  insert and  overstrike.   In  insert
   mode,  text  gets  inserted into the buffer at the cursor position.
   Text to the right of the cursor gets moved.   In  overstrike  mode,
   text  typed at the cursor replaces text that is currently under the
   cursor.   When  you  start  an  editing  session,  the  buffer   is
   automatically  placed  in  insert  mode.   To change the text entry
   modes, you use the CHANGE TEXT_ENTRY_MODE command.

   Forward/Reverse

   LSE maintains a current direction for  each  buffer.   The  current
   direction  is displayed in the status line.  This direction is used
   for SEARCH operations and the GOTO and ERASE  commands.   When  you
   start  an  editing session, the buffer direction is set to forward.
   To set the current direction to forward, you use  the  SET  FORWARD
   command.   To set the current direction to reverse, you use the SET
   REVERSE command.  Alternatively, you can use the  CHANGE  DIRECTION
   command to change the current direction.

   Input/Output

   Buffers may have an associated input or output file.  An input file
   is  a file that is read into a buffer when a buffer is created.  An
   output file indicates where LSE  will  write  a  buffer.   This  is
   usually  a new version of an input file.  You can change the output
   file name with the SET OUTPUT_FILE command.  The GOTO FILE  command
   creates a buffer and reads a file into it.

   Read/Write

   Buffers  have  either  the  read-only  or  write  attribute.    The
   read-only  attribute indicates that the contents of the buffer will
   not be written to a file on exit.  The  write  attribute  indicates
   that the buffer will be written to a file on exit.  Usually, a file
   is associated with a buffer by the GOTO FILE command, which creates
   a buffer and fills it with the contents of a file.  When the buffer
   is written, it is written to a new version of the file.  If no file
   is  associated  with  a  buffer  that  has the write attribute, LSE
   prompts for a file specification on exit.  Note that  a  buffer  is
   written only if its contents have been modified.

   Modifiable/Unmodifiable

   Buffers  are  either  modifiable  or  unmodifiable.    Unmodifiable
   buffers  protect the contents of a given buffer.  You cannot change
   an  unmodifiable  buffer.   The  GOTO   FILE/READ_ONLY   and   GOTO
   SOURCE/READ_ONLY commands create unmodifiable buffers.  If you want
   to modify an unmodifiable buffer, you must issue the SET MODIFY  or
   SET WRITE command.

   There are some relationships  between  the  READ-ONLY/WRITE  buffer
   attributes   and  the  UNMODIFIABLE/MODIFIABLE  buffer  attributes.
   Given these attributes, a buffer may be in  one  of  four  possible
   states.  The following list describes these states and explains how
   to create these states for a buffer.

    o  MODIFIABLE - WRITE

       The GOTO FILE/WRITE, GOTO SOURCE/WRITE, SET WRITE, and  RESERVE
       commands set buffers to this state.  It is also the default for
       the file specified in the LSEDIT command line.  The buffer  may
       be  modified  and  will  be  written  on  exit  if  it has been
       modified.

    o  MODIFIABLE - READ-ONLY

       This is the default for the GOTO BUFFER/CREATE command that  is
       used to create a "scratch" buffer.  The buffer may be modified,
       but it will not be written on exit.

    o  UNMODIFIABLE - READ-ONLY

       The GOTO  FILE/READ_ONLY  and  GOTO  SOURCE/READ_ONLY  commands
       create  buffers  in this state.  The buffer cannot be modified.
       If you issue a SET MODIFY command on this buffer and modify the
       contents,  LSE  will  not write the contents on exit unless you
       also issue the SET WRITE command for the buffer.

    o  UNMODIFIABLE - WRITE

       A buffer can be set to this state by a user who has completed a
       set  of changes to a buffer in the MODIFIABLE - WRITE state and
       then issued a SET NOMODIFY command for the  buffer  to  protect
       the  buffer  from  accidental  change  for the remainder of the
       editing session.  LSE will write the file on  exit  if  it  has
       been changed during the editing session.


   System Buffers

   Some buffers are used by  LSE  for  special  purposes.   These  are
   called  system buffers.  Unlike user buffers, system buffers do not
   correspond to files.  You can edit a system buffer like  any  other
   buffer, but you should avoid changing its contents.  By convention,
   system buffer names  start  with  a  dollar  sign  ($).   The  most
   frequently  used  system buffers are $HELP, $MESSAGES, $REVIEW, and
   $SHOW.  System buffers are not displayed by the SHOW BUFFER command
   unless you use the /SYSTEM_BUFFERS qualifier.

   Languages

   Buffers may have a language associated with them.  This  determines
   which  language  is  used for the language-sensitive features.  The
   file type of your current buffer determines the language LSE  uses.
   Thus,  you  can  move  between  different  languages  in  different
   buffers, and LSE will provide the  interfaces  to  the  appropriate
   compilers.   The  SET LANGUAGE command associates a language with a
   buffer.

   Current Indentation and Tab Settings

   LSE maintains two settings to control the action of  the  tab  key:
   current  indentation  level and tab increment.  When you are at the
   left margin, the tab key indents to the current indentation  level.
   If  you  are  not  at the left margin, the tab key takes you to the
   next tab column based  on  the  tab  increment  setting.   The  SET
   INDENTATION  command  sets  the  current indentation level; the SET
   TAB_INCREMENT command sets the size of the tab increment.

   Key Bindings

   Buffer commands, along with default key bindings are  listed  under
   subtopic "Buffer_Commands".

Additional information available:

Buffer Commands

Buffer Commands

 LSE provides the following commands for manipulating buffers:

      CHANGE DIRECTION
          Alters the direction of the current buffer. This command is
          bound to Key F11 (PF3 in EVE VT100).

      CHANGE TEXT_ENTRY_MODE
          Alters the text entry mode of the current buffer between
          insert and overstrike. This command is bound to Key F14
          (ENTER in EVE VT100).

      COMPILE
          compiles the source code in the buffers.

      CUT [/BUFFER=name]
          deletes and moves text in the select range to the paste or
          specified buffer.

      DO [/BUFFER=name]
          directs LSE to execute LSE commands or VAXTPU
          program statements from the current or specified buffer.

      EXIT
          terminates an editing session and saves all modified buffers.

      EXTEND
          compiles one or more VAXTPU procedures to extend LSE.

      GOTO FILE file-spec
          moves to the buffer containing the specified file or creates
          a new buffer for the file.

      GOTO BUFFER name
          moves the cursor to the last position held in the specified
          buffer.

      GOTO SOURCE
          moves to the source buffer related to the diagnostic or query
          item. This command is bound to CTRL/G.

      PASTE [/BUFFER=name]
          copies the content of the paste or specified buffer to the
          current buffer.

      QUIT
          terminates an editing session without saving any modified
          buffers.

      READ file-spec [buffer]
          inputs a specified file to the current or specified buffer.

      SET AUTO_ERASE
          enables automatic erasing of placeholders.

      SET FORWARD [/BUFFER=name]
          sets the direction of the current or specified buffer forward.
          This command is bound to Keypad 4 (no binding for EVE VT100).

      SET INDENTATION [/BUFFER=name]
          changes the indentation level for the current or specified
          buffer.

      SET INSERT [/BUFFER=name]
          sets the text entry mode of the current or specified buffer
          to insert mode.

      SET LANGUAGE [/BUFFER=name]
          changes the language associated with the current or specified
          buffer.

      SET LEFT_MARGIN [/BUFFER=name]
          specifies the left margin for the buffer for FILL and ENTER
          space commands.

      SET MODIFY [/BUFFER=name]
          sets buffer status to modifiable.

      SET NOAUTO_ERASE
          disables automatic erasing of placeholders.

      SET NOMODIFY
          sets buffer to unmodifiable.

      SET NOWRAP
          disables wrapping in the indicated buffer.

      SET OUTPUT_FILE [/BUFFER=name]
          changes the output file associated with the current or the
          specified buffer.

      SET OVERSTRIKE [/BUFFER=name]
          sets the text entry of the current or specified buffer to
          overstrike mode.

      SET REVERSE [/BUFFER=name]
          sets the direction of the current or specified buffer to
          reverse. This command is bound to Keypad 5 (no binding for
          EVE VT100).

      SET RIGHT_MARGIN [/BUFFER=name]
          specifies the right margin for the buffer for FILL and ENTER
          space commands.

      SET TAB_INCREMENT [/BUFFER=name]
          specifies the number of columns between tab stops for the
          current or specified buffer.

      SET WRAP
          enables wrapping in the indicated buffer.

      SET WRITE [/BUFFER=name]
          specifies that following a COMPILE command or an exit from
          LSE, the specified buffer will be written to a file.

      SHOW BUFFER [name | *]
          displays the characteristics of a specified or default buffer.

      WRITE [/BUFFER=name] [file]
          outputs the content of the current or specified buffer to
          to a specified file.

Placeholders

 To use LSE to create or edit source code requires an understanding of
 the concepts of tokens and placeholders.  Tokens and placeholders are
 language elements that have been predefined for each of the supported
 languages.   These  elements  can  be  expanded  into  templates  for
 language constructs.

 Placeholders

 Placeholders are markers in the source code that  indicate  locations
 where  you  can provide program text.  These placeholders help you to
 supply the appropriate syntax in a given context.  Generally, you  do
 not  need  to type placeholders, rather, they are inserted for you by
 LSE.  Placeholders can be recognized because they are  surrounded  by
 brackets  or  braces.   The  exact choice for placeholder brackets is
 language dependent.

 There are three types of placeholders:

  o  Terminal placeholders

  o  Nonterminal placeholders

  o  Menu placeholders


 Terminal  placeholders  provide  text  strings  that  describe  valid
 replacements  for  the  placeholder.  Nonterminal placeholders expand
 into additional language constructs.   Menu  placeholders  provide  a
 list  of  options  corresponding  to  the placeholder.  The type of a
 placeholder is a property of the placeholder name.

 Placeholders are either optional or required.  Required placeholders,
 indicated  by  braces,  represent places in the source code where you
 must provide  program  text.   Optional  placeholders,  indicated  by
 brackets,  represent  places  in the source code where you can either
 provide additional constructs or erase the placeholder.

 For example, the declaration

        INTEGER {identifier}...

 when expanded becomes

        INTEGER id,
                [identifier]...

 The first appearance of the identifier placeholder is  surrounded  by
 braces  because you need at least one identifier in this declaration.
 The second appearance is surrounded by  brackets  because  additional
 identifiers are optional.

 Some placeholders are duplicated when expanded.   These  placeholders
 are followed by an ellipsis.  Generally, these placeholders represent
 items such as identifiers, statements, expressions, datatypes, or any
 location  where  lists  of  items  are  expected.   A  placeholder is
 duplicated  either  vertically  or  horizontally,  depending  on  the
 context and the placeholder definition.  For example, the placeholder
 [identifier] in the previous example was duplicated vertically.

 You may move forward or backward from placeholder to placeholder.  In
 addition,  you  can  delete  or  expand  placeholders as needed.  LSE
 allows you to specify uppercase, lowercase, or  as  defined  for  all
 text expanded into the buffer.

 You may modify  placeholder  definitions  by  means  of  the  EXTRACT
 command.  See Chapter 6 for information on modifying placeholders.

 Placeholder definitions may be stored in an  environment  file.   See
 Chapter 7 for information on defining your own placeholders.

 TOKENS

 Tokens  are  typically  keywords  in  programming  languages.    When
 expanded,  tokens provide additional language constructs.  Tokens are
 typed directly into  the  buffer.   Generally,  tokens  are  used  in
 situations  when you want to add additional language constructs where
 there are no placeholders.  For example, typing IF and  pressing  the
 EXPAND  key  causes  a template for an IF construct to appear on your
 screen.  Tokens are also used to  bypass  long  menus  in  situations
 where expanding a placeholder, such as {statement}, would result in a
 lengthy menu.

 You can use tokens to insert text  when  editing  an  existing  file.
 Because  most  languages  have  tokens  for  built-in  functions  and
 keywords, you type the name for a function or keyword and  press  the
 EXPAND  key.   In  addition,  most  languages  provide  a token named
 'statement' or 'expression' that expands into a menu of all  possible
 statements or expressions.

 The following example demonstrates how  to  use  tokens  to  edit  an
 existing  program.   In this case, the buffer, TEST.EXAMPLE, contains
 the following code:

        PROCEDURE test ()

            IF A = B
            THEN
                A = C + 1
            ENDIF
        ENDPROCEDURE test

 If you want to add more statements to  this  program  before  the  IF
 construct, do the following:

 1.  Move the cursor to the beginning of the IF procedure line.

 2.  Press the OPEN LINE key (PF1-KP0).

 3.  Press the TAB key.

     Note that the cursor is placed at the same level  of  indentation
     as the next line.

 4.  Type statement and press the EXPAND key.


 A menu of statements will now appear on your  screen.   You  use  the
 arrow  keys  to  scroll through the menu.  To select a menu item, you
 press the EXPAND, ENTER, or RETURN key.  You can press the space  bar
 to exit a menu without selecting an item.

Additional information available:

Terminal PlaceholdersNonterminal PlaceholdersMenu Placeholders

Terminal Placeholders

 If the current position is on a terminal placeholder when the  EXPAND
 key   is   pressed,  the  Editor  displays  a  description  of  valid
 replacements for the terminal placeholder.

 Pressing the up and down arrows (bound to the GOTO CHARACTER/VERTICAL
 command) allows you to move within the text.

 Pressing the space bar removes  the  text  and  returns  you  to  the
 original buffer without making any changes.

 Pressing any other key clears the text  and  performs  the  operation
 normally associated with the key.

Nonterminal Placeholders

 If the current position is on  a  nonterminal  placeholder  when  the
 EXPAND  key  is  pressed,  the  Editor  deletes  the  placeholder and
 replaces it with the text of the placeholder body.

Menu Placeholders

 When a menu placeholder is expanded, the Editor displays  a  list  of
 options.   Pressing  the  up  and  down arrow keys (bound to the GOTO
 CHARACTER/VERTICAL command) allows you to move  from  one  option  to
 another.

 To obtain help text on an indicated option, press the GOLD-HELP (PF2)
 sequence.

 Pressing the EXPAND, ENTER, or RETURN key allows you  to  expand  the
 selected option and remove the menu display.

 Pressing the key bound to the GOTO SCREEN command (Keypad 8 key) also
 allows  you  to  move through the menu, skipping several options at a
 time.

 Pressing any other key removes the  menu  display  and  performs  the
 operation normally associated with the key.

 If the option is a placeholder name, the placeholder is  enclosed  in
 the same class of delimiter as the menu option being expanded (unless
 the /LIST qualifier on DEFINE PLACEHOLDER  specifies  otherwise)  and
 the Editor then automatically performs an EXPAND operation.  If /LIST
 is specified, the list form of the delimiter found on the menu option
 is used.

 If there is a description associated with the  placeholder  or  token
 name  appearing  as  a  choice  in  a  menu,  the Editor displays the
 description along with the name.  For example:

       IF: tests an expression and establishes an action

Languages

 LSE allows you to use  its  knowledge  of  programming  languages  to
 develop software.  LSE also allows you to design your own languages.

 In addition to programming languages, you can  define  languages  for
 other  things,  such  as  memos  or letters.  Once you have defined a
 language, you can save it in an environment file and  recall  it  for
 subsequent editing and update sessions.

 To create a new language, you first  create  a  source  file  (.LSE),
 within  LSE,  into  which  you  put  the LSE commands that define the
 elements of your language.  Once the source file  is  completed,  use
 the DO command to process the definitions.  You may then use the SAVE
 ENVIRONMENT command to  save  the  definitions  in  binary  form  for
 subsequent  use  by  LSE.   For  example,  to create a file for a new
 language, you do the following:

         1. Create a source file in an empty buffer, with a .LSE
            extension.

         2. Put all language, token, and placeholder definitions
            in the source file.

         3. Execute the commands in the source file by executing
            a DO command (to load the definitions for the current
            editing session).

         4. Execute a SAVE ENVIRONMENT command to save your new
            language definitions in a binary file (.ENV), for
            subsequent use.

 Thus, to create a binary image file (.ENV) for your language, you use
 the following sequence of commands:

            LSE> DO
            LSE> SAVE ENVIRONMENT filename
            LSE> EXIT

Additional information available:

Defining a LanguageLanguage Commands

Defining a Language

 All template definitions, whether text  or  language-oriented,  begin
 with  a  language definition command (DEFINE LANGUAGE) that specifies
 language characteristics.  For example, to define a language, you use
 the DEFINE LANGUAGE command to specify:

         1. The name of your language (DEFINE LANGUAGE).

         2. The file types (/FILE_TYPES) for the language.

         3. The identifier characters to be used in token and
            alias names (/IDENTIFER_CHARACTERS).

         4. The punctuation and delimiter characters
            (/PUNCTUATION_CHARACTERS).

         5. The required and optional placeholder delimiters
            (/OPT, /OPTL, /REQ, /REQL).

         6. The initial text heading for the new file
            (/INITIAL_STRING).

         7. The indentation control for tokens and placeholders
            (/TAB_INCREMENT).

      Example:

            DEFINE LANGUAGE MEMO -
              /IDENTIFIER CHARACTERS = -
              "abcd....XYZ0123456789" -
              /INITIAL_STRING ={memo_template}" -
              /FILE_TYPES = (.MEMO) -
              /TAB_INCREMENT = 4 -
              /OPT = ("[","]") -
              /OPTL = ("[","]...") -
              /PUNCTUATION_CHARACTERS = ".,':*+-/" -
              /REQ = ("[","]") -
              /REQL = ("[","]...") -

 To define a placeholder, you use the DEFINE  PLACEHOLDER  command  to
 specify:

         1. The name of your placeholder (DEFINE PLACEHOLDER).

         2. The associated language (/LANGUAGE).

         3. The type of placeholder: terminal, nonterminal, or menu
            (/TYPE).

         4. The description that you want displayed when the placeholder
            is used in a menu or in the SHOW PLACEHOLDER command.

         5. The end of the placeholder definition (END DEFINE).

      Example:
                    .
                    .
            DEFINE PLACEHOLDER subject_line -
              /LANGUAGE = MEMO -
              /TYPE = TERMINAL -
              "Subject of the memo."
            END DEFINE

 To define a token you use the DEFINE TOKEN command to specify:

         1. The name of your token (DEFINE TOKEN).

         2. The associated language (/LANGUAGE).

         3. The description that you want displayed when the token
            is used in a menu or in the SHOW TOKEN command.

         4. The end of the token definition (END DEFINE).

      Example:
                   .
                   .
            DEFINE TOKEN location -
              /LANGUAGE = MEMO -
              /DESCRIPTION = "Office location"
              "LOC:  URE-0096"
            END DEFINE

Language Commands

 LSE provides the following commands  for  creating  and  manipulating
 language elements:

      DEFINE ALIAS [/LANGUAGE=name]
          specifies the alias name to be defined in the specified
          language.

      DEFINE LANGUAGE name
          specifies characteristics for the current language.

      DEFINE PLACEHOLDER [/LANGUAGE=name]
          specifies placeholder characteristics for the specified
          language.

      DEFINE TOKEN [/LANGUAGE=name]
          specifies token characteristics for the specified language.

      DELETE ALIAS [/LANGUAGE=name]
          cancels the effect of a DEFINE ALIAS command used for the
          specified language.

      DELETE LANGUAGE name
          cancels the effect of a DEFINE LANGUAGE command.

      DELETE PLACEHOLDER [/LANGUAGE=name]
          cancels the effects of a DEFINE PLACEHOLDER command used for
          the specified language.

      DELETE TOKEN [/LANGUAGE=name]
          cancels the effect of DEFINE TOKEN command used in the
          specified language.

      DO
          executes LSE commands or VAXTPU program statements.

      END DEFINE
          terminates a DEFINE TOKEN or DEFINE PLACEHOLDER command.

      EXTRACT LANGUAGE language-name
          selects the definition of the named language and formats it
          as a command.

      HELP/LANGUAGE [name | * ]
          displays help information about the specified language.

      MODIFY LANGUAGE name
          modifies the characteristics of a specified language.

      SAVE ENVIRONMENT file-spec
          writes all user-defined languages, tokens, and placeholders
          to a specified file.

      SHOW ALIAS name [/LANGUAGE=name]
          displays the characteristics of the specified alias for the
          specified language.

      SHOW LANGUAGE [ name | * ]
          displays the characteristics of the specified language.

      SHOW TOKEN name [/LANGUAGE=name]
          displays the characteristics of the specified token for the
          specified language.

      SHOW PLACEHOLDER name [/LANGUAGE=name]
          displays the characteristics of the specified placeholder for
          the specified language.

Getting Started

 If you are experimenting with a new file associated with one  of  the
 supported  languages,  the  following  procedures may be helpful (see
 also topic "Entering_Code").


       o  Once  you  have  invoked  LSE,  and  the  initial string
          appears  on  the  screen, press the EXPAND key (CTRL/E) and
          the  structure  of  a program associated with your language
          will appear.

       o  Using the arrow keys, move through the menu and  expand  your
          choice by pressing CTRL/E, the ENTER key, or the RETURN key.

       o  Using the GOTO PLACEHOLDER/FORWARD key  (CTRL/N),  move  from
          one  placeholder to the next, expanding and typing in text as
          you go.  If you need help on a placeholder (or token),  press
          the  HELP/INDICATED key  sequence  (PF1-PF2)  while  you  are
          positioned on the placeholder.

       o  For those optional placeholders you do not  want,  press  the
          ERASE PLACEHOLDER/FORWARD key (CTRL/K).

       o  Enter command mode by pressing CTRL/Z, for the  LSE>  prompt,
          or  the  GOLD COMMAND key sequence (PF1 and keypad 7) for the
          LSE Command> prompt.  When  using   the   LSE>  prompt,  type
          CONTINUE  to  return  to  editing.  Type   the  EXIT  or QUIT
          command to leave LSE; however, if you  make  modifications
          to  the  file,  you  must  type  the EXIT command to save the
          changes you have made.

 If  you  wish  to  get  more general information about LSE, do  the
 following:

       o To see a diagram of the keypad, press the HELP key (PF2).

       o To obtain a listing of the keys and their descriptions,  press
         CTRL/Z to get the LSE> prompt, and type the SHOW KEY command.

       o To see a list of LSE commands and their explanations, press
         CTRL/Z to get the LSE> prompt, and type HELP COMMANDS.

       o To display a list of all the predefined tokens or placeholders
         for  the  language  of the current buffer, press CTRL/Z to get
         the  LSE>  prompt, and type the SHOW TOKEN or SHOW PLACEHOLDER
         command.

       o To  get  language-specific  help  on  a  particular keyword or
         placeholder, position the cursor on the keyword or placeholder
         and press GOLD PF2. Help is not available for all keywords and
         placeholders.

Additional information available:

Using Menus

Using Menus

 Each option in a menu is either a token, a placeholder, or a  string.
 If  you  select  a token or placeholder, the expansion of that option
 appears in the buffer.  If you choose a string the string appears  in
 the  buffer.   The menu is removed from the screen after you select a
 menu option.

 When a menu first appears on the screen, you can:

      1.  Move  through  the  menu by pressing the up or down arrow
          keys.  (This causes the indicator to move from one option
          to the next.)

      2.  Select an option from the menu by pressing the EXPAND key
          (CTRL/E),  the  ENTER  key,  or the RETURN key, while the
          indicator is on the desired option.

      3.  Press the PF2 or HELP key to get additional help.

      4.  Press  the space bar to cause the menu to disappear (this
          has  no  effect on the user's buffer). Pressing any other
          key  also  makes  the  menu disappear, however, the key's
          function is performed.

Command Categories

 The following information describes the use of LSE commands  by  task
 and function.

Additional information available:

Edit SessionsEntering CodeText ManipulationCompile and Review
CMS InterfaceIndenting CodeCursor MovementScreen Control
Tailor EnvironmentsFiles and BuffersHelp and Status

Edit Sessions

     ATTACH
         allows you to switch control of your terminal to another
         process.

     CONTINUE
         exits line mode and enters keypad mode.

     DCL
         executes a DCL command from within your editing session

     DO
         executes LSE commands or VAXTPU program statements.

     EXIT
         terminates an edit session,  returns to the calling
         program, and saves buffers.

     GOTO COMMAND
         produces the LSE Command> prompt at which LSE or SCA commands
         can be issued.

     QUIT
         terminates an edit session and returns to the calling
         program without saving buffers.

     REPEAT repeat-count [command]
         executes a specified command a specified number of times.

     SET DEFAULT_DIRECTORY
         changes your default device and directory specifications.

     SET FONT
         sets the specified fonts for the screen.

     SET JOURNALING
         enables buffer journaling for the specified buffers.

     SET NOJOURNALING
         disables buffer journaling for the specified buffers.
     SPAWN
         suspends the edit session and spawns a subprocess at the
         DCL level.

Entering Code

     ENTER COMMENT
         converts pseudocode into comments.

     ENTER PSEUDOCODE
         inserts pseudocode placeholder delimiters.

     EXPAND
         expands the token name at the current cursor position.

     ERASE PLACEHOLDER
         deletes placeholder text and related punctuation.

     GOTO PLACEHOLDER
         moves the cursor to a placeholder

     MODIFY LANGUAGE
         modifies the characteristics of a specified language.

     SET AUTO_ERASE
         enables automatic erasing of placeholders.

     SET LANGUAGE
         sets the specified language associated with the specified
         buffer

     SET NOAUTO_ERASE
         disables automatic erasing of placeholders.

     SET NOLANGUAGE
         disassociates the language associated with the indicated buffer.

     UNDO ENTER COMMENT
         reverses the effect of the last ENTER COMMENT command.

     UNERASE PLACEHOLDER
         restores placeholder text to its original postion.

     UNEXPAND
         reverses the effect of the last EXPAND command.

Text Manipulation

     CANCEL SELECT_MARK
         cancels the select range of the SET SELECT_MARK command.

     CAPITALIZE WORD
         capitalizes the first letter of the current word, or words,
         in a selected range.

     CENTER LINE
         centers the current line between the left and right margins.

     CHANGE CASE
         changes the case (upper/lower) of each letter in the specified
         range.

     CHANGE DIRECTION
         changes the current direction of the current buffer.

     CHANGE INDENTATION
         adds or deletes leading blanks or tabs in the select range.

     CHANGE TEXT_ENTRY_MODE
         changes the edit mode (insert/overstrike) of the current buffer.

     CUT
         deletes and moves text in the select range to the current
         buffer.

     ENTER LINE
         inserts a blank line at the end of a line and repositions the
         cursor to it.

     ENTER SPACE
         inserts a blank character and performs a fill at the current
         cursor position.

     ENTER SPECIAL [ASCII-code]
         inserts a specified ASCII character in decimal at the current
         cursor position.

     ENTER TAB
         inserts tabs and blanks at the current cursor position.

     ENTER TEXT quoted-string
         inserts a specified string at the current cursor position.

     ERASE CHARACTER
         deletes a character from the current buffer.

     ERASE LINE
         deletes a line of text from the current buffer.

     ERASE PLACEHOLDER
         deletes placeholder text and related punctuation.

     ERASE SELECTION
         removes the text within the selected range.

     ERASE WORD
         deletes a word from the current buffer.

     EXPAND
         replaces placeholders, token, alias, or routine names at the
         current cursor position with appropriate text or code.

     FILL
         fills the line in the select range.

     LOWERCASE WORD
         changes the letters in the current word to lowercase.

     PASTE
         copies the contents of the paste buffer to the current
         buffer.

     QUOTE
         enters a control code or other character, either as text in
         the buffer you are editing or as a string command

     SELECT ALL
         selects the entire contents of the current buffer.

     SET AUTO_ERASE
         enables automatic erasing of placeholders.

     SET FORWARD
         sets the direction of the current buffer forward.

     SET INSERT
         sets the text entry mode of the current buffer to insert
         mode.

     SET NOAUTO_ERASE
         disables automatic erasing of placeholders.

     SET NOWRAP
         disables wrapping in the indicated buffer.

     SET OVERSTRIKE
         sets the text entry mode of the current buffer to overstrike
         mode.

     SET REVERSE
         sets the direction of the current buffer to reverse.

     SET SELECT_MARK
         marks a position as one end of a select mark.

     SET WRAP
         enables wrapping in the indicated buffer.
     SPELL
         runs DECspell to check the currently selected text or the entire
         buffer.

     SUBSTITUTE quoted-search-string quoted-replace-string
         searches for a specified string and replaces it with a
         specified string.

     TAB
         inserts blanks and tabs to move cursor to current indentation
         level or next tab stop.

     TOGGLE SELECT_MARK
         sets and resets the state of SELECT_MARK.

     UNERASE erase-command-option
         restores text deleted by an ERASE command option.

     UNEXPAND
         reverses the effect of the last EXPAND command.

     UNTAB
         removes blanks and tabs to the left of the cursor moving the
         cursor to the previous tab stop.

     UPPERCASE WORD
         changes the current word to uppercase.

Compile and Review

     COMPILE
         compiles the contents of a buffer without leaving LSE

     END REVIEW
         ends an LSE REVIEW session.

     GOTO SOURCE
         displays the source related to the current diagnostic or
         query item.

     GOTO REVIEW
         moves to the currently active review session.

     NEXT ERROR
         selects the next diagnostic in the current set.

     PREVIOUS ERROR
         selects the previous diagnostic in the current set.

     REVIEW
         selects and displays a set of diagnostic messages resulting
         from a compilation.

CMS Interface

     CMS [cms-command]
         enables the execution of DEC/CMS command within
         LSE.

     GOTO FILE
         moves the cursor to the buffer containing the
         specified file.

     GOTO SOURCE
         moves from a dignostic or symbol in a review
         or query buffer to the related item in the
         associated source buffer.

     READ
         opens a specified file for input and places
         its contents in a specified buffer.

     RESERVE [element-name]
         Reserves the element specified in your current
         CMS library.

     REPLACE
         Replaces the element (with the same specification
         as the input file for your current buffer) into
         your current CMS library.

     SET CMS
         sets the default values for reservations and fetches
         that LSE performs.

     SET MODIFY
         sets buffer status to modifiable.

     SET SOURCE_DIRECTORY
         specifies a search list of directories for your
         CMS source files.

     UNRESERVE
         unreserves the element specified by the last
         RESERVE command.

Indenting Code

     CHANGE INDENTATION
         adds or deletes leading blanks or tabs in the select
         range.

     ENTER TAB
         inserts indentation at the beginning of a line or a
         tab at the cursor position.

     SET INDENTATION
         changes the inentation level for the buffer.

     SET TAB_INCREMENT
         specifies the number of columns between tab stops.

     TAB
         inserts blanks and tabs to move cursor to current indentation
         level or next tab stop.

     UNTAB
         removes blanks and tabs to the left of the cursor moving the
         cursor to the previous tab stop.

Cursor Movement

     CANCEL MARK
         disassociates a mark and deletes the specified name.

     CHANGE DIRECTION
         changes cursor direction (forward/reverse) through the
         current buffer.

     GOTO BOTTOM
         moves the cursor to the bottom of the current buffer.

     GOTO BUFFER
         moves to the last cursor position held in the specified
         buffer.

     GOTO CHARACTER
         moves the cursor to the next character.

     GOTO FILE file-spec
         moves the cursor to the last position held in the buffer
         specified by the file-spec.

     GOTO LINE
         moves the cursor to the next line.

     GOTO MARK
         moves the cursor to the mark-name specified by the SET MARK
         command.

     GOTO PAGE
         moves the cursor to the next page.

     GOTO PLACEHOLDER
         moves the cursor to the next placeholder.

     GOTO SCREEN
         moves the cursor the current direction by the number of
         lines in the current window.

     GOTO SOURCE
         moves to the source associated with the current diagnostic
         or query item.

     GOTO TOP
         moves the cursor to the top of the current buffer.

     GOTO WORD
         moves the cursor to the next word in the current buffer.

     LINE
         moves the cursor in the current buffer to the start of the source
         line you specify.

     NEXT ERROR
         selects the next diagnostic in the current set.

     PREVIOUS ERROR
         selects the previous diagnostic in the current set.

     SEARCH quoted-string
         moves the cursor to a specified string in the current buffer.

     SET CURSOR
         selects either bound cursor motion or free cursor motion.

     SET FORWARD
         sets the current buffer direction forward.

     SET MARK
         specifies a name at the current cursor position for a GOTO MARK
         command.

     SET REVERSE
         sets the current buffer direction backward.

     SET SEARCH
         sets text search options.

Screen Control

     CHANGE WINDOW_MODE
         alters the number of displayed windows.

     DELETE WINDOW
         deletes the current window.

     ENLARGE WINDOW
         enlarges the current window.

     GOTO BUFFER
         moves the cursor to the last position held in
         the specified buffer.

     GOTO FILE
         moves the cursor to a buffer containing the
         specified file.

     GOTO SCREEN
         moves the cursor in the current direction by the
         number of lines in the current window.

     GOTO SOURCE
         uses the current cursor position in the review or query buffer
         to select an associated diagnostic or item in the related source
         buffer.

     NEXT WINDOW
         selects the alternate window.

     ONE WINDOW
         deletes all but the current window.

     OTHER WINDOW
         moves the cursor from the current window to the next
         window if the screen is split into multiple windows
     PREVIOUS WINDOW
         selects the alternate window.

     REFRESH
         rewrites the display screen

     SET SCREEN
         defines the display screen characteristics.

     SET SCROLL_MARGINS
         delimits the lines at which the cursor triggers
         scrolling.

     SHIFT
         scrolls a window horizontally.

     SHRINK WINDOW
         shrinks the current window.

     SPLIT WINDOW
         divides the current window into two or more
         windows.

     TWO WINDOWS
         splits the current window into two windows.

Tailor Environments

     CALL
         evokes a specified VAXTPU procedure.

     DEFINE ALIAS
         specifies the alias name to be defined in the specified
         language.

     DEFINE ADJUSTMENT
         defines the behavior of the LSE viewing commands
         on individual lines of a source file.

     DEFINE COMMAND
         specifies a user command or an abbreviation for an LSE
         command.

     DEFINE KEY
         binds an LSE command to a key.

     DEFINE KEYWORDS
         defines the indicated keyword list.

     DEFINE LANGUAGE
         specifies the characteristics of a language.

     DEFINE PACKAGE
         specifies a subroutine package for which call templates
         are automaically generated.

     DEFINE PARAMETER
         specifies a parameter within a specified package.

     DEFINE PLACEHOLDER
         specifies a placeholder and characteristics for a specified
         language.

     DEFINE ROUTINE
         specifies templates for a routine within a package.

     DEFINE TOKEN
         specifies a token and characteristics for a specified
         language.

     DELETE ALIAS
         deletes the definition of an alias name.

     DELETE ADJUSTMENT
         removes a name from the list of adjustments associated
         with a language.

     DELETE COMMAND
         deletes the definition of a user-defined command.

     DELETE KEY
         deletes the definition of a specified key.

     DELETE KEYWORDS
         cancels the indicated keywords definition.

     DELETE LANGUAGE
         deletes the definition of a specified language.

     DELETE PACKAGE
         deletes the definition of a specified package.

     DELETE PARAMETER
         deletes the definition of a specified parameter.

     DELETE PLACEHOLDER
         deletes the definition of a specified placeholder.

     DELETE ROUTINE
         deletes the definition of a specified routine.

     DELETE TOKEN
         deletes the definition of a specified token.

     DO
         executes LSE commands or VAXTPU program statements.

     END DEFINE
         terminates a DEFINE TOKEN or DEFINE PLACEHOLDER command.

     EXTEND
         compiles one or more VAXTPU procedures to extend LSE.

     EXTRACT ADJUSTMENT
         extracts the definition of the named adjustment and formats
         the definition as a command.

     EXTRACT ALIAS
         selects the definition of the alias name and formats
         it as a command.

     EXTRACT KEYWORDS
         extracts the definition of the named keyword list and
         formats the definition as a command.

     EXTRACT LANGUAGE
         selects the definition of the named language and formats it
         as a command.

     EXTRACT MODULE
         extracts specified modules of source analysis data from an
         SCA library.

     EXTRACT PACKAGE
         extracts the definition of the named package and
         formats the definition as a command.

     EXTRACT PARAMETER
         extracts the definition of the named parameter and
         formats the definition as a command.

     EXTRACT PLACEHOLDER
         extracts the definition of the named placeholder and
         formats the definition as a command.

     EXTRACT ROUTINE
         extracts the definition of the named routine and
         formats the definition as a command.

     EXTRACT TAG
         extracts the definition of the named tag and
         formats the definition as a command.

     EXTRACT TOKEN
         extracts the definition of the named token and
         formats the definition as a command.

     MODIFY LANGUAGE name
         modifies the characteristics of a specified language.

     SAVE SECTION
         writes the binary form of current key definitions, learn
         sequences, user-defined commands, mode settings, and VAXTPU
         procedures and variables to a section file.

     SAVE ENVIRONMENT
         writes all user-defined languages, tokens, and placeholders
         to a specified file.

     SET MODE
         changes the setting of the BELL, KEYPAD, and MENU modes.

     SET SEARCH
         sets text search options.

Files and Buffers

     CHANGE TEXT_ENTRY_MODE
         switches the text entry mode between insert and overstrike.

     CLOSE BUFFER
         deletes the current buffer

     CUT
         moves selected text to a specified buffer.

     DELETE BUFFER
         deletes a specified buffer.

     GOTO BUFFER
         moves to the specified buffer.

     GOTO FILE
         moves to a buffer containing the specified file or reads
         the file into a new buffer.

     GOTO SOURCE
         moves to the source associated with the current diagnostic
         message or query item.

     INCLUDE
         inserts the specified file at the current cursor position.

     NEXT BUFFER
         moves your next buffer into the current window, returning
         to your last position in that buffer.

     PASTE
         copies the contents of a specified buffer to the current
         cursor position in the current buffer.

     PREVIOUS BUFFER
         moves your previous buffer into the current window,
         returning to your last position in that buffer.

     READ file-spec
         inputs a specified file to the current buffer.

     RECOVER BUFFER
         reconstructs the contents of a buffer from a buffer change
         journal file.

     SET DEFAULT_DIRECTORY
         changes your default device and directory specifications.

     SET DIRECTORY
         sets the default read-only/writeable status of files in
         a specified directory.

     SET FORWARD
         sets the direction of the specified buffer to forward.

     SET INDENTATION
         changes the indentation level for the current buffer.

     SET INSERT
         sets the text entry mode of the specified buffer to insert
         mode.

     SET LEFT_MARGIN
         specifies the left margin of the current buffer for FILL
         and ENTER SPACE commands.

     SET MODIFY
         sets buffer status to modifiable.

     SET NOMODIFY
         sets buffer to unmodifiable (display-only).

     SET NOSOURCE_DIRECTORY
         specifies a directory to be removed from the list of source
         directories.

     SET OUTPUT_FILE
         changes the output file associated with the current buffer.

     SET OVERSTRIKE
         sets the text entry mode of the specified buffer to overstrike
         mode.

     SET READ_ONLY
         specifies that following a COMPILE command or an exit from
         LSE, the buffer not be written to a file.

     SET REVERSE
         sets the direction of the specified buffer backward.

     SET RIGHT_MARGIN
         specifies the right margin for FILL and ENTER SPACE commands.

     SET SOURCE_DIRECTORY
         specifies a search list of source file directories.

     SET TAB_INCREMENT
         specifies the number of columns between tab stops for the
         current buffer.

     SET WRAP
         enables wrapping in the indicated buffer.

     SHOW BUFFER
         displays specified buffer characteristics.

     WRITE
         writes the contents of the specified buffer or select range
         to a specified file.

Help and Status

     HELP [topic-list]
         displays information about a specified topic.

     SHOW ADJUSTMENT
         displays the characteristics of indicated adjustments.

     SHOW ALIAS
         displays the characteristics of the specified alias.

     SHOW BUFFER
         displays the characteristics of the specified buffer.

     SHOW CMS
         displays the current SET CMS settings.

     SHOW DEFAULT_DIRECTORY
         displays the current default device and directory.

     SHOW COMMAND
         displays the characteristics of the specified user-defined
         command.

     SHOW DIRECTORY
         displays the setting of the SET DIRECTORY command.

     SHOW KEY
         displays the characteristics of the specified keyboard
         binding.

     SHOW KEYWORDS
         displays the characteristics of the specified keyword.

     SHOW LANGUAGE
         displays the characteristics of the specified language.

     SHOW LIBRARY
         displays the directory specifications of SCA libraries.

     SHOW MARK
         displays the setting of the specified mark.

     SHOW MODE
         Displays the current mode settings.

     SHOW MODULE
         displays SCA library module information.

     SHOW PACKAGE
         displays the characteristics of the specified package.

     SHOW PARAMETER
         displays the characteristics of the specified parameter.

     SHOW PLACEHOLDER
         displays the characteristics of the specified placeholder.

     SHOW QUERY
         displays information about current SCA query sessions.

     SHOW ROUTINE
         displays the characteristics of the specified routine.

     SHOW SCREEN
         displays information about current SCA query sessions.

     SHOW SEARCH
         displays the settings of text search options.

     SHOW SOURCE_DIRECTORY
         displays the directories set by the SET SOURCE_DIRECTORY
         command.

     SHOW SUMMARY
         shows statistics and other information about LSE.

     SHOW TAG
         displays the characteristics of indicated tags.

     SHOW TOKEN
         displays the characteristics of the specified token.

     SHOW VERSION
         displays the current version of LSE and SCA.

     WHAT LINE
         shows the current line number and total number of lines
         in the buffer.  Also shows what percentage of the lines
         in the buffer are located above the current line.

Entering Code

 To support rapid source code development and decrease the  occurrence
 of  syntactic  errors,  LSE  provides  language-specific  tokens  and
 placeholders.  Tokens and placeholders allow  for  the  insertion  of
 source code, within language constructs, by expanding the name a user
 types and by further expanding tokens and placeholders  on  syntactic
 markers.

 On-line help for language features is also provided that is keyed  to
 the names of tokens and placeholders.

Additional information available:

TokensPlaceholdersAliasesNew FilesOld Files

Tokens

 Tokens are models of program language constructs that are  referenced
 by  name  from  a template buffer.  When a token name is entered, LSE
 replaces the name with the specified template body  from  the  buffer
 (see also topic "Tokens_and_Placeholders").

 The LSE commands used for the manipulation of tokens are:

      DEFINE TOKEN name
         specifies template characteristics for an EXPAND command.

      DELETE TOKEN name
         cancels the effect of a DEFINE TEMPLATE command.

      END DEFINE
         terminates a DEFINE command.

      EXPAND
         expands the token name at the current cursor position.

      EXTRACT TOKEN token-name
         selects the definition of the named token and formats it
         as a command.

      SAVE ENVIRONMENT [ file-spec ]
         writes all user-defined tokens to a specified file

      SHOW TOKEN [ name | * ]
         displays information about the specified token.

      UNEXPAND
         reverses the effect of the last EXPAND command.

Placeholders

 Placeholders are syntactic character strings that hold the  place  of
 program language constructs.  When a placeholder name is expanded, it
 expands  to  either  an  actual  value  (terminal  node)  or  another
 construct  (nonterminal  node)  requiring further expansion (see also
 Topics "Tokens_and_Placeholders").

 The LSE commands used for the manipulation of placeholders are:

      DEFINE PLACEHOLDER name
            specifies placeholder characteristics for the current
            language.

      DELETE PLACEHOLDER name
            cancels the effect of a DEFINE PLACEHOLDER command.

      END DEFINE
            terminates a DEFINE command.

      ERASE PLACEHOLDER
            deletes the text of a selected placeholder.

      EXPAND
            expands the placeholder-name at the current cursor postion.

      EXTRACT PLACEHOLDER placeholder-name
            selects the definition of the named placeholder and formats
            it as a command.

      GOTO PLACEHOLDER
            moves the cursor to the next placeholder.

      SAVE ENVIRONMENT [file-spec]
            writes all user-defined placeholders to the specified file.

      SHOW PLACEHOLDER [name | * ]
            displays the characteristics of the specified placeholder.

      UNEXPAND
            reverses the effect of the last EXPAND command.

Aliases

 Aliases are abbreviated reference names  for  long  identifiers  that
 have  been  entered  in  the  source code.  To define an alias for an
 identifier on which  the  cursor  is  currently  located,  press  the
 GOLD-CTRL/A key sequence and type the abbreviation at the prompt:

      _Alias name: name

 Whenever  the  abbreviated  reference  name  is  typed  and  expanded
 (CTRL/E), the original identifier string will appear in the buffer.

 The LSE commands used for the manipulation of aliases are:

      EXTRACT ALIAS alias-name
            selects the definition of the alias name and formats
            it as a command.

      DEFINE ALIAS name [value]
            specifies the alias name to be assigned and the value
            of the string to be referenced.

      DELETE ALIAS name
            specifies the alias name to be deleted.

New Files

 To edit a new file in one of the supported languages,  the  following
 commands   are   required   for   the   manipulation  of  tokens  and
 placeholders:

      o  ERASE PLACEHOLDER/FORWARD (CTRL/K)

      o  EXPAND (CTRL/E)

      o  GOTO PLACEHOLDER/FORWARD (CTRL/N)

      o  GOTO PLACEHOLDER/REVERSE (CTRL/P)

      o  UNERASE PLACEHOLDER (PF1-CTRL/K)

      o  UNEXPAND (PF1-CTRL/E)

 When you press the EXPAND key (CTRL/E), while  the  cursor  is  on  a
 placeholder name, one of the following will occur:

  o  The placeholder will be replaced automatically  with  a  template
     consisting  of  language constructs.  This type of placeholder is
     called a "nonterminal  placeholder"  because  it  will  insert  a
     template into the buffer when expanded.

  o  Text will appear in a separate window to aid you in  supplying  a
     value.    This   type   of  placeholder  is  called  a  "terminal
     placeholder" because it does  not  insert  a  template  into  the
     buffer  when  expanded.   Instead,  you must supply the necessary
     text.  You can press the spacebar to remove the window.

  o  A menu will appear that provides you with  options  that  can  be
     selected  and  expanded into templates.  This type of placeholder
     is called a "menu placeholder".


 In any of these three cases, you may type in the  desired  text  over
 the  placeholder,  and  the placeholder will be erased automatically.
 When expanding a menu placeholder, you can move through  the  options
 by  using the up and down arrow keys.  To select an option, you press
 the EXPAND key, the RETURN key, or the ENTER key.  To exit  the  menu
 without selecting an option, you press the spacebar.

 You  can  construct  a  complete  program  by  repeatedly   expanding
 templates.   You  do  not have to continuously expand templates until
 you reach a terminal placeholder.   Rather,  you  may  find  it  more
 appropriate  to  type in the desired value yourself at a higher level
 (see also topics "Tokens_and_Placeholders" and "Getting_Started").

Old Files

 To edit an existing file, in one of the supported languages, you  use
 tokens.   Since tokens exist for many reserved words, simply type the
 token name and press the EXPAND key (CTRL/E).

 For example, typing IF followed by a CTRL/E causes a template for  an
 IF  construct  to appear on your screen.  (Use the SHOW TOKEN command
 to acquire a listing of all the predefined tokens.)

Compiling

 While writing your program,  you  can  use  the  COMPILE  and  REVIEW
 commands  to  compile your code and review compilation errors without
 leaving the editing session.

 Supported VMS language compilers  generate  a  file  of  compile-time
 diagnostic information that LSE can use to review compilation errors.
 The  diagnostic  information  is  generated  with  the   /DIAGNOSTICS
 qualifier.

 The COMPILE command issues a DCL command in a  subprocess  to  invoke
 the appropriate compiler.  LSE checks to see if the language provides
 /DIAGNOSTICS capabilities.   If  so,  LSE  appends  the  /DIAGNOSTICS
 qualifier onto the compilation command.

 For example, if you issue the COMPILE command  while  in  the  buffer
 TEST.ADA, the resulting DCL command is as follows:

     $ ADA DEV:[DIRECTORY]TEST.ADA/DIAGNOSTICS=DEV:[DIRECTORY]TEST.DIA

 LSE supports all of the compiler's  command  qualifiers  as  well  as
 user-supplied  command  procedures.   You can specify DCL qualifiers,
 such as /LIBRARY, when invoking the  compiler  from  LSE.   (See  the
 Command Dictionary for details on the COMPILE command.)

 The REVIEW command displays any  diagnostic  messages  that  resulted
 from  a  compilation.   LSE  displays  the  compilation errors in one
 window, with the corresponding source  code  displayed  in  a  second
 window.

 This multiwindow capability allows you to review  your  errors  while
 examining  the associated source code.  This eliminates tedious steps
 in the error correction process and helps ensure that all the  errors
 are fixed before looping back through the compilation process.

 LSE provides several commands to help you review errors and exam your
 source  code.   The  following lists these commands and their default
 key bindings.

      COMPILE/REVIEW
           compiles and reviews the content of the current buffer.

      END REVIEW
           terminates the current review session.

      GOTO SOURCE
           uses the current cursor position in $REVIEW to select
           the diagnostic in the source buffer. This command is
           bound to CTRL/G.

      NEXT ERROR
           selects the next diagnostic message from $REVIEW.

      NEXT STEP
           selects the next diagnostic message from $REVIEW.
           This command is bound to CTRL/F.

      PREVIOUS ERROR
           selects the previous diagnostic message from $REVIEW.

      PREVIOUS STEP
           selects the previous diagnostic message from $REVIEW.
           This command is bound to CTRL/B.

      REVIEW
           displays the diagnostic messages resulting from a
           compilation.

CMS Interface

 LSE V3.0 provides for invoking DEC/CMS  from  the  LSE  command  line
 using  the  CMS  command.  Also, when LSE must access a file from the
 directory that is the user's CMS library, LSE will automatically  use
 CMS to FETCH the file.  LSE also has a RESERVE command to reserve the
 element in your current CMS library that has the same name  and  type
 as  the  file associated with your current buffer.  The UNRESERVE and
 REPLACE commands also provide the corresonding CMS operation for  the
 file in your current buffer.

 See  the  manual  for  information  "File   Manipulation"   and   for
 descriptions  of  the  following  new or enhanced commands related to
 source code management and DEC/CMS:

       CMS
       GOTO FILE
       GOTO SOURCE
       READ
       REPLACE
       RESERVE
       SET CMS
       UNRESERVE

New Features

 For  information  on  new  features,  see  the   release   notes   in
 SYS$HELP:LSE030.RELEASE_NOTES.

Additional information available:

New LSE Commands

New LSE Commands

 The following is a summary of the commands that have  been  added  or
 enhanced  for LSE V3.0.  Note that a number of commands are identical
 to commands found in EVE V2.4.

 1.  ANALYZE [SCA Command]

     Creates an analysis data file that describes a source file.

 2.  COLLAPSE

     Compresses text at the current cursor position.

 3.  CONVERT LIBRARY [SCA Command]

     Converts the specified library from Version 1.n format to Version
     2.0 format.

 4.  DCL

     Executes a DCL command from within your editing session.  (EVE)

 5.  DEFINE ADJUSTMENT

     Defines the behavior of the LSE viewing  commands  on  individual
     lines of a source file.

 6.  DEFINE KEYWORDS

     Defines the indicated keyword list.

 7.  DEFINE PLACEHOLDER /[NO]PSEUDOCODE

     Specifies  whether  pseudocode  can  be  entered  at  a  specific
     placeholder.   If  you  specify the /NOPSEUDOCODE qualifier for a
     placeholder, that placeholder cannot be used with pseudocode.

 8.  DEFINE TAG

     Defines the specified tag.

 9.  DELETE ADJUSTMENT

     Removes a name from the list of  adjustments  associated  with  a
     language.

10.  DELETE KEYWORDS

     Cancels the indicated keywords definition.

11.  DELETE LIBRARY [SCA Command]

     Deletes an SCA library from a VMS directory.

12.  DELETE TAG

     Removes a name from the list of tags associated with a language.

13.  ENTER COMMENT

     Converts pseudocode into comments.

14.  ENTER PSEUDOCODE

     Inserts pseudocode placeholder delimiters.

15.  EXPAND

     Replaces the placeholder, token, or alias with the body.

16.  EXTEND

     Compiles one or more VAXTPU procedures to extend LSE.  (EVE)

17.  EXTRACT ADJUSTMENT

     Extracts the definition of the named adjustment and  formats  the
     definition as a command.

18.  EXTRACT KEYWORDS

     Extracts the definition of the named keyword list and formats the
     definition as a command.

19.  EXTRACT TAG

     Extracts  the  definition  of  the  named  tag  and  formats  the
     definition as a command.

20.  FIND [SCA Command]

     Locates occurrences of symbol or file sources  described  by  the
     SCA libraries.  The FIND command supersedes the FIND command from
     previous versions.

21.  FOCUS

     Displays an overview of the buffer and compresses the rest of the
     buffer as much as possible.

22.  INSPECT [SCA Command]

     Inspects the consistency between declarations or  references  for
     the same symbol.

23.  LINE

     Moves the cursor in the current buffer to the start of the source
     line you specify.  (EVE)

24.  LOAD /DELETE [SCA Command]

     Deletes an analysis data file  after  it  has  been  successfully
     loaded into an SCA library.

25.  RECALL

     Recalls a previous LSE command, which you can  edit  and  execute
     again.  (EVE)

26.  RECOVER BUFFER

     Reconstructs the contents  of  a  buffer  from  a  buffer  change
     journal file.  (EVE)

27.  REPORT [SCA Command]

     Produces the specified report.

28.  SET JOURNALING

     Enables buffer change journaling for the specified buffers.

29.  SET NOJOURNALING

     Disables buffer journaling for the specified buffers.

30.  SET NOOVERVIEW

     Disables overview operations in the indicated buffer.

31.  SET OVERVIEW

     Enables overview operations in the indicated buffer.

32.  SHOW ADJUSTMENT

     Displays the characteristics of indicated adjustments.

33.  SHOW KEYWORDS

     Displays the characteristics of the specified keyword list.

34.  SHOW SUMMARY

     Shows statistics and other information about LSE.  (EVE)

35.  SHOW TAG

     Displays the characteristics of indicated tags.

36.  SPELL

     Runs DECspell to check the currently selected text or the  entire
     buffer.  (EVE)

37.  VIEW SOURCE

     Displays an overview of the buffer.

38.  WHAT LINE

     Shows the current line number and total number of  lines  in  the
     buffer.   Also  shows  what percentage of the lines in the buffer
     are located above the current line.  (EVE)


New Users

 The VAX Language-Sensitive Editor (LSE) is a multi-language  advanced
 text editor designed specifically for software development.

 LSE is invoked with command line of the following form:

      LSEDIT [/qualifier] [file-spec]

          /qualifier

             specifies LSEDIT command line qualifiers

          file-spec

             specifies  the  file  to  be  edited.  LSE reads the
             file into a buffer.  The name of the buffer is taken
             from the file name and type specified. The file name
             and type must be a valid VMS file specification.

 The file type determines the language for the buffer.   For  example,
 .FOR specifies the FORTRAN language and .AS specifies PASCAL.  If you
 omit the file type, or  specify  a  file  type  unknown  to  VMS,  no
 language is assumed.

 To simplify editing, LSE binds  commonly  used  commands  to  certain
 keys,  and  provides access to both EDT and EVE keypads.  By default,
 LSE is initiated in EDT-keypad mode.  You can get  help  on  keys  by
 pressing the HELP key, marked HELP or PF2.

 You can enter a single command by typing the  GOLD-COMMAND  (PF1-KP7)
 key sequence or pressing DO to get an "LSE Command>" prompt, entering
 the command, and terminating the  command  with  a  carriage  return.
 Multiple commands may be entered by pressing CTRL/Z to get the "LSE>"
 prompt, entering the command, and  terminating  the  command  with  a
 carriage  return.   The  editor  will continue to prompt for commands
 using the "LSE>" prompt until the user presses CTRL/Z again.

 New users may type "HELP Features" for tutorial information.

SCA Topics

   [SCA]

Additional information available:

FINDINSPECT

Callable SCACommand CategoriesFeaturesGetting StartedIssuing Commands
Invoking SCALibrariesNavigationNew UsersOverviewQueries
Query LanguageSCA Example

Callable SCA

   The SCA Callable Interface allows you to use SCA within
   independent application programs. This allows you to integrate SCA
   into alternative user-interfaces and lets you generate specialized
   reports based on SCA information.

   The SCA Callable Interface contains two components. The first is a
   set of routines termed Callable Command Routines, which comprise
   a high-level interface which must always be used, regardless of
   the type of application. This provides a very simple callable
   interface to SCA, which will be sufficient for most applications.

   Callable Command Interface Routines

   o  SCA$ASYNCH_TERMINATE

   o  SCA$CLEANUP

   o  SCA$DO_COMMAND

   o  SCA$GET_INPUT

   o  SCA$INITIALIZE

   o  SCA$LOCK_LIBRARY

   o  SCA$PUT_OUTPUT

   o  SCA$UNLOCK_LIBRARY

   The second component is a set of routines termed Callable
   Query Routines. The Callable Query Routines comprise a lower-
   level interface to the FIND command. Using this interface, an
   application has control over the specification of queries and the
   manipulation of query results.

   Callable Query Initialization/Cleanup Routines

   o  SCA$QUERY_CLEANUP

   o  SCA$QUERY_INITIALIZE

   Callable Query Question Building Routines

   o  SCA$QUERY_PARSE

   o  SCA$QUERY_SELECT_OCCURRENCE

   Callable Query Result Manipulation Routines

   o  SCA$QUERY_GET_ATTRIBUTE

   o  SCA$QUERY_GET_ATTRI_KIND_T

   o  SCA$QUERY_GET_ATTRI_VALUE_T

   o  SCA$QUERY_GET_OCCURRENCE

   Callable Query Miscellaneous Routines

   o  SCA$QUERY_COPY

   o  SCA$QUERY_DISPLAY_RESULT

   o  SCA$QUERY_FIND

   o  SCA$QUERY_GET_NAME

   Message Handling

   The SCA callable interface handles all messages the same way:
   it signals them. If you want control over the display of such
   messages, you must establish a condition handler. Establishing a
   condition handler is optional.

   Rules for Calling SCA Routines

   o  Most SCA routines are not AST-reentrant; therefore, you should
      not call an SCA routine (except SCA$ASYNCH_TERMINATE) from an
      AST routine that may currently be interrupting an SCA routine.

   o  Your program must not disable ASTs.

   o  If your program uses event flags, you must use the VMS RTL
      routines (LIB$RESERVE_EF, LIB$GET_EF, and LIB$FREE_EF) in order
      to coordinate the use of event flags between your program and
      SCA.

   o  Except for SCA$ASYNCH_TERMINATE, do not call SCA from within an
      SCA callback routine or from within a routine that is handling
      a condition signaled by SCA.

   o  Your program must not unwind when handling a condition signaled
      by SCA.

Command Categories

   This section lists the commands implemented by SCA. These
   commands can be issued from within LSE, at DCL level, or at the
   SCA subsystem level. See individual commands for definitions,
   descriptions, and examples of all SCA commands.
   Query Commands

   o  DELETE QUERY

   o  FIND

   o  INSPECT

   o  SHOW QUERY

   Navigation Commands

   o  GOTO (DECLARATION, QUERY, SOURCE)

   o  NEXT (OCCURRENCE, QUERY, STEP, SYMBOL)

   o  PREVIOUS (OCCURRENCE, QUERY, STEP, SYMBOL)

   General Commands

   o  EXIT

   o  HELP

   Library Commands

   o  ANALYZE

   o  CREATE LIBRARY

   o  DELETE LIBRARY

   o  DELETE MODULE

   o  EXTRACT MODULE

   o  LOAD

   o  REORGANIZE

   o  SET LIBRARY

   o  SET NOLIBRARY

   o  SHOW LIBRARY

   o  SHOW MODULE

   o  SHOW VERSION

   o  VERIFY

   o  VERIFY/RECOVER

Features

   Cross Referencing and Analysis
SCA provides cross-referencing and analysis features which allow you
to obtain information about program symbols and source files. These
capablities are provided by the FIND command, and allow you to do the
following:

   o  Locate symbols and occurrences of symbols

   o  Limit queries based on selection of attributes, including
      symbol name, symbol class (routine, variable), and occurrence
      class (primary declaration, read or write reference)

   o  Select one symbol based on the relationships between symbols
      (variables, routines, modules)

   o  Display relationships between symbols (routine calls, type
      trees)

   o  Select symbols based on combinations of attributes and
      relationships

   Consistency Checking
   The consistency checking feature of SCA checks occurrences of
   symbols for consistent use. This capability is provided by the
   INSPECT command.

FIND

   The SCA FIND command provides cross-referencing and analysis
   capabilities which allow you to work with program symbol and
   source file information. The FIND command allows you to do the
   following:

   o  Locate symbols and occurrences of symbols

   o  Limit queries based on selection of attributes, including
      symbol name, symbol class (routine, variable), and occurrence
      class (primary declaration, read or write reference)

   o  Select one symbol based on the relationships between symbols
      (variables, routines, modules)

   o  Display relationships between symbols (routine calls, type
      trees)

   o  Select symbols based on combinations of attributes and
      relationships

Getting Started

   Chapter 7 of the LSE/SCA User Manual is an SCA sample session that
   shows you how to use the basic SCA query commands and related LSE
   navigational commands. This sample session allows you to do the
   following:

   o  Verify the successful selection of your SCA library (SHOW
      LIBRARY)

   o  Display information about all of the modules contained in your
      SCA library (SHOW MODULE)

   o  Locate occurrences of a specified symbol (FIND) and display the
      results in a query buffer

   o  Navigate through the information in the query buffer (NEXT
      STEP, PREVIOUS STEP)

   o  Access the source related to the specific occurrence of a
      symbol (GOTO SOURCE)

   o  Work with SCA queries (GOTO QUERY, NEXT QUERY, PREVIOUS QUERY,
      SHOW QUERY, DELETE QUERY)

INSPECT

   INSPECT performs three different kinds of checking: consistency
   checks, symbol checks, and occurrence checks, allowing you to
   check consistency in a software system both within modules
   and across module boundaries. As with the FIND command, the
   results are reported in the form of a query with diagnostic error
   messages. The query display reveals the structure of routines and
   common blocks.

   The format of the INSPECT command is as follows:

   INSPECT [/qualifier...] query_expression

   The format of the INSPECT command is like that of the FIND
   command. You use query expressions to specify what to check just
   as you would with FIND. Used with the /CHARACTERISTICS qualifier,
   query expressions form part of your input to direct which checks
   are applied to your software system.

   In general, the INSPECT command checks elements within a software
   system that have a high probability of causing genuine problems.
   To extend its ability to produce specific results, INSPECT allows
   you to tailor checks. In this way you can eliminate elements from
   a check which you have established are correct and focus on more
   questionable areas. INSPECT also avoids producing voluminous
   output, making it easy for you to pass over non-problems when
   searching for problem areas.

   As INSPECT performs checks, it takes into account the
   relationships between routines and their arguments, and the
   relationships between common blocks and the variables in common
   blocks. When you check a routine or common block, INSPECT also
   checks the arguments of the routine or the variables contained
   in the common block, except in the case of unused symbol checks,
   where only the routine is checked.

Issuing Commands

   You can invoke SCA in two ways: at DCL level or at the SCA
   subsystem level. To invoke SCA at DCL level, you use the SCA
   command. The SCA command has the following form:

   SCA [command] [parameter] [/qualifiers]

   o  command - Specifies a command

   o  parameter - Specifies a command parameter

   o  /qualifiers - Specifies command qualifiers

   To invoke SCA at the SCA subsystem level, you type SCA at the DCL
   prompt to get the SCA> prompt. You can issue any SCA command at
   the SCA> prompt. The command parameters and qualifiers that apply
   at DCL level also apply at the SCA subsystem level.

Invoking SCA

   You can invoke SCA in three ways:

   o  with LSE as an integrated tool

   o  at DCL level as a standalone tool

   o  via the SCA callable interface

   As an integrated tool, LSE supports an expanded command
   language, which includes all SCA standalone commands and related
   navigational commands. SCA-related commands are defined in the
   Command Dictionary and are issued in the same manner as LSE
   commands.

Libraries

   SCA works with library data generated by supporting VMS compilers
   consisting of all of the symbol, module, and file names contained
   in a specific snapshot of the source. Once SCA libraries are
   created, you can select a library and query its contents from
   within LSE, at DCL level, or via the SCA callable interface.

   Library commands allow you to create and manipulate libraries and
   their contents. The commands allow you to produce and maintain a
   libraries list, which establishes a library for selection and
   manipulation (such as loading, querying, or the deletion of
   library modules) or for access to multiple physical libraries
   as a single virtual library.

Navigation

   Tightly-knit integration with LSE provides for multimodule
   navigation and the ability to read and modify associated source
   code.

   Navigation within LSE is powerful and flexible. Using multiple
   buffers, you can create one or more query sessions. Within a
   session, you use cross-reference and analysis commands to query
   source information, and navigational commands to move through
   the information and to gain access to related sources. To alter
   the course of your analysis, you can return to an earlier query
   session, move to a later session, or create another session.

   Navigation through a query buffer, associated with a query
   session, or to another query session is provided by the NEXT and
   PREVIOUS commands, while direct access to source buffers and query
   sessions is provided by the GOTO command.

New Users

   The VAX Source Code Analyzer (SCA) is an interactive, multi-
   language, multi-module, source code cross-reference and
   static analysis tool which helps developers understand the
   complexities of software systems. Since it allows you to analyze
   an entire system as opposed to individual modules, and helps you
   understand unfamiliar systems, SCA is extremely useful during the
   implementation and maintenance phases of a project.

   SCA is included in the VAXset Software Engineering Tools Package.
   SCA helps answer some commonly asked source code questions such
   as:

   o  Where is a particular global variable declared, initialized,
      modified, or referenced?

   o  In which modules are there references to a particular symbol
      name?

   o  Are my calling arguments consistent?

   o  Where is a certain routine called?

   SCA's query capability allows you to search and display specific
   symbol, file, and module information. Its static analysis
   capability allows you to display call tree information and
   validate routine call arguments. SCA interfaces to supported VAX
   languages for source code navigation, cross-reference, and static
   analysis.

   SCA is tightly integrated with the VAX Language-Sensitive Editor
   (LSE). When SCA is used with LSE, you can interactively edit,
   compile, debug, navigate, and analyze source code during a single
   development session.

   For more information see,

   o  Command_Categories

   o  Features

   o  Getting_Started

   o  Invoking_SCA

   o  Issuing_Commands

   o  Overview

   o  Queries

   o  SCA_Example

Overview

   The VAX Source Code Analyzer is an interactive, multilanguage,
   source code cross-reference and source code analysis tool that
   aids developers in understanding large-scale software systems.
   By dealing with an entire software system, instead of individual
   modules, SCA is an effective tool during the implementation and
   maintenance phases of a project.

   The use of SCA is based on the methods commonly used to develop
   software with VMS systems. For example, the following techniques
   are assumed:

   o  A set of sources is conveniently located for development.

   o  Developers modify, link, and compile sources until an
      executable image is successfully created.

   o  When an image is successfully built, the specific set of
      sources associated with the image are captured as a baseline
      for further development. (If CMS were used to store these
      sources, a CLASS would probably be formed to contain the
      baseline versions.)

   o  As development continues, developers must work with the
      information contained in the build sources.

   With these assumptions, SCA allows compiler-generated information
   about the set of build sources to be stored for querying in one
   unique location (an SCA library). Thus, SCA is a query tool that
   allows you to reference and query time-stamped source information
   that directly corresponds to source modules in your system. When
   these sources are no longer of value, the SCA library can be
   modified or deleted.

Queries

   SCA's inquiry and reporting facilities allow you to query a
   library for the presence of specific symbol, file, or module
   information, and to determine such things as declarations of
   program symbols, references to the symbols, and references to
   source files. You can also determine the call relationships
   between routines by displaying call tree information. Within the
   editing environment, you can navigate through the complexities
   of an entire system and, as necessary, inspect and edit related
   source files.

   SCA provides the following capabilities:

   1. Interactive query of symbol, module, and file information

   2. Display of routine call relationships and type trees

   3. Inspection of routines, variables, and other symbols

   4. Maintenance of source code information libraries

   LSE provides the following additional capabilities:

   o  Navigation through one or more SCA query sessions

   o  Access and display of source code during an interactive query

   With the editing features, you can move through an unfamiliar
   system without regard for module or file boundaries. For example,
   given the task of modifying the characteristics of a variable, you
   can locate all of the uses of the variable across the system and
   make your changes without leaving LSE.

Query Language

   The SCA Query Language is an enhancement to the FIND command. By
   issuing queries, you can both broaden and refine your use of SCA.
   The SCA Query Language allows you to make very explicit queries of
   a very large system and lets you selectively limit queries to the
   results of previous query operations.

Additional information available:

FeaturesThe Current QuerySyntaxFunctionsAttribute Selection
Operators

Features

   The SCA Query Language allows you to do the following:

   o  Analyze source code using both file and symbol information.

   o  Use names to select symbols

   o  Use other attributes to select symbols

   o  Specify precise search parameters.

   o  Use the CONTAINED_BY and IN functions and pathname operators to
      tailor queries.

   o  Perform iterative tracing of relationships between symbols.

   o  Designate files as symbols, allowing you to query on the basis
      of either file or non-file information.

The Current Query

   The current query specifies the result of the previous query.
   The name of the current query is "SCA$CURRENT_QUERY". The current
   query is expressed as follows:

      @sca$current_query

   Since the @ function defaults to the current query, this
   expression may also be written as follows:

      @()

Syntax

   Query expressions can take the following syntax forms:

     query-expression ::= attribute-selection-expression |
                          binary-op-expression |
                          function-call-expression |
                          (query-expression)

     attribute-selection-expression ::= actual-parameter

     binary-op-expression ::= query-expression binary-operator query-expression

     binary-operator ::= AND | OR | XOR | \ | \\

     function-call-expression ::= function-name actual-parameter |
                                  function-name ( [actual-parameter],... )

     function-name ::= nonwildcard-string

     actual-parameter ::= named-actual-parameter | positional_actual_parameter

     named-actual-parameter ::= formal-parameter-name = actual-parameter-value

     positional_actual_parameter ::= actual-parameter-value

     formal-parameter-name ::= nonwildcard-string

     actual-parameter-value ::= query-expression | name-expression |

                                keyword-list | range-list | number

     keyword-list ::= keyword | ( keyword,... )

     keyword ::= nonwildcard-string

     number ::= digit... | ALL

     range-list ::= range | ( range,... )

     range ::= number | number:number

     name-expression ::= simple-string | "complex-string"

     nonwildcard-string ::= {letter | digit | graphic-character}...

     simple-string ::= {letter | digit | graphic-character |
                        wildcard-character | escape-character}...

     complex-string ::= any-character...

     letter ::= any-alphabetic-character

     digit ::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9

     graphic-character ::= - | _ | $

     wildcard-character  ::= * | %

     escape-character ::= &

Functions

   Functions are a general mechanism for querying SCA libraries. The
   value of a function is the set of occurrences and relationships
   that result from the evaluation of the function body. SCA query
   expression functions are similar to functions in high-level
   languages, like Pascal and Ada. Functions have a name, a parameter
   list, and a result. The result of a function call is a query
   expression result.

   The typical form of a function call is as follows:

      function-call-expression ::= function-name( [actual-parameter],... )

   A function call expression is a function name followed by an
   actual parameter list enclosed in parentheses. An actual parameter
   list can be empty, if the function has no parameters or all
   of the parameters have default actual parmeter values. If the
   actual parameter list consists of exactly one parameter then the
   parentheses can be dropped.

Additional information available:

ExpansionNegationIndicatedQuery UsageRelationshipIN Function

Expansion

   Expansion is the process of expanding a set of occurrences to
   include all occurrences of the corresponding set of symbols.
   To perform an expansion operation, SCA first finds all the
   occurrences of symbols that match all of the specified
   restrictions. For example, they must be primary declarations; they
   must be occurrences of routines; and they must have the specified
   names. Once that set of occurrences is found, SCA finds all the
   symbols that correspond to that set of occurrences. The result
   of the query is a display that shows all occurrences of those
   symbols.

Additional information available:

Examples

Examples
   SCA lets you specify that you want to see all the information
   available for symbols that have certain types of occurrences. For
   example, to display all of the occurrences of routines that have
   primary declarations in the SCA library being queried, you issue
   the following command:

        FIND EXPAND (occurrence=primary AND symbol=routine)

   You can follow an expansion with more restrictions. For example,
   to display the call references of routines that have primary
   declarations in the SCA library being queried, you issue the
   following command:

        FIND EXPAND( occurrence=primary AND symbol=routine ) AND occ=call

   This is an example of a nested query expression. The inner query
   expression, "EXPAND( occurrence=primary AND symbol=routine )"
   is evaluated first, resulting in a set of all the occurrences
   of routines for which there are primary declarations. That set
   of occurrences is the input to the outer query expression, which
   has the form "query-expression AND occ=call". The outer query
   expression removes all occurrences except those that are call-
   references.

   To display declarations of symbols that have write references, you
   issue the following command:

        FIND EXPAND( occ=write ) AND occ=decl

Negation

   The negation function finds occurrences that do not match a
   query expression. The result of a call to this function is a
   set containing all occurrences that are not contained in 'query_
   expression'. The negation function has the following form:

      FUNCTION not( query_expression : query-expression = * )

Indicated

   The indicated function has no parameters. The indicated function
   is only available from within LSE. The function has the following
   form:

      FUNCTION indicated

Query Usage

   A query usage function incorporates the results of previous
   queries into query expressions. The query usage function has the
   following form:

      FUNCTION @( query_name : file-spec = sca$current_query )

Relationship

   A relationship function selects occurrences based on relationships
   between occurrences. All of the relationship functions have the
   same set of parameters. The different relationship functions
   differ in their name and semantics. A relationship function has
   the following form:

      FUNCTION function-name( end : query-expression = *,
                              begin : query-expression = *,
                              depth : number = 1,
                              result : keyword-list = structure,
                              trace : query-expression = * )

Additional information available:

Non-structured Relationship ExpressionsStructured Relationship ExpressionsIndividual Relationship Functions
Relationship Parameters

Non-structured Relationship Expressions
   A non-structured relationship expression selects occurrences
   based on relationships between occurrences. A non-structured
   relationship expression uses information about the relationships
   between occurrences, but does not preserve relationship
   information in the result of the expression. The result of such an
   expression is a non-structured set.

Structured Relationship Expressions
   A structured relationship expression selects both occurrences and
   relationships between them. A structured relationship expression
   preserves relationship information in the value of the expression.
   The result of such an expression is a structured set.

Individual Relationship Functions
   This section describes the individual relationship functions.
   There are two kinds of relationship functions: basic-functions and
   inverse-functions. Every basic-function can be transformed into
   its corresponding inverse function by removing the 'ING' at the
   end of the function and adding 'ED_BY'.

   For example, the basic-function 'CALLING' can be transformed
   to the inverse-function, 'CALLED_BY' or vice-versa. So the two
   commands "CALLING(y,x)" and "CALLED_BY(x,y)" produce the same
   result: a graph of call relationships from X to Y.

   Relationship functions include:

   o  CALLING / CALLED_BY

   o  CONTAINING / CONTAINED_BY

   o  TYPING / TYPED_BY

Relationship Parameters
   Relationship parameters determine the precise semantics of a
   relationship expression. The following is a list of relationship
   parameters and how they are used.

END=end-expression
   Specifies those occurrences at which the tracing of relationships
   can end. Only paths that end on one of these occurrences will be
   included in the result. The default is END=*.

BEGIN=begin-expression
   Specifies those occurrences at which the tracing of relationships
   can begin. Only paths that begin on one of these occurrences will
   be included in the result. The default is BEGIN=*.

DEPTH=depth-level
   Specifies the number of levels of structure that are to be traced.
   The default depth-level is one. DEPTH=ALL indicates that there
   is no limit to the number of levels of structure that are to be
   traced.

RESULT=result-keyword-list
   Where 'result-keyword-list' is one or more of the following
   keywords:

   o  [NO]STRUCTURE - Indicates whether relationship information is
      to be preserved in the query result.

   o  BEGIN - Indicates that only those occurrences that 'begin'
      the relationship graph are to be included in the result. This
      keyword implies NOT RESULT=STRUCTURE. It is incompatible with
      RESULT=STRUCTURE.

   o  END - Indicates that only those occurrences that 'end' the
      relationship graph are to be included in the result. This
      keyword implies NOT RESULT=STRUCTURE. It is incompatible with
      RESULT=STRUCTURE.

   The default is RESULT=STRUCTURE.

TRACE=trace-expression
   Specifies those occurrences through which relationship tracing
   is to be continued. The TRACE parameter does not affect the
   first iteration. That first iteration is controlled by the BEGIN
   parameter. The default is TRACE=*.

IN Function

   The IN function is a special case of the CONTAINED_BY function
   which restricts a set of occurrences to those occurrences that
   are contained directly or indirectly (DEPTH=ALL) by a specified
   (set of) primary declaration(s). The IN function has the following
   form:

      FUNCTION in( end : query-expression = *,
                   begin : query-expression = * ) =

       CONTAINED_BY( end AND decl=primary,
                     begin,
                     result=begin,
                     depth=all )

Additional information available:

Examples

Examples
   The following command finds all of the occurrences in BUILD_TABLE
   named 'CODE':

        FIND IN( build_table, code )

   The following query finds all occurrences in BUILD_TABLE,
   including those nested within declarations of BUILD_TABLE, by
   omitting the second parameter:

        FIND IN build_table

Attribute Selection

   An attribute selection expression selects occurrences based on
   the setting of occurrence and symbol attributes. If no attribute-
   name is specified, then name-expression attribute is assumed. An
   attribute selection expression has the following form:

      attribute-selection-exp ::= [ attribute-name = ] actual-parameter

   SCA supports the following types of attribute selection.

   o  name

   o  symbol class

   o  symbol domain

   o  occurrence class

   o  file specification

Additional information available:

Name SelectionSymbol Class SelectionSymbol Domain SelectionOccurrence Selection
File Specification Selection

Name Selection

   A name selection expression selects occurrences that have
   names that match a specified name expression. A name selection
   expression has the following form, where 'name' is a formal
   parameter name and a name-expression is a string of characters,
   possibly including wildcards.

      name-selection-exp ::= name-expression |
                             name = name-expression |
                             name = ( name-expression,... )

   An attribute selection expression with no formal parameter name
   is a name selection expression. A name expression that includes
   a wildcard character is equivalent to a union of all the names
   that match the name expression. A list of name expressions is
   equivalent to a union of name selection expressions each having a
   single name expression.

Symbol Class Selection

   A symbol class selection expression selects occurrences whose
   symbol class is one of those specified in the symbol class
   selection expression. A symbol class selection expression has
   the following form:

      symbol-class-selection-exp ::= symbol=symbol-class |
              symbol=( symbol-class,... )

   'Symbol' is a formal parameter name and a symbol-class is one of
   the following keywords:

   o  ARGUMENT - formal argument (such as a routine argument or macro
      argument)

   o  COMPONENT,FIELD - component of a record

   o  CONSTANT,LITERAL - named compile-time constant value

   o  EXCEPTION - exception

   o  FILE - file

   o  FUNCTION,PROCEDURE, PROGRAM,ROUTINE, SUBROUTINE - callable
      program function

   o  GENERIC - generic unit

   o  KEYWORD - keyword

   o  LABEL - user-specified label

   o  MACRO - macro

   o  MODULE, PACKAGE - collection of logically related elements

   o  PLACEHOLDER - marker where program text is needed

   o  PSECT - program section

   o  TAG - comment heading

   o  TASK - task

   o  TYPE - user-defined type

   o  UNBOUND - unbound name

   o  VARIABLE - program variable

   o  OTHER - any other class of symbol

   A list of symbol classes is equivalent to a union of symbol class
   selection expressions each having a single symbol class.

Symbol Domain Selection

   A symbol domain selection expression selects occurrences whose
   symbol domain is one of those specified in the symbol domain
   selection expression. Symbol domain is the range of source code in
   which a symbol has the potential of being used.

   A symbol domain selection expression has the following form:

      symbol-domain-selection-exp ::= domain=symbol-domain |
              domain=( symbol-domain,... )

   'Domain' is a formal parameter name and a symbol-domain is one of
   the following keywords:

   o  INHERITABLE - able to be inherited into other modules (for
      example, via BLISS library, PASCAL environment, or Ada
      compilation system mechanisms)

   o  GLOBAL - known to multiple modules via linker global symbol
      definitions

   o  PREDEFINED - defined by the language (examples: BLISS ap,
      FORTRAN sin, PASCAL writeln)

   o  MULTI_MODULE - domain spans more than one module (domain=multi_
      module is equivalent to domain=(inheritable,global,predefined)

   o  MODULE_SPECIFIC - domain is limited to one module

   A list of symbol domains is equivalent to a union of symbol domain
   selection expressions each having a single symbol domain.

Occurrence Selection

   An occurrence selection expression selects occurrences whose
   occurrence class is one of those specified in the occurrence
   selection expression. An occurrence selection expression has the
   following form:

      occurrence-selection-exp ::= occurrence=occ-class |
             occurrence=( occ-class,... )

   'Occurrence' is a formal parameter name and an occurrence-class is
   one of the following keywords:

   Declarations

   o  PRIMARY - most significant declaration (such as FUNCTION)

   o  ASSOCIATED - associated declaration (such as EXTERNAL)

   References

   o  READ, FETCH - fetch of a symbol value

   o  WRITE, STORE - assignment of a symbol value

   o  ADDRESS, POINTER - reference to the location of a symbol

   o  CALL - call to a routine or macro

   o  COMMAND_LINE - command line file reference

   o  INCLUDE - source file include referenece

   o  PRECOMPILED - precompiled file include referenece

   o  OTHER - any other kind of reference (such as a macro expansion
      or use of a constant)

   Other Occurrence Classes

   o  EXPLICIT - explicitly declared

   o  IMPLICIT - implicitly declared

   o  VISIBLE - occurrence appears in the source

   o  HIDDEN - occurrence does not appear in the source

File Specification Selection

   A file spec selection expression selects occurrences whose
   source position is in one of the files specified in the file
   specification selection expression. A file specification selection
   expression has the following form;

      file-spec-selection-exp ::= file_spec=name-expression |
             file_spec=( name-expression,... )

   'File_spec' is a formal parameter name and a name-expression is a
   name-expression that is interpretted as a file specification.
   Parts of the name-expressions that are not specified will be
   treated as wildcards. For example, 'file=foo' will be considered
   equivalent to "file=*[*]foo.*;*". This applies only to the
   filename and type.

Operators

   Operators are a mechanism for querying SCA libraries. The value of
   an operator expression is the set of occurrences and relationships
   that result from applying the operator to the operands. SCA
   query expression operators are similar to functions in high-
   level languages, like Pascal and Ada. Operator expressions have
   an operator name, enclosed by two operands, which are query
   expressions. The result of an operator expression is a query
   expression result.

Additional information available:

PathnameIntersectionUnionExclusive-Or

Pathname

   A pathname expression identifies symbols based on the nesting of
   primary declarations. The expression has the following form:

      pathname-expression ::= exp1 \ exp2 |
                              exp1 \\ exp2

Intersection

   An intersection expression identifies occurrences which exist in
   two different sets. The expression has the following form:

      intersection-expression ::= exp1 AND exp2

Union

   A union expression merges two sets. The expression has the
   following form:

      union-expression ::= exp1 OR exp2

Exclusive-Or

   An exclusive-or expression selects the unique occurrences in two
   different sets. The expression has the following form:

      exclusive-or-expression ::= exp1 XOR exp2

SCA Example

   An SCA online example (SCA$EXAMPLE) exists to show you how to
   use the basic SCA query commands and related LSE navigational
   commands. SCA$EXAMPLE allows you to do the following:

   o  Verify the successful selection of your SCA library (SHOW
      LIBRARY)

   o  Display information about all of the modules contained in your
      SCA library (SHOW MODULE)

   o  Locate occurrences of a specified symbol (FIND) and display the
      results in a query buffer

   o  Navigate through the information in the query buffer (NEXT
      STEP, PREVIOUS STEP)

   o  Access the source related to the specific occurrence of a
      symbol (GOTO SOURCE)

   o  Work with SCA queries (GOTO QUERY, NEXT QUERY, PREVIOUS QUERY,
      SHOW QUERY, DELETE QUERY)

Typewritten Software • bear@typewritten.org • Edmonds, WA 98026