.!	To create a help file for TECO,  do the following
.!
.!	$ runoff tecoc.rnh
.!	$ library/create/help tecoc tecoc
.!	$ delete tecoc.hlp;*
.!
.! A part of this file relating to macros can be conditionally runoff'd
.! using the following command:
.!
.!	$ runoff/variant=MACROS tecoc.rnh
.!
.NO PAGING
.NO FLAGS ALL
.LEFT MARGIN 1
.RIGHT MARGIN 70
.INDENT -1
1 Arithmetic
.INDENT 5
TECOC supports integer arithmetic.
Expressions can be constructed using numbers,  operators,  variables
(q-registers) and values maintained by TECO.
Expressions are used to supply numeric values to TECO commands.
The = command simply displays the value of it's numeric argument.
Using it gives the TECO user a simple integer calculator.
Radix control is provided to allow the user to input and output constants
in octal, decimal or hexadecimal.
 Expressions are evaluated left to right unless parentheses are
used to alter the order of execution.
Parentheses may be nested.
If parentheses are used,  the expression within innermost parentheses is
evaluated first,  left to right.
There is no operator precedence.
.INDENT -1
2 Examples
.LITERAL
 256*4=$$        will display 1024 on the screen

 10*(4+3)ua$$    will put 70 into q-register a

 qa=$$           will display the value stored in q-register a

 qa*20=$$        will display the value of q-register a, times 20

 z=$$            will display the number of characters in the edit buffer

 0a==$$          will display the ASCII value of the character following
                the character pointer,  in octal
.END LITERAL
.INDENT -1
2 Operators
.INDENT 5
The following operators are recognized by TECO in expressions
.SKIP
.LITERAL
     OPERATOR   EXAMPLE        FUNCTION

        +       +2=2       Unary plus,  not meaningful,  but legal
        +       2+2=4      Addition
        -       -2=-2      Unary minus,  negation
        -       8-6=2      Subtraction
        *       2*3=6      Multiplication
        /       8/3=2      Division with truncated result
        &       12&10=8    Logical AND
        #       12#10=14   Logical OR
        ^_      5^_=-6     Logical complement
.END LITERAL
.INDENT -1
2 Q-registers
.INDENT 5
Q-registers provide TECO with variables.
Each q-register can contain text and a numeric value.
See "Q-REGISTERS" for more help.
.INDENT -1
2 Radix_control
.INDENT 5
TECO allows the user to operate in octal,  decimal or hexadecimal.
A current radix is maintained by TECO.  Decimal is the default radix.
Numbers in command strings are interpreted according to the current
radix.  The following commands alter the current radix.
.SKIP
.LITERAL
     ^D     change the current radix to decimal

     ^O     change the current radix to octal

     ^R     return the value of the current radix

     n^R    set the radix.  n must be 8, 10 or 16
.END LITERAL
.INDENT -1
2 Special_values
.INDENT 5
The following commands return some kind of value.  Help is
available on these commands individually.
.SKIP
.LITERAL
   nA    next character            ^F    console switches
   B     0                         n^F   terminal number
   ED    edit level flag           ^H    current time of day
   EH    help level flag           ^N    end-of-file flag
   EO    TECO version number       ^R    current radix
   ES    search verify flag        ^S    neg. size of last insert
   ET    type-out flag             ^T    next typed char
   EU    case flag                 ^X    search mode flag
   EV    edit verify flag          ^Y    m,n of last insert
   Mq    macro return value        ^Z    q-register memory used
   Qq    value in q                ^^x   ASCII value of x
   Z     number chars in buffer    :Qq   number chars in q
   ^B    current date              \     digit string in buffer
   ^E    form feed flag            .     position in buffer
.END LITERAL
.INDENT -1
2 Type-out
.INDENT 5
Type-out of the value of an expression is provided through the =
command.  See "COMMANDS =" for help about the = command.
.INDENT -1
1 Branching
.INDENT 5
TECO provides conditional and unconditional branching in
command strings.  This capability provides much of the real power
of the TECO language.  The following commands branch within a TECO
command string:
.SKIP
.LITERAL
    n"x     if-then            <       begin loop
    |       else               >       end loop
    '       end if             F<      goto same-level <
    $$      exit macro         F>      goto same-level >
    n$$     exit macro         F|      goto same-level |
    m,n$$   exit macro         F'      goto same-level '
    ;       leave loop         O       goto tag
    n;      leave loop         nO      computed goto
    :;      leave loop         ^C      stop now, give prompt
    n:;     leave loop
.END LITERAL
.INDENT -1
1 Commands
.INDENT 5
Almost all TECO commands are terminated with two escape
characters.
.INDENT -1
2 ^A
.INDENT 5
The ^A command displays a string on the terminal. Text between
two ^A's is displayed.  The ^A command can be @-sign modified.
.SKIP
Examples:
.SKIP
.LITERAL
^APrompt^A$$     would display Prompt on the terminal screen
@^A:hello:$$     would display hello on the terminal screen
.END LITERAL
.INDENT -1
2 ^B
.INDENT 5
The ^B command returns the current date via the following equations:
.SKIP
.LITERAL
OS/8:          ^B = (((month*32)+day)*8)+((year-1970)&7)+k
                    where k = 4096 if year>1977
                    and k=0 otherwise
RT-11:         ^B = (((month*32)+day)*32)+year-1972
RSTS/E:        ^B = ((year-1970)*1000)+day within year
RSX-11:        ^B = ((year-1900)*16+month)*32+day
VAX/VMS:       ^B = ((year-1900)*16+month)*32+day
TOPS-10:       ^B = (((year-1964)*12+month-1)*31+day-1)
.END LITERAL
.INDENT -1
2 ^C
.INDENT 5
The ^C command stops execution of TECO.  It interrupts TECO
and returns control to the  user.  This command is usually used to stop
TECO when it is erroneously placed into an infinite loop.  If this
command is entered while a search is in progress,  the character
pointer's position is not well defined.
.INDENT -1
2 ^D
.INDENT 5
The ^D command sets the radix to decimal.  This command is
equivalent to a 10^R command,  when the curent radix is 10.  See the
documentation of the ^R command for a description of the radix.
.INDENT -1
2 ^E
.INDENT 5
The ^E flag is the form feed flag.  It is equivalent to -1 if the last
page which was input was terminated by a form feed.  If the last page
read was not terminated by a form feed (if it was the last page in the
file or if the edit buffer filled up before the entire page was read)
then ^E is equivalent to 0.
 The ^E flag is tested by the P command to determine whether a form
feed should be appended to the edit buffer when it is output.
.SKIP
 ^E is also the prefix character for match control characters
used within search strings.  For help on match control characters, the
help key is "SEARCHING MATCH_CONTROL_CHARACTERS".
.INDENT -1
2 ^G^G
.INDENT 5
The ^G^G immediate command is actually an aid to type-in of command
strings.  When you type ^G^G,  the command string
is cleared and you are given another prompt.  When you type in a
command string that has a mistake in it,  and you notice the mistake
before you strike the ESCAPE-ESCAPE sequence that starts execution
of the command string,  this aid can be used to clear the string
so that you can re-type it.
 This aid works a little differently than the ^U and ^X aids.
