
!*************************************************************************
!									 *
! © Copyright 2005 Hewlett-Packard Development Company, L.P.		 *
!									 *
! Confidential computer software. Valid license  from  HP  required  for *
! possession, use or copying. Consistent with  FAR  12.211  and  12.212, *
! Commercial Computer Software,  Computer  Software  Documentation,  and *
! Technical  Data  for  Commercial  Items  are  licensed  to  the   U.S. *
! Government under vendor's standard commercial license.		 *
!									 *
!*************************************************************************
 
!++
! Facility:
!   Extended LSE (XLSE)
!
! Abstract:
!   This module defines the TPU language attributes, templates
!   and placeholders.
!
! Author:
!   W. Ward Clark, Technical Languages and Environments Group
!
! Creation Date: 24-Oct-84
!
! Modification History:
!   X0.3    WWC   3-Jan-85  add full language support
!   X0.4    WWC  28-Feb-85  TEMPLATE --> TOKEN
!   X0.6    WWC  14-May-85  /AUTOFILL --> /AUTOSUBSTITUTE
!   X0.7    WWC   9-Aug-85  simplify PROCEDURE parameter placeholder
!   X0.7-1  WWC  18-Aug-85  remove DELETE statements
!   X0.8    WWC   1-Sep-85  add DESCRIPTION placeholder
!			    add STATEMENT and ERROR tokens
!   X0.8-1  WWC  24-Oct-85  add separator comma to optional built-in parameters
!   X0.8-2  WWC  14-Nov-85  add space in RETURN template
!   X0.9    WWC  15-Jan-86  Copyright placeholder:  1985 --> 1986
!   X0.9-1  WWC   4-Mar-86  correct DEFINE_KEY, FAO and SET templates
!   X0.10   WWC  16-Nov-86  upgrade to LSE V2
!   X1.1    WWC  10-Jan-87  Copyright placeholder:  1986 --> 1987
!   X1.1-1  WWC  19-Feb-87  "|" -- "or" in placeholder names
!   X1.1-2  WWC  30-Mar-87  new DEFINE LANGUAGE /COMMENT qualifier
!   X1.2    WWC  20-Oct-87  context-dependent duplication on [~parameter-name~]
!   X1.2-1  WWC  14-Feb-88  TBS alias --> token, ...
!			    1987 --> 1988
!   X1.3    WWC  30-Jul-88  normalize LOCAL and ON_ERROR statements
!   X1.3-1  WWC  16-Sep-88  add XLSE definitions
!   X1.3-2  WWC  25-Sep-88  ASSIGNMENT token --> ":=" token
!			    improved INDEX and SUBSTR templates
!   X1.3-3  WWC  20-Nov-88  add help topics
!   X1.3-4  WWC  15-Jan-89  normalize LSE command syntax
!			    1988 --> 1989
!   X1.3-5  WWC  11-Feb-89  upgrade to TPU V2 (VMS V5)
!   X3.0    WWC   1-Jan-90  upgrade to LSE V3.0
!                           1989 --> 1990
!   X3.0-1  WWC   6-Jan-90  Case-style ON_ERROR statements are optional
!   X3.0-2  WWC  28-Jan-90  add PDF definitions
!   X3.0-3  DAS   1-Nov-91  Removed DELETE LANGUAGE TPU line
!--
!
!+
!   VAXTPU Language Definition
!-
DEFINE LANGUAGE tpu -
    /COMMENT=( -
	ASSOCIATED_IDENTIFIER = PREVIOUS, -
	NOBEGIN, -
	NOEND, -
	NOFIXED, -
	NOLINE, -
	TRAILING=("!+","!-","!")) -
    /CAPABILITIES=NODIAGNOSTICS -
    /COMPILE_COMMAND="" -
    /EXPAND_CASE=AS_IS -
    /FILE_TYPES=(.TPU) -
    /HELP_LIBRARY="TPUHELP" -
    /IDENTIFIER_CHARACTERS= -
	"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ%$_0123456789" -
    /INITIAL_STRING="[~MODULE-declaration~]" -
    /LEFT_MARGIN=CONTEXT_DEPENDENT -
    /OVERVIEW_OPTIONS=( -
        MINIMUM_LINES=1, -
        TAB_RANGE=(4,8)) -
    /PLACEHOLDER_DELIMITERS=( -
        REQUIRED=      ("{~","~}"), -
        REQUIRED_LIST= ("{~","~}..."), -
        OPTIONAL=      ("[~","~]"), -
        OPTIONAL_LIST= ("[~","~]..."), -
        PSEUDOCODE=    ("«","»")) -
    /PUNCTUATION_CHARACTERS=",:;()""" -
    /QUOTED_ITEM=(QUOTES="""'") -
    /RIGHT_MARGIN=80 -
    /TAB_INCREMENT=4 -
    /TOPIC_STRING="" -
    /NOWRAP -
    /VERSION="TPU V2/VMS V5 (XLSE X3.0)"
!+
!   Delete any language definitions
!-
SET LANGUAGE tpu

DELETE PLACEHOLDER *
DELETE TOKEN *
!
!+
!   Language-independent definitions
!-
DELETE PLACEHOLDER "lse$block_comment"
DEFINE PLACEHOLDER "lse$block_comment" -
    /TYPE=NONTERMINAL

    "! {~tbs~}"
    "!"

    END DEFINE

DELETE PLACEHOLDER "lse$generic"
DEFINE PLACEHOLDER "lse$generic" -
    /TYPE=NONTERMINAL

    "{~tbs~}"

    END DEFINE

DELETE PLACEHOLDER "lse$line_comment"
DEFINE PLACEHOLDER "lse$line_comment" -
    /TYPE=NONTERMINAL

    "! {~tbs~}"

    END DEFINE

DEFINE PLACEHOLDER "tbs" -
    /DESCRIPTION="field to be specified" -
    /TOPIC="" -
    /TYPE=TERMINAL

    "to be specified"

    END DEFINE

DEFINE PLACEHOLDER "module-level-comments" -
    /DESCRIPTION="" -
    /DUPLICATION=VERTICAL -
    /TOPIC="" -
    /TYPE=NONTERMINAL

    "++"
    " Facility:"
    "   {~tbs~}"
    " "
    " Abstract:"
    "   {~tbs~}"
    " "
    " Author:"
    "   {~tbs~}"
    " "
    " Creation Date: {~tbs~}"
    " "
    " Modification History:"
    "--"

    END DEFINE
!+
!   Modification History definitions
!-
DEFINE TOKEN "tbs" -
    /DESCRIPTION="to-be-specified"
    "[~tbs~]"
    END DEFINE

DEFINE TOKEN "new_modification" -
    /DESCRIPTION="modification history entry"
    "!   {~modification-id~}  {~your-initials~}  {~modification-date~}  {~modification-remark~}"
    END DEFINE

DEFINE PLACEHOLDER "modification-id" -
    /DESCRIPTION="modification identification number" -
    /TOPIC="" -
    /TYPE=TERMINAL

    "modification identification number"

    END DEFINE

DEFINE PLACEHOLDER "your-initials" -
    /DESCRIPTION="your initials" -
    /TOPIC="" -
    /TYPE=TERMINAL

    "your initials"

    END DEFINE

DEFINE PLACEHOLDER "modification-date" -
    /DESCRIPTION="modification date" -
    /TOPIC="" -
    /TYPE=TERMINAL

    "modification date (dd-mmm-yy)"

    END DEFINE

DEFINE PLACEHOLDER "modification-remark" -
    /DESCRIPTION="brief description of a modification" -
    /TOPIC="" -
    /TYPE=TERMINAL

    "brief description of the modification"

    END DEFINE

!
!+
!   VAXTPU Language Declarations and Statements
!-
!+
!   3.8.4.1  The Module Declaration
!-
DEFINE PLACEHOLDER "MODULE-declaration" -
    /DESCRIPTION="MODULE/ENDMODULE Declaration" -
    /TOPIC_STRING="{placeholder-topic-string}" -
    /TYPE=NONTERMINAL

    "MODULE {~module-name~} IDENT ""{~ident-string~}"""
    "![~module-level-comments~]"
    ""
    "[~CONSTANT-declaration~]...;"
    "[~global-VARIABLE-declaration~]...;"
    "[~PROCEDURE-declaration~]..."
    "[~ON_ERROR-statement~];"
    "[~statement~]...;"
    "ENDMODULE"

    END DEFINE

DEFINE TOKEN "MODULE" /PLACEHOLDER="MODULE-declaration"

DEFINE PLACEHOLDER "module-name" -
    /DESCRIPTION="Name of a TPU module" -
    /TOPIC_STRING="" -
    /TYPE=TERMINAL

    "Specify a module name"

    END DEFINE

DEFINE PLACEHOLDER "ident-string" -
    /DESCRIPTION="module identification string" -
    /TOPIC_STRING="" -
    /TYPE=TERMINAL

    "Specify a module identification string, e.g., X1.2"

    END DEFINE

!+
!   3.8.4.2  The Procedure Declaration
!-
DEFINE PLACEHOLDER "PROCEDURE-declaration" -
    /DESCRIPTION="PROCEDURE/ENDPROCEDURE Declaration" -
    /DUPLICATION=VERTICAL -
    /TOPIC_STRING="" -
    /TYPE=NONTERMINAL

    ""
    "PROCEDURE {~procedure-name~}[~parameter-list~]"
    "[~procedure-comments~]"
    "	[~CONSTANT-declaration~];"
    "	[~LOCAL-declaration~];"
    "	[~ON_ERROR-statement~];"
    "	[~statement~]...;"
    "ENDPROCEDURE"

    END DEFINE

DEFINE TOKEN procedure /PLACEHOLDER="PROCEDURE-declaration"

DEFINE PLACEHOLDER "procedure-name" -
    /DESCRIPTION="Name of a TPU procedure" -
    /TOPIC_STRING="" -
    /TYPE=TERMINAL

    "name of the procedure"

    END DEFINE

DEFINE PLACEHOLDER "parameter-list" -
    /DESCRIPTION="Procedure parameter list" -
    /TOPIC_STRING="" -
    /TYPE=NONTERMINAL

    "({~parameter-name~}...)"

    END DEFINE

DEFINE PLACEHOLDER "parameter-name" -
    /DESCRIPTION="name of a procedure parameter" -
    /SEPARATOR="," -
    /TOPIC_STRING="" -
    /TYPE=TERMINAL

    "name of the parameter"

    END DEFINE

DEFINE PLACEHOLDER "procedure-comments" -
    /DESCRIPTION="procedure description comment block" -
    /TOPIC_STRING="" -
    /TYPE=NONTERMINAL

    "!++"
    "! FUNCTIONAL DESCRIPTION:"
    "!"
    "!   [~description~]"
    "!"
    "! FORMAL PARAMETERS:"
    "!"
    "!   [~description-or-none~]"
    "!"
    "! IMPLICIT INPUTS:"
    "!"
    "!   [~description-or-none~]"
    "!"
    "! IMPLICIT OUTPUTS:"
    "!"
    "!   [~description-or-none~]"
    "!"
    "! ROUTINE VALUE:"
    "!"
    "!   [~description-or-none~]"
    "!"
    "! SIDE EFFECTS:"
    "!"
    "!   [~description-or-none~]"
    "!--"

    END DEFINE

DEFINE PLACEHOLDER "description" -
    /LANGUAGE=tpu -
    /DESCRIPTION="descriptive text" -
    /TOPIC_STRING="" -
    /TYPE=TERMINAL

    "descriptive text"

    END DEFINE

DEFINE PLACEHOLDER "description-or-none" -
    /DESCRIPTION="item description for procedure comments" -
    /TOPIC_STRING="" -
    /TYPE=NONTERMINAL

    "None"

    END DEFINE

DEFINE PLACEHOLDER "statement" -
    /DESCRIPTION="TPU statement" -
    /DUPLICATION=VERTICAL -
    /SEPARATOR=";" -
    /TOPIC_STRING="" -
    /TYPE=MENU

    "assignment-statement" /PLACEHOLDER
    "ABORT" /TOKEN
    "BREAK" /TOKEN
    "CASE" /TOKEN
    "EXITIF" /TOKEN
    "IF" /TOKEN
    "LOOP" /TOKEN
    "RETURN" /TOKEN

    END DEFINE

DEFINE TOKEN statement -
    /DESCRIPTION="repeating STATEMENT placeholder" -
    /TOPIC_STRING=""

    "[~statement~]...;"

    END DEFINE

!+
!   3.8.4.3  The Assignment Statement
!-
DEFINE PLACEHOLDER "assignment-statement" -
    /DESCRIPTION="assignment statement" -
    /DUPLICATION=VERTICAL -
    /SEPARATOR=";" -
    /TOPIC_STRING="" -
    /TYPE=NONTERMINAL

    "{~variable-name~} := {~expression~}"

    END DEFINE

DEFINE TOKEN ":=" /PLACEHOLDER="assignment-statement"
DEFINE TOKEN "=" /PLACEHOLDER="assignment-statement"

DEFINE PLACEHOLDER "expression" -
    /DESCRIPTION="arithmetic, relational, boolean or pattern expression" -
    /SEPARATOR="," -
    /TOPIC_STRING="" -
    /TYPE=TERMINAL

    "arithmetic, relational, boolean or pattern expression"

    END DEFINE

!+
!   3.8.4.4  The Repetitive Statement
!-
DEFINE TOKEN "LOOP" -
    /DESCRIPTION="LOOP/ENDLOOP statement" -
    /TOPIC_STRING=""

    "LOOP"
    "	{~statement~}...;"
    "ENDLOOP"

    END DEFINE

DEFINE TOKEN "EXITIF" -
    /DESCRIPTION="EXITIF statement" -
    /TOPIC_STRING=""

    "EXITIF {~expression~}"

    END DEFINE

!+
!   3.8.4.5  The Conditional Statement
!-
DEFINE TOKEN "IF" -
    /DESCRIPTION="IF/THEN/ELSE statement" -
    /TOPIC_STRING=""

    "IF {~expression~}"
    "THEN"
    "	{~statement~}...;"
    "[~ELSE-clause~]"
    "ENDIF"

    END DEFINE

DEFINE PLACEHOLDER "IF-THEN-statement" -
    /DESCRIPTION="IF/THEN statement" -
    /TOPIC_STRING=""

    "IF {~expression~}"
    "THEN"
    "	{~statement~}...;"
    "ENDIF"

    END DEFINE

DEFINE TOKEN ifthen /PLACEHOLDER="IF-THEN-statement"

DEFINE PLACEHOLDER "else-clause" -
    /DESCRIPTION="ELSE portion of an IF statement" -
    /TOPIC_STRING="" -
    /TYPE=NONTERMINAL

    "ELSE"
    "	{~statement~}...;"

    END DEFINE

DEFINE TOKEN else /PLACEHOLDER=else-clause

!+
!   3.8.4.6  The Case Statement
!-
DEFINE TOKEN "CASE" -
    /DESCRIPTION="CASE/ENDCASE statement" -
    /TOPIC_STRING=""

    "CASE {~case-selector~} FROM [~lower-constant-expr~] TO [~upper-constant-expr~]"
    "	{~case-action~}..."
    "	[~INRANGE-action~]"
    "	[~OUTRANGE-action~]"
    "ENDCASE"

    END DEFINE

DEFINE PLACEHOLDER "case-selector" /PLACEHOLDER="expression"

DEFINE PLACEHOLDER "lower-constant-expr" -
    /DESCRIPTION="lower bound of a CASE range" -
    /LEADING="FROM" -
    /TOPIC_STRING="" -
    /TYPE=TERMINAL

    "lower bound of a CASE range (must be a constant)"

    END DEFINE

DEFINE PLACEHOLDER "upper-constant-expr" -
    /DESCRIPTION="upper bound of a CASE range" -
    /LEADING="TO" -
    /TOPIC_STRING="" -
    /TYPE=TERMINAL

    "upper bound of a CASE range (must be a constant)"

    END DEFINE

DEFINE PLACEHOLDER "case-action" -
    /DESCRIPTION="item in a CASE statement" -
    /DUPLICATION=VERTICAL -
    /TOPIC_STRING="" -
    /TYPE=NONTERMINAL

    "[{~constant-expr~}...] :  {~statement~}...;"

    END DEFINE

DEFINE PLACEHOLDER "constant-expr" -
    /DESCRIPTION="compile-time constant expression" -
    /SEPARATOR="," -
    /TOPIC_STRING="" -
    /TYPE=TERMINAL

    "Specify an expression that evaluates at compile time to either"
    "a keyword, a string constant, or an integer constant."

    END DEFINE

DEFINE PLACEHOLDER "INRANGE-action" -
    /DESCRIPTION="INRANGE action in a CASE statement" -
    /TOPIC_STRING="" -
    /TYPE=NONTERMINAL

    "[INRANGE] :  {~statement~}...;"

    END DEFINE

DEFINE PLACEHOLDER "OUTRANGE-action" -
    /DESCRIPTION="OUTRANGE action in a CASE statement" -
    /TOPIC_STRING="" -
    /TYPE=NONTERMINAL

    "[OUTRANGE] :  {~statement~}...;"

    END DEFINE

!+
!   3.8.4.7  Error Handling
!-
DEFINE PLACEHOLDER "ON_ERROR-statement" -
    /DESCRIPTION="ON_ERROR/ENDON_ERROR statement" -
    /TRAILING=";" -
    /TOPIC_STRING="" -
    /TYPE=MENU

    "Case-style Error Handler" /PLACEHOLDER
    "Procedural Error Handler" /PLACEHOLDER

    END DEFINE

DEFINE TOKEN "ON_ERROR" /PLACEHOLDER="ON_ERROR-statement"

!+
!   3.8.4.7.1  Procedural Error Handler
!-
DEFINE PLACEHOLDER "Procedural Error Handler" -
    /DESCRIPTION="a sequence of statements" -
    /TRAILING=";" -
    /TOPIC_STRING="{placeholder-topic-string}" -
    /TYPE=NONTERMINAL

    "ON_ERROR"
    "	{~statement~}...;"
    "ENDON_ERROR"

    END DEFINE

!+
!   3.8.4.7.2  Case-style Error Handler
!-
DEFINE PLACEHOLDER "Case-style Error Handler" -
    /DESCRIPTION="a set of error actions" -
    /TRAILING=";" -
    /TOPIC_STRING="{placeholder-topic-string}" -
    /TYPE=NONTERMINAL

    "ON_ERROR"
    "	[{~error-keyword~}] :  [~statement~]...;"
    "	[~error-action~]..."
    "	[~OTHERWISE-action~]"
    "ENDON_ERROR"

    END DEFINE

DEFINE PLACEHOLDER "error-action" -
    /DESCRIPTION="segment of a case-style error handler" -
    /DUPLICATION=VERTICAL -
    /TOPIC_STRING="" -
    /TYPE=NONTERMINAL

    "[{~error-keyword~}] :  [~statement~]...;"

    END DEFINE

DEFINE PLACEHOLDER "error-keyword" -
    /DESCRIPTION="VAXTPU error keyword" -
    /TOPIC_STRING="" -
    /TYPE=TERMINAL

    "Specify a VAXTPU error keyword"

    END DEFINE

DEFINE PLACEHOLDER "OTHERWISE-action" -
    /DESCRIPTION="OTHERWISE action in a case-style error handler" -
    /TOPIC_STRING="" -
    /TYPE=NONTERMINAL

    "[OTHERWISE] :  {~statement~}...;"

    END DEFINE

!+
!   3.8.4.8  The RETURN Statement
!-
DEFINE TOKEN "RETURN" -
    /DESCRIPTION="RETURN statement" -
    /TOPIC_STRING="RETURN"

    "RETURN [~return-value~]"

    END DEFINE

DEFINE PLACEHOLDER "return-value" -
    /DESCRIPTION="value returned by a RETURN statement" -
    /TOPIC_STRING="RETURN" -
    /TYPE=NONTERMINAL

    "({~expression~})"

    END DEFINE

!+
!   3.8.4.10  Miscellaneous Declarations
!-
!+
!   3.8.4.10.1  LOCAL
!-
DEFINE PLACEHOLDER "LOCAL-declaration" -
    /DESCRIPTION="LOCAL declaration" -
    /TRAILING=";" -
    /TOPIC_STRING="" -
    /TYPE=NONTERMINAL

    "LOCAL"
    "	{~variable-name~}..."

    END DEFINE

DEFINE TOKEN "LOCAL" /PLACEHOLDER="LOCAL-declaration"

DEFINE PLACEHOLDER "variable-name" -
    /DESCRIPTION="name of a variable" -
    /SEPARATOR="," -
    /TOPIC_STRING="" -
    /TYPE=TERMINAL

    "name of the variable"

    END DEFINE

!+
!   3.8.4.10.2  CONSTANT
!-
DEFINE PLACEHOLDER "CONSTANT-declaration" -
    /DESCRIPTION="CONSTANT declaration" -
    /TRAILING=";" -
    /TOPIC_STRING="{placeholder-topic-string}" -
    /TYPE=NONTERMINAL

    "CONSTANT"
    "	{~constant-definition~}..."

    END DEFINE

DEFINE TOKEN "CONSTANT" /PLACEHOLDER="CONSTANT-declaration"

DEFINE PLACEHOLDER "constant-definition" -
    /DESCRIPTION="definition of a single constant" -
    /SEPARATOR="," -
    /TOPIC_STRING="{placeholder-topic-string}" -
    /TYPE=NONTERMINAL

    "{~constant-name~} := {~constant-expr~}"

    END DEFINE

DEFINE PLACEHOLDER "constant-name" -
    /DESCRIPTION="name of a constant" -
    /TOPIC_STRING="" -
    /TYPE=TERMINAL

    "name of the constant"

    END DEFINE

!+
!   3.8.4.10.3  VARIABLE
!-
DEFINE PLACEHOLDER "global-VARIABLE-declaration" -
    /DESCRIPTION="Global VARIABLE declaration" -
    /TRAILING=";" -
    /TOPIC_STRING="" -
    /TYPE=NONTERMINAL

    "VARIABLE"
    "	{~variable-name~}..."

    END DEFINE

DEFINE TOKEN "VARIABLE" /PLACEHOLDER="global-VARIABLE-declaration"

!
!+
!   VAXTPU Built-ins
!-
DEFINE TOKEN "ABORT" -
    /DESCRIPTION="ABORT statement" -
    /TOPIC_STRING="ABORT"

    "ABORT"

    END DEFINE

DEFINE TOKEN "ADD_KEY_MAP" -
    /DESCRIPTION="built-in procedure" -
    /TOPIC_STRING="ADD_KEY_MAP"

    "ADD_KEY_MAP({~key-map-list-name~},{~first|last~},{~key-map-name~}...)"

    END DEFINE

    DEFINE PLACEHOLDER "key-map-list-name" /PLACEHOLDER=string
    DEFINE PLACEHOLDER "key-map-name" /PLACEHOLDER=string

    DEFINE PLACEHOLDER "first|last" -
	/DESCRIPTION="""first"" or ""last""" -
	/TOPIC_STRING="" -
	/TYPE=MENU

	"""first"""
	"""last"""

	END DEFINE

DEFINE TOKEN "ADJUST_WINDOW" -
    /DESCRIPTION="built-in procedure" -
    /TOPIC_STRING="ADJUST_WINDOW"

    "ADJUST_WINDOW({~window~},{~top-adjustment~},{~bottom-adjustment~})"

    END DEFINE

    DEFINE PLACEHOLDER "top-adjustment" /PLACEHOLDER="integer"
    DEFINE PLACEHOLDER "bottom-adjustment" /PLACEHOLDER="integer"

DEFINE TOKEN "ANCHOR" -
    /DESCRIPTION="keyword" -
    /TOPIC_STRING="ANCHOR"

    "ANCHOR"

    END DEFINE

DEFINE TOKEN "ANY" -
    /DESCRIPTION="built-in procedure" -
    /TOPIC_STRING="ANY"

    "ANY({~string|range|buffer~},[~match-length~])

    END DEFINE

    DEFINE PLACEHOLDER "match-length" /PLACEHOLDER="integer"

DEFINE TOKEN "APPEND_LINE" -
    /DESCRIPTION="built-in procedure" -
    /TOPIC_STRING="APPEND_LINE"

    "APPEND_LINE"

    END DEFINE

DEFINE TOKEN "ARB" -
    /DESCRIPTION="built-in procedure" -
    /TOPIC_STRING="ARB"

    "ARB({~length~})"

    END DEFINE

    DEFINE PLACEHOLDER "length" /PLACEHOLDER="integer"

DEFINE TOKEN "ASCII" -
    /DESCRIPTION="built-in procedure" -
    /TOPIC_STRING="ASCII"

    "ASCII({~integer|key-name|string~})"

    END DEFINE

    DEFINE PLACEHOLDER "integer|key-name|string" -
	/DESCRIPTION="" -
	/TOPIC_STRING="" -
	/TYPE=MENU

	"integer" /PLACEHOLDER
	"key-name" /PLACEHOLDER
	"string" /PLACEHOLDER

	END DEFINE

DEFINE TOKEN "ATTACH" -
    /DESCRIPTION="built-in procedure" -
    /TOPIC_STRING="ATTACH"

    "ATTACH([~process-id|process-name~])"

    END DEFINE

    DEFINE PLACEHOLDER "process-id|process-name" -
	/DESCRIPTION="" -
	/LEADING="(" -
	/TRAILING=")" -
	/TOPIC_STRING="" -
	/TYPE=MENU

	"integer" /PLACEHOLDER
	"string" /PLACEHOLDER

	END DEFINE

DEFINE TOKEN "BEGINNING_OF" -
    /DESCRIPTION="built-in procedure" -
    /TOPIC_STRING="BEGINNING_OF"

    "BEGINNING_OF({~range|buffer~})"

    END DEFINE

DEFINE TOKEN "BREAK" -
    /DESCRIPTION="BREAK statement" -
    /TOPIC_STRING=""

    "BREAK"

    END DEFINE

DEFINE TOKEN "CALL_USER" -
    /DESCRIPTION="built-in procedure" -
    /TOPIC_STRING="CALL_USER"

    "CALL_USER({~integer~},{~string~})"

    END DEFINE

DEFINE TOKEN "CHANGE_CASE" -
    /DESCRIPTION="built-in procedure" -
    /TOPIC_STRING="CHANGE_CASE"

    "CHANGE_CASE({~string|range|buffer~},{~LOWER|UPPER|INVERT~})"

    END DEFINE

    DEFINE PLACEHOLDER "LOWER|UPPER|INVERT" -
	/DESCRIPTION="" -
	/SEPARATOR="," -
	/TOPIC_STRING="" -
	/TYPE=MENU

	"LOWER"
	"UPPER"
	"INVERT"

	END DEFINE

DEFINE TOKEN "COMPILE" -
    /DESCRIPTION="built-in procedure" -
    /TOPIC_STRING="COMPILE"

    "COMPILE({~string|range|buffer~})"

    END DEFINE

DEFINE TOKEN "COPY_TEXT" -
    /DESCRIPTION="built-in procedure" -
    /TOPIC_STRING="COPY_TEXT"

    "COPY_TEXT({~string|range|buffer~})"

    END DEFINE

DEFINE TOKEN "CREATE_ARRAY" -
    /DESCRIPTION="built-in procedure" -
    /TOPIC_STRING="CREATE_ARRAY"

    "CREATE_ARRAY([~array-size~],[~initial-index~])"

    END DEFINE

    DEFINE PLACEHOLDER "array-size" -
	/DESCRIPTION="array size" -
	/LEADING="(" -
	/TRAILING=",[~initial-index~])" -
	/TOPIC_STRING="CREATE_ARRAY" -
	/TYPE=NONTERMINAL

	"{~integer~}"

	END DEFINE

    DEFINE PLACEHOLDER "initial-index" /PLACEHOLDER="integer"

DEFINE TOKEN "CREATE_BUFFER" -
    /DESCRIPTION="built-in procedure" -
    /TOPIC_STRING="CREATE_BUFFER"

    "CREATE_BUFFER({~buffer-name~},[~file-spec~],[~template-buffer~])"

    END DEFINE

    DEFINE PLACEHOLDER "buffer-name" /PLACEHOLDER="string"
    DEFINE PLACEHOLDER "template-buffer" /PLACEHOLDER="inner-buffer"

DEFINE TOKEN "CREATE_KEY_MAP" -
    /DESCRIPTION="built-in procedure" -
    /TOPIC_STRING="CREATE_KEY_MAP"

    "CREATE_KEY_MAP({~key-map-name~})"

    END DEFINE

DEFINE TOKEN "CREATE_KEY_MAP_LIST" -
    /DESCRIPTION="built-in procedure" -
    /TOPIC_STRING="CREATE_KEY_MAP_LIST"

    "CREATE_KEY_MAP_LIST({~key-map-list-name~},{~key-map-name~}...)"

    END DEFINE

DEFINE TOKEN "CREATE_PROCESS" -
    /DESCRIPTION="built-in procedure" -
    /TOPIC_STRING="CREATE_PROCESS"

    "CREATE_PROCESS({~output-buffer~},[~command-string~])"

    END DEFINE

    DEFINE PLACEHOLDER "output-buffer" /PLACEHOLDER="buffer"

DEFINE TOKEN "CREATE_RANGE" -
    /DESCRIPTION="built-in procedure" -
    /TOPIC_STRING="CREATE_RANGE"

    "CREATE_RANGE({~marker~},{~marker~},{~range-display-option~})"

    END DEFINE

    DEFINE PLACEHOLDER "range-display-option" -
	/DESCRIPTION="" -
	/TOPIC_STRING="" -
	/TYPE=MENU

	"NONE"
	"BOLD"
	"BLINK"
	"REVERSE"
	"UNDERLINE"

	END DEFINE

DEFINE TOKEN "CREATE_WINDOW" -
    /DESCRIPTION="built-in procedure" -
    /TOPIC_STRING="CREATE_WINDOW"

    "CREATE_WINDOW({~starting-line~},{~line-count~},{~status-line-option~})"

    END DEFINE

    DEFINE PLACEHOLDER "starting-line" /PLACEHOLDER="integer"
    DEFINE PLACEHOLDER "line-count" /PLACEHOLDER="integer"
    DEFINE PLACEHOLDER "status-line-option" /PLACEHOLDER="ON|OFF"

DEFINE TOKEN "CURRENT_BUFFER" -
    /DESCRIPTION="built-in procedure" -
    /TOPIC_STRING="CURRENT_BUFFER"

    "CURRENT_BUFFER"

    END DEFINE

DEFINE TOKEN "CURRENT_CHARACTER" -
    /DESCRIPTION="built-in procedure" -
    /TOPIC_STRING="CURRENT_CHARACTER"

    "CURRENT_CHARACTER"

    END DEFINE

DEFINE TOKEN "CURRENT_COLUMN" -
    /DESCRIPTION="built-in procedure" -
    /TOPIC_STRING="CURRENT_COLUMN"

    "CURRENT_COLUMN"

    END DEFINE

DEFINE TOKEN "CURRENT_DIRECTION" -
    /DESCRIPTION="built-in procedure" -
    /TOPIC_STRING="CURRENT_DIRECTION"

    "CURRENT_DIRECTION"

    END DEFINE

DEFINE TOKEN "CURRENT_LINE" -
    /DESCRIPTION="built-in procedure" -
    /TOPIC_STRING="CURRENT_LINE"

    "CURRENT_LINE"

    END DEFINE

DEFINE TOKEN "CURRENT_OFFSET" -
    /DESCRIPTION="built-in procedure" -
    /TOPIC_STRING="CURRENT_OFFSET"

    "CURRENT_OFFSET"

    END DEFINE

DEFINE TOKEN "CURRENT_ROW" -
    /DESCRIPTION="built-in procedure" -
    /TOPIC_STRING="CURRENT_ROW"

    "CURRENT_ROW"

    END DEFINE

DEFINE TOKEN "CURRENT_WINDOW" -
    /DESCRIPTION="built-in procedure" -
    /TOPIC_STRING="CURRENT_WINDOW"

    "CURRENT_WINDOW"

    END DEFINE

DEFINE TOKEN "CURSOR_HORIZONTAL" -
    /DESCRIPTION="built-in procedure" -
    /TOPIC_STRING="CURSOR_HORIZONTAL"

    "CURSOR_HORIZONTAL({~integer~})"

    END DEFINE

DEFINE TOKEN "CURSOR_VERTICAL" -
    /DESCRIPTION="built-in procedure" -
    /TOPIC_STRING="CURSOR_VERTICAL"

    "CURSOR_VERTICAL({~integer~})"

    END DEFINE

DEFINE TOKEN "DEBUG_LINE" -
    /DESCRIPTION="built-in procedure" -
    /TOPIC_STRING="DEBUG_LINE"

    "DEBUG_LINE"

    END DEFINE

DEFINE TOKEN "DEFINE_KEY" -
    /DESCRIPTION="built-in procedure" -
    /TOPIC_STRING="DEFINE_KEY"

    "DEFINE_KEY({~string|range|buffer|program|learn~},{~key-name~},[~key-comment~],[~key-map|key-map-list~])"

    END DEFINE

    DEFINE PLACEHOLDER "key-comment" /PLACEHOLDER="inner-string"

    DEFINE PLACEHOLDER "key-map|key-map-list" -
	/DESCRIPTION="" -
	/SEPARATOR="," -
	/TOPIC_STRING="" -
	/TYPE=MENU

	"key-map-name" /PLACEHOLDER
	"key-map-list-name" /PLACEHOLDER

	END DEFINE

DEFINE TOKEN "DELETE" -
    /DESCRIPTION="built-in procedure" -
    /TOPIC_STRING="DELETE"

    "DELETE({~VAXTPU-structure~})"

    END DEFINE

DEFINE TOKEN "EDIT" -
    /DESCRIPTION="built-in procedure" -
    /TOPIC_STRING="EDIT"

    "EDIT({~string~},{~EDIT-keywords~}...,[~quotation-option~])"

    END DEFINE

    DEFINE PLACEHOLDER "EDIT-keywords" -
	/DESCRIPTION="" -
	/SEPARATOR="," -
	/TOPIC_STRING="EDIT" -
	/TYPE=MENU

	"COLLAPSE"
	"COMPRESS"
	"TRIM"
	"TRIM_LEADING"
	"TRIM_TRAILING"
	"UPPER"
	"LOWER"
	"INVERT"

	END DEFINE

    DEFINE PLACEHOLDER "quotation-option" /PLACEHOLDER="ON|OFF"

DEFINE TOKEN "END_OF" -
    /DESCRIPTION="built-in procedure" -
    /TOPIC_STRING="END_OF"

    "END_OF({~range|buffer~})"

    END DEFINE

DEFINE TOKEN "ERASE" -
    /DESCRIPTION="built-in procedure" -
    /TOPIC_STRING="ERASE"

    "ERASE({~range|buffer~})"

    END DEFINE

DEFINE TOKEN "ERASE_CHARACTER" -
    /DESCRIPTION="built-in procedure" -
    /TOPIC_STRING="ERASE_CHARACTER"

    "ERASE_CHARACTER({~integer~})"

    END DEFINE

DEFINE TOKEN "ERASE_LINE" -
    /DESCRIPTION="built-in procedure" -
    /TOPIC_STRING="ERASE_LINE"

    "ERASE_LINE"

    END DEFINE

DEFINE TOKEN "ERROR" -
    /DESCRIPTION="built-in procedure" -
    /TOPIC_STRING="ERROR"

    "ERROR"

    END DEFINE

DEFINE TOKEN "ERROR_LINE" -
    /DESCRIPTION="built-in procedure" -
    /TOPIC_STRING="ERROR_LINE"

    "ERROR_LINE"

    END DEFINE

DEFINE TOKEN "ERROR_TEXT" -
    /DESCRIPTION="built-in procedure" -
    /TOPIC_STRING="ERROR_TEXT"

    "ERROR_TEXT"

    END DEFINE

DEFINE TOKEN "EXECUTE" -
    /DESCRIPTION="built-in procedure" -
    /TOPIC_STRING="EXECUTE"

    "EXECUTE({~VAXTPU-code~})"

    END DEFINE

    DEFINE PLACEHOLDER "VAXTPU-code" -
	/DESCRIPTION="" -
	/SEPARATOR="," -
	/TOPIC_STRING="" -
	/TYPE=MENU

	"string" /PLACEHOLDER /DESCRIPTION="of TPU statements"
	"range" /PLACEHOLDER /DESCRIPTION="of TPU statements"
	"buffer" /PLACEHOLDER /DESCRIPTION="of TPU statements"
	"program" /PLACEHOLDER
	"learn" /PLACEHOLDER
	"{~key-name~},[~key-map|key-map-list~]"

	END DEFINE

DEFINE TOKEN "EXIT" -
    /DESCRIPTION="built-in procedure" -
    /TOPIC_STRING="EXIT"

    "EXIT"

    END DEFINE

DEFINE TOKEN "EXPAND_NAME" -
    /DESCRIPTION="built-in procedure" -
    /TOPIC_STRING="EXPAND_NAME"

    "EXPAND_NAME({~variable-name-string~},{~ALL|PROCEDURES|KEYWORDS|VARIABLES~})"

    END DEFINE

    DEFINE PLACEHOLDER "variable-name-string" /PLACEHOLDER="string"

    DEFINE PLACEHOLDER "ALL|PROCEDURES|KEYWORDS|VARIABLES" -
	/DESCRIPTION="" -
	/SEPARATOR="," -
	/TOPIC_STRING="" -
	/TYPE=MENU

	"ALL"
	"PROCEDURES"
	"KEYWORDS"
	"VARIABLES"

	END DEFINE

DEFINE TOKEN "FAO" -
    /DESCRIPTION="built-in procedure" -
    /TOPIC_STRING="FAO"

    "FAO({~string~},[~FAO-parameter~]...)"

    END DEFINE

DEFINE TOKEN "FILE_PARSE" -
    /DESCRIPTION="built-in procedure" -
    /TOPIC_STRING="FILE_PARSE"

    "FILE_PARSE({~file-spec~},[~default-spec~],[~related-spec~],[~file-spec-field~]...)"

    END DEFINE

    DEFINE PLACEHOLDER "file-spec" /PLACEHOLDER="inner-string"
    DEFINE PLACEHOLDER "default-spec" /PLACEHOLDER="inner-string"
    DEFINE PLACEHOLDER "related-spec" /PLACEHOLDER="inner-string"

    DEFINE PLACEHOLDER "file-spec-field" -
	/DESCRIPTION="" -
	/SEPARATOR="," -
	/TOPIC_STRING="" -
	/TYPE=MENU

	"NODE"
	"DEVICE"
	"DIRECTORY"
	"NAME"
	"TYPE"
	"VERSION"

	END DEFINE

DEFINE TOKEN "FILE_SEARCH" -
    /DESCRIPTION="built-in procedure" -
    /TOPIC_STRING="FILE_SEARCH"

    "FILE_SEARCH({~file-spec~},[~default-spec~],[~related-spec~],[~file-spec-field~]...)"

    END DEFINE

DEFINE TOKEN "FILL" -
    /DESCRIPTION="built-in procedure" -
    /TOPIC_STRING="FILL"

    "FILL({~range|buffer~},[~word-separators~],[~left-margin~],[~right-margin~],[~first-line-indent~])"

    END DEFINE

    DEFINE PLACEHOLDER "word-separators" /PLACEHOLDER="inner-string"
    DEFINE PLACEHOLDER "left-margin" /PLACEHOLDER="inner-integer"
    DEFINE PLACEHOLDER "right-margin" /PLACEHOLDER="inner-integer"
    DEFINE PLACEHOLDER "first-line-indent" /PLACEHOLDER="integer"

DEFINE TOKEN "GET_INFO" -
    /DESCRIPTION="built-in procedure" -
    /TOPIC_STRING=""

    "GET_INFO({~parameter~},{~parameter~},[~parameter~])"

    END DEFINE

DEFINE TOKEN "HELP_TEXT" -
    /DESCRIPTION="built-in procedure" -
    /TOPIC_STRING="HELP_TEXT"

    "HELP_TEXT({~file-spec~},{~topic-string~},{~prompt-option~},{~buffer~})"

    END DEFINE

    DEFINE PLACEHOLDER "topic-string" /PLACEHOLDER="string"
    DEFINE PLACEHOLDER "prompt-option" /PLACEHOLDER="ON|OFF"

DEFINE TOKEN "INDEX" -
    /DESCRIPTION="built-in procedure" -
    /TOPIC_STRING="INDEX"

    "INDEX({~string~},{~substring~})"

    END DEFINE

    DEFINE PLACEHOLDER "substring" /PLACEHOLDER="string"

DEFINE TOKEN "INT" -
    /DESCRIPTION="built-in procedure" -
    /TOPIC_STRING="INT"

    "INT({~string|keyword~})"

    END DEFINE

    DEFINE PLACEHOLDER "string|keyword" -
	/DESCRIPTION="" -
	/TOPIC_STRING="" -
	/TYPE=MENU

	"string" /PLACEHOLDER
	"keyword" /PLACEHOLDER

	END DEFINE

DEFINE TOKEN "JOURNAL_CLOSE" -
    /DESCRIPTION="built-in procedure" -
    /TOPIC_STRING="JOURNAL_CLOSE"

    "JOURNAL_CLOSE"

    END DEFINE

DEFINE TOKEN "JOURNAL_OPEN" -
    /DESCRIPTION="built-in procedure" -
    /TOPIC_STRING="JOURNAL_OPEN"

    "JOURNAL_OPEN({~string~})"

    END DEFINE

DEFINE TOKEN "KEY_NAME" -
    /DESCRIPTION="built-in procedure" -
    /TOPIC_STRING="KEY_NAME"

    "KEY_NAME({~key-spec~},[~SHIFT_KEY~],[~FUNCTION|KEYPAD~])"

    END DEFINE

    DEFINE PLACEHOLDER "key-spec" -
	/DESCRIPTION="" -
	/TOPIC_STRING="" -
	/TYPE=MENU

	"integer" /PLACEHOLDER /DESCRIPTION="key keyword number or 0-255"
	"key-name" /PLACEHOLDER
	"string" /PLACEHOLDER /DESCRIPTION="value of a main keyboard key"

	END DEFINE

    DEFINE PLACEHOLDER "SHIFT_KEY" -
	/DESCRIPTION="SHIFT_KEY keyword" -
	/TOPIC_STRING="" -
	/TYPE=NONTERMINAL

	"SHIFT_KEY"

	END DEFINE

    DEFINE PLACEHOLDER "FUNCTION|KEYPAD" -
	/DESCRIPTION="" -
	/TOPIC_STRING="" -
	/TYPE=MENU

	"FUNCTION"
	"KEYPAD"

	END DEFINE

DEFINE TOKEN "LAST_KEY" -
    /DESCRIPTION="built-in procedure" -
    /TOPIC_STRING="LAST_KEY"

    "LAST_KEY"

    END DEFINE

DEFINE TOKEN "LEARN_ABORT" -
    /DESCRIPTION="built-in procedure" -
    /TOPIC_STRING="LEARN_ABORT"

    "LEARN_ABORT"

    END DEFINE

DEFINE TOKEN "LEARN_BEGIN" -
    /DESCRIPTION="built-in procedure" -
    /TOPIC_STRING="LEARN_BEGIN"

    "LEARN_BEGIN({~EXACT|NO_EXACT~})"

    END DEFINE

DEFINE TOKEN "LEARN_END" -
    /DESCRIPTION="built-in procedure" -
    /TOPIC_STRING="LEARN_END"

    "LEARN_END"

    END DEFINE

DEFINE TOKEN "LENGTH" -
    /DESCRIPTION="built-in procedure" -
    /TOPIC_STRING="LENGTH"

    "LENGTH({~string|range~})"

    END DEFINE

DEFINE TOKEN "LINE_BEGIN" -
    /DESCRIPTION="keyword" -
    /TOPIC_STRING="LINE_BEGIN"

    "LINE_BEGIN"

    END DEFINE

DEFINE TOKEN "LINE_END" -
    /DESCRIPTION="keyword" -
    /TOPIC_STRING="LINE_END"

    "LINE_END"

    END DEFINE

DEFINE TOKEN "LOCATE_MOUSE" -
    /DESCRIPTION="built-in procedure" -
    /TOPIC_STRING="LOCATE_MOUSE"

    "LOCATE_MOUSE({~window~},{~column-number~},{~row-number~})"

    END DEFINE

    DEFINE PLACEHOLDER "column-number" /PLACEHOLDER="integer"
    DEFINE PLACEHOLDER "row-number" /PLACEHOLDER="integer"

DEFINE TOKEN "LOOKUP_KEY" -
    /DESCRIPTION="built-in procedure" -
    /TOPIC_STRING="LOOKUP_KEY"

    "LOOKUP_KEY({~key-name~},{~key-attribute~},[~key-map|key-map-list~])"

    END DEFINE

    DEFINE PLACEHOLDER "key-attribute" -
	/DESCRIPTION="" -
	/TOPIC_STRING="LOOKUP_KEY" -
	/TYPE=MENU

	"COMMENT"
	"KEY_MAP"
	"PROGRAM"

	END DEFINE

DEFINE TOKEN "MAP" -
    /DESCRIPTION="built-in procedure" -
    /TOPIC_STRING="MAP"

    "MAP({~window~},{~buffer~})"

    END DEFINE

DEFINE TOKEN "MARK" -
    /DESCRIPTION="built-in procedure" -
    /TOPIC_STRING="MARK"

    "MARK({~marker-display-option~})"

    END DEFINE

    DEFINE PLACEHOLDER "marker-display-option" -
	/DESCRIPTION="" -
	/TOPIC_STRING="" -
	/TYPE=MENU

	"NONE"
	"BOLD"
	"BLINK"
	"FREE_CURSOR"
	"REVERSE"
	"UNDERLINE"

	END DEFINE

DEFINE TOKEN "MATCH" -
    /DESCRIPTION="built-in procedure" -
    /TOPIC_STRING="MATCH"

    "MATCH({~string|range|buffer~})"

    END DEFINE

DEFINE TOKEN "MESSAGE" -
    /DESCRIPTION="built-in procedure" -
    /TOPIC_STRING="MESSAGE"

    "MESSAGE({~message-info~})"

    END DEFINE

    DEFINE PLACEHOLDER "message-info" -
	/DESCRIPTION="" -
	/TOPIC_STRING="" -
	/TYPE=MENU

	"{~string~},[~FAO-parameter~]..."
	"{~message-code~},[~message-flags~]...,[~FAO-parameter~]..."
	"{~range~},[~message-severity~]"

	END DEFINE

    DEFINE PLACEHOLDER "FAO-parameter" /PLACEHOLDER="parameter"

    DEFINE PLACEHOLDER "message-code" -
	/DESCRIPTION="" -
	/TOPIC_STRING="" -
	/TYPE=MENU

	"integer" /PLACEHOLDER /DESCRIPTION="message number"
	"keyword" /PLACEHOLDER /DESCRIPTION="VAXTPU message code"

	END DEFINE

    DEFINE PLACEHOLDER "message-flags" -
	/DESCRIPTION="" -
	/SEPARATOR="+" -
	/TOPIC_STRING="" -
	/TYPE=MENU

	"TPU$K_MESSAGE_TEXT"
	"TPU$K_MESSAGE_ID"
	"TPU$K_MESSAGE_SEVERITY"
	"TPU$K_MESSAGE_FACILITY"

	END DEFINE

    DEFINE PLACEHOLDER "message-severity" /PLACEHOLDER="integer"

DEFINE TOKEN "MESSAGE_TEXT" -
    /DESCRIPTION="built-in procedure" -
    /TOPIC_STRING="MESSAGE_TEXT"

    "MESSAGE_TEXT({~message-code~},[~message-flags~]...,[~FAO-parameter~]..."

    END DEFINE

DEFINE TOKEN "MOVE_HORIZONTAL" -
    /DESCRIPTION="built-in procedure" -
    /TOPIC_STRING="MOVE_HORIZONTAL"

    "MOVE_HORIZONTAL({~integer~})"

    END DEFINE

DEFINE TOKEN "MOVE_TEXT" -
    /DESCRIPTION="built-in procedure" -
    /TOPIC_STRING="MOVE_TEXT"

    "MOVE_TEXT({~string|range|buffer~})"

    END DEFINE

DEFINE TOKEN "MOVE_VERTICAL" -
    /DESCRIPTION="built-in procedure" -
    /TOPIC_STRING="MOVE_VERTICAL"

    "MOVE_VERTICAL({~integer~})"

    END DEFINE

DEFINE TOKEN "NOTANY" -
    /DESCRIPTION="built-in procedure" -
    /TOPIC_STRING="NOTANY"

    "NOTANY({~string|range|buffer~},[~match-length~])"

    END DEFINE

DEFINE TOKEN "PAGE_BREAK" -
    /DESCRIPTION="keyword" -
    /TOPIC_STRING="PAGE_BREAK"

    "PAGE_BREAK"

    END DEFINE

DEFINE TOKEN "POSITION" -
    /DESCRIPTION="built-in procedure" -
    /TOPIC_STRING="POSITION"

    "POSITION({~buffer-position~})"

    END DEFINE

    DEFINE PLACEHOLDER "buffer-position" -
	/DESCRIPTION="" -
	/SEPARATOR="," -
	/TOPIC_STRING="" -
	/TYPE=MENU

	"LINE_BEGIN"
	"LINE_END"
	"MOUSE"
	"range" /PLACEHOLDER
	"marker" /PLACEHOLDER
	"buffer" /PLACEHOLDER
	"window" /PLACEHOLDER

	END DEFINE

DEFINE TOKEN "QUIT" -
    /DESCRIPTION="built-in procedure" -
    /TOPIC_STRING="QUIT"

    "QUIT({~modified-buffer-prompt~},[~severity-code~])"

    END DEFINE

    DEFINE PLACEHOLDER "modified-buffer-prompt" /PLACEHOLDER="ON|OFF"
    DEFINE PLACEHOLDER "severity-code" /PLACEHOLDER="integer"

DEFINE TOKEN "READ_CHAR" -
    /DESCRIPTION="built-in procedure" -
    /TOPIC_STRING="READ_CHAR"

    "READ_CHAR"

    END DEFINE

DEFINE TOKEN "READ_FILE" -
    /DESCRIPTION="built-in procedure" -
    /TOPIC_STRING="READ_FILE"

    "READ_FILE({~file-spec~})"

    END DEFINE

DEFINE TOKEN "READ_KEY" -
    /DESCRIPTION="built-in procedure" -
    /TOPIC_STRING="READ_KEY"

    "READ_KEY"

    END DEFINE

DEFINE TOKEN "READ_LINE" -
    /DESCRIPTION="built-in procedure" -
    /TOPIC_STRING="READ_LINE"

    "READ_LINE({~prompt-string~},[~length~])"

    END DEFINE

    DEFINE PLACEHOLDER "prompt-string" /PLACEHOLDER="string"

DEFINE TOKEN "REFRESH" -
    /DESCRIPTION="built-in procedure" -
    /TOPIC_STRING="REFRESH"

    "REFRESH"

    END DEFINE

DEFINE TOKEN "REMAIN" -
    /DESCRIPTION="keyword" -
    /TOPIC_STRING="REMAIN"

    "REMAIN"

    END DEFINE

DEFINE TOKEN "REMOVE_KEY_MAP" -
    /DESCRIPTION="built-in procedure" -
    /TOPIC_STRING="REMOVE_KEY_MAP"

    "REMOVE_KEY_MAP({~key-map-list-name~},{~key-map-name~},[~ALL~])"

    END DEFINE

    DEFINE PLACEHOLDER "ALL" -
	/DESCRIPTION="" -
	/SEPARATOR="," -
	/TOPIC_STRING="" -
	/TYPE=NONTERMINAL

	"ALL"

	END DEFINE

DEFINE TOKEN "SAVE" -
    /DESCRIPTION="built-in procedure" -
    /TOPIC_STRING="SAVE"

    "SAVE({~string~},[~NO_DEBUG_NAMES~],[~NO_PROCEDURE_NAMES~],[~ident-option~])"

    END DEFINE

    DEFINE PLACEHOLDER "NO_DEBUG_NAMES" -
	/SEPARATOR="," -
	/TYPE=NONTERMINAL
	"NO_DEBUG_NAMES"
	END DEFINE

    DEFINE PLACEHOLDER "NO_PROCEDURE_NAMES" -
	/SEPARATOR="," -
	/TYPE=NONTERMINAL
	"NO_PROCEDURE_NAMES"
	END DEFINE

    DEFINE PLACEHOLDER "ident-option" -
	/SEPARATOR="," -
	/TYPE=NONTERMINAL
	"IDENT,{~ident-string~}"
	END DEFINE

DEFINE TOKEN "SCAN" -
    /DESCRIPTION="built-in procedure" -
    /TOPIC_STRING="SCAN"

    "SCAN({~string|range|buffer~})"

    END DEFINE

DEFINE TOKEN "SCANL" -
    /DESCRIPTION="built-in procedure" -
    /TOPIC_STRING="SCANL"

    "SCANL({~string|range|buffer~})"

    END DEFINE

DEFINE TOKEN "SCROLL" -
    /DESCRIPTION="built-in procedure" -
    /TOPIC_STRING="SCROLL"

    "SCROLL({~window~},[~line-count~])"

    END DEFINE

DEFINE TOKEN "SEARCH" -
    /DESCRIPTION="built-in procedure" -
    /TOPIC_STRING="SEARCH"

    "SEARCH({~string|pattern~},{~FORWARD|REVERSE~},[~EXACT|NO_EXACT~],[~range|buffer~])"

    END DEFINE

DEFINE TOKEN "SEARCH_QUIETLY" -
    /DESCRIPTION="built-in procedure" -
    /TOPIC_STRING="SEARCH_QUIETLY"

    "SEARCH_QUIETLY({~string|pattern~},{~FORWARD|REVERSE~},[~EXACT|NO_EXACT~],[~range|buffer~])"

    END DEFINE

DEFINE TOKEN "SELECT" -
    /DESCRIPTION="built-in procedure" -
    /TOPIC_STRING="SELECT"

    "SELECT({~select-display-option~})"

    END DEFINE

    DEFINE PLACEHOLDER "select-display-option" /PLACEHOLDER="range-display-option"

DEFINE TOKEN "SELECT_RANGE" -
    /DESCRIPTION="built-in procedure" -
    /TOPIC_STRING="SELECT_RANGE"

    "SELECT_RANGE"

    END DEFINE

DEFINE TOKEN "SEND" -
    /DESCRIPTION="built-in procedure" -
    /TOPIC_STRING="SEND"

    "SEND({~string|range|buffer~},{~process~})"

    END DEFINE

DEFINE TOKEN "SEND_EOF" -
    /DESCRIPTION="built-in procedure" -
    /TOPIC_STRING="SEND_EOF"

    "SEND_EOF({~process~})"

    END DEFINE

DEFINE PLACEHOLDER "SET" -
    /DESCRIPTION="built-in procedure" -
    /TOPIC_STRING="" -
    /TYPE=MENU

    "SET(AUTO_REPEAT,{~ON|OFF~})"
    "SET(BELL,{~ALL|BROADCAST~},{~ON|OFF~})"
    "SET(COLUMN_MOVE_VERTICAL,{~ON|OFF~})"
    "SET(CROSS_WINDOW_BOUNDS,{~ON|OFF~})"
    "SET(DEBUG,PROGRAM,{~string|range|buffer|program~})"
    "SET(DEBUG,{~ON|OFF~})"
    "SET(DEBUG,OFF,ALL)"
    "SET(EOB_TEXT,{~buffer~},{~string~})"
    "SET(FACILITY_NAME,{~string~})"
    "SET(FORWARD,{~buffer~})"
    "SET(INFORMATIONAL,{~ON|OFF~})"
    "SET(INSERT,{~buffer~})"
    "SET(JOURNALING,{~journaling-frequency~})"
    "SET(KEY_MAP_LIST,{~key-map-list-name~},[~buffer~])"
    "SET(LEFT_MARGIN,{~buffer~},{~column-number~})"
    "SET(LEFT_MARGIN_ACTION,{~buffer~},[~string|range|buffer|program|learn~])"
    "SET(LINE_NUMBER,{~ON|OFF~})"
    "SET(MARGINS,{~buffer~},{~left-margin~},{~right-margin~})"
    "SET(MAX_LINES,{~buffer~},{~line-count~})"
    "SET(MESSAGE_ACTION_LEVEL,{~message-action-level~})"
    "SET(MESSAGE_ACTION_TYPE,{~NONE|BELL|REVERSE~})"
    "SET(MESSAGE_FLAGS,{~message-flags~})"
    "SET(MODIFIABLE,{~buffer~},{~ON|OFF~})"
    "SET(MOUSE,{~ON|OFF~})"
    "SET(NOWRITE,{~buffer~},{~ON|OFF~})"
    "SET(OUTPUT_FILE,{~buffer~},{~file-spec~})"
    "SET(OVERSTRIKE,{~buffer~})"
    "SET(PAD,{~window~},{~ON|OFF~})"
    "SET(PAD_OVERSTRUCK_TABS,{~ON|OFF~})"
    "SET(PERMANENT,{~buffer~})"
    "SET(POST_KEY_PROCEDURE,{~key-map-list-name~},[~string|range|buffer|program|learn~])"
    "SET(PRE_KEY_PROCEDURE,{~key-map-list-name~},[~string|range|buffer|program|learn~])"
    "SET(PROMPT_AREA,{~line-number~},{~line-count~},[~prompt-display-option~])"
    "SET(REVERSE,{~buffer~})"
    "SET(RIGHT_MARGIN,{~buffer~},{~column-number~})"
    "SET(RIGHT_MARGIN_ACTION,{~buffer~},[~string|range|buffer|program|learn~])"
    "SET(SCREEN_UPDATE,{~ON|OFF~})
    "SET(SCROLLING,{~window~},{~ON|OFF~},{~top-offset~},{~bottom-offset~},{~cursor-position~})"
    "SET(SELF_INSERT,{~key-map-list-name~},{~ON|OFF~})
    "SET(SHIFT_KEY,{~key-name~},[~key-map-list-name~])"
    "SET(SPECIAL_ERROR_SYMBOL,{~global-variable-name~})"
    "SET(STATUS_LINE,{~window~},{~status-display-option~},{~status-string~})"
    "SET(SUCCESS,{~ON|OFF~})
    "SET(SYSTEM,{~buffer~})"
    "SET(TAB_STOPS,{~buffer~},{~tab-interval|tab-stops~})"
    "SET(TEXT,{~window~},{~tab-display-option~})"
    "SET(TIMER,{~ON|OFF~},[~timer-string~])"
    "SET(TRACEBACK,{~ON|OFF~})
    "SET(UNDEFINED_KEY,{~key-map-list-name~},[~string|range|buffer|program|learn~])"
    "SET(VIDEO,{~window~},{~video-display-option~})"
    "SET(WIDTH,{~window~},{~width~})"

    END DEFINE

    DEFINE TOKEN "SET" /PLACEHOLDER="SET"

    DEFINE PLACEHOLDER "bottom-offset" /PLACEHOLDER="integer"
    DEFINE PLACEHOLDER "cursor-position" /PLACEHOLDER="integer"
    DEFINE PLACEHOLDER "global-variable-name" /PLACEHOLDER="variable-name"
    DEFINE PLACEHOLDER "journaling-frequency" /PLACEHOLDER="integer"
    DEFINE PLACEHOLDER "line-number" /PLACEHOLDER="integer"
    DEFINE PLACEHOLDER "prompt-display-option" /PLACEHOLDER="range-display-option"
    DEFINE PLACEHOLDER "top-offset" /PLACEHOLDER="integer"
    DEFINE PLACEHOLDER "status-string" /PLACEHOLDER="string"
    DEFINE PLACEHOLDER "timer-string" /PLACEHOLDER="string"
    DEFINE PLACEHOLDER "video-display-option" /PLACEHOLDER="range-display-option"
    DEFINE PLACEHOLDER "width" /PLACEHOLDER="integer"

    DEFINE PLACEHOLDER "ALL|BROADCAST" -
	/DESCRIPTION="" -
	/TOPIC_STRING="" -
	/TYPE=MENU

	"ALL"
	"BROADCAST"

	END DEFINE

    DEFINE PLACEHOLDER "NONE|BELL|REVERSE" -
	/DESCRIPTION="" -
	/TOPIC_STRING="" -
	/TYPE=MENU

	"NONE"
	"BELL"
	"REVERSE"

	END DEFINE

    DEFINE PLACEHOLDER "message-action-level" -
	/DESCRIPTION="" -
	/TOPIC_STRING="" -
	/TYPE=MENU

	"integer" /PLACEHOLDER /DESCRIPTION="1=success, 3=info, 0=warn, 2=error"
	"keyword" /PLACEHOLDER /DESCRIPTION="VAXTPU message code"

	END DEFINE

    DEFINE PLACEHOLDER "tab-interval|tab-stops" -
	/DESCRIPTION="" -
	/TOPIC_STRING="" -
	/TYPE=MENU

	"integer" /PLACEHOLDER /DESCRIPTION="tab interval"
	"string" /PLACEHOLDER /DESCRIPTION="list of tab stops"

	END DEFINE

    DEFINE PLACEHOLDER "status-display-option" -
	/DESCRIPTION="" -
	/TOPIC_STRING="" -
	/TYPE=MENU

	"NONE"
	"BOLD"
	"BLINK"
	"REVERSE"
	"SPECIAL_GRAPHICS"
	"UNDERLINE"

	END DEFINE

    DEFINE PLACEHOLDER "tab-display-option" -
	/DESCRIPTION="" -
	/TOPIC_STRING="" -
	/TYPE=MENU

	"BLANK_TABS"
	"GRAPHIC_TABS"
	"NO_TRANSLATE"

	END DEFINE

DEFINE TOKEN "SHIFT" -
    /DESCRIPTION="built-in procedure" -
    /TOPIC_STRING="SHIFT"

    "SHIFT({~window~},{~integer~})"

    END DEFINE

DEFINE TOKEN "SHOW" -
    /DESCRIPTION="built-in procedure" -
    /TOPIC_STRING="SHOW"

    "SHOW({~VAXTPU-info~})"

    END DEFINE

    DEFINE PLACEHOLDER "VAXTPU-info" -
	/DESCRIPTION="" -
	/SEPARATOR="," -
	/TOPIC_STRING="" -
	/TYPE=MENU

	"BUFFERS"
	"KEY_MAP_LISTS"
	"KEY_MAPS"
	"KEYWORDS"
	"PROCEDURES"
	"SCREEN"
	"SUMMARY"
	"VARIABLES"
	"WINDOWS"
	"buffer" /PLACEHOLDER
	"string" /PLACEHOLDER
	"window" /PLACEHOLDER

	END DEFINE

DEFINE TOKEN "SLEEP" -
    /DESCRIPTION="built-in procedure" -
    /TOPIC_STRING="SLEEP"

    "SLEEP({~interval|time-expression~})"

    END DEFINE

    DEFINE PLACEHOLDER "interval|time-expression" -
	/DESCRIPTION="" -
	/TOPIC_STRING="" -
	/TYPE=MENU

	"integer" /PLACEHOLDER /DESCRIPTION="number of seconds"
	"string" /PLACEHOLDER /DESCRIPTION="absolute or delta time expression"

	END DEFINE

DEFINE TOKEN "SPAN" -
    /DESCRIPTION="built-in procedure" -
    /TOPIC_STRING="SPAN"

    "SPAN({~string|range|buffer~})"

    END DEFINE

DEFINE TOKEN "SPANL" -
    /DESCRIPTION="built-in procedure" -
    /TOPIC_STRING="SPANL"

    "SPANL({~string|range|buffer~})"

    END DEFINE

DEFINE TOKEN "SPAWN" -
    /DESCRIPTION="built-in procedure" -
    /TOPIC_STRING="SPAWN"

    "SPAWN([~command-string~],[~return-prompt-option~])"

    END DEFINE

    DEFINE PLACEHOLDER "return-prompt-option" /PLACEHOLDER="ON|OFF"

    DEFINE PLACEHOLDER "command-string" -
	/DESCRIPTION="DCL command" -
	/SEPARATOR="," -
	/LEADING="(" -
	/TRAILING=",[~return-prompt-option~])" -
	/TOPIC_STRING="" -
	/TYPE=NONTERMINAL

	"{~string~}"

	END DEFINE

DEFINE TOKEN "SPLIT_LINE" -
    /DESCRIPTION="built-in procedure" -
    /TOPIC_STRING="SPLIT_LINE"

    "SPLIT_LINE"

    END DEFINE

DEFINE TOKEN "STR" -
    /DESCRIPTION="built-in procedure" -
    /TOPIC_STRING="STR"

    "STR({~string-expr~})"

    END DEFINE

    DEFINE PLACEHOLDER "string-expr" -
	/DESCRIPTION="" -
	/TOPIC_STRING="" -
	/TYPE=MENU

	"integer" /PLACEHOLDER /DESCRIPTION="integer to be converted"
	"{~range|buffer~},[~line-break-string~]" /DESCRIPTION="contents to be extracted"

	END DEFINE

    DEFINE PLACEHOLDER "line-break-string" /PLACEHOLDER="string"

DEFINE TOKEN "SUBSTR" -
    /DESCRIPTION="built-in procedure" -
    /TOPIC_STRING="SUBSTR"

    "SUBSTR({~string|range~},{~start-position~},{~length~})"

    END DEFINE

    DEFINE PLACEHOLDER "start-position" -
	/DESCRIPTION="" -
	/TYPE=MENU

	"integer" /PLACEHOLDER /DESCRIPTION="first character position is 1"

	END DEFINE

DEFINE TOKEN "TRANSLATE" -
    /DESCRIPTION="built-in procedure" -
    /TOPIC_STRING="TRANSLATE"

    "TRANSLATE({~string|range|buffer~},{~replace-chars~},{~chars-to-translate~})"

    END DEFINE

    DEFINE PLACEHOLDER "replace-chars" /PLACEHOLDER="string"
    DEFINE PLACEHOLDER "chars-to-translate" /PLACEHOLDER="string"

DEFINE TOKEN "UNANCHOR" -
    /DESCRIPTION="keyword" -
    /TOPIC_STRING="UNANCHOR"

    "UNANCHOR"

    END DEFINE

DEFINE TOKEN "UNDEFINE_KEY" -
    /DESCRIPTION="built-in procedure" -
    /TOPIC_STRING="UNDEFINE_KEY"

    "UNDEFINE_KEY({~key-name~},[~key-map|key-map-list~])"

    END DEFINE

DEFINE TOKEN "UNMAP" -
    /DESCRIPTION="built-in procedure" -
    /TOPIC_STRING="UNMAP"

    "UNMAP({~window~})"

    END DEFINE

DEFINE TOKEN "UPDATE" -
    /DESCRIPTION="built-in procedure" -
    /TOPIC_STRING="UPDATE"

    "UPDATE({~ALL|window~})"

    END DEFINE

    DEFINE PLACEHOLDER "ALL|window" -
	/DESCRIPTION="" -
	/TOPIC_STRING="" -
	/TYPE=MENU

	"ALL"
	"window" /PLACEHOLDER

	END DEFINE

DEFINE TOKEN "WRITE_FILE" -
    /DESCRIPTION="built-in procedure" -
    /TOPIC_STRING="WRITE_FILE"

    "WRITE_FILE({~range|buffer~},[~file-spec~])"

    END DEFINE
!
!+
!   LSE Built-ins
!-
DEFINE TOKEN "LSE$CREATE_SELECT_RANGE" -
    /DESCRIPTION="built-in procedure" -
    /TOPIC_STRING=""

    "LSE$CREATE_SELECT_RANGE"

    END DEFINE

DEFINE TOKEN "LSE$DO_COMMAND" -
    /DESCRIPTION="built-in procedure" -
    /TOPIC_STRING=""

    "LSE$DO_COMMAND({~string~})"

    END DEFINE

DEFINE TOKEN "LSE$GET_ENVIRONMENT" -
    /DESCRIPTION="built-in procedure" -
    /TOPIC_STRING=""

    "LSE$GET_ENVIRONMENT({~string~})"

    END DEFINE

DEFINE TOKEN "LSE$SET_STATUS_LINE" -
    /DESCRIPTION="built-in procedure" -
    /TOPIC_STRING=""

    "LSE$SET_STATUS_LINE({~window~})"

    END DEFINE
!
!+
!   Generic VAXTPU Procedure parameter definitions
!-
!+
!   VAXTPU data types
!-
DEFINE PLACEHOLDER "array" -
    /DESCRIPTION="array variable or built-in" -
    /SEPARATOR="," -
    /TOPIC_STRING="" -
    /TYPE=MENU

    "variable-name" /PLACEHOLDER /DESCRIPTION="array variable"
    "CREATE_ARRAY" /TOKEN

    END DEFINE

    DEFINE TOKEN "array" /PLACEHOLDER="array"

DEFINE PLACEHOLDER "buffer" -
    /DESCRIPTION="buffer variable or built-in" -
    /SEPARATOR="," -
    /TOPIC_STRING="" -
    /TYPE=MENU

    "variable-name" /PLACEHOLDER /DESCRIPTION="buffer variable"
    "CREATE_BUFFER" /TOKEN
    "CURRENT_BUFFER" /TOKEN

    END DEFINE

    DEFINE TOKEN "buffer" /PLACEHOLDER="buffer"

DEFINE PLACEHOLDER "integer" -
    /DESCRIPTION="integer variable or built-in" -
    /SEPARATOR="," -
    /LEADING="(" -
    /TRAILING=")" -
    /TOPIC_STRING="" -
    /TYPE=MENU

    "constant-expr" /PLACEHOLDER /DESCRIPTION="integer constant"
    "constant-name" /PLACEHOLDER /DESCRIPTION="name of an integer constant"
    "variable-name" /PLACEHOLDER /DESCRIPTION="name of an integer variable"
    "CURRENT_COLUMN" /TOKEN
    "CURRENT_OFFSET" /TOKEN
    "CURRENT_ROW" /TOKEN
    "CURSOR_HORIZONTAL" /TOKEN
    "CURSOR_VERTICAL" /TOKEN
    "DEBUG_LINE" /TOKEN
    "ERROR_LINE" /TOKEN
    "INDEX" /TOKEN
    "INT" /TOKEN
    "LEARN_ABORT" /TOKEN
    "LENGTH" /TOKEN
    "LOCATE_MOUSE" /TOKEN
    "SCROLL" /TOKEN
    "SHIFT" /TOKEN

    END DEFINE

    DEFINE TOKEN "integer" /PLACEHOLDER="integer"

DEFINE PLACEHOLDER "keyword" -
    /DESCRIPTION="keyword variable or built-in" -
    /SEPARATOR="," -
    /TOPIC_STRING="" -
    /TYPE=MENU

    "variable-name" /PLACEHOLDER /DESCRIPTION="keyword variable"
    "CURRENT_DIRECTION" /TOKEN
    "ERROR" /TOKEN
    "KEY_NAME" /TOKEN
    "LAST_KEY" /TOKEN
    "READ_KEY" /TOKEN

    END DEFINE

    DEFINE TOKEN "keyword" /PLACEHOLDER="keyword"

DEFINE PLACEHOLDER "learn" -
    /DESCRIPTION="learn variable or built-in" -
    /SEPARATOR="," -
    /TOPIC_STRING="" -
    /TYPE=MENU

    "variable-name" /PLACEHOLDER /DESCRIPTION="learn variable"
    "LEARN_END" /TOKEN
    "LOOKUP_KEY({~key-name~},PROGRAM,[~key-map|key-map-list~])"

    END DEFINE

    DEFINE TOKEN "learn" /PLACEHOLDER="learn"

DEFINE PLACEHOLDER "marker" -
    /DESCRIPTION="marker variable or built-in" -
    /SEPARATOR="," -
    /TOPIC_STRING="" -
    /TYPE=MENU

    "variable-name" /PLACEHOLDER /DESCRIPTION="marker variable"
    "BEGINNING_OF" /TOKEN
    "END_OF" /TOKEN
    "MARK" /TOKEN
    "SELECT" /TOKEN

    END DEFINE

    DEFINE TOKEN "marker" /PLACEHOLDER="marker"

DEFINE PLACEHOLDER "pattern" -
    /DESCRIPTION="pattern" -
    /SEPARATOR="," -
    /TOPIC_STRING="" -
    /TYPE=MENU

    "variable-name" /PLACEHOLDER /DESCRIPTION="pattern variable"
    "pattern-expression" /PLACEHOLDER

    END DEFINE

    DEFINE TOKEN "pattern" /PLACEHOLDER="pattern-expression"

    DEFINE PLACEHOLDER "pattern-expression" -
	/DESCRIPTION="pattern expression" -
	/TOPIC_STRING="" -
	/TYPE=NONTERMINAL

	"{~pattern-term~} [~pattern-oper~]..."

	END DEFINE

    DEFINE PLACEHOLDER "pattern-term" -
	/DESCRIPTION="pattern term" -
	/TOPIC_STRING="" -
	/TYPE=MENU

	"pattern-built-in" /PLACEHOLDER
	"string" /PLACEHOLDER
	"({~pattern-expression~})"

	END DEFINE

    DEFINE PLACEHOLDER "pattern-oper" -
	/DESCRIPTION="pattern operations" -
	/SEPARATOR=" " -
	/TOPIC_STRING="" -
	/TYPE=MENU

	"& {~pattern-term~}" /DESCRIPTION="Link operation"
	"| {~pattern-term~}" /DESCRIPTION="Alternation operation"
	"+ {~pattern-term~}" /DESCRIPTION="Concatenation operation"
	"@ {~pattern-term~}" /DESCRIPTION="Partial pattern assignment operation"

	END DEFINE

    DEFINE PLACEHOLDER "pattern-built-in" -
	/DESCRIPTION="pattern keywords & built-in procedures" -
	/SEPARATOR="," -
	/TOPIC_STRING="" -
	/TYPE=MENU

	"ANCHOR" /TOKEN
	"ANY" /TOKEN
	"ARB" /TOKEN
	"LINE_BEGIN" /TOKEN
	"LINE_END" /TOKEN
	"MATCH" /TOKEN
	"NOTANY" /TOKEN
	"PAGE_BREAK" /TOKEN
	"REMAIN" /TOKEN
	"SCAN" /TOKEN
	"SCANL" /TOKEN
	"SPAN" /TOKEN
	"SPANL" /TOKEN
	"UNANCHOR" /TOKEN

	END DEFINE

DEFINE PLACEHOLDER "process" -
    /DESCRIPTION="process variable or built-in" -
    /SEPARATOR="," -
    /TOPIC_STRING="" -
    /TYPE=MENU

    "variable-name" /PLACEHOLDER /DESCRIPTION="process variable"
    "CREATE_PROCESS" /TOKEN

    END DEFINE

    DEFINE TOKEN "process" /PLACEHOLDER="process"

DEFINE PLACEHOLDER "program" -
    /DESCRIPTION="program variable or built-in" -
    /SEPARATOR="," -
    /TOPIC_STRING="" -
    /TYPE=MENU

    "variable-name" /PLACEHOLDER /DESCRIPTION="program variable"
    "COMPILE" /TOKEN
    "LOOKUP_KEY({~key-name~},PROGRAM,[~key-map|key-map-list~])"

    END DEFINE

    DEFINE TOKEN "program" /PLACEHOLDER="program"

DEFINE PLACEHOLDER "range" -
    /DESCRIPTION="range variable or built-in" -
    /SEPARATOR="," -
    /TOPIC_STRING="" -
    /TYPE=MENU

    "variable-name" /PLACEHOLDER /DESCRIPTION="range variable"
    "COPY_TEXT" /TOKEN
    "CREATE_RANGE" /TOKEN
    "MOVE_TEXT" /TOKEN
    "SEARCH" /TOKEN
    "SEARCH_QUIETLY" /TOKEN
    "SELECT_RANGE" /TOKEN

    END DEFINE

    DEFINE TOKEN "range" /PLACEHOLDER="range"

DEFINE PLACEHOLDER "string" -
    /DESCRIPTION="string variable or built-in" -
    /SEPARATOR="," -
    /TOPIC_STRING="" -
    /TYPE=MENU

    "literal-string" /PLACEHOLDER
    "constant-name" /PLACEHOLDER /DESCRIPTION="name of an string constant"
    "variable-name" /PLACEHOLDER /DESCRIPTION="name of an string variable"
    "ASCII" /TOKEN
    "CALL_USER" /TOKEN
    "CREATE_KEY_MAP" /TOKEN
    "CREATE_KEY_MAP_LIST" /TOKEN
    "CURRENT_CHARACTER" /TOKEN
    "CURRENT_LINE" /TOKEN
    "ERASE_CHARACTER" /TOKEN
    "ERASE_LINE" /TOKEN
    "ERROR_TEXT" /TOKEN
    "EXPAND_NAME" /TOKEN
    "FAO" /TOKEN
    "FILE_PARSE" /TOKEN
    "FILE_SEARCH" /TOKEN
    "MESSAGE_TEXT" /TOKEN
    "READ_CHAR" /TOKEN
    "READ_FILE" /TOKEN
    "READ_LINE" /TOKEN
    "STR" /TOKEN
    "SUBSTR" /TOKEN
    "WRITE_FILE" /TOKEN

    END DEFINE

    DEFINE TOKEN "string" /PLACEHOLDER="string"

    DEFINE PLACEHOLDER "literal-string" -
	/DESCRIPTION="literal string" -
	/TOPIC_STRING="" -
	/TYPE=MENU

	"'[~character-string~]'"
	"""[~character-string~]"""

	END DEFINE

    DEFINE TOKEN "'" -
	/DESCRIPTION="quoted string" -
	/TOPIC_STRING=""
	"'[~character-string~]'"
	END DEFINE

    DEFINE TOKEN """" -
	/DESCRIPTION="quoted string" -
	/TOPIC_STRING=""
	"""[~character-string~]"""
	END DEFINE

	DEFINE PLACEHOLDER "character-string" -
	    /DESCRIPTION="string of characters" -
	    /TOPIC_STRING="" -
	    /TYPE=TERMINAL

	    "Enter one or more characters, doubling the quoting character"

	    END DEFINE

DEFINE PLACEHOLDER "window" -
    /DESCRIPTION="window variable or built-in" -
    /SEPARATOR="," -
    /TOPIC_STRING="" -
    /TYPE=MENU

    "variable-name" /PLACEHOLDER /DESCRIPTION="window variable"
    "CREATE_WINDOW" /TOKEN
    "CURRENT_WINDOW" /TOKEN

    END DEFINE

    DEFINE TOKEN "window" /PLACEHOLDER="window"

!+
!   Other generic procedure parameters
!-
DEFINE PLACEHOLDER "parameter" -
    /DESCRIPTION="procedure parameter" -
    /SEPARATOR="," -
    /TOPIC_STRING="" -
    /TYPE=TERMINAL

    "procedure parameter"

    END DEFINE

DEFINE PLACEHOLDER "inner-buffer" -
    /DESCRIPTION="" -
    /TOPIC_STRING="" -
    /TYPE=NONTERMINAL

    "[~buffer~]"

    END DEFINE

DEFINE PLACEHOLDER "inner-integer" -
    /DESCRIPTION="" -
    /TOPIC_STRING="" -
    /TYPE=NONTERMINAL

    "[~integer~]"

    END DEFINE

DEFINE PLACEHOLDER "inner-string" -
    /DESCRIPTION="" -
    /TOPIC_STRING="" -
    /TYPE=NONTERMINAL

    "[~string~]"

    END DEFINE

DEFINE PLACEHOLDER "range|buffer" -
    /DESCRIPTION="" -
    /SEPARATOR="," -
    /TOPIC_STRING="" -
    /TYPE=MENU

    "range" /PLACEHOLDER
    "buffer" /PLACEHOLDER

    END DEFINE

DEFINE PLACEHOLDER "string|range|buffer" -
    /DESCRIPTION="" -
    /SEPARATOR="," -
    /TOPIC_STRING="" -
    /TYPE=MENU

    "string" /PLACEHOLDER
    "range" /PLACEHOLDER
    "buffer" /PLACEHOLDER

    END DEFINE

DEFINE PLACEHOLDER "string|range|buffer|program" -
    /DESCRIPTION="" -
    /SEPARATOR="," -
    /TOPIC_STRING="" -
    /TYPE=MENU

    "string" /PLACEHOLDER
    "range" /PLACEHOLDER
    "buffer" /PLACEHOLDER
    "program" /PLACEHOLDER

    END DEFINE

DEFINE PLACEHOLDER "string|range|buffer|program|learn" -
    /DESCRIPTION="" -
    /SEPARATOR="," -
    /TOPIC_STRING="" -
    /TYPE=MENU

    "string" /PLACEHOLDER
    "range" /PLACEHOLDER
    "buffer" /PLACEHOLDER
    "program" /PLACEHOLDER
    "learn" /PLACEHOLDER

    END DEFINE

DEFINE PLACEHOLDER "VAXTPU-structure" -
    /DESCRIPTION="" -
    /SEPARATOR="," -
    /TOPIC_STRING="" -
    /TYPE=MENU

    "array" /PLACEHOLDER
    "buffer" /PLACEHOLDER
    "integer" /PLACEHOLDER
    "keyword" /PLACEHOLDER
    "learn" /PLACEHOLDER
    "marker" /PLACEHOLDER
    "pattern" /PLACEHOLDER
    "process" /PLACEHOLDER
    "program" /PLACEHOLDER
    "range" /PLACEHOLDER
    "string" /PLACEHOLDER
    "window" /PLACEHOLDER

    END DEFINE

DEFINE PLACEHOLDER "string|pattern" -
    /DESCRIPTION="" -
    /SEPARATOR="," -
    /TOPIC_STRING="" -
    /TYPE=MENU

    "string" /PLACEHOLDER
    "pattern" /PLACEHOLDER

    END DEFINE

DEFINE PLACEHOLDER "string|range" -
    /DESCRIPTION="" -
    /SEPARATOR="," -
    /TOPIC_STRING="" -
    /TYPE=MENU

    "string" /PLACEHOLDER
    "range" /PLACEHOLDER

    END DEFINE

DEFINE PLACEHOLDER "key-name" -
    /DESCRIPTION="" -
    /SEPARATOR="," -
    /TOPIC_STRING="" -
    /TYPE=MENU

    "PF{~n~}"
    "KP{~n~}"
    "E{~n~}"
    "F{~n~}"
    "PERIOD"
    "COMMA"
    "MINUS"
    "ENTER"
    "UP"
    "DOWN"
    "LEFT"
    "RIGHT"
    "HELP"
    "DO"
    "CTRL_{~c~}_KEY"
    "MB{~n~}UP"
    "MB{~n~}DOWN"

    END DEFINE

    DEFINE PLACEHOLDER "c" -
	/DESCRIPTION="control key letter" -
	/TOPIC_STRING="" -
	/TYPE=TERMINAL

	"Enter a single letter, A-Z"

	END DEFINE

    DEFINE PLACEHOLDER "n" -
	/DESCRIPTION="function key number" -
	/TOPIC_STRING="" -
	/TYPE=TERMINAL

	"Enter a key number"

	END DEFINE

DEFINE PLACEHOLDER "EXACT|NO_EXACT" -
    /DESCRIPTION="" -
    /TOPIC_STRING="" -
    /TYPE=MENU

    "EXACT"
    "NO_EXACT"

    END DEFINE

DEFINE PLACEHOLDER "FORWARD|REVERSE" -
    /DESCRIPTION="" -
    /SEPARATOR="," -
    /TOPIC_STRING="" -
    /TYPE=MENU

    "FORWARD"
    "REVERSE"

    END DEFINE

DEFINE PLACEHOLDER "ON|OFF" -
    /DESCRIPTION="" -
    /SEPARATOR="," -
    /TOPIC_STRING="" -
    /TYPE=MENU

    "ON"
    "OFF"

    END DEFINE
!
!+
!   XLSE Templates
!-
!+
!   Personal XLSE section file
!-
DEFINE PLACEHOLDER "my_xlse_section_file" -
    /DESCRIPTION="Personal XLSE section file definitions" -
    /TYPE=NONTERMINAL

    "!++"
    "! Facility:"
    "!   Personal XLSE Definitions"
    "!"
    "! Abstract:"
    "!   Specifies XLSE preferences, defines personal TPU procedures,"
    "!   and defines XLSE editing keys."
    "!"
    "! Author:"
    "!   {~tbs~}"
    "!"
    "! Creation Date:  {~tbs~}"
    "!"
    "! Modification History:"
    "!--"
    ""
    "PROCEDURE my_initialize"
    "    !+"
    "    !   Specify my XLSE preferences."
    "    !-"
    "    [~xlse_customize~]
    "ENDPROCEDURE"
    ""
    "PROCEDURE tpu$local_init"
    "    xlse_initialize;"
    "    my_initialize;"
    "ENDPROCEDURE"
    ""
    "!+"
    "!   Build my personal section file."
    "!-"
    "SET( TIMER, OFF, """");"
    "!+"
    "!   Use a full-screen message window."
    "!-"
    "UNMAP( LSE$MESSAGE_WINDOW );"
    "UNMAP( LSE$MAIN_WINDOW );"
    "full_window := CREATE_WINDOW( 1, 24, OFF );"
    "MESSAGE_WINDOW := full_window;"
    "SET( SCROLLING, full_window, ON, 0, 0, 0 );"
    "MAP( full_window, MESSAGE_BUFFER );"
    "!+"
    "!   Define my editing keys."
    "!-"
    "SET( INFORMATIONAL, OFF );"
    "[~xlse_key_definition~]..."
    "SET( INFORMATIONAL, ON );"
    "!+"
    "!   Define my commands."
    "!-"
    "[~xlse_command_definition~]..."
    "!+"
    "!   Save my new personal section file."
    "!-"
    "SAVE( ""sys$disk:[]my_xlse.tpu$section"" );"
    "!+"
    "!   Abort this dummy editing session."
    "!-"
    "QUIT"

    END DEFINE

DEFINE TOKEN "my_xlse_section_file" /PLACEHOLDER="my_xlse_section_file"

!+
!   Personal XLSE initialization file
!-
DEFINE PLACEHOLDER "my_xlse_initialization_file" -
    /DESCRIPTION="Personal XLSE initialization file definitions" -
    /TYPE=NONTERMINAL

    "!++"
    "! Facility:"
    "!   Personal XLSE Definitions"
    "!"
    "! Abstract:"
    "!   Specifies XLSE preferences and defines XLSE editing keys."
    "!"
    "! Author:"
    "!   {~tbs~}"
    "!"
    "! Creation Date:  {~tbs~}"
    "!"
    "! Modification History:"
    "!--"
    ""
    "!+"
    "!   Specify my XLSE preferences."
    "!-"
    "[~xlse_customize~]
    "!+"
    "!   Define my editing keys."
    "!-"
    "SET( INFORMATIONAL, OFF );"
    "[~xlse_key_definition~]..."
    "SET( INFORMATIONAL, ON );"
    "!+"
    "!   Define my commands."
    "!-"
    "[~xlse_command_definition~]..."

    END DEFINE

DEFINE TOKEN "my_xlse_initialization_file" /PLACEHOLDER="my_xlse_initialization_file"

DEFINE PLACEHOLDER "xlse_customize" -
    /DESCRIPTION="Personal XLSE preferences" -
    /TYPE=NONTERMINAL

    ""
    "!   User initials used by XLSE_NEW_MODIFICATION to create"
    "!   a new entry in a module Modification History."
    "XLSE_USER_INITIALS := '[~tbs~]';"
    ""
    "!   XLSE_REPLACE does case-sensitive replacement (ON)"
    "!   or exact replacement (OFF)."
    "XLSE_REPLACE_CASE_SENSITIVE := {~ON|OFF~};"
    ""
    "!   XLSE_INSERT_LINE creates a new line before the current line (ON)"
    "!   or breaks the current line (OFF), which is the default behavior"
    "!   of LSE's GOLD-KP0 key."
    "XLSE_OPEN_PREVIOUS_LINE := {~ON|OFF~};"

    END DEFINE

DEFINE TOKEN "xlse_customize" /PLACEHOLDER="xlse_customize"

DEFINE PLACEHOLDER "xlse_key_definition" -
    /DESCRIPTION="Personal XLSE key definition" -
    /TYPE=MENU

    "xlse_normal_key" /PLACEHOLDER
    "xlse_golded_key" /PLACEHOLDER

    END DEFINE

DEFINE TOKEN "xlse_key_definition" /PLACEHOLDER="xlse_key_definition"

DEFINE PLACEHOLDER "xlse_normal_key" -
    /DESCRIPTION="Definition of a normal XLSE editing key" -
    /TYPE=NONTERMINAL

    "LSE$DO_COMMAND( 'DEFINE KEY {~key-name~} ""{~key-definition~}""' );"

    END DEFINE

DEFINE PLACEHOLDER "xlse_golded_key" -
    /DESCRIPTION="Definition of a GOLDed XLSE editing key" -
    /TYPE=NONTERMINAL

    "LSE$DO_COMMAND( 'DEFINE KEY/IF=GOLD {~key-name~} ""{~key-definition~}""' );"

    END DEFINE

DEFINE PLACEHOLDER "key-definition" -
    /DESCRIPTION="Definition of an XLSE editing key" -
    /TYPE=MENU

    "LSE-command" /PLACEHOLDER
    "TPU-procedure" /PLACEHOLDER

    END DEFINE

DEFINE PLACEHOLDER "xlse_command_definition" -
    /DESCRIPTION="Definition of a new LSE command" -
    /TYPE=NONTERMINAL

    "LSE$DO_COMMAND( 'DEFINE COMMAND {~command-name~} ""{~command-definition~}""' );"

    END DEFINE

DEFINE TOKEN "xlse_command_definition" /PLACEHOLDER="xlse_command_definition"

DEFINE PLACEHOLDER "command-name" -
    /DESCRIPTION="XLSE command name" -
    /TYPE=TERMINAL

    "Enter a command name (e.g., DOIT, SNAZZY)"

    END DEFINE

DEFINE PLACEHOLDER "command-definition" -
    /DESCRIPTION="command definition" -
    /TYPE=MENU

    "LSE-command" /PLACEHOLDER
    "TPU-procedure" /PLACEHOLDER

    END DEFINE

DEFINE PLACEHOLDER "LSE-command" -
    /DESCRIPTION="any LSE or SCA command" -
    /TYPE=TERMINAL

    "Enter any LSE or SCA command (e.g., SHOW VERSION)"

    END DEFINE

DEFINE PLACEHOLDER "TPU-procedure" -
    /DESCRIPTION="any TPU procedure" -
    /TYPE=NONTERMINAL

    "DO/TPU """"{~procedure-name~}[~parameter-list~]"""""

    END DEFIN