They clear only the current line of the command string,  not the
whole command string.
.INDENT -1
2 ^G<SPACE>
.INDENT 5
The ^G<SPACE> immediate command is actually an aid to type-in
of command strings.  When you type ^G and then a space,  the current
line of the command string is displayed.  This is
useful when you are on a terminal that doesn't erase characters when
the DELETE key is used.  On such a terminal,  typing in a command
string and using DELETE to fix it can leave the command string in
an un-readable state on the terminal.  In such a case,  ^G<SPACE>
will re-display the current line of the command string.
.INDENT -1
2 ^G*
.INDENT 5
The ^G* immediate command is actually an aid to type-in
of command strings.  When you type ^G and then an asterisk, the
entire current command string is displayed.  This is
useful when you are on a terminal that doesn't erase characters when
the DELETE key is used.  On such a terminal,  typing in a command
string and using DELETE to fix it can leave the command string in
an un-readable state on the terminal.  In such a case,  ^G*
will re-display the current command string.
.INDENT -1
2 ^H
.INDENT 5
The ^H (or BACKSPACE) command has two different functions.
.SKIP
.INDENT 5
When used as a normal command in a command string,
the ^H command returns the time of day via the following equations:
.SKIP
.LITERAL
OS/8:          ^H = 0
RT-11:         ^H = (seconds since midnight)/2
RSTS/E:        ^H = minutes until midnight
RSX-11:        ^H = (seconds since midnight)/2
VAX/VMS:       ^H = (seconds since midnight)/2
TOPS-10:       ^H = 60ths of a second since midnight or 50ths of
                    a second where 50 Hz power is used
.END LITERAL
.SKIP
.INDENT 5
When used as an immediate-mode command (the first character typed after
a TECO prompt) a BACKSPACE will cause TECO to immediately move to the
front of the previous line and type the line (like a -1L1T).  The BACKSPACE
immediate mode command together with the LINE-FEED immediate mode
command (which is like a 1L1T) provides a convenient way to step from
line to line within the edit buffer.
.INDENT -1
2 ^I
.INDENT 5
The ^I (or TAB) command is the same as the I command,  except that
the tab character is inserted along with the tab character.  This
command is a useful alternative to the I command when a FORTRAN or
assembly language program is being edited.
.INDENT -1
2 ^J
.INDENT 5
The ^J (or LINE-FEED) command has two different functions.
.SKIP
.INDENT 5
When used as a normal command in a command string,
the LINE-FEED character has no effect.  It is meant to be used
together with the RETURN and SPACE commands to provide the TECO
programmer with a way to indent and format TECO programs and macros.
.SKIP
.INDENT 5
When used as an immediate-mode command (the first character typed after
a TECO prompt) a LINE-FEED will cause TECO to immediately move to the
front of the next line and type the line (like a 1L1T).  The LINE-FEED
immediate mode command together with the BACKSPACE immediate mode
command (which is like a -1L1T) provides a convenient way to step from
line to line within the edit buffer.
.INDENT -1
2 ^L
.INDENT 5
The ^L (or FORM-FEED) command performs no function in TECO.  It
echoes as a form feed and can be used to format command strings
used in macros.
.PARAGRAPH
Form feed are what split pages in files.  When TECO reads in a page
from an input file,  a form feed defines the end of the page.  Form
feeds can be inserted into files like other characters.  When inserted,
they reside in the edit buffer.  When the file is output and TECO is
used to edit the file later,  the inserted form feeds terminate pages.
.INDENT -1
2 ^M
.INDENT 5
The ^M (or RETURN) command performs no function in TECO. It
can be used to format command strings in macros.
.INDENT -1
2 ^O
.INDENT 5
The ^O command sets the radix to octal.  This command is equivalent
to a 8^R command, when the curent radix is 10.  See the documentation
of the ^R command for a description of the radix.
 When a control-O or caret-O is encountered in a comand string,
it has the above meaning. When a control-O is typed by the user,
control-O turns output to the terminal on or off.  TECO still generates
characters, it simply throws them away instead actually displaying them.
When a command is executed which results in a lot of useless output
to a slow terminal, control-O can be used to speed things up where
control-C would stop execution.
.INDENT -1
2 ^Q
.INDENT 5
The ^Q command converts line positions in the
edit buffer into the corresponding character positions.  The n^Q command
returns the number of characters between the buffer position and the
nth line terminator.  The numeric argument can be positive or negative.
For example,  n^QC is equivalent to nL.
.PARAGRAPH
Within string arguments,  ^Q indicates that the next character is to
be used literally.  For instance, Sttt^Q^Es$$ will search for ttt^Es
rather than ttt followed by a sequence of spaces and/or tabs.
.PARAGRAPH
The ^Q and ^S characters also control terminal i/o.  The ^S character
will "freeze" output to the terminal and ^Q will allow output to resume.
This feature allows the user to temporarily stop output to the screen
so that text can be read before it scrolls off the top of the screen.
.INDENT -1
2 ^R
.INDENT 5
The ^R command sets or returns the value of TECO's radix.
To set the radix, use n^R, where n is a number between 2 and 36,
inclusive.  If ^R is used without a numeric  argument, the current
radix is returned.  The value of the radix affects the execution of
the =, :=, ==, :==, ===, :=== and \ commands.  It also affects the
meaning of digit strings  within command strings.
 If the radix is set to a value above 10, parsing of command
strings is affected.  Upper and lowercase letters become valid as
"digits" in constants.  The meaning  of commands strings can become
very confusing, as letters intended to be commands are absorbed as
part of constants. It is recomended that bases higher than 10 be used
only temporarily.
 If an attempt is made to set the radix to a number that is
out of range, the IRA error message is produced.
 When TECO is started, the radix has a value if 10.
.INDENT -1
2 ^S
.INDENT 5
The ^S command returns the length of the last string found or inserted,
multiplied by -1.  It is intended to be used in conjunction with
other commands to manipulate the last string inserted or found.
For instance,
.SKIP
.LITERAL
      Sabc$^SD$$      find and delete abc
      Sabc$^SC$$      find abc and move to the front of it
      GM$^SD$$        insert q-register M, then change your mind
.END LITERAL
.SKIP
.PARAGRAPH
The ^Q and ^S characters also control terminal i/o.  The ^S character
will "freeze" output to the terminal and ^Q will allow output to resume.
This feature allows the user to temporarily stop output to the screen
so that text can be read before it scrolls off the top of the screen.
.INDENT -1
2 ^T
.INDENT 5
The ^T command...
.INDENT -1
2 ^U
.INDENT 5
The ^U command...
.INDENT -1
2 ^V
.INDENT 5
The ^V command...
.INDENT -1
2 ^W
.INDENT 5
The ^W command...
.INDENT -1
2 ^X
.INDENT 5
The ^X command...
.INDENT 5
The search flag.  Additional help about
how to manipulate flags can be found under the
FLAGS keyword.
 This flag controls the significance of case in searches.
If this flag is 0,  then case is insignificant in search
commands,  and the command stext$$ would find "Text", "text"
or "TEXT" in the edit buffer.  If this flag is -1,  then
search commands are sensitive to case,  and the command
stext$$ would only find "text" in the edit buffer.
.INDENT -1
2 ^Y
.INDENT 5
The ^Y command...
.INDENT -1
2 ^Z
.INDENT 5
The ^Z command...
.INDENT -1
2 ^^X
.INDENT 5
The ^^X command...
.INDENT -1
2 !
.INDENT 5
In TECO,  a tag is a string of characters enclosed in ! characters.
A tag can be used as the destination of a branch (via the O command).
When TECO is executing sequentially and encounters a tag,  the tag is
simply ignored.  Tags also provide TECO's comment capability.
.INDENT -1
2 "
.INDENT 5
The " command provides TECO's conditional branching capability,
or "if-then-else" construct.  The two general forms of the " command
are
.SKIP
.LITERAL
     n"x<BODY>'               like "if x(n) then <BODY>"

     n"x<BODY1>|<BODY2>'      like "if x(n) then <BODY1> else <BODY2>"
.END LITERAL
.SKIP
Where n is an expression and x is a conditional character.  The
conditional characters determine how the value of the expression
is tested.
 Conditionals may be nested.
.INDENT -1
3 "<
.INDENT 5
Execute the following command string if the preceeding expression is
less than zero.  Equivalent to "L, "S or "T.
.INDENT -1
3 "=
.INDENT 5
Execute the following command string if the preceeding expression is
equal to zero.  Equivalent to "E, "F or "U.
.INDENT -1
3 ">
.INDENT 5
Execute the following command string if the preceeding expression is
greater than zero.  Equivalent to "G.
.INDENT -1
3 "A
.INDENT 5
Execute the following command string if the preceeding expression
evaluates to a value that is the ASCII code for an alphabetic
character.  Alphabetic characters are all upper
case and lower case letters from A to Z.
.INDENT -1
3 "C
.INDENT 5
Execute the following command string if the preceeding expression evaluates to the ASCII code for a symbol constituent.
Symbol constituents are upper and lower case letters from A to Z,
digits,  or periods and dollar signs.
.INDENT -1
3 "D
.INDENT 5
Execute the following command string if the preceeding
expression evaluates to the ASCII code for a digit.  Digits
are 0 through 9.
.INDENT -1
3 "E
.INDENT 5
Execute the following command string if the preceeding
expression is
equal to zero.  Equivalent to "=, "F or "U.
.INDENT -1
3 "F
.INDENT 5
Execute the following command string if the preceeding expression is
FALSE.  FALSE in TECO is 0.  Equivalent to "=, "E or "U.
.INDENT -1
3 "G
.INDENT 5
Execute the following command string if the preceeding expression is
greater than zero.  Equivalent to ">.
.INDENT -1
3 "L
.INDENT 5
Execute the following command string if the preceeding expression is
less than zero.  Equivalent to "<, "S or "T.
.INDENT -1
3 "N
.INDENT 5
Execute the following command string if the preceeding expression is
not equal to zero.
.INDENT -1
3 "R
.INDENT 5
Execute the following command string if the preceeding expression
evaluates to the ASCII code for an alphanumeric character.
Alphanumeric characters are digits and the upper
and lower case characters from A to Z.
.INDENT -1
3 "S
.INDENT 5
Execute the following command string if the preceeding expression is
SUCCESSFUL.  SUCCESSFUL in TECO is a value less than 0.  Equivalent
to "<, "L or "T.
.INDENT -1
3 "T
.INDENT 5
Execute the following command string if the preceeding expression is
TRUE.  TRUE in TECO is a value less than 0.
Equivalent to "<, "L or "S.
.INDENT -1
3 "U
.INDENT 5
Execute the following command string if the preceeding expression was
UNSUCCESSFUL.  UNSUCCESSFUL in TECO is 0. Equivalent to "=, "E or "F.
.INDENT -1
3 "V
.INDENT 5
Execute the following command string if the preceeding expression
evaluates to the ASCII code for a lower case letter from a to z.
.INDENT -1
3 "W
.INDENT 5
Execute the following command string if the preceeding expression
evaluates to the ASCII code for a upper case letter from A to Z.
.INDENT -1
2 %q
.INDENT 5
The %q command...
.INDENT -1
2 '
.INDENT 5
The ' command...
.INDENT -1
2 *q
.INDENT 5
The *q immediate command...
.INDENT -1
2 .
.INDENT 5
The . command...
.INDENT -1
2 ;
.INDENT 5
The ; command...
.INDENT -1
2 <
.INDENT 5
the < command...
.INDENT -1
2 >
.INDENT 5
The > command...
.INDENT -1
2 =
.INDENT 5
The = command...
.INDENT -1
2 :=
.INDENT 5
The := command...
.INDENT -1
2 ?
.INDENT 5
The ? command...
.INDENT -1
2 @
.INDENT 5
The @ command...
.INDENT -1
2 A
.INDENT 5
The A command is used to append the next page of text
from the input file to the end of the current editing
buffer.  The command is of the form:
.SKIP
.LITERAL
     A  Read the next page of text from the input file
        and append it to the end of the current text
        buffer
.END LITERAL
.INDENT -1
2 B
.INDENT 5
The B command...
.INDENT -1
2 BACKSPACE
.INDENT 5
The ^H (or BACKSPACE) command has two different functions.  When used
as an immediate mode command (the first character typed after a TECO
prompt) it causes a -1L1T command string to be executed. Together with
the LINE-FEED immediate mode command,  this provides a convenient way
to move through a file.
 When used as a normal command in a command string,
the ^H command returns the time of day via the following equations:
.SKIP
.LITERAL
OS/8:          ^H = 0
RT-11:         ^H = (seconds since midnight)/2
RSTS/E:        ^H = minutes until midnight
RSX-11:        ^H = (seconds since midnight)/2
VAX/VMS:       ^H = (seconds since midnight)/2
TOPS-10:       ^H = 60ths of a second since midnight or 50ths of
                    a second where 50 Hz power is used
.END LITERAL
.INDENT -1
2 C
.INDENT 5
The C command is used to move the pointer past a
specified number of characters.  Common forms of the
"C" command are:
.SKIP
.LITERAL
     C  Advance the pointer to the next character
    3C  Move forward by three characters
   -1C  Move back to the previous character
.END LITERAL
.INDENT -1
2 D
.INDENT 5
The D command is used to delete characters from the
editing buffer.  Common forms of the command are:
.SKIP
.LITERAL
     D  Delete the character which follows the pointer
    5D  Delete the next five characters, starting
        with the character following the pointer
   -1D  Delete the character which immediately precedes
        the pointer
.END LITERAL
.INDENT -1
2 E%
.INDENT 5
The E% command...
.INDENT -1
2 E_
.INDENT 5
The E_ command...
.INDENT -1
2 EA
.INDENT 5
The EA command...
.INDENT -1
2 EB
.INDENT 5
The EB command...
.INDENT -1
2 EC
.INDENT 5
The EC command...
.INDENT -1
2 ED
.INDENT 5
The edit level flag.  Additional help about
how to manipulate flags can be found under the
FLAGS keyword.  Bits within this flag have the following
meanings:
.SKIP
.LITERAL
       1    Allow caret (^) in search strings
       2    Allow Y and _ commands to destroy edit buffer
       4    Don't arbitrarily expand memory
       16   preserve dot on failing searches
       64   only move dot by one on multiple occurrence searches
.END LITERAL
.INDENT -1
3 1
.INDENT 5
Allow caret (^) characters in search strings.  If this bit is 1,
then the caret character is a normal character in search strings.  If
this bit is 0,  then the caret character causes the immediately
following character in the search string to become a control character.
It is useful to turn this bit off when you are editing a file with
many control characters.
.INDENT -1
3 2
.INDENT 5
Allow Y and _ commands,  even if there is text in the edit buffer.
If this bit is 1,  the Y and _ commands will work, even if the edit
buffer contains text.  If this bit is 0,  then the Y and _ commands
will cause an error when the edit buffer contains text.  Note that
this flag operates sensibly:  it only aborts Y commands if
an output file is defined.
 This flag is useful because it is very easy to execute a Y
command by mistake and irrevocably lose the contents of the edit
buffer.
.INDENT -1
3 4
.INDENT 5
Do not arbitrarily expand memory.  If this bit is set,  TECO
will expand memory in order to execute the A command.  It will not
expand memory in order to execute the Y, P or N commands.  If this
bit is clear,  TECO will expand the edit buffer in order to fit
entire pages into the edit buffer when the user execute an A, N, P
or Y command.
.INDENT -1
3 16
.INDENT 5
Preserve dot on failing searches.  If this bit is 1,  then
when a search fails,  the character pointer is left pointing to
the same place it was pointing before the search was attempted.
If this bit is 0,  then when a search fails,  the character pointer
is left pointing to the beginning of the edit buffer.
.INDENT -1
3 64
.INDENT 5
Move the character pointer by one on multiple occurrence searches.
This bit affects the way TECO handles the character pointer while
executing a command like 5Stext$$.  If this bit is 1,  then the
character pointer is incremented each time the text string is found.
If this bit is 0,  then the character pointer is moved to the end of
the found text string each time the text string is found.
 For example,  suppose the text buffer contains 20 A's,  the
character pointer is currently pointing to the beginning of the edit
buffer,  and the bit is 1.  The command 5SAA$$ will complete leaving
the character pointer between the 6th and 7th characters (.=$$ gives 6).
Under the same conditions,  with the bit set to 0,  the same command
will complete leaving the character pointer between the 10th and 11th
characters (.=$$ gives 10).
.INDENT -1
2 EF
.INDENT -1
2 EG
.INDENT -1
2 EH
.INDENT 5
The help flag.  Additional help about
how to manipulate flags can be found under the
FLAGS keyword.  Bits within this flag have the following
meanings:
.SKIP
.LITERAL
       3    how much error message to display
       4    display failing command string after errors
.END LITERAL
.INDENT -1
3 3
.INDENT 5
The two low bits of the EH flag control how much information
is displayed when an error occurs.  The bits can have the following
values:
.SKIP
.LITERAL
         00     same as 10

         01     display only the 3-letter error code

         10     display 3-letter error code and one-line error message

         11     display 3-letter error code,  one-line error message and
                a paragraph describing the error in detail.
.END LITERAL
.INDENT -1
3 4
.INDENT 5
Output failing command string when an error occurs.  If this bit
is 1,  then the commands string that caused the error is displayed up
to and including the command that caused the error.  This is just like
typing the immediate mode question-mark command after every error.  If
this bit is 0,  then the failing command string is not typed.
.INDENT -1
2 EI
.INDENT 5
The EI command...
.INDENT -1
2 EJ
.INDENT 5
The EJ command...
.INDENT -1
2 EK
.INDENT 5
The EK command...
.INDENT -1
2 EL
.INDENT 5
The EL command...
.INDENT -1
2 EM
.INDENT 5
The EM command...
.INDENT -1
2 EN
.INDENT 5
The EN command...
.INDENT -1
2 EP
.INDENT 5
The EP command...
.INDENT -1
2 EQ
.INDENT 5
The EQ command...
.INDENT -1
2 ER
.INDENT 5
The ER command...
.INDENT -1
2 ES
.INDENT 5
The ES flag controls what is displayed on the
terminal after every successful search command completes.  By
default,  nothing is displayed (ES is 0).  ES has the following
meanings:
.SKIP
.LITERAL
       0         don't display anything
       -1        display the line containing the found string
       1-31      display the line containing the found string,
                 with a line feed at the character position
       32-126    display the line containing the found string,
                 with the character whose ASCII code is represented
                 by ES at the character position
       m*265+n   n has the meanings defined above.  m is the number
                 of lines above and below the found string to be
                 displayed.
.END LITERAL
.INDENT -1
2 ESCAPE
.INDENT 5
The ESCAPE command...
.INDENT -1
2 ET
.INDENT 5
The type-out flag.  Additional help about
how to manipulate flags can be found under the
FLAGS keyword.  Bits within this flag have the following
meanings:
.SKIP
.LITERAL
       1       inhibit conversions during type-out
       2       process DELETE and ^U in scope mode
       4       don't convert user's input to upper case
       8       read without echo on ^T commands
       16      cancel ^O on type-out
       32      read with no wait on ^T commands
       128     mung mode
       256     truncate to terminal width
       512     terminal is a CRT
       1024    terminal is a refresh scope
       32768   trap ^C
.END LITERAL
.INDENT -1
3 1
.INDENT 5
Type out in image mode.  If this bit is 1,  no conversions
are performed when text is typed out.  If this bit is 0,  TECO
automatically converts non-displayable character into a displayable
form before displaying them on the terminal.  For instance,  the
control-A character is converted to ^A and the ESCAPE character is
converted to a dollar sign.
.INDENT -1
3 2
.INDENT 5
Process DELETE and ^U in scope mode.  If this bit is set,
the DELETE and ^U commands will cause characters being deleted
to disappear from the terminal screen.  If this bit is 0,  then
deleted characters are simply echoed to the terminal screen
and ^U simply advances to the next line.
.INDENT -1
3 4
.INDENT 5
Read lower case.  If this bit is 1,  TECO will not convert
lowercase characters to uppercase on input.  If this bit is 0,
TECO will convert lowercase characters typed by the user into
uppercase.
.INDENT -1
3 8
.INDENT 5
Read without echo for ^T.  If this bit is 1,  ^T commands
will not echo.  If this bit is 0,  ^T commands will echo.  This
bit allows the user to explicitly echo input characters as
he/she sees fit.
.INDENT -1
3 16
.INDENT 5
Cancel ^O on type-out.  If this bit is 1,  TECO will
cancel any outstanding control-O command before doing its
output,  then automatically clear the bit.  If this bit is 0,
TECO will output normally,  subject to ^O control.
.INDENT -1
3 32
.INDENT 5
Read with no wait.  If this bit is 1,  ^T commands will
return immediately,  regardless of whether there is a character
in the type-ahead buffer or not.  If this bit is 1 and a ^T
command is executed and the type-ahead buffer is empty,  the
^T will return a -1.  If this bit is 0 and a ^T command is
executed and the type-ahead buffer is empty,  TECO will wait
for the user to type a character.
.INDENT -1
3 128
.INDENT 5
Mung mode bit. If this bit is 1,  TECO executes as if it
is executing a TECO program instead of interactively.  If this
bit is 1, then
.SKIP
.LITERAL
         1.  all informational message are suppressed
         2.  ^C causes the immediate termination of TECO
         3.  errors cause TECO to terminate
.END LITERAL
If this bit is 0, then
.LITERAL
         1.  informational messages are displayed
         2.  ^C returns the user to a TECO prompt
         3.  errors return the user to a TECO prompt
.END LITERAL
.INDENT -1
3 256
.INDENT 5
Truncate lines to terminal width.  If this bit is 1,
TECO will truncate output lines to fit on lines of the terminal.
If this bit is 0,  what happens to lines that are too long is
determined by the terminal and/or terminal driver.
.INDENT -1
3 512
.INDENT 5
The terminal is a scope.  If this bit is 1,  the W command
is defined for CRT's (VT52, VT100, etc.).  If this bit is 0,
the W command is not defined for CRT's.
.INDENT -1
3 1024
.INDENT 5
The terminal is a refresh scope.  If this bit is 1,  then
the W command is defined for refresh terminals.  If this bit is
a 0,  then the terminal is not a refresh scope,  and the
W command is not defined for refresh scopes.
.INDENT -1
3 32768
.INDENT 5
Trap ^C.  If this bit is 1 and a ^C is typed,  the bit is
set to 0 and execution of the current command string continues.
This allows TECO macros to detect ^C's.  If this bit is 0 and
a ^C is typed,  the user is returned to theTECO prompt.
.INDENT -1
2 EU
.INDENT 5
The case flag.  Additional help about how to
manipulate flags can be found under the FLAGS
keyword.
 This flag allows TECO to be used to input and output upper
and lower case characters even if the terminal being used is
capable of displaying only uppercase characters.
 If the EU flag is 1,  no case flagging is performed on
type-out.  If the EU flag is 0,  lowercase characters are
converted to uppercase on type-out,  and are preceeded by
a ' character.  If the EU flag is 1,  then lowercase
character are converted to uppercase on type-out,  but
uppercase characters are preceeded by a ' character.
.INDENT 5
The default value for this flag is -1.
If TECO can tell (by asking the operating system) that your terminal
cannot support lowercase output, then it will set this flag to 0.
.INDENT -1
2 EV
.INDENT 5
The EV flag controls what is displayed on the
terminal after every successful command string completes.  By
default,  nothing is displayed (EV is 0).  EV has the following
meanings:
.SKIP
.LITERAL
       0         don't display anything
       -1        display the line containing the character position
       1-31      display the line containing the character position,
                 with a line feed at the character position
       32-126    display the line containing the character position,
                 with the character whose ASCII code is represented
                 by ES at the character position
       m*265+n   n has the meanings defined above.  m is the number
                 of lines above and below the character position to be
                 displayed.
.END LITERAL
.INDENT -1
2 EW
.INDENT -1
2 EX
.INDENT 5
The "EX" command is used to write the current buffer to
the output file, copy the remainder of the input file to
the output file, and exit from TECO.  For example,
.SKIP
.LITERAL
     EX$$
.END LITERAL
.SKIP
(Note that the <ESC> key echoes as "$" at your terminal,
 and that you must type the <ESC> key twice to cause the
 command to be executed.)
.INDENT -1
2 EY
.INDENT 5
The EY command...
.INDENT -1
2 EZ
.INDENT 5
The EZ command...
.INDENT -1
2 F_
.INDENT 5
The F_ command...
.INDENT -1
2 F'
.INDENT 5
The F' command...
.INDENT -1
2 F<
.INDENT 5
The F< command...
.INDENT -1
2 F>
.INDENT 5
The F> command...
.INDENT -1
2 F|
.INDENT 5
The F| command...
.INDENT -1
2 FB
.INDENT 5
The FB command...
.INDENT -1
2 FC
.INDENT 5
The FC command...
.INDENT -1
2 FD
.INDENT 5
The FD command...
.INDENT -1
2 FK
.INDENT 5
The FK command...
.INDENT -1
2 FN
.INDENT 5
The FN command...
.INDENT -1
2 FORM-FEED
.INDENT 5
The ^L (or FORM-FEED) command performs no function in TECO.  It
echoes as a form feed and can be used to format command strings
used in macros.
.PARAGRAPH
Form feed are what split pages in files.  When TECO reads in a page
from an input file,  a form feed defines the end of the page.  Form
feeds can be inserted into files like other characters.  When inserted,
they reside in the edit buffer.  When the file is output and TECO is
used to edit the file later,  the inserted form feeds terminate pages.
.INDENT -1
2 FR
.INDENT 5
The FR command...
.INDENT -1
2 FS
.INDENT 5
The FS command is used to replace one string with
another string.  If the specified text is found, it is
deleted and replaced with the new text, and the pointer
is positioned at the end of the specified text.  If the
specified text is not found, the pointer is positioned
at the beginning of the buffer.
.SKIP
 The "FS" command is of the form:
.SKIP
.LITERAL
     FSold-text<ESC>new-text<ESC>
.END LITERAL
 For example, to replace the next occurrence of "exumple"
with "example", use the command
.SKIP
.LITERAL
     FSexumple$example$
.END LITERAL
 (Note that the <ESC> key echoes as "$" at your terminal.)
.INDENT -1
2 Gq
.INDENT 5
The Gq command...
.INDENT -1
2 G*
.INDENT 5
The G* command...
.INDENT -1
2 G_
.INDENT 5
The G_ command...
.INDENT -1
2 H
.INDENT 5
The H command...
.INDENT -1
2 I
.INDENT 5
The I command is used to insert text, starting at the
current pointer.  The command is of the form:
.SKIP
.LITERAL
     Itext-to-insert<ESC>
.END LITERAL
 For example, to insert the text "This is a test", type
.SKIP
.LITERAL
     IThis is a test$
.END LITERAL
 (Note that the <ESC> key is echoed as a "$" sign at
  your terminal.)
.INDENT -1
2 J
.INDENT 5
The J command is used to move the text pointer within
the editing buffer.  Common forms of the command are:
.SKIP
.LITERAL
    BJ  Point to the beginning of the buffer
    ZJ  Point to the end of the buffer
.END LITERAL
.INDENT -1
2 K
.INDENT 5
The K command is used to delete lines of text from the
editing buffer.  Common forms of the command are:
.SKIP
.LITERAL
     K  Delete the text from the pointer through the
        end of the current line
    0K  Delete the text from the beginning of the
        current line to the pointer
    5K  Delete the next five lines of text, starting
        from the pointer
    HK  delete all of the text in the editing buffer
.END LITERAL
.INDENT -1
2 L
.INDENT 5
The L command is used to move the text pointer from
one line to another.  Common forms of the command are:
.SKIP
.LITERAL
     L  Move to the beginning of the next line
    0L  Move to the beginning of the current line
    5l  Move to the fifth line past the current line
   -1L  Move back to the previous line
.END LITERAL
.INDENT -1
2 LINE-FEED
.INDENT 5
The ^J (or LINE-FEED) command has two different functions.
.SKIP
.INDENT 5
When used as a normal command in a command string,
the LINE-FEED character has no effect.  It is meant to be used
together with the RETURN and SPACE commands to provide the TECO
programmer with a way to indent and format TECO programs and macros.
.SKIP
.INDENT 5
When used as an immediate-mode command (the first character typed after
a TECO prompt) a LINE-FEED will cause TECO to immediately move to the
front of the next line and type the line (like a 1L1T).  The LINE-FEED
immediate mode command together with the BACKSPACE immediate mode
command (which is like a -1L1T) provides a convenient way to step from
line to line within the edit buffer.
.INDENT -1
2 M
.INDENT 5
The M command...
.INDENT -1
2 N
.INDENT 5
The N command is the same as the "S" command, except that
the search continues across page boundaries, if necessary,
until the specified text, or the end of the file, is
encountered.
 The "N" command is of the form:
.SKIP
.LITERAL
     Ntext-to-locate<ESC>
.END LITERAL
 For example, to find the text "find me", which may appear
on a later page in the file, use the command
.SKIP
.LITERAL
     Nfind me$
.END LITERAL
(Note the the <ESC> key echoes as "$" at your terminal.)
.INDENT -1
2 O
.INDENT 5
The O command...
.INDENT -1
2 P
.INDENT 5
The P command is used to write the text in the editing
buffer to the output file and read the next page of text
from the input file to the editing buffer.  Common forms
of the command are:
.SKIP
.LITERAL
     P  Write the current buffer to the output file
        and get the next page
    5P  Write the current buffer, plus the next four
        pages from the input file, to the output file,
        then read the next page from the input file
        into the editing buffer
.END LITERAL
.INDENT -1
2 Q
.INDENT 5
The Q command...
.INDENT -1
2 R
.INDENT 5
The R command...
.INDENT -1
2 RETURN
.INDENT 5
The ^M (or RETURN) command...
.INDENT -1
2 S
.INDENT 5
The S command is used to locate a specified string of
text in the current buffer.  If the text is found, the
pointer is positioned after the specified text.  If the
text is not found, an error message is printed and the
pointer is set to the beginning of the buffer.
 The "S" command is of the form:
.SKIP
.LITERAL
     Stext-to-locate<ESC>
.END LITERAL
 For example, to find the text "find me", use the command
.SKIP
.LITERAL
     Sfind me$
.END LITERAL
 (Note that the <ESC> key echoes as "$" at your terminal.)
.INDENT -1
2 SPACE
.INDENT 5
The SPACE command...
.INDENT -1
2 T
.INDENT 5
The T command is used to type text from the editing
buffer. Common forms of the "T" command are:
.SKIP
.LITERAL
     T  Type text from the pointer to the end of the line
    0T  Type text from the beginning of the current
        line to the pointer
    5T  Print the next five lines of text, starting
        from the pointer
    HT  Print the entire contents of the editing buffer
.END LITERAL
.INDENT -1
2 TAB
.INDENT 5
The ^I (or TAB) command...
.INDENT -1
2 U
.INDENT 5
The U command...
.INDENT -1
2 V
.INDENT 5
The V command...
.INDENT -1
2 W
.INDENT 5
The W command...
.INDENT -1
2 Xq
.INDENT 5
The Xq command...
.INDENT -1
2 Y
.INDENT 5
The Y command...
.INDENT -1
2 Z
.INDENT 5
The Z command...
.INDENT -1
2 [
.INDENT 5
The [ command...
.INDENT -1
2 \
.INDENT 5
The \ command...
.INDENT -1
2 ]
.INDENT 5
The ] command...
.INDENT -1
2 |
.INDENT 5
The | command...
.INDENT -1
1 Conditionals
.INDENT 5
The " command provides TECO's conditional branching capability,
or "if-then-else" construct.  The two general forms of the " command
are
.SKIP
.LITERAL
     n"x<BODY>'               like "if x(n) then <BODY>"

     n"x<BODY1>|<BODY2>'      like "if x(n) then <BODY1> else <BODY2>"
.END LITERAL
.SKIP
Where n is an expression and x is a conditional character.  The
conditional characters determine how the value of the expression
is tested. Conditionals may be nested.
.PARAGRAPH
Additional help is available with TECO COMMANDS ".
.INDENT -1
1 Deletion
.INDENT 5
The following list summarizes TECO's deletion commands.
Additional help is available individually on these commands using
the help keyword COMMANDS.
.SKIP
.LITERAL
D          delete the character following the character pointer
nD         delete n characters following the character pointer
-nD        delete n characters preceeding the character pointer
m,nD       delete characters between positions m and n
FDtext$    search for and delete a text string
FRtext$    equivalent to ^SDItext$
K          delete the line following the character pointer
nK         delete n lines following the character pointer
-nK        delete n lines preceeding the character pointer
m,nK       delete characters between positions m and n
HK         delete the entire edit buffer
FKtext$    delete all characters between here and text
.END LITERAL
.INDENT -1
1 Errors
.INDENT 5
All TECO error messages are of the form
.SKIP
  ?XXX    Short text message
.SKIP
and abort TECO's command execution.
.SKIP
Typing a question mark (?) immediately after TECO's input prompt will
print the erring command string up to and including the error point.
.SKIP
Typing a slash (/) immediately after TECO's input prompt will print a
longer explanation of the error.
.INDENT -1
2 BNI
?BNI    > not in iteration
.SKIP
There is a close angle bracket not matched by an
open angle bracket somewhere to its left. (Note:
an iteration in a macro stored in a Q-register must
be complete within the Q-register.)
.INDENT -1
2 CPQ
?CPQ    Can't pop Q-reg
.SKIP
A ] command has been executed and there is nothing
saved on the Q-register push down list.
.INDENT -1
2 DTB
?DTB    Delete too big
.SKIP
An nD command has been attempted which is not
contained within the current page.
.INDENT -1
2 ERR
?ERR    ID, text
.SKIP
Some VAX/VMS system service call failed. The error
message ID and text explain the error.
.INDENT -1
2 FNF
?FNF    File not found "filespec"
.SKIP
The requested input file could not be located. If
this occurred within a macro the colon modified ER
or EB command may be necessary.
.INDENT -1
2 IAA
?IAA    Illegal A arg
.SKIP
The argument preceding a :A command is negative or 0.
.INDENT -1
2 IEC
?IEC    Illegal E character
.SKIP
An invalid E command has been executed. The E
character must be followed by an alphabetic to form
a legal E command (e.g., ER or EX).
.INDENT -1
2 IFC
?IFC    Illegal F character
.SKIP
An invalid F command has been executed.
.INDENT -1
2 IIA
?IIA    Illegal insert arg
.SKIP
A command of the form "nItext$" was attempted.
This combination of character and text insertion is
illegal.
.INDENT -1
2 ILL
?ILL    Illegal command
.SKIP
An attempt has been made to execute an invalid TECO
command.
.INDENT -1
2 ILN
?ILN    Illegal number
.SKIP
An 8 or 9 has been entered when the radix of TECO
is set to octal.
.INDENT -1
2 IPA
?IPA    Illegal P arg
.SKIP
The argument preceding a P or PW command is
negative or 0.
.INDENT -1
2 IQC
?IQC    Illegal " character
.SKIP
One of the valid " commands did not follow the ".
.INDENT -1
2 IQN
?IQN    Illegal Q-reg name
.SKIP
An illegal Q-register name was specified in one of
the Q-register commands.
.INDENT -1
2 IRA
?IRA    Illegal radix arg
.SKIP
The argument to a ^R radix command must be 8, 10, or 16.
.INDENT -1
2 ISA
?ISA    Illegal search arg
.SKIP
The argument preceding a search command is 0. This
argument must not be 0.
.INDENT -1
2 ISS
?ISS    Illegal search string
.SKIP
One of the search string special characters (^Q,
^R, etc.) would have modified the search string
delimiter (usually ESCAPE).
.INDENT -1
2 IUC
?IUC    Illegal ^ character
.SKIP
The character following an ^ must have ASCII value
between 100 and 137 inclusive or between 141 and 172
inclusive.
.INDENT -1
2 MEM
?MEM    Memory overflow
.SKIP
Insufficient memory available to complete the
current command. Make sure the Q-register area
does not contain much unnecessary text. Breaking
up the text area into multiple pages might be
useful.
.INDENT -1
2 MRP
?MRP    Missing )
.SKIP
There is a right parenthesis that is not matched by
a corresponding left parenthesis.
.INDENT -1
2 NAB
?NAB    No arg before ^_
.SKIP
The ^_ command must be preceded by either a
specific numeric argument or a command that returns
a numeric value.
.INDENT -1
2 NAC
?NAC    No arg before ,
.SKIP
A command has been executed in which a , is not
preceded by a numeric argument.
.INDENT -1
2 NAE
?NAE    No arg before =
.SKIP
The =, ==, or === command must be preceded by
either a specific numeric argument or a command
that returns a numeric value.
.INDENT -1
2 NAP
?NAP    No arg before )
.SKIP
A ) parenthesis has been encountered and is not
properly preceded by a specific numeric argument or
a command that returns a numeric value.
.INDENT -1
2 NAQ
?NAQ    No arg before "
.SKIP
The " commands must be preceded by a single numeric
argument on which the decision to execute the
following commands or skip to the matching ' is
based.
.INDENT -1
2 NAS
?NAS    No arg before ;
.SKIP
The ; command must be preceded by a single numeric
argument on which the decision to execute the
following commands or skip to the matching > is
based.
.INDENT -1
2 NAU
?NAU    No arg before U
.SKIP
The U command must be preceded by either a specific
numeric argument or a command that returns a
numeric value.
.INDENT -1
2 NFI
?NFI    No file for input
.SKIP
Before issuing an input command, such as Y, it is
necessary to open an input file by use of a command
such as ER or EB.
.INDENT -1
2 NFO
?NFO    No file for output
.SKIP
Before issuing an output command such as N search
or P it is necessary to open an output file by use
of a command such as EW or EB.
.INDENT -1
2 NYA
?NYA    Numeric arg with Y
.SKIP
The Y command must not be preceded by either a
numeric argument or a command that returns a
numeric value.
.INDENT -1
2 OFO
?OFO    Output file already open "filespec"
.SKIP
A command has been executed which tried to create
an output file, but an output file currently is
open. It is typically appropriate to use the EC or
EK command as the situation calls for to close the
output file.
.INDENT -1
2 PDO
?PDO    Push-down list overflow
.SKIP
The command string has become too complex.
Simplify it.
.INDENT -1
2 POP
?POP    Pointer off page
.SKIP
A J, C or R command has been executed which
attempted to move the pointer off the page. The
result of executing one of these commands must
leave the pointer between 0 and Z, inclusive. The
characters referenced by a D or m,nX command must
also be within the buffer boundary.
.INDENT -1
2 SNI
?SNI    ; not in iteration
.SKIP
A ; command has been executed outside of an open
iteration bracket. This command may only be
executed within iteration brackets.
.INDENT -1
2 SRH
?SRH    Search failure "text"
.SKIP
A search command not preceded by a colon modifier
and not within an iteration has failed to find the
specified "text". After an S search fails the
pointer is left at the beginning of the buffer.
After an N or _ search fails the last page of the
input file has been input and, in the case of N,
output, and the buffer is cleared. In the case of
an N search it is usually necessary to close the
output file and reopen it for continued editing.
.INDENT -1
2 STL
?STL    String too long
.SKIP
A search or file name string is too long. This is
most likely the result of a missing ESCAPE after
the string.
.INDENT -1
2 UTC
?UTC    Unterminated command
.SKIP
This is a general error which is usually caused by
an unterminated insert, search, or filespec
argument, an unterminated ^A message, an
unterminated tag or comment (i.e., unterminated !
construct), or a missing ' character which closes a
conditional execution command.
.INDENT -1
2 UTM
?UTM    Unterminated macro
.SKIP
This error is the same as the ?UTC error except
that the unterminated command was executing from a
Q-register (i.e., it was a macro). (Note: An
entire command sequence stored in a Q-register must
be complete within the Q-register.)
.INDENT -1
2 XAB
?XAB    Execution aborted
.SKIP
Execution of TECO was aborted. This is usually due
to the typing of CTRL/C.
.INDENT -1
2 YCA
?YCA    Y command aborted
.SKIP
An attempt has been made to execute an Y or _
search command with an output file open, that would
cause text in the text buffer to be erased without
outputting it to the output file. The ED command
controls this check.
.INDENT -1
1 Files
.INDENT 5
TECO can maintain two input and two output files at the
same time. The following commands control files.
.SKIP
.LITERAL
EA    secondary output stream        EL   open log file
EB    open input and output          EN   wildcard lookup
EC    copy and close                 EP   secondary input stream
EF    close output file              ER   open input file
EG    EC with command string         EW   open output file
EI    indirect command file          EX   EC and exit
EK    close, delete output file
.END LITERAL
.SKIP
The following commands input and output to/from files.
.SKIP
.LITERAL
A     append page from input file to edit buffer
EQq   read file into Q-register
EY    yank without protection
P     output edit buffer,  input next page
Y     yank page from input file into edit buffer
.END LITERAL
.SKIP
Individual help is available for each of these commands.
.INDENT -1
1 Flags
.INDENT 5
Flags control the behavior of TECO.
Changing these flags changes the way TECO executes.
Flags are manipulated as follows:
.SKIP
.LITERAL
        <flag>       returns the value of the flag
        n<flag>      set the value of the flag to n
        m,n<flag>    turns off m bits,  turns on n bits
        0,n<flag>    turns on n bits
        m,0<flag>    turns off m bits
.END LITERAL
.SKIP
The flags are:
.SKIP
.LITERAL
        ED   edit level flag           ET   type-out flag
        EH   help level flag           EU   case flag
        EO   TECO version number       EV   edit verify flag
        ES   search verify flag        ^x   search verify flag
.END LITERAL
.SKIP
Additional help is available for each individual flag using
the COMMANDS help keyword.
.INDENT -1
1 Help
.INDENT 5
 TECOC's HELP command allows you to get HELP from the TECOC help library
or the default system library.
To get help about TECOC from the TECOC library, just say "HELP".
To get help from the default system library,  say "HELP/S"
.INDENT -1
1 Initialization
.INDENT 5
TECO initialization...
.INDENT -1
1 Insertion
.INDENT 5
TECO insertion...
.INDENT -1
1 Loops
.INDENT 5
Loops...
.if MACROS
.!++
.! The help section on TECO macros has been commented out since:
.!  1) It isn't complete yet.
.!  2) The macros don't ship anymore.
.INDENT -1
1 Macros
.INDENT -1
2 LOCAL
.INDENT -1
2 TYPE
.INDENT -1
2 SQU
.INDENT -1
2 SEARCH
.INDENT 5
SEARCH.TEC is a TECO macro used to search files for one or more
character strings, and optionally replace them. It is invoked by:
.SKIP
.LITERAL
         MUNG SYS$LIBRARY:SEARCH
.END LITERAL
 When run, it asks the following questions:
.SKIP
.LITERAL
   Output <TT:.SRH>:  Output log file
      Input <*.MAR>:  Input file spec(s)
          Lines <3>:  Number of lines to verify
  (Absolute) Search:  String(s) to search for
            Replace:  Replace for found string (if /CHA specified)
        Detach <No>:  Run detached?
.END LITERAL
 Defaults are shown in angle brackets ("<>"). The "Input" and "Search"
 questions are repeated until they are answered with a blank line.
.INDENT -1
3 Input qualifiers
.INDENT -1
/ALL
 List all file names in main part of log whether they were match or
no-match.
.INDENT -1
3 Output qualifiers
.INDENT -1
/ABS
 Exact case matches are required and TECO special search match
characters must be entered as control characters (i.e., not with an
uparrow).
.INDENT -1
/CHA
 Change found string. This causes "Replace:" to be requested after
every search string. The changed version is logged in the log file,
and the input file is updated.
.INDENT -1
/DIR
 Compile a directory of the files now and use it to search.
.INDENT -1
/ESC
 ESCape is the only delimiter for Search and Replace strings. Normally
a carriage return is used as the delimiter. Thus multi-line search or
replacement strings must be entered using the /ESC option.
.INDENT -1
/MAT
 Report only files with matches (No end list of no-match files).
.INDENT -1
3 Log file
.INDENT 5
For each file which contains at least one match, a banner is printed
out, and each instance, along with the 3 (or the number requested by
the user) lines before and after it. A header line identifying the
page number is printed with each instance. Once all of the files
containing matches are logged, a list of files which do not contain
matches is printed (unless the user specifies "/MAT" or "/ALL").
.INDENT -1
3 File specs
.INDENT 5
SEARCH allows a list of file specifications terminated by a blank line
to be requested. Any or all of these may include wildcards.
.INDENT -1
3 Search strings
.INDENT 5
The search strings are entered as a list ending with a blank line and
are terminated with a carriage return unless "/ESC" is specified. Any
of the TECO string matching constructs may be used. Unless "/ABS" is
used, this includes "^" constructs for control characters, thus "^G"
would search for a CTRL/G (bell) character.
.endif MACROS
.INDENT -1
1 Memory
.INDENT 5
TECO automatically remembers the file being edited. The file's
name is stored in a process logical called TEC$MEMORY. If you
invoke TECO without specifying a file-spec, TECO will read its
memory logical and re-edit the last edited file. TECO's memory
feature is completely inhibited by the /NOMEMORY qualifier.
.INDENT -1
.INDENT -1
1 Qualifiers
.INDENT 5
Qualifiers...
.INDENT -1
2 -c
.INDENT -1
2 -d
.INDENT -1
2 -m
.INDENT -1
2 -p
.INDENT -1
2 -r
.INDENT -1
1 Q-registers
.INDENT 5
Q-register...
.INDENT -1
1 Release_notes
.INDENT 5
Release_notes...
.INDENT -1
1 Searching
.INDENT 5
TECO provides several ways to search for text strings.  The edit buffer
can be searched in a forward or backward direction.  Files can be searched
in a forward direction.  Within the edit buffer,  the area to be searched
can be bounded.  Search commands can return values so that the success or
failure of a search can control execution of macros.  Special match
control characters can be used in search arguments to allow pattern
matching.  Search commands can be modified by the @ character.
.SKIP
.INDENT 5
All search commands leave the character pointer positioned after the last
character in the search string.  Help is available individually for the
following commands:
.SKIP
.LITERAL
    S    edit buffer search        FS   search and replace
    N    file search               FN   file search and replace
    _    destructive file search   FD   search and delete
.END LITERAL
.INDENT -1
2 Match_control_characters
.INDENT 5
TECO supports special match control constructs in search strings.
These constructs allow for special pattern matching.
The constructs are
.SKIP
.LITERAL
 ^EA      alphabetics                  ^EV         lowercase
 ^EB      non-alphanumerics            ^EW         uppercase
 ^EC      alphanumerics, . or $        ^EX         anything
 ^ED      digits                       ^E<nnn>     octal nnn
 ^EGq     anything in q-register q     ^E[a,b..]   a,b...
 ^EL      LF, VT, FF                   ^Nx         anything but x
 ^EMx     * of x                       ^S          non-alphanumerics
 ^ER      alphanumerics                ^X          anything
 ^ES      * of spaces, tabs
.END LITERAL
.INDENT -1
3 ^EA
.INDENT 5
The ^EA match control construct indicates that any alphabetic
character is acceptable in this position.  Alphabetic characters are
upper and lower case characters from a to z.
.INDENT -1
3 ^EB
.INDENT 5
The ^EB match control construct indicates that any seperator
character is acceptable in this position.  Characters other than letters
(a-z upper and lowercase) and digits are seperators.
 The ^EB match control construct is the same as the ^S match control
construct.
.INDENT -1
3 ^EC
.INDENT 5
The ^EC match control construct indicates that any character
that is valid in a symbol name is acceptable in this position.  The
characters that are valid in symbol names are alphanumerics (letters
and digits), period and dollar sign.
.INDENT -1
3 ^ED
.INDENT 5
The ^ED match control construct indicates that any digit character
is acceptable in this position.  Digits are 0 through 9.
.INDENT -1
3 ^EGq
.INDENT 5
The ^EGq match control contruct indicates that any character in
q-register q is acceptable in this position.  For instance,  if q-register
q contains A, B and C,  then A, B or C is acceptable in this position.
.INDENT -1
3 ^EL
.INDENT 5
The ^EL match control construct indicates that any line terminator
character is acceptable in this position.  Line terminator characters are
LINE-FEED, VERTICAL-TAB and FORM-FEED.
.INDENT -1
3 ^EMx
.INDENT 5
The ^EMx match control construct indicates that any non-zero
number of occurrences of x is acceptable in this position.  x can
be another match control construct.
 For instance,  ^EMZ will match Z, ZZ, ZZZ, ZZZZ, etc.
.INDENT -1
3 ^ER
.INDENT 5
The ^ER match control construct indicates that any alphanumeric
character is acceptable in this position.  Alphanumeric characters
are letter (a-z upper or lower case) and digits (0-9).
.INDENT -1
3 ^ES
.INDENT 5
The ^ES match control construct indicates that a non-null string
of spaces and/or tabs is acceptable in this position.
 For instance, the following command string
.SKIP
.LITERAL
j<fs^ES
$
$>$$
.END LITERAL
.SKIP
will trim all spaces and tabs off the end of lines of text in the
edit buffer.
.INDENT -1
3 ^EV
.INDENT 5
The ^EV match control construct indicates that any lower case
alphabetic character (a-z) is accetable in this position.
.INDENT -1
3 ^EW
.INDENT 5
The ^EV match control construct indicates that any upper case
alphabetic character (A-Z) is accetable in this position.
.INDENT -1
3 ^EX
.INDENT 5
The ^EX match control construct indicates that any charater
is acceptable in this position.
 The ^X match control construct is the same as the ^EX match
control construct.
.INDENT -1
3 ^E<nnn>
.INDENT 5
The ^E<nnn> match control construct indicates that the
character that has octal code nnn is acceptable in this position.
This construct is useful for specifying characters in search strings
that would cause unpleasant effects if they were antered directly.
Characters like NULL, DELETE and ESCAPE fall into this category.
.INDENT -1
3 ^E[a,b,c...]
.INDENT 5
The ^E[a,b,c...] match control construct indicates that any
of the characters a, b, c... are acceptable in this position.
 For instance,  the command string
.SKIP
.LITERAL
sth^E[i,a]^E[s,t]$$
.END LITERAL
.SKIP
would match "this" or "that" or "thit" or "thas".
.INDENT -1
3 ^Nx
.INDENT 5
The ^Nx match control construct indicates that any character
except x is acceptable in this position.  x can be a match control
construct.
 For instance,  the command string
.SKIP
.LITERAL
s^N^E[a,b]$$
.END LITERAL
.SKIP
would match any character except lowercase a and lowercase b.
.INDENT -1
3 ^S
.INDENT 5
The ^S match control construct indicates that any seperator
character is acceptable in this position.  Characters other than letters
(a-z upper and lowercase) and digits are seperators.
 The ^S match control construct is the same as the ^EB match control
construct.
.INDENT -1
3 ^X
.INDENT 5
The ^X match control construct indicates that any charater
is acceptable in this position.
 The ^X match control construct is the same as the ^EX match
control construct.
.INDENT -1
2 String_building_characters
.INDENT 5
It is sometimes helpful to be able to include characters within
search arguments that cannot be entered directly.  The ESCAPE character
is a good example,  as are ^C, ^Y and DELETE.  TECO supports special
string building constructs that allow special characters to be entered
in search commands.
.INDENT -1
3 ^Q
.INDENT 5
The ^Q string build construct indicates that the character following
the ^Q is to be used literally rather than as a match control character.
 The ^Q string build construct is the same as the ^R string build
construct.
.INDENT -1
3 ^R
.INDENT 5
The ^R string build construct indicates that the character following
the ^Q is to be used literally rather than as a match control character.
 The ^R string build construct is the same as the ^Q string build
construct.
.INDENT -1
3 ^V
.INDENT 5
The ^V string build construct indicates that the character following
the ^V is to be used as the equivalent character in lower case.  For
instance,  ^VR would equal r in a search argument.
.INDENT -1
3 ^V^V
.INDENT 5
The ^V^V string build construct indicates that all characters
following the ^V^V in the string are to be converted to lower case.
All characters in the string are converted up to the end of the string
or a ^W^W string build construct.  The ^W string build construct can be
used to override the ^V^V on a single-character basis.
.INDENT -1
3 ^W
.INDENT 5
The ^W string build construct indicates that the character following
the ^W is to be used as the equivalent character in upper case.  For
instance,  ^Wr would equal R in a search argument.
.INDENT -1
3 ^W^W
.INDENT 5
The ^W^W string build construct indicates that all characters
following the ^W^W in the string are to be converted to upper case.
All characters in the string are converted up to the end of the string
or a ^V^V string build construct.  The ^V string build construct can be
used to override the ^W^W on a single-character basis.
.INDENT -1
3 ^EQq
.INDENT 5
The ^EQq string build construct that the string contained in
q-register q is to be used in this position in the search string.
.INDENT -1
3 ^EUq
.INDENT 5
The ^EUq string build construct indicates that that character
whose ASCII code is contained in q-register q is to be used in
this position in the search string.
.INDENT -1
1 TECO
.INDENT 5
TECO is a text editing program and a programming language.
It allows the user to edit text interactively using simple,  short
(one or two letter) commands.
The commands can be combined to form TECO programs,  or macros.
These macros can be stored in files and executed by the user while in TECO
or in a stand-alone fashion.
.SKIP
Format:          teco -c -d data -m -p -r filespec
.SKIP
The teco command needs to be defined as a foreign command in your LOGIN.COM
file.
The following lines illustrate how this can be done:
.SKIP
.LITERAL
        te*co   :== $SYS$SYSTEM:TECOC
        ma*ke   :== $SYS$SYSTEM:TECOC -c
        mu*ng   :== $SYS$SYSTEM:TECOC -p
.END LITERAL
