Google
 

Trailing-Edge - PDP-10 Archives - 6.1_emacs_manuals_1er - manuals/tops20-users.manual
There are no other files named tops20-users.manual in the archive.












                      DECSYSTEM-20 User's Guide

                        Order No. AA-4179B-TM

                               May 1977



                       Contents Of This Manual

The DECSYSTEM-20 User's  Guide  describes  the  most  frequently  used
TOPS-20  commands  and  programs;   it does not include every feature,
subcommand, or switch.  Part  I  shows  how  to  combine  use  of  the
commands  and  programs  to  get a particular task done, while Part II
provides a more detailed description of  their  function,  format  and
operation along with hints, error messages and examples.






This document supersedes the document of  the  same  name,  Order  No.
DEC-20-OUGAA-A-D,  published  April  1976  and  its  update, Order No.
DEC-20-OUGAA-A-DN1, published October 1976.






Operating System and Version:      TOPS-20 V02

Software Version:                  FORTRAN V02
                                   COBOL V10
                                   BASIC-PLUS 2 V01
                                   EDIT V02
                                   ALGOL V02



To order additional copies of  this  document,  contact  The  Software
Distribution   Center,   Digital   Equipment  Corporation,  Northboro,
Massachusetts ????
                                                                Page 2


                                            First Printing, March 1976
                                                 Revised, October 1976
                                                 Revised, May 1977










The information in this document is subject to change  without  notice
and  should  not  be  construed  as  a commitment by Digital Equipment
Corporation.  Digital Equipment Corporation assumes no  responsibility
for any errors that may appear in this manual.

The software described in this document is furnished under  a  license
and  may  be  used or copied only in accordance with the terms of such
license.

Digital Equipment Corporation assumes no responsibility for the use or
reliability  of  its  software  on  equipment  that is not supplied by
DIGITAL.





      Copyright (C) 1976, 1977 by Digital Equipment Corporation



The postage-prepaid READER'S COMMENTS form on the last  page  of  this
document  requests  the  user's  critical  evaluation  to assist us in
preparing future documentation.



The following are trademarks of Digital Equipment Corporation:

        DIGITAL                DECSYSTEM-20       MASSBUS
        DEC                    DECsystem-10       OMNIBUS
        PDP                    DECtape            OS/8
        DECUS                  DIBOL              PHA
        UNIBUS                 EDUSYSTEM          RSTS
        COMPUTER LABS          FLIP CHIP          RSX
        COMTEX                 FOCAL              TYPESET-8
        DDT                    INDAC              TYPESET-10
        DECCOMM                LAB-8              TYPESET-11
                                                                Page 3









                               CONTENTS



                                                                 Page

                   To The Reader
                   How To Use This Manual
                   Conventions

PART     I         USING THE DECSYSTEM-20

CHAPTER  1         COMPONENTS OF THE TOPS-20 OPERATING SYSTEM
         1.1       COMMAND LANGUAGES
         1.1.1       THE TOPS-20 Command Language
         1.1.2       The Batch Command Language
         1.2       SYSTEM PROGRAMS

CHAPTER  2         GIVING TOPS-20 COMMANDS
         2.1       GETTING  THE SYSTEM'S ATTENTION (CTRL/C)
         2.2       THE TOPS-20 PROMPT (@) AND OTHER PROGRAM
                   PROMPTS
         2.3       OBTAINING A LIST OF TOPS-20 COMMANDS
         2.4       THE PARTS OF A TOPS-20 COMMAND
         2.5       OBTAINING INFORMATION ABOUT THE PARTS OF A
                   COMMAND
         2.6       TYPING COMMANDS
         2.6.1       Recognition Input
         2.6.2       Abbreviated Input
         2.6.3       Combined Recognition and Abbreviated
                     Input
         2.6.4       Subcommands
         2.7       CORRECTING TYPING ERRORS
         2.7.1       Erasing One Character (DELETE)
         2.7.2       Reprinting a Line (CTRL/R)
         2.7.3       Erasing An Entire Line (CTRL/U)
         2.7.4       Erasing A Single Field Of A Command
                     (CTRL/W)
         2.8       ADDING REMARKS AT THE END OF A COMMAND (!)
         2.9       SPACES, TABS, LOWERCASE AND FORMFEED

CHAPTER  3         JOBS
         3.1       STARTING COMMUNICATION WITH TOPS-20
         3.2       CREATING A JOB - THE LOGIN COMMAND
         3.2.1       User Names
         3.2.2       Passwords
         3.2.3       Account Descriptors
         3.2.4       LOGIN.CMD And BATCH.CMD Files
         3.2.5       COMAND.CMD Files
         3.2.6       Autologout
         3.3       ENDING A JOB
         3.4       SUBMITTING A BATCH JOB
         3.4.1       Creating A Control File
         3.4.2       Submitting A Control File To The Batch
                     System (SUBMIT)
         3.4.3       Checking A Batch Job
         3.4.4       Examining The Output From A Batch Job
                                                                Page 4


                           CONTENTS (CONT.)



                                                                 Page

         3.5       GETTING INFORMATION ABOUT JOBS AND USERS
         3.6       IF THE SYSTEM STOPS

CHAPTER  4         SYSTEM STORAGE DEVICES
         4.1       DISK STORAGE
         4.1.1       File Structures
         4.1.2       Directories

         4.1.2.1     CONNECT
         4.1.2.2     ACCESS
         4.1.3       File Protection
         4.1.3.1     Directory Protection Numbers
         4.1.3.2     File Protection Numbers
         4.1.3.3     Checking Protection Numbers
         4.1.3.4     Printing A File Protection Number
         4.1.3.5     Changing A File Protection Number
         4.1.4       Groups
         4.1.5       Accounts
         4.1.6       Deleted Disk Files
         4.1.7       Regulating Disk File Storage
         4.1.8       Temporary Files
         4.2       MAGNETIC TAPE STORAGE
         4.2.1       Assigning A Tape Drive To Your Job
         4.2.2       Setting Tape Parameters
         4.2.3       Positioning The Tape
         4.2.4       Using The DUMPER Program

CHAPTER  5         FILE SPECIFICATIONS
         5.1       COMPLETE FORM OF A FILE SPECIFICATION
         5.2       DEVICE NAMES - DEV:
         5.3       DIRECTORY NAMES - <DIR>
         5.3.1       Project Programmer Numbers - [Proj,Prog]
         5.4       FILE NAMES - NAME
         5.5       FILE TYPES - .TYP
         5.6       GENERATION NUMBERS - .GEN
         5.7       FILE ATTRIBUTES - ;A, ;P, ;T
         5.8       SPECIFYING GROUPS OF FILES USING * AND %
         5.9       SPECIFYING SPECIAL CHARACTERS - CTRL/V
         5.10      TYPING FILE SPECIFICATIONS
         5.11      SEPARATING FILE SPECIFICATIONS WITH COMMAS
         5.12      LOGICAL NAMES
         5.12.1      Defining, Printing And Removing A
                     Logical Name
         5.12.2      Using A Logical Name
         5.12.2.1    The Logical Name DSK:
         5.12.2.2    Library Directories
         5.12.2.3    The Logical Name SYS:

CHAPTER  6         CREATING AND EDITING FILES
         6.1       CREATING A FILE
         6.2       EDITING A FILE
         6.3       EDITING A FILE IN ANOTHER DIRECTORY
         6.4       RECALLING ARGUMENTS TO CREATE AND EDIT
                   COMMANDS
                                                                Page 5


                           CONTENTS (CONT.)



                                                                 Page

CHAPTER  7         RUNNING SYSTEM PROGRAMS AND USER PROGRAMS
         7.1       RUNNING SYSTEM PROGRAMS
         7.2       GIVING COMMANDS TO SYSTEM PROGRAMS
         7.3       GETTING INFORMATION ABOUT SYSTEM PROGRAMS
         7.4       THE SWITCH.INI OPTION FILE
         7.5       RUNNING USER PROGRAMS
         7.6       CONTROLLING PROGRAMS AND COMMANDS
         7.6.1       Typing CTRL/C To Halt Execution
         7.6.2       Typing CTRL/O To Stop Output To
                   Your Terminal
         7.6.3       Typing CTRL/T To Print The Run Status
         7.7       RUNNING PROGRAMS WITHOUT DESTROYING MEMORY

CHAPTER  8         PRODUCING AND RUNNING YOUR OWN PROGRAMS
         8.1       PRODUCING A SIMPLE PROGRAM
         8.1.1       Writing The Source Program
         8.1.2       Entering The Program Into A File
         8.1.3       Executing The Program
         8.1.4       Debugging The Program
         8.1.5       Saving The Program For Future Use
         8.2       PREPARING A MULTI-MODULE PROGRAM
         8.2.1       Writing The Program Modules
         8.2.2       Entering The Modules Into Files
         8.2.3       Executing The Program
         8.2.4       Producing A Cross-Reference Listing
         8.2.5       Using Subroutine Libraries
         8.2.5.1     Entering The Subroutines Into Files
         8.2.5.2     Compiling The Subroutines
         8.2.5.3     Creating The Library File
         8.2.5.4     Using The Library File
         8.2.5.5     Changing A Subroutine In The Library
         8.2.6       Saving The Program For Future Use
         8.2.7       Saving Arguments In Indirect Files
         8.2.8       Comparing Changes In Files
         8.3       THE LOAD-CLASS COMMANDS (COMPILE, LOAD,
                   EXECUTE, DEBUG)
         8.3.1       Object (Relocatable) And Executable
                     Programs
         8.3.1.1     Using Relocatable Object Programs
         8.3.1.2     Saving Executable Programs
         8.3.2       Selecting A File And Recognizing
                     The Programming Language
         8.3.2.1     Using Non-standard File Types
         8.3.2.2     Using The File Type .REL
         8.3.2.3     Examples
         8.3.3       Re-producing Only Out-of-date Object
                     Programs
         8.3.4       Recalling Arguments To LOAD-class Commands
         8.3.5       Taking Arguments From An Indirect File
         8.3.6       Appending Files To Produce One Source
         8.3.7       Passing Switches To The LINK Program
         8.3.8       Specifying Special Actions With Switches

CHAPTER  9         CONTROLLING YOUR TERMINAL
         9.1       SETTING THE TERMINAL SPEED
         9.2       DECLARING THE TERMINAL TYPE
         9.3       CONTROLLING TERMINAL OUTPUT
         9.3.1       Starting And Stopping Terminal Output
                                                                Page 6


                           CONTENTS (CONT.)



                                                                 Page

         9.3.2       Printing Formfeeds
         9.3.3       Simulating Formfeeds
         9.3.4       Setting The Page Length
         9.3.5       Simulating Tab Stops
         9.3.6       Setting The Line Width
         9.4       USING UPPERCASE AND LOWERCASE LETTERS
         9.4.1       Raising Lowercase Letters In Input
         9.4.2       Printing Lowercase Letters In Output
         9.4.3       Testing For Lowercase Letters
         9.5       TALKING TO OTHER USERS

PART     II     COMMAND AND PROGRAM DESCRIPTIONS

ACCESS          Grants "owner" and "group" privileges to a
                specified directory.
ALGOL           How to prepare and run an ALGOL program
APPEND          Adds a source file(s) to a destination file
ASSIGN          Allocates an input/output device to your job
BACKSPACE       Rewinds a magnetic tape
BASIC           How to prepare and run a BASIC program
BATCH           How to prepare and run a Batch job
BREAK           Breaks all links to or from your terminal
CLOSE           Closes all files which are currently open
COBDDT          Debugs COBOL programs
COBOL           How to prepare and run a COBOL program
COMPILE         Translates a source program
CONNECT         Connects your job to a specified directory
CONTINUE        Resumes execution of a stopped program
COPY            Copies a source file to a destination
CREATE          Runs EDIT to create a new program
CREF            Produces a cross-reference listing of a
                program
DAYTIME         Prints the day, date, and time
DDT             (command) Transfers control to a debugger
DDT             Debugs programs
DEASSIGN        Deallocates an input/output device
DEBUG           Prepares your program for debugging
DEFINE          Defines logical names
DELETE          Identifies files for eventual deletion
DIRECTORY       Prints information about specified files
DUMPER          Saves files on magnetic tape
EDIT            (command) Runs EDIT to change or create
                a file
EDIT            Changes the contents of a file
EOF             Writes an end-of-file mark on magnetic tape
EXECUTE         Compiles, loads, and starts your program
EXPUNGE         Erases previously deleted files
FDIRECTORY      Prints all the information about a file(s)
FILCOM          Compares two files
FORDDT          Debugs FORTRAN programs
FORTRAN         How to prepare and run a FORTRAN program
GET             Places an executable program in memory
HELP            Prints information about programs
INFORMATION     Prints system and job information
LOAD            Compiles and loads a program into memory
LOGIN           Declares that you want to use the system
LOGOUT          Ends your job
MACRO           How to prepare and run a MACRO program
                                                                Page 7


                           CONTENTS (CONT.)

                                                                 Page

MAIL            Sends a message to another user
MAKLIB          Creates and edits subroutine libraries
MERGE           Weaves an executable program into memory
PLEASE          Starts communication with the operator
POP             Returns you to the next higher process
PRINT           Prints a file(s) on the line printer
PUSH            Creates an inferior process
RDMAIL          Prints the contents of your mail
RENAME          Changes the name of a file
RESET           Clears your job without logging off the
                system
REWIND          Rewinds a magnetic tape

RUN             Runs a program from your directory
SAVE            Saves the program in memory in a disk file
SDISMOUNT       Informs the system that a file structure
                is no longer needed
SET             Sets various job parameters
SKIP            Advances a magnetic tape over files and records
SMOUNT          Requests that a file structure be mounted
SORT            Orders records within a file
START           Starts the program in memory
SUBMIT          Places your job in the Batch input queue
SYSTAT          Prints system status information
TALK            Links your terminal to another terminal
TDIRECTORY      Prints time-ordered information about a file(s)
TERMINAL        Sets terminbl parameters
TMOUNT          Requests a tape drive for your job
TRANSL          Translates directory names to proj-prog numbers
nType           prints a file on your terminal
UNDELETE        Restores a previously deleted disk file
UNLOAD          Rewinds a magnetic tape onto the source reel
VDIRECTORY      Prints frequently-used file information

APPENDIX A         STANDARD FILE TYPES



                               FIGURES


FIGURE   2-1       The Fields Of A Command
         4-1       File-Sharing Group
         4-2       Library Group
         4-3       Teacher-Student Group
         8-1       Source, Object, and Executable Programs



                                TABLES


TABLE    3-1       Illegal Commands In Batch Jobs
         4-1       Directory Protection Digits
         4-2       File Protection Digits
         5-1       Device Names
         5-2       Special System Programs And Commands
         5-3       Symbolic Generation Numbers
         7-1       Commands And Programs That Check SWITCH.INI
         7-2       CTRL/T Status Messages
                                                                Page 8


                           CONTENTS (CONT.)



                                                                 Page

         7-3       Unexpected Process Termination Messages
         8-1       LOAD-class Command Standard File
                   Specifications
         II-1      BASIC Commands
         II-2      Batch Commands
         II-3      COBDDT Commands
         II-4      COMPILE Command Switches
         II-5      CREATE Command Switches
         II-6      DEBUG Command Switches
         II-7      DUMPER Commands
         II-8      File Descriptor Block (FDB) Entries
         II-9      EDIT Command Switches

                   II-10 EDIT Commands
                   II-11 EDIT Parameters
                   II-12 EXECUTE Command Switches
                   II-13 FILCOM Switches
                   II-14 FORDDT Commands
                   II-15 INFORMATION Parameters
                   II-16 LOAD Command Switches
                   II-17 MAKLIB Switches
                   II-18 PRINT Command Switches
                   II-19 RDMAIL Switches
                   II-20 SET Command Parameters
                   II-21 SORT Switches
                   II-22 SUBMIT Command Switches
                   II-23 Terminal Parameters
                    A-1 Standard File Types
                                                                Page 9


                            To The Reader


The DECSYSTEM-20 User's Guide is written for the user  who  knows  the
information in Getting Started With DECSYSTEM-20 but who needs to know
more detail about the system to complete a job.  Before  reading  this
manual, you should know how to do all of the following:

     1.  Turn on your terminal (in some cases you should also know how
         to connect to the DECSYSTEM-20 via your telephone).

     2.  Log in to the system.

     3.  Use EDIT to enter information into a file.

     4.  Run a system program, or give an EXECUTE command to run  your
         own program.

     5.  Use a few TOPS-20 commands  such  as  DIRECTORY,  SYSTAT  and
         PRINT.

If you do not know these procedures, using this manual will be  easier
after you read Getting Started With DECSYSTEM-20.  In addition, if you
plan to create data or program files, it is recommended that you  read
the EDIT User's Guide before using this manual.  The EDIT User's Guide
is written for both the beginner and  experienced  DECSYSTEM-20  user.
It explains how to name, create, change and save files using EDIT.

The manual assumes that you have a job to get done:  either developing
your  own  programs  or using an application program such as RUNOFF or
SORT.  You do not have to understand assembly language programming  to
use this manual.



                        How To Use This Manual

This manual is not intended to be read from cover to cover.   However,
you should read the nine chapters in Part I that introduce many of the
commands and programs you can use to get your work done.  Then,  after
learning  about  a  command  or  program,  refer  to the more complete
description in Part II.

If there is a specific function you want the system to  perform,  find
the  method  by  referring  to the Table of Contents, which includes a
1-line description of commands and programs.
                                                               Page 10


          Conventions Used In The DECSYSTEM-20 User's Guide


Symbol                    Represents


_               (Underline) Anything you type or are expected to  type
                on your terminal.  Any printing the system does is not
                underlined.

                Indicates when you should press the RETURN key.

\               (Backslash) Indicates when you should press the RUBOUT
                or DELETE key.

dev:            Any physical or logical device or structure name.  You
                must  include  the  colon  when a device, structure or
                logical name is used as part of a file  specification.
                Examples:

                     LPT:          (line printer)
                     MTA3:         (magnetic tape unit number 3)
                     DSK:          (current connected structure)
                     PS:           (Public Structure)

<dir>           A directory name  enclosed  in  either  angle  < >  or
                square [ ] brackets.  Examples:

                     [JONES]
                     <SIDLEY>
                     <HOLLICK-KENYON>

[proj,prog]     A project-programmer number.  Examples:

                     [2,235]
                     [1,236]
                     [4,551]

account         An account descriptor that is either an account string
                or an account number.  Examples:

                     10300
                     OVERHEAD
                     DIRECT-LABOR

prot            A 6-digit (octal) file or directory protection number.
                Examples:

                     777700
                     777752

filespec        A single file specification  consisting  of  a  device
                name,  file  structure name or logical name (optional,
                if the current connected  structure  is  implied);   a
                directory  name enclosed in brackets (optional, if the
                current connected directory is implied);  a file name,
                type  (optional);  and a generation number (optional).
                Examples:

                     MTA2:MYFILE
                     <BOURKE>DESERT.LOC.8
                     TRIAL.RUN
                     <BAKER>*.FOR
                     ADMIN:<LIMON>STOCK.PRI.
                                                               Page 11


                     DSK:<SCHIED>TEST.FOR
                     ACCT:<HURLEY>HIST.CBL.2;P777752;A123;T

    Conventions Used In The DECSYSTEM-20 User's Guide (Continued)

Symbol                   Represents

filespecs       One or more file specifications separated  by  commas.
                Spaces and tabs can be placed after commas.  Examples:

                     TRIAL.RUN, <BOURKE>DESERT.LOC.8
                     MODULE.NUM.3, PULSE.LEN, DIPOLE.MNT, LIFT.FRC

name.typ.gen    Any file name, type, and generation number.  Example:

                     NATION.CAP.7
                     POPUL.DEN.16

destination     A file to which data is being transferred.
 file

output file     A file that is created as a result of a command.

file structure  One  or  more  disk  packs   logically   grouped   and
                referenced under one name.  Examples:

                     File structure ADMIN:  could be comprised of  two
                     disk packs containing administrative files.

JFN             A valid (octal) job file number.  Example:

                     23











                              CHAPTER 1

              COMPONENTS OF THE TOPS-20 OPERATING SYSTEM



A timesharing operating system allows many people to use a computer at
the same time.  As a timesharing user, you can create and run your own
programs.  Alternatively, you can share other users' programs  or  use
standard  programs provided with the system.  Although you can benefit
from sharing programs and data, the system also  allows  you  to  keep
information confidential.

The Timesharing Operating System, TOPS-20, is a program that makes  it
possible to timeshare the DECSYSTEM-20 computer.  (An operating system
can also be called a monitor or  supervisor.)  The  TOPS-20  Operating
System  performs  varied  services  for  users  by  responding  to the
commands and programs they use.



1.1  COMMAND LANGUAGES

The following paragraphs briefly introduce you to the TOPS-20  command
language and the Batch command language.



1.1.1  The TOPS-20 Command Language

As a timesharing user, your work is  accomplished  by  giving  TOPS-20
commands  from your terminal.  With these commands, you can manipulate
files, retrieve system information, run  programs,  and  perform  many
other operations.



1.1.2  The Batch Command Language

If you frequently give a fixed set of commands, you can store them  in
a  control  file  instead  of  repeatedly  typing the commands on your
terminal.  You can submit a control file to the  Batch  system  via  a
punched  card  deck  or your terminal.  Submitting this file creates a
job and the Batch system executes the commands stored in  the  control
file.  After executing the last command in the control file, the Batch
system  ends  the  job.   A  control  file  can  contain  almost   any
combination of TOPS-20 commands, program commands, and Batch commands.
COMPONENTS OF THE TOPS-20 OPERATING SYSTEM                    Page 1-2


1.2  SYSTEM PROGRAMS

You can run any one or more than  one  of  a  collection  of  programs
provided  with  the  DECSYSTEM-20.  These system programs help you get
your work done easily and quickly.  Some of  the  more  commonly  used
system  programs  are  the programming languages (ALGOL, BASIC, COBOL,
and FORTRAN), the EDIT program, and the SORT program.

You can give the command:

     @DIRECTORY (OF FILES) SYS:

This command prints the names of the available system programs on your
terminal.   You  can  also  give the HELP command to print information
about selected programs.











                              CHAPTER 2

                       GIVING TOPS-20 COMMANDS



This chapter describes:

     1.  Getting the system's attention (CTRL/C)

     2.  The TOPS-20 prompt (@) and other program prompts

     3.  Obtaining a list of TOPS-20 commands

     4.  The parts of a TOPS-20 command

     5.  Obtaining information about the parts of a command

     6.  Typing commands

     7.  Correcting typing errors

     8.  Adding remarks

     9.  Spaces, tabs, lowercase, and formfeed.




2.1  GETTING THE SYSTEM'S ATTENTION (CTRL/C)

Before you can log in, you must type a CTRL/C to get the attention  of
the  TOPS-20 Operating System.  To do this, press the key labeled CTRL
(CTRL is an abbreviation for Control) and, at the same time, type a C.
Typing  a  C  in this way is referred to as typing a CTRL/C.  In fact,
you can type any control character by pressing the CTRL  key  and,  at
the  same  time,  typing  the  appropriate  character.  There are many
control characters that you may use frequently.  (Refer to  the  chart
on  the back of the Part I divider for a brief description of commonly
used control characters.)  After  you  type  the  CTRL/C,  the  system
prints a greeting message followed by an @ sign on the next line.  The
greeting message varies from system to system, but it  is  similar  to
the sample below.

CTRL/C

 2102 Development System, TOPS-20 Monitor 2(233)
@

2102  Development  System  is  the  name  of  the  particular  TOPS-20
installation  that  you  are  using;   it  is usually replaced by your
system's name.  TOPS-20 Monitor 2(233) is the version of  the  TOPS-20
Operating  System  that  is in use;  this number changes as the system
software develops.
GIVING TOPS-20 COMMANDS                                       Page 2-2


If you type anything other than a CTRL/C,  the  system  warns  you  by
ringing the terminal's bell and ignores your input.

If you have typed a CTRL/C and the system is not available for use, it
prints one of the following messages or it does not respond at all.

     ?LOGGING IN ON LOCAL TERMINALS IS CURRENTLY DISALLOWED
     ?LOGGING IN ON REMOTE TERMINALS IS CURRENTLY DISALLOWED
     FULL

Contact your system manager for the times  when  the  system  will  be
available.  When the system resumes operation, it prints the following
messages on your terminal:

     System restarting, wait...
and after a few moments:
     [FROM OPERATOR: SYSTEM IN OPERATION]

If you want to see the information in the greeting message again, give
the INFORMATION (ABOUT) VERSION command.



2.2  THE TOPS-20 PROMPT (@) AND OTHER PROGRAM PROMPTS

On the line immediately below the greeting message, the system  prints
an  @ sign.  This is the TOPS-20 prompt;  after it is printed, you can
give a TOPS-20 command.

Once you give a command, the system either carries out the command or,
if  it  encounters  an  error, rejects the command.  In the case of an
error, you  can  reissue  the  command  correctly.   When  the  system
finishes processing the command, it prints the @ prompt;  at this time
you can give another command.  If the system does  not  print  the  @,
type two CTRL/Cs and try again.

You can  give  different  classes  of  commands  at  different  times,
depending  on  whether  you are at TOPS-20 command level or at command
level for the program you are running.  The system prints a prompt  to
help you remember at which command level you are.  For program command
level, a prompt is an asterisk or some other distinctive character, or
the  program  name  followed  by  a right-angle bracket.  Whenever the
system prints the @ prompt, you can type  only  TOPS-20  commands  and
program  names;   whenever  the  system prints another prompt, you can
type only commands that that program accepts.   For  example,  if  you
enter the program command DUMPER and the system prints:

     DUMPER>

you are at DUMPER command level and can type  only  the  valid  DUMPER
commands  listed in Part II.  Another program command is SORT.  If you
type SORT and the system prints an *, you are at  SORT  command  level
and  can  type  only SORT commands.  Many programs use the asterisk as
their prompt, so always remember which program you are using.  (If you
forget,  type  a  CTRL/C, give the TOPS-20 command INFORMATION (ABOUT)
VERSION, read the program name from the second line, and then give the
CONTINUE command.)

If you are at command level in a particular program, you can return to
TOPS-20  command  level  by typing two CTRL/Cs;  the system prints the
TOPS-20 prompt, @.  If you are using either BASIC or  EDIT,  you  must
give  either  the  MONITOR  command  (for BASIC) or the E command (for
EDIT) to return to TOPS-20 command level.
GIVING TOPS-20 COMMANDS                                       Page 2-3


2.3  OBTAINING A LIST OF TOPS-20 COMMANDS

After the system prints an @, you can type a question mark to print  a
list  of  the  TOPS-20  commands.  If you want to stop the printout of
these commands, type a CTRL/O.  CTRL/O suppresses the  printed  output
but  the system program continues to process the command.  If you type
a second CTRL/O, the output on your  terminal  will  continue  at  the
point  where  the  process  is  currently executing.  Therefore, it is
possible to peruse long printouts by typing CTRL/Os to stop and  start
it again.  When the process is complete, the @ sign appears indicating
you are at TOPS-20 command level and can enter another  command.   The
example  below  shows  the  process of typing the ?  then stopping the
printout by typing a CTRL/O.  Anything you would type is underlined.


                                 HINT
               Refer  to  the  PAGE  argument  of   the
               TERMINAL  command  if you have a display
               terminal and want to control information
               from moving off the screen.

CTRL/C

 2102 Development System, TOPS-20 Monitor 2(233)
@?
Commands are:
ACCESS
ADVISE
APPEND
ASSIGN
ATTACH
BACKSPACE
BREAK
CLOSE
COMPILE
CONNECT
CONTINUE
COPY
CREATE
CREF
CSAVE
DAYTIME CTRL/O
DDT
DEASSIG ^O...
@

One of the commands is the DAYTIME command.  This command  prints  the
date and time on your terminal;  it is one of the few commands that do
not require you to be logged in to the system.  To  give  the  DAYTIME
command, type DAYTIME and press the key labeled RETURN.  (This key may
be labeled CR or CAR RET and is located  at  the  right  side  of  the
keyboard.)  The system prints the day and time in a message similar to
the one below:

     @DAYTIME
      Friday, January 16, 1976 10:17:11
     @

In the above example and in the rest of the manual, anything you  type
(or  are  supposed to type) is underlined.  If, in typing the command,
you mistype DAYTIME, you can erase one character at a time by pressing
the  DELETE  key.   (The DELETE key may be labeled RUBOUT or DEL.) For
every character you delete, the system prints  the  deleted  character
followed  by  a  backslash;  refer to the example below.  (If you give
GIVING TOPS-20 COMMANDS                                       Page 2-4


the TERMINAL command to set display mode for  a  VT05,  VT50  or  VT52
terminal,  the  system  removes  the deleted character from the screen
rather than printing the deleted character followed by a backslash.)

     @DATT\YTIME
      Friday, January 16, 1976 10:17:44
     @

Type the three letters DAT. Press the DELETE key to delete the T;  the
system  prints  a  T  followed  by  a  backslash.   Type  the  correct
character, Y, and the letters TIME;  then press the RETURN key.

You can use the following commands without  being  logged  in  to  the
system:

ATTACH, BREAK,  DAYTIME,  INFORMATION,  LOGIN,  LOGOUT,  SET,  SYSTAT,
TERMINAL, and UNATTACH.

If you try to give any other command before  logging  in,  the  system
responds by printing the message ?LOGIN please.

The next section describes the parts of a TOPS-20 command,  using  the
LOGIN command as an example.



2.4  THE PARTS OF A TOPS-20 COMMAND

Each TOPS-20 command contains a combination of the following parts:

     1.  A command name

     2.  Guide words

     3.  Arguments

     4.  Switches

     5.  Subcommands

     6.  A command terminator

A command name identifies the  command  and  describes  its  function.
Guide  words  describe the kind of argument that you should type.  The
argument is the information acted upon by the command;  a  file  name,
for example, is a common argument.  Switches and subcommands modify or
specialize the function of the command  in  which  they  appear.   The
command  terminator  is a carriage return/linefeed sequence (generated
by pressing the RETURN, CR, or CAR RET key) or a  linefeed  (generated
by pressing the LF, or LINEFEED, key).

Terminate a 1-line command by pressing the RETURN key.   For  example,
the following DIRECTORY command is a 1-line command.

     @DIRECTORY (OF FILES) TEST.FOR

        <NESTLE>
      TEST.FOR.3
     @

To include subcommand(s), terminate the command line by typing a comma
and pressing the RETURN key.  The system prints @@ to indicate you can
type subcommands.  Terminate each subcommand by  pressing  the  RETURN
key.   After  typing  the  last subcommand, press the RETURN key;  the
GIVING TOPS-20 COMMANDS                                       Page 2-5


system responds with the subcommand prompt @@;  press the  RETURN  key
again.   The  following  DIRECTORY command lists all your deleted (but
not erased) files.

     @DIRECTORY (OF FILES) ,
     @@DELETED (FILES ONLY)
     @@

        <NESTLE>
      TEST.FOR.2
        .QOR.1
        .REL.3

      TOTAL OF 3 FILES
     @

Each part of a TOPS-20  command  or  subcommand  (subcommands  contain
names,  guide  words,  and arguments of their own) is referred to as a
field and is separated from each  adjacent  field  by  a  space.   For
example, the next diagram shows the fields of the LOGIN command.


@LOGIN (USER) user name (PASSWORD) password (ACCOUNT) account

   !      !       !          !         !        !     !      !

                                                        terminator
   !      !       !          !         !        !     argument
   !      !       !          !         !        guide word
   !      !       !          !         argument
   !      !       !          guide word
   !      !       argument
   !      guide word
   command name


                 Figure 2-1  The Fields Of A Command


Type the command name, press the ESC key.  Type an argument after  the
system  prints  a  guide word.  The latter procedure is repeated until
you reach the end of the command and press the  RETURN  key.   If  you
make  a  mistake  in  typing a command, you can erase using the DELETE
key, CTRL/W and CTRL/U.  Refer to Section 2.6 for more information  on
typing commands.



2.5  OBTAINING INFORMATION ABOUT THE PARTS OF A COMMAND

You already know that typing a question mark after an @ prints a  list
of  the  TOPS-20  commands.   When  you  are  unsure  of  a command or
subcommand argument, you can also type a question mark to  print  some
helpful  information  about  what  you  should type.  Use the TERMINAL
command as an example.  Type TERM and press the ESC key;   the  system
prints INAL (MODE IS).  Now type a question mark;  the system prints a
list of all the arguments you can type, then reprints the command.

     @TERMINAL (MODE IS) ? ONE OF THE FOLLOWING:
      33
      35
      37
      EXECUPORT
      FLAG
GIVING TOPS-20 COMMANDS                                       Page 2-6


      FORMFEED
      FULLDUPLEX
      HALFDUPLEX
      HELP
      IMMEDIATE
      INDICATE
      LA30
      LA36
      LENGTH
      LINE-HALFDUPLEX
      LOWERCASE
      NO
      PAGE
      RAISE
      SPEED
      TABS
      TERMINET
      TI
      TYPE
      VT05
      VT50
      VT52
      WIDTH

     @TERMINAL (MODE IS)

Give the WIDTH argument.  Type WID and press the ESC key;  the  system
prints TH (OF LINE IS).

     @TERMINAL (MODE IS) WIDTH (OF LINE IS)

Type another question mark  to  find  out  what  argument  the  system
expects  you  to  give.   The  system  prints  NUMBER and reprints the
command.

     @TERMINAL (MODE IS) WIDTH (OF LINE IS) ?  NUMBER
     @TERMINAL (MODE IS) WIDTH (OF LINE IS)

Choose a number (the example uses 70);  type it, and press the  RETURN
key.

     @TERMINAL (MODE IS) WIDTH (OF LINE IS) 70
     @

If the system prints CONFIRM WITH CARRIAGE RETURN, you are at the  end
of  the command;  press the RETURN key to confirm the command and have
the system perform the operation you requested.

     @RESET ?  CONFIRM WITH CARRIAGE RETURN
     @RESET
     @



2.6  TYPING COMMANDS

You can type TOPS-20 commands by using recognition input,  abbreviated
input or full input.

To use recognition input, type a portion of the command and press  the
ESC key.  The system completes as much of the command as it can and/or
rings the terminal's bell asking you to type more.   Continue  typing,
pressing the ESC key and letting the system complete the command.
GIVING TOPS-20 COMMANDS                                       Page 2-7


To use abbreviated input, type just the unique portion of the  command
name,  arguments,  and subcommands separating the fields with a space.
File specifications cannot be abbreviated.  Note that as  the  TOPS-20
system  is developed, the unique portion may change.  For this reason,
abbreviated input is not recommended for Batch control files.

When using full input, type  complete  command  names,  arguments  and
subcommands,  using  a  space  to  separate fields.  Commands in Batch
control files should use full input.

The LOGIN command, which identifies you to the system, is used in  the
following examples of recognition input and abbreviated input.



2.6.1  Recognition Input

When you give a command using recognition input, type a portion of the
command,  then  press  the ESC key.  The system responds by printing a
guide word, by printing the  rest  of  an  argument,  by  ringing  the
terminal's  bell  asking you to type more, or by printing a ?  showing
that you made an error.  Continue typing  and  pressing  the  ESC  key
until the command is complete.

The LOGIN command can be given using recognition input as shown in the
following   example.   In  the  notation  used  below,  you  type  the
underlined  portions  of  the  command.   At  the  point   where   the
underlining  stops,  press the ESC key.  This notation is used to show
recognition input throughout the rest of the manual.

     @LOGIN (USER) STEWART (PASSWORD)  (ACCOUNT) 14569

To give the command, type LOG and  press  the  ESC  key;   the  system
finishes  printing the LOGIN command name, i.e., it prints IN, then it
prints the guide word  (USER).   Type  your  user  name  (here  it  is
STEWART)  and  press the ESC key;  the system prints (PASSWORD).  Type
your password (it is not printed) and press the ESC key;   the  system
prints  (ACCOUNT).  Type your account (here it is 14569) and press the
RETURN key.

Should you try to  use  recognition  in  a  place  where  its  use  is
ambiguous,  the  system  rings  your terminal's bell.  Try typing more
information, or type a question  mark  to  discover  what  the  system
expects  you to type.  (You cannot use the question mark when typing a
file  specification.)  Try  recognition  by  repeating  the  following
example.   Type INFO and press the ESC key;  the system prints RMATION
(ABOUT).  Type a T, then press the ESC  key.   The  system  rings  the
terminal's  bell,  so  type a ?  to find out what to type.  The system
prints TAPE-PARAMETERS and TERMINAL-MODE:  you are  able  to  conclude
that  the  system could not complete the argument because the letter T
is ambiguous.  Type an A and press the ESC key;  this time the  system
prints PE-PARAMETERS.  Press the RETURN key to complete the command.

     @INFORMATION (ABOUT) T? ONE OF THE FOLLOWING:
      TAPE-PARAMETERS
      TERMINAL-MODE

     @INFORMATION (ABOUT) TAPE-PARAMETERS
      SET TAPE DENSITY 1600
      SET TAPE PARITY ODD
      SET TAPE FORMAT CORE-DUMP
      SET TAPE RECORD-LENGTH 512
     @
GIVING TOPS-20 COMMANDS                                       Page 2-8


You can use recognition in typing  arguments,  subcommands,  and  file
specifications.   When  typing  file  specifications,  you  can use an
additional character, CTRL/F, which recognizes only the  current  file
name,  type,  or  generation  number.   Refer  to Section 5.10 for the
explanation of file specification recognition.

Should you try to use recognition where it is not allowed, the  system
prints a question mark and cancels the command.

                   ESC

     @LOGIN (USER)  ?
     @

Should you try to use recognition where it is not appropriate (such as
at  the  end  of a command or when a password is required), the system
prints a ?  or rings the terminal's bell.  Press the RETURN key.

            ESC

     @RESET  ?
     @


                                 NOTE

               You  cannot  use  recognition   on   the
               arguments  to  the  PRINT  command,  the
               SUBMIT  command,  and  commands  to  any
               program  that  has  an  asterisk prompt.
               You must type  these  command  arguments
               without  using  recognition.  If you try
               to  use  recognition,  the  ESC  key  is
               entered  into  the  command  line as a $
               sign.





2.6.2  Abbreviated Input

When you give a command using abbreviated input, type only  enough  of
the  command  to  distinguish it from any other command.  For example,
there are several TOPS-20 commands  that  start  with  the  letter  A:
ACCESS,  ADVISE,  APPEND,  ASSIGN, and ATTACH.  To identify any one of
these commands, type only two letters.  For example, AP identifies the
APPEND command;  AT identifies the ATTACH command.

This same principle applies to  arguments  and  subcommands.   In  the
INFORMATION  command,  there  are  two  arguments  beginning  with  T:
TAPE-PARAMETERS and TERMINAL-MODE.   To  get  information  about  your
default tape parameters, type just the abbreviation TA.

     @INFORMATION (ABOUT) T? ONE OF THE FOLLOWING:
      TAPE-PARAMETERS
      TERMINAL-MODE

     @INFORMATION (ABOUT) TA
      SET TAPE DENSITY 1600
      SET TAPE PARITY ODD
      SET TAPE FORMAT CORE-DUMP
      SET TAPE RECORD-LENGTH 512
     @
GIVING TOPS-20 COMMANDS                                       Page 2-9


Three subcommands under the DIRECTORY command begin  with  a D: DATES,
DELETED,  and DOUBLESPACE.  To print the write dates of all your COBOL
source files, use the argument *.CBL for a  file  specification,  then
type just the abbreviation DA.

     @DIRECTORY (OF FILES) *.CBL,
     @@D? One of the following:
      DATES
      DELETED
      DOUBLESPACE

     @@DA
     @@

        <MCKIE>
                     Write

      COMPUT.CBL.1   25-Jan-76
      NUMBER.CBL.2   30-Jan-76

      Total of 2 files
     @

The same LOGIN command as stated in the previous example can be  given
with the abbreviated command:

     @LOG STEWART  14569

To give the command, type LOG and leave a space;  type your user  name
(here it is STEWART) and leave a space;  type your password (it is not
printed) and leave a space;  type your account (here it is 14569)  and
then press the RETURN key.

For most commands, the first three letters are enough  to  distinguish
one  command  from  another, but the commands shown in the table below
have special abbreviations.

                              Table 2-1
                    Accepted Command Abbreviations


     Command                  Accepted Abbreviation


     CONTINUE                 CON
     CONNECT                  CONN
     EXECUTE                  EX
     EXPUNGE                  EXP
     LOGIN                    LOG
     LOGOUT                   LOGO


Abbreviated input is the fastest possible  way  to  give  any  TOPS-20
command;  however, it does require you to know the exact format of the
command.


                               CAUTION

               As the  system  develops,  new  commands
               will be added and existing abbreviations
               may change.  If you want to  be  sure  a
               Batch  control  file  will  work  in the
               future, always  use  the  full  command;
               never abbreviate.
GIVING TOPS-20 COMMANDS                                      Page 2-10


2.6.3  Combined Recognition And Abbreviated Input

You can mix the two methods of typing commands  to  suit  your  needs.
Generally  you will incorporate abbreviated input for the parts of the
command you know, and use recognition  input  for  the  parts  of  the
command  about  which  you are unsure.  The LOGIN command can be given
using the combination of input methods shown in the example below.

     @LOG STEWART  (ACCOUNT) 14569

To give this command, type LOG and leave a space;  type your user name
(here  it is STEWART) and leave a space;  type your password and press
the ESC key.  After the system prints (ACCOUNT), type 14569 and  press
the RETURN key.



2.6.4  Subcommands

Some TOPS-20 commands, e.g., DIRECTORY and  DELETE,  have  subcommands
that  modify  the operation of the main command.  Subcommands give the
main commands more flexibility and eliminate the  need  for  different
commands that perform very similar functions.

To give a subcommand with a  command,  first  give  the  command,  but
instead  of  terminating  it by pressing the RETURN key, type a comma,
then, press the RETURN key.  The system prints two  @  signs  on  your
terminal.  Use recognition or abbreviated input on the subcommands, or
type a ?  to get a list of the valid subcommands.  Continue giving  as
many  subcommands  as  you  desire.   After  you  have  typed the last
subcommand, press  the  RETURN  key  twice:   once  to  terminate  the
subcommand and a second time to terminate the command.

The example  below  shows  the  DIRECTORY  command  and  some  of  its
subcommands.  The DIRECTORY command lists the names of your files.

     @DIRECTORY (OF FILES) ,
     @@? ONE OF THE FOLLOWING:
      ACCOUNT
      ALPHABETICALLY
      CHECKSUM
      CHRONOLOGICAL
      CRAM
      DATES
      DELETED
      DOUBLESPACE
      EVERYTHING
      FIND
      GENERATION-RETENTION-COUNT
      LENGTH
      LPT
      NO
      OUTPUT
      PROTECTION
      REVERSE
      SEPARATE
      SIZE
      TIMES
      USER
     @@DATES (OF) ? ONE OF THE FOLLOWING:
      CREATION
      READ
      WRITE
GIVING TOPS-20 COMMANDS                                      Page 2-11


     @@DATES (OF) CREATION
     @@

       <SAMBERG>
                     CREATION

      HFTELL.FOR.1    16-Jan-76
      MAST.MST.1       9-Jul-75
      MF.EXE.2         9-Jul-75
        .MAC.1         9-Jul-75
        .REL.2         9-Jul-75
      MONSYM.MAC.1    31-Oct-75
      OQUE.MAC.1       6-Aug-75
      SPRINT.EXE.1     6-Nov-75

      Total of 8 Files
     @

To give the command, type DIR and  press  the  ESC  key;   the  system
prints ECTORY (OF FILES).  Type a comma and press the RETURN key;  the
system prints two @ signs.  Type a question mark to list the available
subcommands  and  select  DATES.   Type DA and press the ESC key;  the
system prints TES (OF).  Type a second question mark to find out  what
to  type  for this field.  The options are:  CREATION, READ and WRITE.
Type a C and press the ESC key;  the system prints REATION.  Press the
RETURN  key  once to end the DATES subcommand and a second time to end
the entire command.  The  system  prints  a  list  of  all  your  file
specifications followed by the dates they were created.



2.7  CORRECTING TYPING ERRORS

There are four characters that help you to  correct  typing  mistakes.
They are:  DELETE, CTRL/R, CTRL/U, and CTRL/W.



2.7.1  Erasing One Character (DELETE)

Whenever you want to erase one character, press the DELETE key.   (The
DELETE key may also be labeled RUBOUT or DEL.) Each time you press the
DELETE key, the system erases the last remaining character  you  typed
and prints the erased character followed by a backslash (\).

The DELETE key erases the character immediately preceding the  current
typing  position.  Pressing the DELETE key again deletes the character
before that, and so forth.  Most TOPS-20 commands allow you to  delete
past  the current field, which means you can delete past a space, tab,
or punctuation.  If you are typing a command that does not  allow  you
to  delete  past  fields,  the system rings your terminal's bell.  The
following example illustrates the use of the DELETE key in typing  the
TERMINAL command.

     @TERMINAL (MODE IS) PIGEE\G\I\P\PAGE (MODE)
GIVING TOPS-20 COMMANDS                                      Page 2-12


To give the above command, type TE and press the ESC key;  the  system
prints  RMINAL  (MODE  IS).  Type PIGE, then press the DELETE key four
times;  the system prints E\G\I\P\.  Type P and  press  the  ESC  key;
the system completes the argument.


                                 NOTE

               If you have a display terminal (a  VT05,
               VT50,  or  VT52)  and  give the TERMINAL
               command to declare that you have such  a
               terminal,  the  system  removes  deleted
               characters from the  screen  instead  of
               printing  each  character  followed by a
               backslash.





2.7.2  Reprinting A Line (CTRL/R)

When you have done a lot of editing within a line,  you  may  want  to
check your work by typing a CTRL/R to reprint the current line.

                      CTRL/R

     @TERMINAL (MODE IS) PIGEE\G\I\P\PAGE (MODE)
     @TERMINAL (MODE IS) PAGE (MODE)

To give the above command, type TER and press the ESC key;  the system
prints  MINAL  (MODE  IS).   Type PIGE and delete the four characters,
then type a P and press the ESC  key.   Type  a  CTRL/R.   The  system
reprints  the current command on the next line.  If you have a display
terminal, the system overprints the current line instead  of  printing
the current command on the next line.

Many programs do not reprint  the  prompt  character  if  you  type  a
CTRL/R.   You  are  still  at  command  level in that program, but the
prompt is not printed  because  the  system  has  reprinted  only  the
characters  you  typed.   Type  a CTRL/R while giving a command to the
FILCOM program;  the asterisk prompt is not reprinted.

     @FILCOM
              CTRL/R

     *TEST.FIL
     TEST.FIL



2.7.3  Erasing An Entire Line (CTRL/U)

When you want to cancel a command, type a CTRL/U,  which  deletes  the
unwanted  line  and prevents the system from acting on it.  The system
prints three Xs before printing the prompt character.  If you  have  a
display terminal, the system removes the line from your screen instead
of printing the three Xs.

                               CTRL/U

     @TERMINAL (MODE IS) LENGTHXXX
     @
GIVING TOPS-20 COMMANDS                                      Page 2-13


To give the above command, type TER and press the ESC key;  the system
prints  MINAL (MODE IS).  Type LENGTH, then type a CTRL/U.  The system
prints three Xs and the prompt character.



2.7.4  Erasing A Single Field Of A Command (CTRL/W)

If you want to erase an entire field of a command, type a CTRL/W.  The
system  prints an underline (_) and you are allowed to continue typing
the command.  The underline character may be a backarrow (_)  on  some
terminals.   If  you  have  a display terminal, the system removes the
field from the screen instead of printing the underline or backarrow.

                               CTRL/W

     @TERMINAL (MODE IS) LENGTH_PAGE

To give the above TERMINAL command, type TER and press  the  ESC  key;
the system prints MINAL (MODE IS).  Type LENGTH, then type a CTRL/W to
erase the field.  After the system  prints  the  underline,  type  the
correct  argument  PAGE.   If  you  are  using CTRL/W in commands that
contain punctuation, the CTRL/W deletes all the  characters  from  the
present   position   back  to  (but  not  including)  the  punctuation
character.  The next CTRL/W you give deletes the punctuation character
and the text preceding it, back to the next punctuation character, the
beginning of the line, or the beginning of the  field.   For  example,
type FILCOM and press the RETURN key;  then type MTA1:TESTING=DATA.

     @FILCOM

     *MTA1:TESTING=DATA

Type a CTRL/W;  the system erases the command back to the equal  sign.
Type a CTRL/R to reprint the line.

                       CTRL/W CTRL/R

     *MTA1:TESTING=DATA_
     MTA1:TESTING=

Type a second CTRL/W followed by a CTRL/R;  the system has deleted the
command back to the colon.

     *            CTRL/W CTRL/R

     MTA1:TESTING=_
     MTA1:



2.8  ADDING REMARKS (!)

To add a few words as comments, type  an  !   and  add  the  comments.
Terminate  the  comment with another !  or, if you are at the end of a
line, press the RETURN key.  The text from the !  to the  next  !   or
the end of the line does not affect the command.

     @DELETE (FILE) PROCED.OLD !OUT OF DATE
      PROCED.OLD.2 [OK]
     @
GIVING TOPS-20 COMMANDS                                      Page 2-14


The !  feature is useful for  saving  output  for  reference  and  for
teaching  others.   You  can also type a complete line as a comment by
starting the line with a !  and ending it with a !  or  RETURN;   this
is  useful  in eliminating errors when you are conversing with another
user while linked via the TALK command.  Many comments output  by  the
system are enclosed in !s.



2.9  SPACES, TABS, LOWERCASE, AND FORMFEED

You can place spaces and tabs before and after  command  names,  guide
words, and arguments without affecting the command.

Lowercase letters can be used anywhere in commands.

Formfeed, obtained by typing a  CTRL/L,  can  be  used  instead  of  a
carriage  return/linefeed sequence.  The formfeed performs the command
termination and starts output from the command at the top of the  next
page if you have set the proper terminal parameters.  Refer to Chapter
9 for more information about your terminal.











                              CHAPTER 3

                                 JOBS



In timesharing, the term "job" refers to the entire time you  interact
with  the  computer (from LOGIN to LOGOUT).  You create a job when you
successfully complete LOGIN.  If in trying to create  a  job  (LOGIN),
you  give  an  invalid user name, password, or account descriptor, the
system prints a message and prevents you from continuing.   After  you
successfully create a job, you can access any system resource to which
you are entitled  and  perform  many  processes.   A  process  is  one
specific  activity that is identified inside your job.  You initiate a
process by entering a command  to  the  system.   These  commands  are
prefixed by an @.

You can have more than one job at a  time.   The  differences  between
jobs are their job numbers (assigned by the system for identification)
and their contents (which you determine).

To create a job, you must:

     1.  Type a CTRL/C

     2.  Give the LOGIN command.




3.1  STARTING COMMUNICATION WITH TOPS-20

To signal TOPS-20 to start processing your commands, you must  type  a
CTRL/C.  If you are connected to the DECSYSTEM-20 by a telephone line,
DO not type this initial CTRL/C since the system automatically gives a
CTRL/C at the time it answers the telephone.

CTRL/C

 2102 Development System, TOPS-20 Monitor 2(233)
@

Once the system prints an @ on the line after the greeting  line,  you
can give the LOGIN command.



3.2  CREATING A JOB -- THE LOGIN COMMAND

To start working with the system, you must  give  the  LOGIN  command.
The  LOGIN  command  requires you to know your user name, password and
account descriptor.  You can obtain these identifiers from your system
manager.   Refer  to  Section 2.6.1 if you need additional information
about the LOGIN command.
JOBS                                                          Page 3-2


     @LOGIN (USER) STEWART (PASSWORD)  (ACCOUNT #) 10300
      Job 16 on TTY24 16-Jan-76 10:26
     @



3.2.1  User Names

Each user is identified to the system and to other  users  by  a  user
name.   A  user  name is comprised of up to 39 alphanumeric characters
(hyphens are also allowed) and is usually your surname.  A  user  name
identifies  your  job, logged-in directory, and any messages which you
can send or receive.



3.2.2  Passwords

Because your user name is known to many DECSYSTEM-20  users,  it  does
not  provide the security necessary in a large data processing system.
Therefore, each user  selects  a  password  (comprised  of  up  to  39
alphanumeric  characters,  including hyphens) that is a secret between
the system manager and the user.  You must supply your  password  when
you log in.

Whenever you type your password, it is not printed  on  the  terminal;
this  prevents  other  people  from  learning it and logging in to the
system without proper authorization.



3.2.3  Account Descriptors

Your account descriptor is charged with all bills that you  accumulate
while  using  the system.  An account descriptor is comprised of up to
39 alphanumeric characters.  Some users;  however, are  restricted  to
using  only  numeric  accounts.  In this case, the system modifies the
format of the LOGIN command to  print  the  guide  words  (ACCOUNT  #)
instead of (ACCOUNT).

Once you log in to the system, all charges are made to the account you
gave  in  the  LOGIN  command.  These charges include bills for use of
central processor unit (CPU) time and for file storage.  Give the  SET
ACCOUNT command if you need to change your account during a job.



3.2.4  LOGIN.CMD And BATCH.CMD Files

You can create a LOGIN.CMD file that is read by the system every  time
you  log in.  You can also create a BATCH.CMD file that is read by the
system every time a submitted Batch job gets logged in.

Once you complete a successful LOGIN command, the system executes  any
TOPS-20  commands  you  have  stored  in a LOGIN.CMD file kept in your
logged-in directory, i.e., the one with the same  name  as  your  user
name.   After  executing  these commands, the system prints any output
from the commands followed by the message END  OF  LOGIN.CMD  and  the
TOPS-20  prompt  @.   You  are  not required to have a LOGIN.CMD file;
create the file only if it is convenient.

If you submit a Batch job, the system takes  commands  from  the  file
BATCH.CMD  instead of LOGIN.CMD, because some commands often stored in
LOGIN.CMD are illegal in a Batch job (refer to Table 3-1).
JOBS                                                          Page 3-3


You can place any system commands or program commands in the LOGIN.CMD
file;  the system executes them each time you log in.  The most common
commands to place in the LOGIN.CMD  file  are  TERMINAL  commands  (to
declare  the type of terminal you have) and DEFINE commands (to define
logical names).

The following example shows how to create the file LOGIN.CMD and place
a few commands in it.

     @CREATE (FILE) LOGIN.CMD
     Input: LOGIN.CMD.1
     00100   DEFINE LIB: <FORTRAN-LIBRARY>
     00200   INFORMATION LOGICAL-NAMES
     00300   TERMINAL LA36
     00400   $
     *E

     [LOGIN.CMD.1]
     @

Now, when you log in, the system executes the commands and the  output
appears as follows.

     @LOGIN (USER) MCKIE (PASSWORD)  (ACCOUNT #) 10300
      Job 15 on TTY1 5-Jan-76 16:57
     LIB => <FORTRAN-LIBRARY>
      End of LOGIN.CMD.1
     @

If there is an error in one of the commands, the system processes  all
the  commands up to the one in error, prints the following message and
stops reading the file.

     % Error while reading LOGIN.CMD.1, file aborted.

Make sure you can give the commands exactly as you have  entered  them
into the file.  If not, correct any errors, and try the file again.



3.2.5  COMAND.CMD Files

You can also create a file called COMAND.CMD.  Each time you log in to
the  system  or give a PUSH command, the system takes TOPS-20 commands
from  the  file  COMAND.CMD  located  in  your  logged-in   directory.
COMAND.CMD,  LOGIN.CMD,  and  BATCH.CMD  have the same format and use,
except that LOGIN.CMD and BATCH.CMD are read only after  you  start  a
job, whereas COMAND.CMD is also read whenever you give a PUSH command.
As with the LOGIN.CMD and BATCH.CMD files, COMAND.CMD is not required;
you can create it at your convenience.

The most common entries in the COMAND.CMD file are  SET  commands  and
commands  that  run  programs.  The following example shows the output
when the user gives a PUSH command.

     @PUSH (COMMAND LEVEL)

      TOPS-20 Command processor 2(236)
      END OF COMAND.CMD.1
     @

If there is an error in one of the commands, the system processes  all
the  commands up to the one in error, prints the following message and
stops reading the file.
JOBS                                                          Page 3-4


     % Error while reading COMAND.CMD.1, file aborted.

Check the commands in the file and correct any errors.



3.2.6  Autologout

If you type the initial CTRL/C and fail to log in  within  5  minutes,
the system stops accepting commands and prints the LOGOUT message.  In
order to start the LOGIN process again, you must type another  CTRL/C.
The example below shows the autologout message.

      AUTOLOGOUT
     Killed Job 8, TTY 30, at 16-Jan-76 22:16:05
       Used 0:0:0 in 0:5:15

This autologout feature detects  extraneous  jobs  that  may  get  the
system's  attention, but which do not have the proper authorization to
utilize system resources.



3.3  ENDING A JOB

When you have completed your work, end the job by  giving  the  LOGOUT
command.   The  LOGOUT command is described in Part II of this manual.
The example below shows a typical LOGOUT command.

     @LOGOUT
     Killed Job 32, User ESTEY, Account 10300, TTY 75,
       at 18-Oct-76 10:10:35, Used 0:0:22 in 0:23:7



3.4  SUBMITTING A BATCH JOB

If you have a procedure that you execute frequently, you may  want  to
submit it as a Batch job rather than repeatedly executing it from your
terminal.  In batch processing, the term "job" refers  to  the  entire
stream (or list) of user commands contained in a Batch control file.

To submit a Batch job, enter the commands you would normally  type  on
your terminal into a file called a Batch control file.  Use the SUBMIT
command to tell the system what file you want to  submit.   The  Batch
system  creates a job for you, connects the job to the directory where
you are connected at the time you give the  SUBMIT  command,  executes
the  commands  stored  in  your BATCH.CMD file (instead of LOGIN.CMD),
executes the commands stored in your control  file,  and  records  the
results  in  a log file.  The control file can have any file name, but
should have the file type .CTL.  The log file has the same name as the
control file and the file type .LOG.

It is best to fully type each command and argument in the control file
rather  than  abbreviated  or recognition input.  Precede each TOPS-20
command or subcommand with an @ and precede each program command  with
an *.

Make sure each subcommand is preceded by only a single @ sign and that
you  include an extra line for the RETURN that terminates the command,
also preceded by a single @ sign.  Refer to Example 11 in  the  DUMPER
description  in Part II for a complete example showing how subcommands
are included in the control file and printed in the log file.
JOBS                                                          Page 3-5


If you want a  control  character  entered  into  the  file,  type  an
up-arrow  (^)  followed  by  the  character.  For instance, to enter a
CTRL/C, type ^C.  If you want a  line  sent  without  the  terminating
carriage  return  and  linefeed  characters,  precede  the line in the
control file with an =.

The following commands are not permitted  in  a  Batch  job;   if  you
include them, the system issues a fatal error message.


                              Table 3-1
                    Illegal Commands In Batch Jobs


                                ATTACH
                SET CONTROL-C-CAPABILITY (OF PROGRAM)
                         SET TIME-LIMIT (TO)


These commands are used very infrequently, but still be sure they  are
not  in  your  control  file,  your BATCH.CMD file, or your COMAND.CMD
file.

The following example uses a Batch control  file  and  shows  how  you
would run the FILCOM program to compare two files.



3.4.1  Creating A Control File

First, create the control file using EDIT.  Place all the commands you
would normally type directly into the file.

     @CREATE (FILE) TEST.CTL
     Input: TEST.CTL.1
     00100   @FILCOM
     00200   *TEST.FOR=DIFFER.FOR,ADDEM.FOR/A
     00300   @PRINT TEST.FOR
     00400   $
     *E

     [TEST.CTL.1]
     @



3.4.2  Submitting A Control File To The Batch System (SUBMIT)

Second, submit your control file to the Batch system using the  SUBMIT
command.  The Batch system puts your job in the waiting line, which is
referred to as the input queue (as opposed to the line printer  output
queue).   Each  time  the  Batch system is able to run another job, it
selects one from the input queue.

The next example shows how to submit the sample  TEST  job.   Remember
that  because the control file has the file type .CTL, you do not have
to include the file type in your command.

     @SUBMIT TEST
     [INP:TEST=/Seq:7631/Time:0:05:00]
     @
JOBS                                                          Page 3-6


3.4.3  Checking A Batch Job

If you want to check the progress of your job, give the SUBMIT command
without  any  arguments.   The system prints a list of all the jobs in
the Batch queue and their  status.   The  column  heading  STS  is  an
abbreviation  for  the  word  status.  If the word RUN appears in this
column, then the Batch system is running your job.  If nothing appears
in  this column, you must wait until the Batch system finishes another
job and selects your job to run.

     @SUBMIT
     INPUT QUEUE:
     STS  JOB   SEQ PRIO  TIME     USER
     --- ------ ----- ---- --------  --------
     RUN TEMP    7624  10  00:05:00  BLOUNT
     RUN TEST    7631  10  00:05:00  ESTEY
         BUILD   7628  10  00:10:00  BATOR

     TOTAL:  INP:   3 jobs;  00:20:00 Runtime
     @

As you can see, the TEST job is running.  To find out what program  it
is using, give the SYSTAT command.

     @SYSTAT ESTEY


     JOB   LINE PROGRAM  USER
      35*    75 EXEC     ESTEY
      39     45 FILCOM   ESTEY
     @

Job number 35 is your current job, and job 39 is the Batch job that is
running  the  FILCOM  program.  You can keep giving SYSTAT commands or
SUBMIT commands until the job no longer appears.  At that time  it  is
finished and you can examine the output stored in the log file.

Refer to Section 3.5 to learn how to get more information  about  your
jobs.



3.4.4  Examining The Output From A Batch Job

To examine the output  from  the  job,  type  the  log  file  on  your
terminal;   normally,  the  log file is automatically sent to the line
printer.

@TYPE (FILE) TEST.LOG

11:48:54 BAJOB  BATCON version 102(2057) running TEST sequence 7631 in stream 1
11:48:54 BAFIL  Input from PS:<ESTEY>TEST.CTL.1
11:48:54 BAFIL  Output to PS:<ESTEY>TEST.LOG.1
11:48:54 BASUM  Job parameters
                Time:00:05:00   Unique:YES   Restart:NO   Output:LOG

11:48:54 MONTR
11:48:55 MONTR   2102 Development Sys., TOPS-20 Monitor 2(256)
11:48:56 MONTR  @LOGIN ESTEY 10300
11:48:56 MONTR    Job 36 on TTY135 26-Oct-76 11:48
11:48:59 MONTR  @
11:48:59 MONTR  [CONNECTED TO PS:<ESTEY>]
11:48:59 MONTR  @SET TIME-LIMIT 300
11:49:00 MONTR  @@FILCOM
JOBS                                                          Page 3-7


11:49:03 USER
11:49:03 USER   **TEST.FOR=DIFFER.FOR,ADDEM.FOR/A
11:49:05 USER
11:49:05 USER   %files are different
11:49:06 USER
11:49:06 USER   *^C
11:49:07 MONTR  @@PRINT TEST.FOR
11:49:11 MONTR  [LPT:TEST=/Seq:7637/Limit:23, 1 File]
11:49:11 MONTR  @^C
11:49:13 MONTR  @LOGOUT
11:49:16 MONTR  Killed Job 36, User ESTEY, Account 10300, TTY 135,
11:49:16 MONTR    at 26-Oct-76 11:49:16, Used 0:0:2 in 0:0:18
@

Each line in the log file contains the time that line was processed by
the  Batch  system.  Following the time stamp is a code that indicates
whether the job is at TOPS-20 command level (MONTR) or  at  a  program
command level (USER).  The rest of the line contains system output and
the corresponding line in the control file.  The first command is  the
FILCOM  command.   The  system  has printed the @ sign and the control
file contains @FILCOM, a combination that produces the @@ sign line.

Before giving a command contained in any line preceded by an  @  sign,
the  system  assures the job is at TOPS-20 command level.  Verify this
action in the example above, where the user runs FILCOM.  The  command
following  the  command to FILCOM is a PRINT command.  Because the job
was at FILCOM command level, the system has to give a CTRL/C to return
to TOPS-20 command level before giving the PRINT command.

Any line preceded by an asterisk is assumed  to  be  a  command  to  a
program and the system does not precede it with a CTRL/C.

For more information, refer to the description of the Batch commands.



3.5  GETTING INFORMATION ABOUT JOBS AND USERS

To get a list of all the users who have created jobs, give the command
SYSTAT,  which  stands  for  system  status.   Refer to Part II for an
explanation of the output of the SYSTAT  command.   The  next  example
shows the SYSTAT command.


     @SYSTAT
      Fri 16-Jan-76 15:19:52  Up 14:49:59
      19+8 Jobs   Load av   1.24   1.97   1.73

      JOB  LINE PROGRAM   USER
        8   101  PLOT   PLTSPOOL
        9    20  PTYCON PLTSPOOL
       10    24  EXEC   DENNIS
       11    17  EXEC   MILLER
       12    27  EXEC   KIRSCHEN
       14    12  EXEC   ALLEN
       15    23  VBOOT  COHEN
       16     4  EXEC   KNIGHT
       17    22  EXEC   MACK
       18    30  EXEC   WALSH
       20    37  EXEC   OSMAN
       22    13  EXEC   HELLIWELL
       23    10  VBD    DECENZO
       24*   15  EXEC   MCKIE
       25    41  EXEC   JUD
JOBS                                                          Page 3-8


       26    42  EXEC   HURLEY
       27   DET  EXEC   EIBEN
       31    40  CREF   MURPHY


        1    70  PTYCON OPERATOR
        2    75  EXEC   OPERATOR
        3    72  LPTSPL OPERATOR
        4    74  EXEC   OPERATOR
        5    73  BATCON OPERATOR
        6    76  PTPSPL OPERATOR
        7    77  OPLEAS OPERATOR
       28   102  EXEC   OPERATOR
     @

To find out if a particular user has created any jobs, give the SYSTAT
command,  leave  a  space  and type (or use recognition on) the user's
name.  Refer to the description of the SYSTAT command.

The next example checks to see if user MURPHY has any jobs.  It  turns
out  that  he has one;  job 31 is running the CREF program on terminal
40.

     @SYSTAT MURPHY
       31    40  CREF    MURPHY
     @

If you want to find out  your  job  number,  user  name,  or  terminal
number,  give  the  INFORMATION  (ABOUT) JOB-STATUS command.  Refer to
Part II for a description of the INFORMATION command.

     @INFORMATION (ABOUT) JOB-STATUS
      Job 13, User MONROE, Account 10300, TTY102
     @



3.6  IF THE SYSTEM STOPS

The system may unexpectedly stop due to an error.  This error  implies
that  the  part  of  the  computer  that controls your terminal is not
working.  In such a situation, your terminal does not print or receive
what you type.  If recovery is possible, the system prints:

     [DECSYSTEM-20 continued]

All you may lose is a few  seconds  of  typing.   After  [DECSYSTEM-20
continued] is printed on your terminal, you can continue the tasks you
were doing before the stoppage.

In situations where a fatal error occurs (the entire main computer  is
not  working),  your terminal stops printing and the system prints the
message:

     %DECSYSTEM-20 NOT RUNNING

Shortly, the system restarts and prints:

     System restarting, wait...

and after a few monents

     [FROM OPERATOR: SYSTEM IN OPERATION]
JOBS                                                          Page 3-9


You must type a CTRL/C and log in to the system.  If you have set  the
speed of your terminal line, you may have to reset it depending on the
default speed determined by the system manager.

Depending on the operation you were performing, some of the files  you
were  using  may  be  incomplete  or missing.  Contact the operator or
system manager if you want to restore a  file  that  was  saved  on  a
system backup tape.  Many systems make backup tapes at the end of each
day,  so  make  sure  you  contact  the  operator  before   needlessly
reentering a lost file.


                                 NOTE

               If you have given the TERMINAL (MODE IS)
               PAGE  command,  do not assume the system
               has stopped until  you  type  a  CTRL/Q.
               This  will  cause your terminal to print
               output that may be waiting  because  you
               have reached the end of a page.











                              CHAPTER 4

                        SYSTEM STORAGE DEVICES



This chapter discusses the two media  on  which  you  can  store  your
files - disk and magnetic tape.



4.1  DISK STORAGE

The DECSYSTEM-20 keeps most of its information in disk files.  A  file
is  a  collection  of  related  data treated as a unit and is uniquely
identified with a file specification.  The system stores and retrieves
a  file  on disk by its file specification.  (Refer to Chapter 5, FILE
SPECIFICATIONS, for their format and use.)  The  following  paragraphs
discuss the features of the disk file system and how to use them.



4.1.1  File Structures

One feature on the DECSYSTEM-20 allows your system  manager  to  group
files on separate disk packs.  Each group of one or more disk packs is
called a structure and is referenced under one name.  The  name  of  a
structure consists of alphanumeric characters followed by a colon.




















You can create and reference files on a structure  by  specifying  the
structure name in the device field (dev:) of a file specification.

     @LIST ACCTG:<OSMAN>MYFILE.CBL

          dev:<dir>name.type
SYSTEM STORAGE DEVICES                                        Page 4-2


One important file structure remains  on  line  at  all  times  during
system  operation.  This file structure is called the public structure
and has been given the name PS:.  The public structure (PS:)  contains
all  the  necessary accounting information to allow users to log in to
the system.  Therefore, every user of the system has  a  directory  on
the  public  structure.   When  you  log in, you are connected to your
logged-in  directory  on  PS:.   Refer  to  Section  4.1.2  for   more
information about your logged-in directory and files.

Depending on how the system manager has organized  your  installation,
you  can  own  or  use  additional files on structures other than PS:.
These structures also contain directories  and  files.   They  can  be
mounted  (put  on line) and dismounted by the operator as requests for
their use are made.  Two commands, SMOUNT and SDISMOUNT, allow you  to
request the mounting and dismounting of structures.

SMOUNT informs the system (and the operator if the  structure  is  not
mounted) that you require the use of a particular structure other than
PS:.  This command increments a count, called the mount count, of  the
number  of users who have given the SMOUNT command for that structure.
When this count is greater than zero, you are assured that a structure
will  remain  on  line.   Therefore, you should always give the SMOUNT
command before using any files on a structure other than PS:.

SDISMOUNT informs the system that you no longer require the use  of  a
structure  and decrements the mount count.  Ask your system manager if
you can use structures other than PS: and obtain the  names  of  those
structures.   Then  turn  to  the  complete descriptions of SMOUNT and
SDISMOUNT in Part II of this manual.

Once a structure is mounted, you can use any directories and files  on
that  structure  according  to the "all user" protection codes set for
those directories  and  files.   (Refer  to  Section  4.1.3  for  more
information  on  the  three  types  of  directory  and file protection
codes.)

If you would like to know which structures are presently mounted, give
the INFORMATION (ABOUT) STRUCTURE * command.

     @INFORMATION (ABOUT) STRUCTURE (NAME) *
     Status of structure PS:
     Mount count: 0, open file count: 22, units in structure: 2
     Public Domestic
     No users have PS: SMOUNTed
     Users ACCESSing PS: OPERATOR, BELANGER, FRIES, DIPACE, MACK,
     POWERS
     Users CONNECTed to PS: OPERATOR, BELANGER, MACK, POWERS

     Status of structure 4SQM:
     Mount count: 3, open file count: 2, units in structure: 1
     Domestic
     Users who have SMOUNTed 4SQM: FRIES
     Users ACCESSing 4SQM: FRIES

     Status of structure ADMIN:
     Mount count: 2, open file count: 0, units in structure: 1
     Domestic
     Users who have SMOUNTed SNARK: DIPACE
     Users ACCESSing SNARK: DIPACE
     Users CONNECTed to SNARK: DIPACE

     @
SYSTEM STORAGE DEVICES                                        Page 4-3


4.1.2  Directories

The system stores your files on an area of disk  called  a  directory.
The  user  name  you  enter  in  a  LOGIN  command  is the name of the
directory called your logged-in directory.  This directory is  located
on  the  public  structure  (PS:).   PS:  contains all your accounting
information and some or all of your files.  (It is  possible  that  in
addition  to  your  logged-in  directory,  you  have  the use of other
directories and files.)  When you  log  in  to  the  system,  you  are
connected  to  your  logged-in directory on PS: and can use any of the
files in that directory.

If you require the use of another directory as an "owner" and know its
password  (or have the proper privileges), you can give the CONNECT or
ACCESS command.  Both  the  CONNECT  and  ACCESS  commands  grant  you
"owner" privileges to other directories.  When you CONNECT or ACCESS a
directory, you always retain your "owner" privileges to your logged-in
directory.



4.1.2.1  CONNECT -  The CONNECT command connects you  to  a  different
directory  and  disconnects  you  from the current directory.  You can
connect to a user directory or a files-only directory  on  the  public
structure, where you logged in, or on another on-line structure.

CONNECTing to a directory grants you "owner" privileges to  the  files
in that directory.  You still retain "owner" and "group" privileges to
the  files  in  your  logged-in  directory.   However,  your   default
directory (the directory the system assumes when you do not specify it
in a file specification) is now  the  connected  directory,  not  your
logged-in directory.

Your "owner" privileges for a directory are valid as long as  you  are
connected  to  that  directory.  The "owner" privileges terminate when
you connect to another directory.

When you give the CONNECT command for a directory that is located on a
structure different from the one to which you are currently connected,
your default structure also changes.  If  you  do  not  redefine  DSK:
with  a  logical name, the system assumes both the currently connected
directory and currently connected structure whenever you omit them  in
a  file  specification.   (Refer to Section 5.12.)  This means that if
you leave the directory name out of a file specification,  the  system
uses your currently connected directory.

The same is true if you  leave  the  structure  name  out  of  a  file
specification;  the system uses your currently connected structure.

The following examples illustrate the effects of  giving  the  CONNECT
command to directories on structure PS:  and on different structures.
SYSTEM STORAGE DEVICES                                        Page 4-4


User BAKER logs in to the system and is  connected  to  the  directory
<BAKER>  on  structure  PS:.   Whenever BAKER omits the directory name
and/or structure name from a file specification, the system  uses  the
logged-in directory <BAKER> and the public structure PS:.

     @LOGIN (USER) BAKER (PASSWORD) (ACCOUNT #)10300
      Job 25 on TTY75 20-OCT-76 14:56
     @




















After logging in, BAKER CONNECTs to directory <CHARLES>  on  PS:.   If
BAKER  later  omits the directory name and/or structure name in a file
specification, the system uses the connected  directory  <CHARLES>  as
the  default directory and the connected structure PS:  as the default
structure.

     @CONNECT (TO DIRECTORY) <CHARLES> (PASSWORD)
     @
SYSTEM STORAGE DEVICES                                        Page 4-5


User BAKER now CONNECTs to directory <SMITH> on structure ADMIN1:  and
subsequently  omits  the  structure  and/or directory name from a file
specification.  The system uses the connected directory <SMITH> as the
default  directory and the connected structure ADMIN1:  as the default
structure.

     @CONNECT (TO DIRECTORY) ADMIN1:<SMITH> (PASSWORD)
     @




















If you forget to which directory or structure you are connected,  give
the INFORMATION (ABOUT) JOB-STATUS command.

     @INFORMATION (ABOUT) JOB-STATUS
      Job 13, User BAKER, ADMIN1:<SMITH>, Account 10300, TTY25
     @

If you are connected to your logged-in directory, the system does  not
print the directory name after your user name.

Refer to Part II of this manual for a complete description of  how  to
use the CONNECT command.
SYSTEM STORAGE DEVICES                                        Page 4-6


4.1.2.2  ACCESS -  The ACCESS command also allows you to gain  "owner"
privileges  to  user  directories, but without changing your connected
(default) directory or structure.  When you ACCESS a directory you are
always  working  in  your  currently  connected directory.  Therefore,
unless you specify otherwise, the  latest  version  of  any  file  you
update  is  placed  in  your  connected directory, not in the ACCESSed
directory.  Because your connected directory has not changed, you must
specify  the  directory  name  in any file specification pertaining to
this ACCESSed directory.  Also, if the directory you ACCESS is located
on  a  different  on-line  structure  than  your  currently  connected
directory,  you  must  specify  the  structure  name   in   any   file
specification.   (Remember,  the  system uses your currently connected
directory and structure.)

The ACCESS command gives more extensive privileges than those  of  the
CONNECT  command.  ACCESS grants you "owner" privileges to a directory
and files and,  in  addition,  grants  you  the  same  "group"  member
privileges  as  the  logged-in user (or "real" owner) of the directory
you have ACCESSed.  Therefore,  you  can  access  a  directory  as  an
"owner"  and can access, as a "group" member, all the directories that
are members of the same group(s) of which the ACCESSed directory is  a
member.   Refer  to  Section  4.1.4 for a description of how users and
directories are established in groups.

You can give the ACCESS command to more than one  directory  during  a
job  session.   You  can  access a directory on one structure and then
access a directory on a different structure.  Provided each  directory
you  access  is  located  on  a  different  structure, the "owner" and
"group" privileges you gain for all directories will remain in  effect
throughout  your  entire job session (from LOGIN to LOGOUT) or until a
structure  is  dismounted.   However,  if  you  access  two  or   more
directories  on  the  same structure, only the privileges for the last
directory you ACCESSed will remain in effect (until you log out or the
structure  is  dismounted).   You  will  always  retain  your  "owner"
privileges to your logged-in directory on PS:.  However, when you give
the  ACCESS  command  to  a  different directory on PS:, you lose your
"group" privileges to your logged-in directory.

The following examples illustrate the effects  of  giving  the  ACCESS
command to directories on structure PS:  and on different structures.
SYSTEM STORAGE DEVICES                                        Page 4-7


User BAKER logs in and is connected to directory <BAKER> on PS:.

     @LOGIN (USER) BAKER (PASSWORD) (ACCOUNT #) 10300
      Job 14 on TTY75 25-OCT-76 13:21
     @




















After logging in, BAKER ACCESSes directory <CHARLES> on structure  PS:
and gains "owner" and "group" privileges to that directory.

     @ACCESS (TO DIRECTORY) <CHARLES> (PASSWORD)
     @
SYSTEM STORAGE DEVICES                                        Page 4-8


BAKER now ACCESSes directory <JONES> on the same structure,  PS:,  and
gains   "owner"   and  "group"  privileges  to  that  directory.   The
privileges granted for directory <CHARLES> are no longer in effect.

     @ACCESS (TO DIRECTORY) <JONES> (PASSWORD)
     @




















If BAKER now ACCESSes directory  <SMITH>  on  structure  ADMIN1:,  the
privileges  granted  for  directory <JONES> on PS:  are still valid in
addition to the  privileges  now  granted  for  directory  <SMITH>  on
ADMIN1:.

     @ACCESS (TO DIRECTORY) ADMIN1:<SMITH> (PASSWORD)
     @




















The privileges remain for the two  ACCESSed  directories  <JONES>  and
<SMITH>  until  BAKER  logs out of the system or structure ADMIN1:  is
dismounted (while BAKER is not using any files).  If structure ADMIN1:
is dismounted, BAKER would only lose privileges to directory <SMITH>.
SYSTEM STORAGE DEVICES                                        Page 4-9


If BAKER requires "group" privileges again to his logged-in directory,
he  can  give  the  ACCESS  command  with  no  arguments for directory
<BAKER>.   The  privileges  granted  for  directory  <JONES>  are  now
terminated.

     @ACCESS (TO DIRECTORY)
     @





















Refer to Part II of this manual for a complete description of  how  to
use the ACCESS command.



4.1.3  File Protection

The DECSYSTEM-20 has a  flexible  and  convenient  file  system.   The
TOPS-20  file  system allows you to protect your files from some users
and yet  grant  access  to  other  users  who  need  them.   The  file
protection  system  works  in the following way.  Suppose you are user
FLETCHER and give the TYPE command to print the file <KOHN>NAMES.CBL.1
on  your  terminal.   Before  printing the file, the system checks the
protection on the directory <KOHN> to see if you are permitted to read
the  names  of the files in that directory.  If you are not allowed to
access the directory in the manner you request, the system  prints  an
error message and cancels the command.

     @TYPE (FILE) <KOHN>NAMES.CBL.1
     ?Directory access privileges required
     @

If the directory protection allows you the  access  you  request,  the
system  checks  the  protection  on  the  individual  file (here it is
NAMES.CBL.1).  If you are not allowed to access the file in the manner
you  request,  the  system  prints  an  error  message and cancels the
command.

     @TYPE (FILE) <KOHN>NAMES.CBL.1
     ?READ PROTECT VIOLATION FOR FILE <KOHN>NAMES.CBL.1
     @

If the file protection permits you to  access  the  file,  the  system
allows  you  to do so.  In this example, the system prints the file on
your terminal.
SYSTEM STORAGE DEVICES                                       Page 4-10


     @TYPE (FILE) <KOHN>NAMES.CBL.1
     MURPHY
     MILLER
     BOSACK
     HURLEY
     @

The access to each directory and file is determined  by  a  protection
number.   Each  directory protection number and file protection number
consists of six digits divided into three fields of two  digits  each.
The  first  2-digit  field  specifies  the  owners' access, the second
2-digit field specifies the group members' access, and the last  field
specifies all other users' ("world") access.


                       PROTECTION CODE


            dd             dd              dd

          Owner          Group          All Users


If a protection number is 775240, 77 specifies the owner's access,  52
specifies  group  members'  access,  and 40 specifies all other users'
access.



4.1.3.1  Directory Protection Numbers -  The digits  in  a  protection
number  have  different  meanings,  depending on whether they are in a
directory protection number or in a file protection number.  Table 4-1
lists the directory protection digits.


                              Table 4-1
                     Directory Protection Digits


          Digits                        Permit


            77           Full access to the directory is permitted.

            40           Access to files in the directory  according
                         to  the protection number on the individual
                         files  is  permitted.   To   undelete   and
                         expunge  the entire directory (though these
                         digits  permit  expunging   files   on   an
                         individual basis), you must also assign the
                         digits 10.  To create files, you must  also
                         assign the digits 04.

            10           Connect to the directory without  giving  a
                         password,   undelete   files,  expunge  the
                         entire directory, change times,  dates  and
                         accounting   information   for   files   is
                         permitted.  All other access is governed by
                         the protection on the individual file.

            04           Create files in the directory.

            00           Access to the directory is not permitted.
SYSTEM STORAGE DEVICES                                       Page 4-11


These protections are additive.  Therefore, to be able to  access  the
directory  according  to the protection on the individual files and be
able to create files in the directory, you would add the 40 to  04  to
get  44.  The directory protection number 774000 allows the owner full
access, allows members of the group to access the directory  according
to  protection  on the individual files, and prohibits all other users
from accessing the directory.  The  default  directory  protection  is
777700.   If you want to change your directory protection number or to
find out  what  your  directory  protection  number  is,  contact  the
operator or system manager.



4.1.3.2  File  Protection  Numbers -   Table  4-2   lists   the   file
protection digits.


                              Table 4-2
                        File Protection Digits


          Digits                   Permit


            77           Full access to the file.

            40           Read the file.

            20           Write and delete the file.

            04           Append to the file.

            02           List the file specification 
                         using the DIRECTORY command.


Any user's access to a  file  is  subject  to  a  check.   First,  the
directory protection is checked, then the protection on the individual
file  is  checked.   Generally,  the  default  protection   for   both
directories  and files is 777700, which means that the owner of a file
and the members of his group have full access,  and  all  other  users
have no access to the files.

Another common file protection number is 777752.  This gives the owner
and  members of his group full access and lets all other users execute
and read the file and list the file  specification  with  a  DIRECTORY
command.



4.1.3.3  Checking Protection Numbers -  To check  protection  numbers,
the  system  starts with the two rightmost digits and moves left until
it has added in the highest level of access you  are  granted.   Thus,
you  do  not  restrict the members of your group by assigning the file
protection number 770052, because they will get at least the  execute,
read, and directory list access (52) granted to all users.

The system checks  a  file  or  directory  protection  number  in  the
following way:

          - Does the protection for all  other  users  i.e.,  the  two
            rightmost, digits grant you the access?

          - If yes, the system lets you access the file or directory.
SYSTEM STORAGE DEVICES                                       Page 4-12


          - If no, and you are a member  of  the  same  group  as  the
            directory,  the  system  adds in the group protection (the
            two middle digits), and checks again.

          - If still no, and you are the owner  of  the  file  (either
            logged-in   under  the  user  name  corresponding  to  the
            directory name  or  have  accessed  or  connected  to  the
            directory),  the  system adds in the owner protection (the
            two leftmost digits) and checks again.

          - If still no, the system issues an error message.



4.1.3.4  Printing A File Protection Number -  If you want to print the
protection  number  of  a  file,  use  the  VDIRECTORY command (or the
DIRECTORY command with the PROTECTION subcommand).

     @VDIRECTORY (OF FILES) 4.MEM.*

        <MILLER>
     4.MEM.1;P777752         7 3245(36)   16-JAN-76 18:48:49
     @



4.1.3.5  Changing  A  File  Protection  Number -   To  change  a  file
protection  number, give the SET FILE PROTECTION command or the RENAME
command.

     @SET FILE PROTECTION (OF FILES) 4.MEM.* (TO) 777700
      4.MEM.1 [OK]
     @

You can use any wildcard character in the source  file  specification.
(Refer to Section 5.8.)



4.1.4  Groups

Certain users can arrange to share files by  asking  the  operator  or
system  manager  to  establish a group.  Members of a group can access
directories in that group according to the two middle  digits  of  the
directory protection numbers.


                    PROTECTION CODE FIELD
                    dd          dd            dd
                  OWNER                   ALL USERS



                             GROUP


A group has two types of  members:   USERS  and  <DIRECTORIES>.   Each
group  has  a  number which is kept in each directory belonging to the
group.  Any USER in a group can  access  any  <DIRECTORY>  that  is  a
member of the same group.
SYSTEM STORAGE DEVICES                                       Page 4-13


                                   Each directory  has  two  lists  of
                                   group numbers:

                                   1.  The   first    list    contains
                                       Directory Group Numbers.  These
                                       numbers  identify  the  various
                                       groups     of     which    this
                                       <DIRECTORY> is a member.

                                   2.  The second list  is  associated
                                       with  users  and  contains User
                                       Group Numbers.   These  numbers
                                       identify  the various groups of
                                       which this USER is a member.

                                   The  Directory  Group  Numbers  are
                                   important   to  users  who  require
                                   access to  this  directory.   Those
                                   users  who  have  a  matching group
                                   number in  the  User  Group  Number
                                   List  can  access  this <DIRECTORY>
                                   according to its  group  protection
                                   code.



                                   The   User   Group   Numbers    are
                                   important  to  the  owner  of  this
                                   directory.  This owner  can  access
                                   any  directory  that has a matching
                                   group number in its Directory Group
                                   Number    List.    Note:    Because
                                   files-only  directories   are   not
                                   associated   with   a   user,  they
                                   normally do not  contain  any  User
                                   Group Numbers.

There are three common types of groups:

     1.  A file-sharing group whose users can access a set of  library
         directories and each other's logged-in directories.

     2.  A library group whose users  can  access  a  set  of  library
         directories and their own logged-in directories, but not each
         other's logged-in directories.

     3.  A teacher-student group in which the teacher can  access  the
         students'  directories  and the students can access their own
         logged-in directories, but not their classmates'  directories
         or the teacher's directory.

The three figures that follow illustrate these three common groups and
the association between USER and <DIRECTORY> members of a group.

In a file-sharing group (Figure 4-1), all the users  share  all  their
files  according  to  the  group protection field, both in the library
directories (here it is<MANUALS>) and in their logged-in directories.
SYSTEM STORAGE DEVICES                                       Page 4-14














































                    Figure 4-1  File-Sharing Group


In this figure, the two users, PORADA and ESTEY, are  members  of  the
same group (group 2).  The directories <PORADA>, <ESTEY> and <MANUALS>
are also members of group 2.  Users PORADA and ESTEY can access  their
own directory and files according to the owner protection code fields.
PORADA can access directories <ESTEY> and <MANUALS> according  to  the
group  protection  code  fields,  and  conversely,  ESTEY  can  access
directories <PORADA> and <MANUALS> according to their group protection
code  fields.   The  other numbers shown in the figure indicate that a
user or directory can be a member of more than one group.

In a library group (Figure 4-2), all the USER members can  access  all
the  <DIRECTORY>  members  but not each other's logged-in directories.
The library directories  are  usually  files-only  directories.   This
figure  illustrates  a  library  group that consists of the files-only
directories:   <SUBROUTINES>,  <TAPE-TESTS>,   <MACROS>   and   users:
ALUSIC,  BROPHY  and  KOHN.   This library group illustrates that just
because you are a  member  of  a  group  as  a  user,  your  logged-in
SYSTEM STORAGE DEVICES                                       Page 4-15


directory does not have to belong to the same group.
SYSTEM STORAGE DEVICES                                       Page 4-16


                      Users KOHN, ALUSIC and BROPHY are not  directory
                      group  members of the same group;  however, they
                      are all user group members  in  the  same  group
                      (group  2).   User  KOHN  can  access  directory
                      <KOHN> according to the owner  protection  field
                      and  can access directories <SUBROUTINES>, <TAPE
                      TESTS>, and <MACROS> according  to   the   group
                      protection  field.  KOHN can access <BROPHY> and
                      <ALUSIC> according to the  all  user  protection
                      field.   Although the arrows have not been drawn
                      from  users  BROPHY  and  ALUSIC,  their  access
                      privileges are the same as KOHN's.








































                      Figure 4-2  Library Group
SYSTEM STORAGE DEVICES                                       Page 4-17


In a teacher-student group (Figure 4-3),  the  teacher,  WILEY,  is  a
member of the group as a USER, while the directories <HURLEY>, <HALL>,
<MILLER> and <RUSSELL> are <DIRECTORY> members.  The  teacher,  WILEY,
can access the files in the directories <HURLEY>, <HALL>, <MILLER> and
<RUSSELL> according to  the  group  protection.   The  students  whose
logged-in  directories  are  in  this group as <DIRECTORY> members can
access the files in <WILEY> according to the protection  set  for  all
users  because  only their directories are members of the group;  they
are not members of the group as users.


















































                  Figure 4-3  Teacher-Student Group


To establish a group, contact the operator or system manager.
SYSTEM STORAGE DEVICES                                       Page 4-18


4.1.5  Accounts

You are charged for use of the computer and for storage of disk files.
When  you  create a file, you can give it a special account descriptor
by  appending  a  ;A  and  the  account   descriptor   to   the   file
specification.   In  the example below, the file MONITR.SPC.3 has been
given the account descriptor OVERHEAD.

     MONITR.SPC.3;AOVERHEAD

(Some  users  are  required  to  give  account  numbers  rather   than
alphanumeric account descriptors.)

If you do not specify an account descriptor when you  create  a  file,
the  system assigns the account descriptor given in your last LOGIN or
SET ACCOUNT command.

You can change the account descriptor of one or more files  by  giving
the SET FILE ACCOUNT command or the RENAME command.

     @SET FILE ACCOUNT (OF FILES) 4.MEM.* (TO) 14033
      4.MEM.1 [OK]
     @

You can change the default account for your  job  by  giving  the  SET
ACCOUNT command.

     @SET ACCOUNT (NUMBER TO) 25468
      Time used on previous account: 10300
      0:00:12 in 1:10:17
     @



4.1.6  Deleted Disk Files

When you are finished with a file, delete  it  by  giving  the  DELETE
command.   The  DELETE  command  merely  marks  the file for automatic
(conditionally deferred) deletion;  it does  not  actually  erase  the
file.

The deleted files in your logged-in or connected directory are  erased
when you do one of the following:

     1.  You give the EXPUNGE command.

     2.  You (or any other user connected to your directory)  log  off
         the system.

     3.  The operator gives the EXPUNGE command.

The EXPUNGE command erases all the files you have marked for  deletion
since you logged in to the system or gave the last EXPUNGE command.

Deleting and erasing files  are  separate  operations  because  system
response  time  is  improved  if  files  are  erased  only  at regular
intervals instead of every time a file is deleted.  The result of this
enhancement,  which  inevitably helps some users, is a situation where
files do not immediately disappear once deleted.  However,  since  the
life  of a deleted file is quite unpredictable, you are encouraged not
to depend on recovering deleted files.
SYSTEM STORAGE DEVICES                                       Page 4-19


If you want to delete a file, in this  example  it  is  RNDOFF.FOR.2.,
give the command:

     @DELETE (FILES) RNDOFF.FOR.2
      RNDOFF.FOR.2 [OK]
     @

Once RNDOFF.FOR is deleted, you cannot access the file  as  you  would
normally.  The command:

     @DIRECTORY (OF FILES) RNDOFF.FOR.2

        <MILLER>
     @

does not find the  deleted  file.   The  DIRECTORY  command  with  the
DELETED  subcommand lists all the files that have been deleted but not
yet expunged.

     @DIRECTORY (OF FILES) RNDOFF.FOR.2 ,
     @@DELETED
     @@

        <MILLER>
      RNDOFF.FOR.2
     @

To restore RNDOFF.FOR to its normal status, give the UNDELETE command.

     @UNDELETE (FILES) RNDOFF.FOR.2
      RNDOFF.FOR.2 [OK]
     @

Now, the DIRECTORY command works:

     @DIRECTORY (OF FILES) RNDOFF.FOR.2

        <MILLER>
      RNDOFF.FOR.2
     @

If you delete the file, then give the EXPUNGE  command,  the  file  is
completely erased.

     @DELETE (FILES) RNDOFF.FOR.2            !Delete RNDOFF.FOR.2
     @DIRECTORY (OF FILES) RNDOFF.FOR.2 ,    !Make sure it is
     @@DELETED                               !Deleted.
     @@

        <MILLER>
      RNDOFF.FOR.2
     @EXPUNGE (DELETED FILES)                !Erase deleted files
      [2 PAGES FREED]
     @DIRECTORY (OF FILES) ,                 !And check on them
     @@DELETED
     @@

        <MILLER>
     @                                       !The file is gone

If you mistakenly erase, i.e., delete and expunge, a file, contact the
operator or system manager.  Most systems keep backup tapes from which
you can obtain an older version of the file.
SYSTEM STORAGE DEVICES                                       Page 4-20


                               Caution

               You should not delete files and plan  to
               undelete them at a later time.





4.1.7  Regulating Disk File Storage

The maximum amount of disk space you can use is assigned by the system
manager and is referred to as your storage allocation.

Storage allocations are assigned as a number of pages (a page consists
of 512 36-bit words).  Each directory is allocated a certain number of
pages.  Give the INFORMATION (ABOUT) DISK-USAGE command  to  find  out
how much of your allocation you are using.

     @INFORMATION (ABOUT) DISK-USAGE (OF DIRECTORY) <VANDERHOOFT>
      1492 Pages assigned, 1458 in use, 34 Deleted
      1400 Working, 1300 Permanent allowed
      <VANDERHOOFT> Over Permanent Storage Allocation By 192 Pages
      3344 System pages free
     @

In the example  above,  the  user  has  1492  pages  assigned  to  his
directory, 1458 pages are being actively used, while 34 are being used
by deleted (but not expunged) files.  The working  storage  allocation
for  the  directory  <VANDERHOOFT>  is  1400  pages  and the permanent
storage allocation is 1300 pages.  Because the <VANDERHOOFT> directory
exceeded the permanent storage allocation, the system prints a warning
message.  There are 3344 free pages remaining on this file structure.

The  system  automatically  checks  your  working  storage  allocation
whenever you create a new file page.  If you are over that allocation,
it prints a message ?DISK FULL or ?QUOTA EXCEEDED and does not let you
continue  writing  to  your  file.   You  can  delete  and expunge any
unimportant or temporary files and then, expunge the directory to  get
under your working allocation.

Whenever you give a LOGIN or LOGOUT command,  the  system  checks  the
permanent  disk storage allocation of your connected directory.  If it
is exceeded, the system prints a message in the form:

     <directory> OVER PERMANENT STORAGE ALLOCATION BY n PAGES


                               Caution

               If  you  exceed  your  working   storage
               allocation,  the  system programs listed
               in Table 5-2 expunge any deleted  files.
               When  a  system program expunges deleted
               files, it prints  a  message;   however,
               once  you  see  the  message, you cannot
               halt the expunging process.
SYSTEM STORAGE DEVICES                                       Page 4-21


4.1.8  Temporary Files

A temporary file is a file you do not  need  permanently,  such  as  a
scratch  file  or a listing file.  A temporary file has the descriptor
;T appended to its file specification.  The ;T instructs the system to
delete and expunge the file when you log off the system.

You  can  create  a  temporary  file  by  adding  the  temporary  file
descriptor  (;T)  onto  a  file  specification.   Refer to the example
below.

     @COPY (FROM) TTY: (TO) T.FIL;T
     THIS IS A ONE-LINE FILE.
     ^Z
     @DIRECTORY (OF FILES) T.FIL

        <BOSACK>
      T.FIL.100020;T
     @

Note that the system assigns a generation number of 100000  plus  your
job  number  to  the temporary file.  Because this total is unique for
every job, different jobs connected to the  same  directory  can  have
temporary files with the same name and different contents.

The system deletes and expunges all your temporary files when you  log
out.   Note  that  the system only deletes temporary files that have a
generation number of 100000 plus your job number.



4.2  MAGNETIC TAPE STORAGE

Magnetic tapes provide a convenient medium for storing  large  amounts
of data off line.  The DECSYSTEM-20 reads and writes industry-standard
tapes at densities up to 1600 BPI (bits per inch, also  equivalent  to
CPI, characters per inch).

You can store data on magnetic tapes by using the  DUMPER  program  or
your  own  program.  You must first assign the tape drive to your job,
set any desired tape parameters, position the tape, then transfer  the
data.   The  following sections describe this procedure and how to use
the DUMPER program.  If you are using your  own  program,  follow  the
instructions through Section 4.2.3, then run your program.



4.2.1  Assigning A Tape Drive To Your Job

You can allocate a tape drive to your job using one  of  two  methods.
The  first  method uses the TMOUNT command and lets the operator mount
the tape for you;  the second method uses the ASSIGN command and  lets
you mount the tape.

If you want the operator to mount the tape for you, hand the  tape  to
the operator and then give the TMOUNT command from your terminal.  The
TMOUNT  command  asks  the  operator  to  mount  the  tape  and   then
automatically defines a logical name for the tape drive you receive.

     @TMOUNT (TAPE) REEL1: (VOLID) GREEN
     [Operator notified]
     [MTA1: assigned]
     @
SYSTEM STORAGE DEVICES                                       Page 4-22


In the example above, the user requested that the operator  mount  the
tape  identified by the word GREEN.  Note that this identification (or
VOLID) is simply a label on the outside of the tape for easy locating.
This  label does not have to correspond to the contents (files) on the
tape.  When the  operator  finished  mounting  the  tape,  the  system
printed the drive that was assigned, and then defined the logical name
REEL1: as MTA1:

The TMOUNT command is very useful if you need to use a  magnetic  tape
in  a  Batch job.  Use the TMOUNT command at the beginning of the job,
and then use the logical name (instead of the physical device name) to
refer  to  the  magnetic  tape.   If you are using the DUMPER program,
remember that you do not have to include a DUMPER TAPE command if  you
define  the  logical name MTA-DUMPER.  Refer to the description of the
DUMPER program.

The second method of assigning a tape to your job  requires  that  you
use the ASSIGN command.

To find out which tape drives  are  available,  give  the  INFORMATION
(ABOUT) AVAILABLE DEVICES command.

     @INFORMATION (ABOUT) AVAILABLE DEVICES
     Devices available to this job:
     DSK,PS,ADMIN,MTA1,MTA2,LPT,CDR,PTY15,NUL
      Devices assigned to/opened by this job: TTY23
     @

Assign drive 2 by giving the ASSIGN command.

     @ASSIGN (DEVICE) MTA2:
     @

After assigning the drive to your job, you can run the PLEASE  program
and ask the operator to mount your tape.

     @PLEASE MOUNT MAGTAPE  445 ON DRIVE 2.

     [OPERATOR HAS BEEN NOTIFIED]
     OK...DONE!
     [FINSHED AT 14:57:56]
     @

Another method of assigning a drive and mounting your tape is  to  use
the  TMOUNT  command.   The  operator  assigns an available device and
mounts the tape.  (Refer to the description of TMOUNT is  Part  II  of
this manual.)



4.2.2  Setting Tape Parameters

You must make sure that you read and write the tape  with  the  proper
tape  parameters  set.   Give  the INFORMATION (ABOUT) TAPE-PARAMETERS
command.

     @INFORMATION (ABOUT) TAPE-PARAMETERS
      SET TAPE DENSITY 1600
      SET TAPE PARITY ODD
      SET TAPE FORMAT CORE-DUMP
      SET TAPE RECORD-LENGTH 512
     @

These parameters work for most tape transfers;   if  you  do  have  to
change any of the parameters, give the SET TAPE command.
SYSTEM STORAGE DEVICES                                       Page 4-23


     @SET TAPE DENSITY (TO) 800
     @

These changed parameters stay in effect for the rest of your job.   If
you set a parameter by giving a DUMPER command, that parameter affects
only the DUMPER operations and does not change your job defaults.



4.2.3  Positioning The Tape

There are four commands which position a  magnetic  tape:   BACKSPACE,
REWIND,  SKIP,  and UNLOAD.  The BACKSPACE command backspaces the tape
over a certain number of records or files;  the REWIND command rewinds
the  tape  to the load point (the logical beginning of the tape);  the
SKIP command advances the magnetic tape a certain number of records or
files;   and the UNLOAD command unloads the magnetic tape by rewinding
it entirely onto the source reel.

     @SKIP (DEVICE) MTA2: 4 FILES
     @



4.2.4  Using The DUMPER Program

The DUMPER program provides a number of commands to help you save  and
restore files from disk to magnetic tape.  Refer to the description of
the DUMPER program for a detailed explanation of the commands.

The following example shows how to save files on magnetic  tape  using
DUMPER.

     @ASSIGN (DEVICE) MTA3:             !Assign drive 3
     @DUMPER                            !Start DUMPER

     DUMPER 2(154)

     DUMPER>TAPE (FILESPEC) MTA3:       !Use drive 3 with DUMPER
     DUMPER>REWIND                      !Rewind the tape
     DUMPER>SSNAME MACRO FILES          !Set the save set name
     DUMPER>FILES                       !Print file names when saving
     DUMPER>SAVE (DISK FILES) *.MAC.*   !Save all files with type .MAC

     DUMPER TAPE # 1, MACRO FILES, WEDNESDAY, 21-JAN-76 1553
     PS:<MCKIE>
     CONFIG.MAC.3 (AS) CONFIG.MAC.3 [OK]
     DEFS.MAC.1 (AS) DEFS.MAC.1 [OK]
     MEMDMP.MAC.3 (AS) MEMDMP.MAC.3 [OK]
     PROMPT.MAC.1 (AS) PROMPT.MAC.1 [OK]
     PTYCON.MAC.2 (AS) PTYCON.MAC.2 [OK]
     REINIT.MAC.4 (AS) REINIT.MAC.4 [OK]
     RUNFIL.MAC.13 (AS) RUNFIL.MAC.13 [OK]
     TAPER.MAC.3 (AS) TAPER.MAC.3 [OK]
     TRANSL.MAC.14 (AS) TRANSL.MAC.14 [OK]

     TOTAL FILES DUMPED = 9
     TOTAL PAGES DUMPED = 46
     DUMPER>REWIND                      !Rewind the tape
     DUMPER>EXIT                        !End DUMPER
     @

The following example shows how to restore files from tape  using  the
DUMPER  program.   Assign  a  tape  drive (ASSIGN), then start DUMPER.
SYSTEM STORAGE DEVICES                                       Page 4-24


Tell DUMPER which tape you are using (TAPE), then make sure you are at
the  beginning (REWIND).  As DUMPER saves and restores files, normally
it does not print the file specifications;  to get them printed,  give
the  FILES  command.   Next,  tell the system to restore all the files
with the name JOAN.  The system prints  the  save  set  name  and  the
restored  files.   When  DUMPER  reaches  the  end of the save set, it
prints the message END OF SAVESET.

When there are no files to  restore  and  you  have  given  the  FILES
command,  DUMPER does not print any file specifications.  This is true
when you try to restore a  non-existent  file,  JOAN.CBL.   Last,  you
rewind  the  tape  and  restore all the files with the name RENAME and
VTED.  The two file specifications are printed on your terminal.  Type
EXIT to leave DUMPER.

     @ASSIGN (DEVICE) MTA0:             !Assign drive 0
     @DUMPER                            !Start DUMPER

     DUMPER  2(154)

     DUMPER>TAPE (FILESPEC) MTA0:       !Use drive 0 with DUMPER
     DUMPER>REWIND                      !Rewind the tape
     DUMPER>FILES                       !Print file names as restored
     DUMPER>RESTORE (MTA FILES) JOAN.*.* !Get all files with name JOAN


     DUMPER TAPE # 1, FRIDAY'S NEW FILES, WEDNESDAY,  4-FEB-76 1938
     LOADING FILE(S) INTO <TPORADA>
     PS:<TPORADA>JOAN.TXT.1;P777700;A10300 (TO) JOAN.TXT.1 [OK]
     END OF SAVESET
     DUMPER>REWIND                      !Rewind
     DUMPER>RESTORE (MTA FILES) JOAN.CBL.* !When you set FILES and
                                        there are no files, DUMPER
                                        does not print any file
                                        specifications
     DUMPER TAPE # 1, FRIDAY'S NEW FILES, WEDNESDAY,  4-FEB-76 1938
     END OF SAVESET
     DUMPER>REWIND
     DUMPER>RESTORE (MTA FILES) RENAME.*,VTED.*


     DUMPER TAPE # 1, FRIDAY'S NEW FILES, WEDNESDAY,  4-FEB-76 1938
     LOADING FILES INTO <TPORADA>
     PS:<TPORADA>RENAME,TXT.1;P777700;A10300 (TO) RENAME.TXT.1 [OK]
     PS:<TPORADA>VTED.TXT.1;P777700;A10300 (TO) VTED.TXT.1 [OK]

     END OF SAVESET
     DUMPER>REWIND                      !Rewind
     DUMPER>EXIT                        !End DUMPER
     @











                              CHAPTER 5

                         FILE SPECIFICATIONS



The DECSYSTEM-20 keeps all system programs, user programs and data  in
files.   A  file  is  an organized set of data that resides on storage
devices such  as  disk  or  magnetic  tape.   Each  file  is  uniquely
identified by its file specification.  To access a file, you must give
its correct file specification.

You can create program and data files by running  EDIT  to  enter  the
information.   (Refer  to Chapter 6.)  When starting EDIT, give a file
specification to identify  the  file.   After  you  have  entered  the
information  into  the  file, give the E command to exit from EDIT and
have EDIT save the  information  in  the  file.   When  you  need  the
information  later,  reference  the  file  by  giving  that  same file
specification.

The rest of this chapter describes file specifications and how to type
them.



5.1  COMMON FORM OF A FILE SPECIFICATION

The most common form of a file specification is:

     dev:<dir>name.type.gen

where:

     dev:   is a device name, a file  structure  name,  or  a  defined
            logical name.  (Refer to Section 5.2.)

     <dir>  is a  directory  name,  or  in  special  circumstances,  a
            project-programmer number (Refer to Section 5.3.) You must
            always include the angle brackets around a directory name.

     name   is a file name.  (Refer to Section 5.4.)

     .typ   is a file type.  (Refer to Section 5.5.)

     .gen   is a generation number.  (Refer to Section 5.6.)

File specifications tell the system where to find  or  place  a  file.
The  items comprising a file specification are organized from the most
general to the most specific.  Proceeding from left to  right  in  the
above  definition:   the  device  name  specifies  the particular file
structure or device;  the directory specifies an area on that  device;
the file name specifies a particular file in that directory;  the file
type specifies the contents of the file, for example a program,  data,
or  text;  and the generation number specifies how many times the file
has been changed.
FILE SPECIFICATIONS                                           Page 5-2


You can type any of three  file  attributes  at  the  end  of  a  file
specification  to specify the Account, Protection number, or Temporary
status of a file.  These file  attributes  describe  properties  of  a
file.   They  do  not  distinguish  one  file from another.  (Refer to
Section 5.7.)



5.2  DEVICE NAMES - DEV:

A device name designates the storage device  or  file  structure  that
contains,  or  will  contain,  the  file.   A defined logical name can
replace a device name.  Refer to Section 5.12.

A device name consists of alphabetic characters that indicate the type
of device, a number that specifies a particular device (when more than
one of a particular device are available), and a colon that identifies
the  name as a device name.  The DECSYSTEM-20 devices and their device
names are listed in Table 5-1.


                              Table 5-1
                         System Device Names


     Device                                  Device Name


  Public File Structure                      PS:
  Disk (Currently Connected File Structure)  DSK:
  User's Terminal                            TTY:
  A Particular Terminal                      TTYn:
  A Particular Magnetic Tape                 MTAn:
  Any Magnetic Tape                          MTA:
  Any Line Printer                           LPT:
  A Particular Line Printer                  LPTn:
  Any Card Reader                            CDR:
  A Particular Card Reader                   CDRn:

  The number n indicates a particular unit when the device has
  multiple  units.   In  addition,  any available on-line file
  structures will be identified with a device  name  different
  from any on the above list.  For example:  ADMIN:  or ACCT:.


When the device name is used as part  of  a  file  specification,  the
colon must terminate the device name.  Examples of device names are:

     TTY20:                   the terminal connected to line 20.
     MTA0:                    the magnetic tape unit labeled 0.
     LPT:                     a line printer.
     ADMIN:                   a file structure

If you omit a device name from a file specification, the  system  uses
your currently connected file structure as a default.  If you have not
redefined DSK:  with a logical name (refer to  Section  5.12,  LOGICAL
NAMES)  and  you enter DSK:  as the device name, the system again uses
your currently connected file structure.
FILE SPECIFICATIONS                                           Page 5-3


5.3  DIRECTORY NAMES - <DIR>

One area of disk  storage  allocated  for  your  use  is  called  your
logged-in  directory.   It  is referenced by a directory name which is
your user name enclosed in brackets.  Thus, if you are user HALL,  you
would have a directory named <HALL>.  You can own other directories in
addition to your logged-in directory.

A  directory  name  consists  of  up  to  39  alphanumeric  characters
including  hyphen,  dollar sign and underline.  The characters percent
and asterisk can be used to specify a group of directories, but  these
characters  cannot  actually  be  part of a directory name.  (Refer to
Section  5.9.)  Directory  names  are  always  enclosed  in  brackets.
Examples of directory names are:

     <BOURKE>
     <FOWLER>
     <TEST-PROCEDURES-LIBRARY>



5.3.1  Project-Programmer Numbers - [proj,prog]

Most programs and commands allow you to type a directory name,  but  a
few  require  a similar designator called a project-programmer number.
The programs and commands listed in Table 5-2 allow you  to  reference
files in directories other than your logged-in or connected directory.
When  referencing  these  files,  type  a  project-programmer   number
wherever you would normally type a directory name.


                              Table 5-2
                 Special System Programs And Commands


          ALGOL programs           LINK program
          COBOL programs           MACRO programs
          CREF programs            MAKLIB program
          FILCOM program           PRINT command
          FORTRAN program          RERUN program
          ISAM programs            SORT program
          LIBRARY program          SUBMIT command


A project-programmer number consists of two  numbers  separated  by  a
comma and enclosed in square brackets.  To find the project-programmer
number corresponding to a particular directory name,  use  the  TRANSL
program.   The example shows how to find the project-programmer number
associated with the directory <HALL>.

     @TRANSL
     TRANSLATE (DIRECTORY) <HALL>
     <HALL> IS [4,172]
     @

The FILCOM program, for example, requires a project-programmer number.
If you wanted to compare your version of the file PLEASE.MAC with user
Hall's version of the file, you could give the following commands:

     @FILCOM

     *TTY:=PLEASE.MAC[4,172],PLEASE.MAC/A
FILE SPECIFICATIONS                                           Page 5-4


Any program that requires a project-programmer  number  instead  of  a
directory  name permits you to define a logical name and type it where
you would normally type a device name.  If you define the logical name
to  be the directory that contains the file, you do not have to type a
project-programmer number.  The next example shows  how  to  define  a
logical  name  and  use  it in place of user Hall's project-programmer
number in the last example.

     @DEFINE (LOGICAL NAME) HALL: (AS) <HALL>
     @FILCOM

     *TTY:=HALL:PLEASE.MAC,PLEASE.MAC/A

Using logical  names  is  recommended  over  using  project-programmer
numbers  because  project-programmer  numbers  may  change.  (Refer to
Section 5.12 for a further discussion of logical names.)



5.4  FILE NAMES - NAME

Each file  has  a  file  name  consisting  of  up  to  6  alphanumeric
characters,   including   hyphen,  dollar  sign  and  underline.   The
characters * and % may be used to specify a group of file  names,  but
cannot  actually  be  used  in  a  file name.  (Refer to Section 5.8.)
Examples of file names are:

     TEST
     LINDRW
     SPCWAR
     LEM

Some programs and commands allow file names of up to 39 characters  in
length;   be  aware  that some software components do not support this
extended length.  If you are using any of the  commands  and  programs
listed  in  Table 5-2, you cannot use a -, $, or _ in a file name.  In
addition, use the characters * and ?  in specifying a  group  of  file
names.  (Refer to Section 5.8.)



5.5  FILE TYPES - .TYP

When you want to indicate the contents of a file or give the same file
name to more than one file, specify a file type consisting of a period
followed by up to three  alphanumeric  characters,  including  hyphen,
dollar  sign  and  underline.   The  characters * and % can be used to
specify a group of file types, but cannot actually be used in  a  file
type.  (Refer to Section 5.8.) Examples of file types are:

     .FOR
     .DAT
     .ALG
     .CBL

In most circumstances, the results obtained by  typing  just  the  six
characters TESTER are NOT equivalent to the results obtained by typing
TESTER. (the six characters TESTER followed by a period).  Because the
period  really  begins the file type, a file name followed by a period
indicates a non-existent file type.  The file name without the  period
specifies  all files with that file name and a default file type.  For
instance, suppose you have the files  TESTER.FOR.1,  TESTER.CBL.3  and
TESTER..1  in  your  directory.  Give the arguments TESTER and TESTER.
to the DIRECTORY command.
FILE SPECIFICATIONS                                           Page 5-5


     @DIRECTORY (OF FILES) TESTER

        <KOHN>
      TESTER..1
        .CBL.3
        .FOR.1

      TOTAL OF 3 FILES
     @DIRECTORY (OF FILES) TESTER.

        <KOHN>
      TESTER..1
     @

Notice that TESTER matches all the files with the  file  name  TESTER,
while  TESTER. matches  only  one file with the file name TESTER and a
non-existent file type.

Refer to Appendix A for a list of standard file types.

Some programs and commands allow file types up  to  39  characters  in
length;   be  aware  that some software components do not support this
extended length.  If you are using any of the  commands  and  programs
listed  in  Table 5-2, you cannot use a -, $, or _ in a file type.  In
addition, use the characters * and ?  in specifying a  group  of  file
types.  Refer to Section 5.8.



5.6  GENERATION NUMBERS - .GEN

A generation number reflects approximately the  number  of  times  you
have  changed  your  file.   A  generation  number can be any positive
integer up to (and including) 131071 (2^17 - 1 or the  largest  number
that can be represented in 17 binary bits).


                       Note:  Most Recent Files

               Whenever you type a file  specification,
               you can include a generation number.  At
               times  you  may  have  more   than   one
               generation  of a file, especially if you
               set the FILE GENERATION-RETENTION  COUNT
               to  a  number  greater  than  one.   The
               system  always  assumes  that  the  most
               recent  file is the one with the highest
               generation number.  If you create a  new
               file with a generation number lower than
               an existing file with the same file name
               and  type,  you  may have trouble saving
               and restoring it on tape (refer  to  the
               DUMPER description) or using it with the
               LOAD-class commands.


When you do not specify a generation number,  the  system  selects  or
assigns one according to these three rules:

     1.  For creating files- When you create a file, the system  gives
         the new file a generation number of 1.

         When you create a new version of an existing  file  name  and
         type,  the  system  adds one to the highest generation number
         for that file.
FILE SPECIFICATIONS                                           Page 5-6


     2.  For reading files- When you type, list, print or copy a file,
         the  system  selects  the  file  with  the highest generation
         number.

     3.  For  deleting  and  undeleting  files-  When  you  delete  or
         undelete   a  file,  the  system  deletes  or  undeletes  all
         generations of that file.  (Deleting a disk file marks it for
         later  erasure,  undeleting a disk file restores it to normal
         status, provided the file is not expunged.)

The above rules do not apply when you specify a particular  generation
number.   You  can give a generation number as a positive integer or a
symbol.   There  are  four  symbolic  generation  numbers;   they  are
presented in Table 5-3 with an explanation of their meaning.


                              Table 5-3
                     Symbolic Generation Numbers


     Generation Number             Represents


             0                     the highest existing generation
                                   number.

             -1                    one greater than the highest
                                   existing generation
                                   number.

             -2                    the lowest existing generation
                                   number.

             -3 or *               all existing generations.


For  example,   if   you   have   five   generations   of   the   file
CASE.DAT.1,2,3,4,5, then CASE.DAT.0 specifies CASE.DAT.5;  CASE.DAT.-2
specifies CASE.DAT.1, and CASE.DAT.-1 specifies CASE.DAT.6.

Some DECSYSTEM-20 installations limit the number of generations of any
one  file  you  can  keep.   Thus,  if the limit is 3 and you create a
fourth generation of the file, the file  with  the  lowest  generation
number   of   the   three   is   deleted.    If  you  have  the  files
BRKING.CBL.3,4,5, and you create BRKING.CBL.6, the system deletes  the
oldest  file  (BRKING.CBL.3).  The oldest file is always considered to
be the file with the lowest generation number;  the most  recent  file
is considered to be the file with the highest generation number.

If you are using a file with any of the commands and  programs  listed
in  Table  5-2,  you  cannot  include a generation number in your file
specification.  The system always uses the highest existing generation
number  for  files  you are reading, or the generation number 1 if you
are creating a file.  If you are deleting a file, the  system  deletes
all generations.



5.7  FILE ATTRIBUTES - ;A, ;P, ;T

The three file attributes can be added to any disk file specification.

The account descriptor of a file takes the form:
FILE SPECIFICATIONS                                           Page 5-7


     ;Adescriptor

Descriptor is either an account number or an account name.  (Refer  to
Section  3.2.3.)  If  you  do  not  specify  an  account  in your file
specification, the system uses the account you specified in your LOGIN
command or your last SET ACCOUNT command.

The file protection number takes the form:

     ;Pprotection

Protection is a valid TOPS-20 protection number.   (Refer  to  Section
4.1.3.)

A temporary file specification contains the file descriptor ;T  and  a
generation  number  of  100000  plus  the  job  number of the job that
created the file.  (Refer  to  Section  4.1.8.)  Temporary  files  are
deleted when you log off the system.

A file attribute never distinguishes one file from another, it  merely
defines a certain attribute of the file.  For example, if you give the
command:

     @DELETE (FILES) *.*.*;T

you would delete ALL your files, not just the temporary files.

If you are using a file with any of the commands and  programs  listed
in Table 5-2, you cannot include a file attribute at the end of a file
specification.



5.8  SPECIFYING GROUPS OF FILES USING * AND %

You can specify a group of files by including an asterisk or a percent
sign  in  a  file  specification.   These  characters, called wildcard
characters, can be used within a directory name, a  file  name,  or  a
file  type.   You  cannot  use  %  in  a  generation  number, but * is
permitted.

Use the asterisk to match any number of characters, including the null
string.  Thus, if you give the command:

     @DIRECTORY (OF FILES) 4*

        <MANUALS>
      4.TXT.2
      4LANE.INT.12

      TOTAL OF 2 FILES

     @

The system lists all the filenames beginning with the numeral  4.   If
you  give  the  command DIRECTORY (OF FILES) T*L, the system lists all
the file names that begin with the letter T and end with the letter L.

To list all the files that have a file  name  ending  in  the  letters
STAT, give the command DIRECTORY (OF FILES) *STAT.
FILE SPECIFICATIONS                                           Page 5-8


Use the percent sign to match any single  letter.   The  percent  sign
does  not  match  the  null  string.   Thus  if  you  gave the command
DIRECTORY (OF FILES)  4%,  the  system  would  list  only  those  with
2-character file names beginning with the numeral 4.

If you are using a file with any of the commands and  programs  listed
in  Table  5-2,  you  must  use  a different convention for specifying
groups of files.  The * designates a  group  of  file  names  or  file
types, but must either entirely replace the file name or file type, or
occur  at  the  end  of  the  file  name  or  file  type.   Thus,  the
construction TEST* is valid but the construction *TEST is not.  If you
want to indicate a single character, use a ?  instead of a %.



5.9  SPECIFYING SPECIAL CHARACTERS - CTRL/V

If you need to include a special character, i.e., any character  other
than  an  alphanumeric,  -,  $,  or _, in a file specification, type a
CTRL/V directly before it.  This feature is  often  helpful  when  you
want  to  delete  files that were created by undebugged user programs.
It is not recommended that you use this feature  to  create  new  file
specifications.   When  you type the CTRL/V, it does not print on your
terminal.

If you are using a file with any one  of  the  commands  and  programs
listed in Table 5-2, you cannot use the CTRL/V feature.



5.10  TYPING FILE SPECIFICATIONS

There are two methods of typing a file specification:  full input  and
recognition  input.   For  full  input,  you  type  the  complete file
specification.  If you are using a file with any of the  commands  and
programs  listed  in  Table  5-2,  you  must  always  use  full input;
recognition is not available.

Recognition input makes it easier for you to type file specifications.
Two  characters make the system recognize file specifications:  CTRL/F
recognizes  only  the  current  part  of  the  file  specification  by
completing  a  directory name, file name, file type, generation number
or the appropriate default, but  it  will  not  recognize  beyond  the
current field.  The ESC key recognizes as many subsequent fields as is
possible, including any predetermined defaults.  Many commands set  up
defaults  so that you can press the ESC key at the beginning of a file
specification to cause the system  to  print  the  full  default  file
specification  on  your terminal.  These defaults vary from command to
command and are outlined in  the  descriptions  of  the  programs  and
commands in which they occur.

The system treats generation numbers in two specific ways.   When  you
are  recognizing  an  existing  file,  the  system  always selects the
highest generation number;  when you are creating a file  and  a  file
with  that  same  name  and  type already exists, the system assigns a
generation number one higher than the highest existing generation.
FILE SPECIFICATIONS                                           Page 5-9


For example, suppose you have the files TEST.TXT.4 and  TEST.TXT.3  in
your  connected  directory.   The  TYPE  command recognizes generation
number 4, but the COPY command recognizes generation number 5 for  the
destination file.

                        ESC

        @TYPE (FILE) TEST.TXT.4

                                       ESC

        @COPY (FROM) NEW.FIL.1 (TO) TEST.TXT.5 !NEW GENERATION!


The following examples show how to use the ESC key and CTRL/F to  help
you type a file specification.  For the next examples, assume that you
have only these files in your connected directory:

                ACCOUN.FOR.2
                BACKUP.MEM.1,2
                COMPIL.MAC.3
                CREF.CBL.6

If you want to try these examples, create 1-line files with  the  same
file names and types;  the generation numbers do not have to be exact.
Try giving the TYPE command using recognition.  Type the letters  TYPE
and press the ESC key;  the system prints (FILE).

        @TYPE (FILE)

Identify the file ACCOUN.FOR by typing the letter A and  pressing  the
ESC  key.   The  system prints as much of the file specification as it
can, which in this case is CCOUN.FOR.2.  If you want the file  printed
on your terminal, press the RETURN key.

                      ESC

        @TYPE (FILE) ACCOUN.FOR.2

Next, use recognition on the file CREF.CBL.  Give  the  TYPE  command,
then  type  a C and press the ESC key;  the system rings your terminal
bell, asking you to type more.

                      ESC

        @TYPE (FILE) C

Type the second character, R, then press the ESC key.  The system  can
now  identify  the  file  you  want  and  print  the  rest of the file
specification.

                       ESC

        @TYPE (FILE) CREF.CBL.6

Use recognition on the file BACKUP.MEM.1.  Give the TYPE  command  and
type  a B, then press the ESC key.  The system prints ACKUP.MEM.2, but
we need generation number 1.  Type a CTRL/U to erase the command;  the
system prints three Xs and cancels the command.
FILE SPECIFICATIONS                                          Page 5-10


                     ESC         CTRL/U

        @TYPE (FILE) BACKUP.MEM.2 XXX
        @

Give the command again, but this time type a CTRL/F to recognize  only
the first field of the file specification.

                      CTRL/F

        @TYPE (FILE) BACKUP.

Type M and type a CTRL/F, the system prints MEM.

                             CTRL/F

        @TYPE (FILE) BACKUP.MEM.

If you now typed a third CTRL/F, the system would recognize generation
number  2.  Since you want generation 1, type a 1 and press the RETURN
key.

        @TYPE (FILE) BACKUP.MEM.1

Remember two facts when using recognition:

     1.  You can use recognition on any part of the file specification
         except  the device name field.  If you use a device name, you
         must always type the device name in full.  If you do not type
         a   device  name,  the  system  uses  DSK:   (your  currently
         connected file structure) but  does  not  print  it  on  your
         terminal.

     2.  To use recognition, type part of the component  of  the  file
         specification  and type either a CTRL/F to recognize the rest
         of the field or press the ESC key to recognize the  remainder
         of  the  file  specification.   If  you do not type enough to
         identify the component of the file specification, the  system
         requests  more  by  ringing the terminal bell.  Type more and
         use recognition again.

When you have to type  more  than  one  file  specification,  you  can
incorporate recognition input in typing each file specification.



5.11  SEPARATING FILE SPECIFICATIONS WITH COMMAS

Certain commands and programs permit you to give more  than  one  file
specification  on  a  line.   Type the file specifications, separating
them with commas.  Spaces and tabs can precede and follow commas.   An
example of a valid string of file specifications is:

     LINE.FOR, SUB2.FOR, PARSE.FOR, CALC.FOR



5.12  LOGICAL NAMES

After learning about device names, directory names, file  names,  file
types  and  generation numbers, you know that to access a file that is
not in  your  directory  you  have  to  completely  specify  its  file
specification.  Suppose the file is stored in one of a few directories
or on one of several structures, but you are unsure of  exactly  which
FILE SPECIFICATIONS                                          Page 5-11


one.   To  locate  the  file,  you  could give a command to check each
directory and/or each structure or you could use a logical name.

A logical name defines a list of file specifications and other logical
names  and  tells  the  system where and in what order to search for a
file.  When you give a command, substitute the logical  name  for  the
device  name, then type the file name and type of the file you wish to
access.  When the system processes the command, it  searches  for  the
file  in  the  areas specified by your definition of the logical name.
If you are creating a new file using a logical name, the system always
writes  the  file to the first element in the logical name definition.
If you do not have the  proper  access  privileges  for  writing,  the
command or program fails to create the file.

A logical name can  consist  of  up  to  39  alphanumeric  characters,
including  hyphen,  dollar  sign,  and underline, followed by a colon.
Examples of logical names are FORLIB:, GROUP:, and MINE:.  If you  are
defining  a logical name for a program or command listed in Table 5-2,
the logical name cannot contain the characters -, $, or _ or  be  more
than six characters in length (not including the colon).

A logical name you define applies to your job only;  if  the  operator
defines  a  logical  name, it can be used by all users and is called a
system logical name.  The definition of the system logical  name  SYS:
will  always  include the directories that contain the standard system
software.

A logical name definition is a list of file specifications and logical
names  separated  by  commas.   For  most  purposes,  structure names,
directory names and system  logical  names  are  the  most  useful  to
include  in the definition.  Some examples of logical name definitions
are:

<FORTRAN-SOURCES>,<FORTRAN-RUN-FILES>,<OLD-FILES>
     Which tells  the  system  to  look  on  the  currently  connected
     structure   in  the  directory  <FORTRAN-SOURCES>,  then  in  the
     directory  <FORTRAN-RUN-FILES>,  and  finally  in  the  directory
     <OLD-FILES>.   If  you  are  copying  files  to  the logical name
     associated with this definition, the files would be  placed  only
     in directory <FORTRAN-SOURCES>.

DSK:,STU:<MURPHY>,STU:<HURLEY>,STU:<MILLER>
     Which tells the system to look in the connected directory on  the
     connected   structure,   then   look  on  structure  STU: in  the
     directories <MURPHY>, <HURLEY>, <BOSACK>, <MILLER>.   Unless  you
     redefine  DSK:, the system always defines DSK:  as your connected
     structure:<directory>.

<TEST>,<2TEST>,SYS:
     Which tells the system to look in <TEST>, then  <2TEST>  on  your
     connected  structure  and  finally the logical name SYS:.  Unless
     you redefine  SYS:,  the  system  always  defines  SYS:   as  the
     directory where all the system programs are kept.

The next section teaches you how to define, print and delete a logical
name.  The following sections show some uses of logical names.
FILE SPECIFICATIONS                                          Page 5-12


5.12.1  Defining, Printing And Removing A Logical Name

Give the DEFINE command to associate a definition with a logical name.
The  following  example  shows how to define the logical name TWO:  as
the two directories <WYMAN> and <LEWINE> on your connected structure.

     @DEFINE (LOGICAL NAME) TWO: (AS) <WYMAN>,<LEWINE>
     @

To  check  on  the  logical  name,  give   the   INFORMATION   (ABOUT)
LOGICAL-NAMES command.

     @INFORMATION (ABOUT) LOGICAL-NAMES (OF) JOB
     TWO: => <WYMAN>,<LEWINE>
     @

There are system wide logical names that all users  can  give  without
having  to define them for their specific job.  To print a list of the
system wide logical names, give  the  same  INFORMATION  command,  but
substitute the argument SYSTEM for JOB.

     @INFORMATION (ABOUT) LOGICAL-NAMES (OF) SYSTEM
     SYS: => PS:<SUBSYS>,PS:<NEW>
     @

To remove a logical name you have defined, give  the  DEFINE  command,
but do not type any definition.  Type DEF, press the ESC key, type the
logical name only, and press the RETURN key.   The  following  example
removes the logical name TWO:.

     @DEFINE (LOGICAL NAME) TWO:
     @

You can give a system logical name a special definition for your  job,
but only the operator can change its definition for the entire system.



5.12.2  Using A Logical Name

Whenever you use a logical name to read a file,  the  system  searches
the  entire  definition of the logical name until it finds the file or
comes to the end of the logical name definition.  For example, if  you
have  the  logical  name TWO:  defined as <WYMAN>,<LEWINE> and want to
search for  the  file  RUNOFF.MAC  from  either  directory,  give  the
command:

     @DIRECTORY (OF FILES) TWO:RUNOFF.MAC

        <LEWINE>
      RUNOFF.MAC.1
     @

The system looks first in <WYMAN>, then in <LEWINE> where it finds the
file.   The  DIRECTORY command always prints the name of the directory
and structure (if not the currently connected structure) in  which  it
finds the file.
FILE SPECIFICATIONS                                          Page 5-13


Whenever you write a file using a logical name, the  system  uses  the
first  element of the logical name definition;  it never goes past the
first element when writing.  Thus, the command:

     @COPY (FROM) TEST.FIL.1 (TO) TWO:TEST.FIL.1 !NEW FILE!

will always copy the file to <WYMAN> or give a message telling why  it
cannot.  The command never copies the file to <LEWINE>.



5.12.2.1  The Logical Name DSK: -  The  system  defines  logical  name
DSK:   as your connected structure:<directory>.  Any time a command or
program wants to use a file in your connected  directory,  it  follows
the definition of the logical name DSK:  to locate the file.  Thus, if
you want to alter the way each system command and program searches for
files,  change the definition of the logical name DSK:.  The following
type of definition:

     @DEFINE (LOGICAL NAME) DSK:  (AS) DSK:,<TESTER>
     @

is most common and tells  the  system  to  search  in  your  connected
directory  first;   then,  if  the  file  is  not  found,  look in the
alternate directory <TESTER> on your connected structure.


                                 NOTE

               Make sure you do not inadvertantly leave
               out  the  comma.   If  you  do,  DSK: is
               defined as DSK:<TESTER> and programs and
               commands   will   look   only   in  this
               directory on the connected structure.


When you create files, they are stored in your connected directory  or
the first item in your definition of the logical name DSK:.

Another example could be:

     @DEFINE (LOGICAL NAME) DSK: (AS) DSK:, ADMIN:<RECORD>, ADMIN:<GENLED>

The system searches your connected structure:<directory> first.  Then,
if the file is not found, it looks on structure ADMIN:  in directories
<RECORD> and <GENLED>.



5.12.2.2  Library Directories -  Redefining the logical name DSK:   is
useful  if  you  are  creating a new module of a multi-module program.
You can work on the entire program without having a  private  copy  of
the  modules  you do not change.  Suppose that there are four modules:
MOD1.FOR, MOD2.FOR, MOD3.FOR and MOD4.FOR.  If you are  working  on  a
new  MOD2,  but do not want to disturb the library file until yours is
FILE SPECIFICATIONS                                          Page 5-14


debugged, keep your MOD2.FOR in your directory and use the other files
out of the library.  Suppose the library directory is <PROJ-MOD>.  You
would define DSK:  as your connected  directory,  then  the  directory
<PROJ-MOD>.

     @DEFINE (LOGICAL NAME) DSK:  (AS) DSK:,PS:<PROJ-MOD>
     @

giving the command:

     @EXECUTE (FROM) MOD1,MOD2,MOD3,MOD4

would take the file MOD2.FOR from your directory (as it is  the  first
directory  in  the logical name definition of DSK:) and MOD1, MOD3 and
MOD4 from the directory <PROJ-MOD>.  Note  that  all  .REL  files  are
stored in your directory after compilation.



5.12.2.3  The Logical Name  SYS: -   The  system  always  defines  the
logical  name  SYS:   as the directories where all the system programs
are kept.  Whenever you type just the name of a program as a  command,
the  system  follows  the definition of the logical name SYS:  to find
the file.

Suppose you have additional programs that  you  want  to  run  without
having to type the RUN command.  If you redefine the logical name SYS:
to be your connected directory, then the system logical name, you  can
run  programs  from  your  connected  directory  without  typing a RUN
command.  You could define SYS:  with the following command.

     @DEFINE (LOGICAL NAME) SYS:  (AS) DSK:,SYS:
     @

Notice that if you try to save a file on the logical name  SYS:,  that
file will be saved in your connected directory.











                              CHAPTER 6

                      CREATING AND EDITING FILES



This chapter contains a brief description of how to use the CREATE and
EDIT  commands with the system editor, EDIT.  Refer to the EDIT User's
Guide for complete instructions on how to use EDIT.



6.1  CREATING A FILE

To create a file, select a file specification new  to  your  directory
and  give  it  as  an argument to the CREATE command.  The user in the
next example selects the file specification, FACTOR.MAC.

     @CREATE (FILE) FACTOR.MAC
     Input:  FACTOR.MAC.1
     00100

Type CREA and press the ESC key;  the system prints  TE (FILE).   Type
the  file specification (here it is FACTOR.MAC), then press the RETURN
key.  The system creates a new  file  with  that  file  specification,
prints Input:  followed by the file specification, and prints the line
number 00100.  Start typing the contents of your file.

The CREATE command always creates a new generation of  the  file  that
you  specify.  For instance, suppose you have only the file T.FIL.2 in
your directory and give the command:

     @CREATE (FILE) T.FIL
     Input: T.FIL.3
     00100

The  system  lets  you  input  the  file   T.FIL.3.    If   the   FILE
GENERATION-RETENTION-COUNT  for T.FIL is 1 (you can find out by giving
the FDIRECTORY command), the system  deletes  T.FIL.2  when  you  save
T.FIL.3.

In addition, if you try to create an existing generation  of  a  file,
the  system  actually  outputs  the result to a new generation of that
file name and type.  For example, if you have the  file,  T.FIL.2,  in
your directory and give the command:

     @CREATE (FILE) T.FIL.2
     Input: T.FIL.2
     00100   THIS IS A TEST FILE.
     00200   $
     *=NAME
     T.FIL.3
     *E

     [T.FIL.3]
     @
CREATING AND EDITING FILES                                    Page 6-2


The system remembers that there is already  a  file  with  that  exact
name,  type  and  generation  number,  so  it  creates  an output file
specification which is one generation number higher for any file  with
that  same  file  name  and  type.   You  can  print  the  output file
specification while you are in EDIT by giving the  =NAME  command,  as
indicated in the previous example.

If you try to create a file with a generation  number  lower  than  an
existing generation number for a file with the same name and type, the
system actually creates a file with a  generation  number  one  larger
than  the  existing  generation.   For  instance,  if  you have a file
TEST.FOR.5 and try to create the file TEST.FOR.3, the system saves the
file as TEST.FOR.6, as shown in the following example.

     @CREATE (FILE) TEST.FOR.3
     Input: TEST.FOR.3
     00100   This is the first line in the file.
     00200   $
     *=NAME
     TEST.FOR.6
     *E

     [TEST.FOR.6]
     @

The system saves the file as TEST.FOR.6.  If you really need the  file
to be TEST.FOR.3, use the RENAME command.

If your FILE GENERATION-RETENTION-COUNT is 1 (as it is unless you give
the proper SET command) and you create a new generation of a file, the
system deletes all but the highest generation of  the  file.   If  the
FILE  GENERATION-RETENTION-COUNT  for  TEST.FOR  was 1 in the previous
example, the system would delete TEST.FOR.5 when  it  saved  the  file
TEST.FOR.6.

After you give a CREATE command, type the contents of your  file.   If
you make typing mistakes, press the DELETE key to delete one character
at a time;  type a CTRL/U to delete the entire current line;  or  type
a  CTRL/W  to  delete  the  previous  word.   These editing characters
operate only on the current line;  after pressing the RETURN key,  you
must  give  other  EDIT  commands  to  change  the contents of a line.
(Refer to the EDIT User's Guide and the EDIT description in Part II of
this manual.)

When you finish entering lines, press the ESC key;  the system  prints
an *.  To save your file, type the letter E and press the RETURN key.

     @CREATE (FILE) FACTOR.MAC
     Input: FACTOR.MAC.1
     00100   This file has one line.
     00200   $
     *E

     [FACTOR.MAC.1]
     @

Remember that after pressing the ESC key, the system prints an  *  and
you  can  give  any  sequence  of EDIT commands that help prepare your
file.

Each file  that  you  create  is  kept  in  your  currently  connected
directory  unless  you explicitly specify a different directory in the
CREATE command.
CREATING AND EDITING FILES                                    Page 6-3


6.2  EDITING A FILE

After creating a file, you can change its contents by giving the  EDIT
command  with  the  file specification as its argument.  The following
example shows how to start editing a file.

     @EDIT (FILE) NUMBER.TXT.3 (OUTPUT AS)
     Edit: NUMBER.TXT.3
     *

If the file you type does not exist, the system prints a  message  and
allows you to create the file as shown in the previous section.

     @EDIT (FILE) T2.FOR

     %File not found, Creating New file
     Input:  T2.FOR.1
     00100

If you want to retain the existing copy of your file,  but  save  some
changes  in another file, specify a file specification after the guide
words (OUTPUT AS).

     @EDIT (FILE) NUMBER.TXT.3 (OUTPUT AS) NUMBER.OUT
     Edit: NUMBER TXT.3
     *I300
     00350   Repeat step 4.
     *E

     [NUMBER.OUT.1]
     @



6.3  EDITING A FILE IN ANOTHER DIRECTORY

If you are editing a file in a directory that you  are  not  connected
to,  remember  that  the  edited  output  file  will be placed in your
connected directory.  You can  place  the  edited  file  back  in  its
original  directory  only  if  you  specify  the  directory  name (and
structure name, if the directory is on a  different  structure)  after
the  prompt  (OUTPUT  AS).   For  example,  if  you  are  connected to
directory <SMITH> and edit the file TEST.FOR.3  in  directory  <JONES>
and  you  do  not  specify  the  directory in which the file should be
saved, a new file (if one  did  not  already  exist),  TEST.FOR.1,  is
placed in your connected directory, <SMITH>.

     @EDIT (FILE) <JONES>TEST.FOR.3 (OUTPUT AS)
     EDIT:  <JONES>TEST.FOR.3
     *I400
     00400   RETURN
     00500   $
     *E

     [TEST.FOR.1]
     @

If you had specified the directory <JONES> after  the  prompt  (OUTPUT
AS),  the  file  would  have  been  placed  in  directory  <JONES>  as
TEST.FOR.4.
CREATING AND EDITING FILES                                    Page 6-4


     @EDIT (FILE) <JONES>TEST.FOR.3 (OUTPUT AS) <JONES>TEST.FOR
     EDIT:  <JONES>TEST.FOR.3
     *D200
     1 Lines (00200/1) deleted
     *E

     [TEST.FOR.4]
     @



6.4  RECALLING ARGUMENTS TO CREATE AND EDIT COMMANDS

When you type arguments to a CREATE or EDIT command and  that  command
successfully  starts EDIT, the system remembers those arguments.  When
you give a subsequent EDIT or CREATE command,  but  do  not  give  any
arguments,  the  system  supplies  the  arguments from the most recent
CREATE or EDIT command.  Thus, you can  create  a  file,  run  another
program,  then  return  to  edit  the  file and not have to retype the
arguments.  In the following example, the user  creates  a  file,  and
then  edits it.  The EDIT command uses the arguments the user typed in
the CREATE command.

     @CREATE (FILE) LETTER.TXT
     Input: LETTER.TXT.1
     00100   Century Schoolbook
     00200   Helvetica
     00300   Times Roman
     00400   $
     *E

     [LETTER.TXT.1]
     @EDIT
     Edit: LETTER.TXT.1
     *I
     00400   Grecian
     00500   $
     *E

     [LETTER.TXT.2]
     @

When you recall the same file, do not include a generation  number  in
the  file specification.  Otherwise, the system always uses that exact
generation and not the highest generation for that file.  For example,
if  you  give  the command CREATE (FILE) TEST.FOR.3 and save the file,
your most recent file is TEST.FOR.4.  If you  give  the  EDIT  command
without  any  arguments,  the system tries to edit the file TEST.FOR.3
and not the most current file TEST.FOR.4.  If TEST.FOR.3  exists,  the
system  uses  that  file;   if  it does not exist (as in the following
example), the system allows you to create it.

     @EDIT (FILE) TEST.FOR.3
     Edit: TEST.FOR.3
     *D100
     1 Lines (00100/1) deleted
     *E

     [TEST.FOR.4]
     @EDIT

     %File not found, Creating New file
     Input: TEST.FOR.3
     00100
CREATING AND EDITING FILES                                    Page 6-5


To correct this situation, give the EDIT or CREATE command with a file
specification that does not contain a generation number.











                              CHAPTER 7

          RUNNING SYSTEM PROGRAMS AND OTHER USERS' PROGRAMS



7.1  RUNNING SYSTEM PROGRAMS

You can  run  any  one  of  the  system  programs  provided  with  the
DECSYSTEM-20 by simply typing the name of the program and pressing the
RETURN key.  The following example  shows  how  to  start  the  DUMPER
program.

     @DUMPER                  !Type DUMPER and press the RETURN key.
     DUMPER 2(154)            !DUMPER starts

     DUMPER>                  !And waits for a command

System programs are stored in  the  directories  associated  with  the
system  logical  name  SYS:.   To get a list of the available programs
give a DIRECTORY command with the argument SYS:.  If you want to  stop
the printout, type two CTRL/Cs.

     @DIRECTORY (OF FILES) SYS:

        <SUBSYS>
      ACCT20.EXE.5,6
      ACCTPR.EXE.4
      BATCON.EXE.22
      BLIS10.ERR.1
        .EXE.1
      CHECKD.EXE.2
      CHKPNT.EXE.8
                     CTRL/C
      COBDDT.REL.1,2
      COBOL.EXE.5,10 ^C...
     @



7.2  GIVING COMMANDS TO SYSTEM PROGRAMS

Many system programs respond by printing an asterisk on your terminal.
At that time you can type a command to the program, which performs the
function designated  by  the  command.   The  general  system  program
command format is:

     output specification(s) = input specification(s) / switch(es)

For example,  the  FILCOM  (for  FILe  COMparison)  program  works  as
follows:
RUNNING SYSTEM PROGRAMS AND OTHER USERS' PROGRAMS             Page 7-2


     @FILCOM

     *TRACK.DIF=TRACK1.FOR,TRACK2.FOR/A

     %files are different

     *^C
     @

Type FILCOM and press the RETURN key;  the system prints an  asterisk.
Now  you  must  type  a  command  to  FILCOM.   Here  the  user  types
TRACK.DIF=TRACK1.FOR,TRACK2.FOR/A.   This  command  tells  FILCOM   to
compare  TRACK2.FOR  against  TRACK1.FOR  and  place  a  list  of  the
differences in the file TRACK.DIF.  Thus,  TRACK1.FOR  and  TRACK2.FOR
are  input  files,  whereas  TRACK.DIF  is the output file.  Switch /A
instructs FILCOM to consider the files as containing text, rather than
binary data.

None of the programs listed in Table 5-2, allow you to use recognition
on  a  file  specifications  or  switches.   (Refer to Chapter 5 for a
description of the exact file specifications you can type.)

Other system programs respond by printing a prompt that identifies the
program, such as the prompt for the DUMPER program.

     @DUMPER

     DUMPER 2(154)

     DUMPER>

You can use recognition on commands and arguments to these programs.



7.3  GETTING INFORMATION ABOUT SYSTEM PROGRAMS

If you need information about a system program, run the  HELP  program
by  typing  the  name  HELP,  a  space, an asterisk, then pressing the
RETURN key.  The system prints a list of programs  for  which  it  can
print helpful information.

     @HELP *

     HELP IS AVAILABLE FOR THE FOLLOWING:
     ALGOL   APL     BASIC   BATCH   BATCON  BLIS10  COBDDT  COBOL
     CREF    DDT     DUMPER  EDIT    FILCOM  FORDDT  FORTRA  GALAXY
     GALNEW  HELP    ISAM    LIBARY  LINK    LPTSPL  MACRO   MAKLIB
     QUEUE   RUNINP  RUNOFF  SORT    SPRINT  SYSERR  

     @

To get help on the FILCOM program, type the word HELP, leave a  space,
type  the  word  FILCOM,  and press the RETURN key.  The system prints
some helpful information.

     @HELP FILCOM

     FILCOM COMPARES TWO FILES IN EITHER ASCII MODE
     OR BINARY DEPENDING UPON SWITCHES OR FILE NAME EXTENSIONS.
     ALL STANDARD BINARY EXTENSIONS ARE RECOGNIZED AS BINARY BY DEFAULT.
     SWITCHES ARE :-
     /A COMPARE IN ASCII MODE
     /B ALLOW COMPARE OF BLANK LINES
RUNNING SYSTEM PROGRAMS AND OTHER USERS' PROGRAMS             Page 7-3


     /C IGNORE COMMENTS AND SPACING
     /E FILE IS IN .EXE FORMAT
     /S IGNORE SPACING
     /H TYPE THIS HELP TEXT
     /#L LOWER LIMIT FOR PARTIAL COMPARE
             OR NUMBER OF LINES TO BE MATCHED
             ( # REPRESENTS AN OCTAL NUMBER)
     /#U UPPER LIMIT FOR PARTIAL COMPARE
     /Q QUICK COMPARE ONLY, GIVE ERROR MESSAGE IF FILES DIFFER
     /U COMPARE IN ASCII UPDATE MODE
     /W COMPARE IN WORD MODE BUT DON'T EXPAND FILES
     /X EXPAND FILES BEFORE WORD MODE COMPARE

     @



7.4  CHANGING SYSTEM PROGRAM DEFAULTS

To automatically override the system default switches  for  individual
programs  you  can  create  a SWITCH.INI option file in your logged-in
directory and place in it commonly used switches for the commands  and
programs listed in Table 7-1.


                              Table 7-1
             Commands And Programs That Check SWITCH.INI


                             EDIT program
                                PRINT
                                SUBMIT


The format of the SWITCH.INI file is:

     name/switch/switch...

where name is the command or program.  Whenever you give  one  of  the
commands  or programs in Table 7-1, the system searches your logged-in
directory  for  a  SWITCH.INI  file  and  adds  the  switches  in  its
SWITCH.INI line to the command or program you give.

Thus, if you always want to give the /DPY switch (that sets a  special
mode  for  display  terminals)  when  running the EDIT program, create
SWITCH.INI and insert the line:

     EDIT/DPY

instead of having to type the command:

     @EDIT /DPY (FILE) T.FIL.1 (OUTPUT AS)

you can now give the following command, and  EDIT  automatically  sets
the /DPY switch.

     @EDIT (FILE) T.FIL (OUTPUT AS)

If you always want to give the /NOTE switch with print  commands,  you
could place the following line in SWITCH.INI:

     PRINT/NOTE:FLOOR4

Every time you give a PRINT command, the system  includes  the  switch
RUNNING SYSTEM PROGRAMS AND OTHER USERS' PROGRAMS             Page 7-4


/NOTE:FLOOR4.

Your SWITCH.INI file can contain any number of lines.  Normally,  each
line is preceded by the name of the program or command for which it is
intended.  If the switches for a particular program occupy  more  than
one  line,  you  must  place  a hyphen at the end of each line that is
continued.



7.5  RUNNING USER PROGRAMS

To run your own executable program, give  the  RUN  command.   In  the
following example, the user runs the program LESTSQ:

     @RUN (PROGRAM) LESTSQ

You can use recognition in typing the file specification.

An executable program is stored in a file with the file type .EXE.  An
executable  program  has  already been compiled, loaded and saved.  If
you have a program written in a  higher  level  language  or  assembly
language,  refer  to  Chapter 8 in order to make an executable program
from it.

To run another user's program, give the file  specification  with  the
RUN command:

     @RUN (PROGRAM) <SVENSKY>TEST

To achieve  the  same  results,  you  can  also  type  just  the  file
specification after the TOPS-20 prompt.

     @<SVENSKY>TEST

You must have read and execute access to the file.  If you do not have
read access, the system prints:

     @RUN (PROGRAM) <SVENSKY>TEST
     ?Read access required
     @

If you do not have access to the directory, the system would print the
message:

     @RUN (PROGRAM) <SVENSKY>TEST
     ?Directory access privileges required
     @



7.6  CONTROLLING PROGRAMS AND COMMANDS

The following paragraphs discuss three  control  characters;   CTRL/C,
CTRL/O  and  CTRL/T.   CTRL/C  allows  you  to halt the execution of a
command or program;  CTRL/O  controls  output  to  your  terminal  and
CTRL/T allows you to find out if a program is running and its status.
RUNNING SYSTEM PROGRAMS AND OTHER USERS' PROGRAMS             Page 7-5


7.6.1  Typing CTRL/C To Halt Execution

A frustrating situation is to start a program (or command) and not  be
able  to stop it.  If this ever happens to you, type two CTRL/Cs.  The
program (or command) stops and returns you to command level.
RUNNING SYSTEM PROGRAMS AND OTHER USERS' PROGRAMS             Page 7-6


     @FILCOM

     *TEST.DIF=TEST.1,TEST.2
     ^C
     @

At that time, you can give  any  command  that  does  not  change  the
contents  of  memory, for example, the TERMINAL command.  When you are
finished, give the CONTINUE command and the program resumes  where  it
left  off.   (The CONTINUE command will not continue a TOPS-20 command
that you interrupted.)

     @FILCOM

     *TEST.DIF=TEST.1,TEST.2
     ^C
     @TERMINAL (MODE IS) PAGE
     @CONTINUE

     %files are different

     *

Some programs (namely BASIC and EDIT) intercept the CTRL/C and do  not
return you to TOPS-20 command level.  In these special cases, refer to
the description of the particular program to return to command level.

The system does not respond immediately to a single CTRL/C, but  waits
for the time when you would normally give input to the program.  Thus,
two CTRL/Cs are  processed  immediately,  while  a  single  CTRL/C  is
processed at the time you would normally type the next input.



7.6.2  Typing CTRL/O To Stop Output To Your Terminal

To stop just terminal output, type a CTRL/O.  The system prints:

     ^O...

and stops all output to your  terminal.   Your  program  (or  command)
still  executes,  but  no  output  appears on your terminal.  When the
program (or command) finishes, the system prints the TOPS-20 prompt.

     @DIRECTORY (OF FILES) *.FOR

        <MILLER>
      ARDVRK.FOR.1
      BASTST.FOR.3
      ^O...
     @

If you want  to  resume  printing  at  some  later  point  during  the
execution of the same program or command, type another CTRL/O.
RUNNING SYSTEM PROGRAMS AND OTHER USERS' PROGRAMS             Page 7-7


     @DIRECTORY (OF FILES) *.CBL

        <MILLER>
      ANDTST.CBL.6
      BEHIND.CBL.2
      DEVCHR.CBL.4
      ^O...
      WOBBLE.CBL.3
      XTMP.CBL.9

      TOTAL OF 34 FILES
     @

Each successive pair of CTRL/Os stop and resume terminal output.



7.6.3  Typing CTRL/T To Print The Run Status

To find out if a program is running, type a CTRL/T.  The system prints
the state of the program and the amount of system time you used in the
amount of time you have been logged-in.

     @RUN (PROGRAM) COBTST

     COBOL TEST PROGRAM

     RUNNING AT 1230 USED 0:01:22 IN 3:49:20

Typing a CTRL/T  does  not  affect  your  program,  it  merely  prints
information about it.  The information is printed in the form:

     status USED CPU-time IN logged-in-time

The status message tells you the status of your program.  Some of  the
more common status messages are listed in Table 7-2.


                              Table 7-2
                        CTRL/T Status Messages


     Message             Means The Process is:


     RUNNING AT pc       Running
     IO WAIT AT pc       Doing input or output
     HALT AT pc          Stopped
     FORK WAIT AT pc     Waiting for a process to terminate
     SLEEP AT pc         Temporarily suspended

     pc  is  the memory  location  of the  current  instruction
     being executed.


If you have stopped your program by typing a CTRL/C,  the  system  may
precede any of the messages in Table 7-2 with ^C FROM.

If a process has terminated unexpectedly, the CTRL/T message is in the
form:

     HALT:  reason

where reason can be any one of the messages listed in Table 7-3.
RUNNING SYSTEM PROGRAMS AND OTHER USERS' PROGRAMS             Page 7-8


                              Table 7-3
               Unexpected Process Termination Messages


     CHANNEL n INTERRUPT AT pc
               There was a software interrupt on channel  n  when
               executing the instruction located at pc.

     OVERFLOW AT pc
               There was an integer overflow when  executing  the
               instruction at location pc.

     FLOATING OVERFLOW AT pc
               There  was  a   floating   point   overflow   when
               performing  a floating point operation at location
               pc.

     PUSHDOWN OVERFLOW AT pc
               There was an  overflow  during  a  pushdown  stack
               operation at location pc.

     END-OF-FILE AT pc
               There was an  unexpected  end-of-file  encountered
               while executing the instruction at location pc.

     IO DATA ERROR AT pc
               There was an  input  or  output  data  error  when
               executing the instruction at location pc.

     FILE ERROR 3 INTERRUPT AT pc
     FILE ERROR 4 INTERRUPT AT pc
               There  was  a  file  error  while  executing   the
               instruction at location pc.

     ILLEGAL MEMORY READ AT pc
     ILLEGAL MEMORY WRITE AT pc
     ILLEGAL EXECUTE AT pc
               There was an illegal attempt to access  memory  at
               location pc.

     FORK TERMINATION INTERRUPT AT pc
               There was a  software  interrupt  that  terminated
               another   process   (fork)   while  executing  the
               instruction at location pc.

     FILE OR SWAPPING SPACE EXCEEDED AT pc
               There was no more room in  the  system  memory  or
               disk  storage  while  executing the instruction at
               location pc.



7.7  RUNNING PROGRAMS WITHOUT DESTROYING MEMORY

Sometimes you may find it useful to run a program  without  destroying
the  contents  of  memory.   This  is  very useful when a long-running
program finds a file missing as it nears completion.   Before  running
another  program  (such  as EDIT) to create the file, type two CTRL/Cs
and give a PUSH command to create a new copy of memory and the TOPS-20
command language.  You can now run as many programs as you wish.  When
you are done, give the POP command to return to  the  previous  memory
and  command  level.   Last,  give  the CONTINUE command to resume the
execution of your program.
RUNNING SYSTEM PROGRAMS AND OTHER USERS' PROGRAMS             Page 7-9


In the following example, the user runs a  FORTRAN  program.   Nearing
completion,  it  requires  a file the user forgot to create.  The user
stops the program, gives the PUSH command, creates the file, gives the
POP command, and continues the program.

     @EXECUTE (FROM) RANK.FOR      !Execute the program
     FORTRAN: RANK
     LINK:   Loading
     [LNKXCT RANK Execution]

     %FRSOPN File was not found    !The file was not found
     Unit=1 DSK:NUMBER.DAT/ACCESS=SEQIN/MODE:ASCII

                                   !Enter new file specs. End with
                                    $(ALT)
     *^C                           !Type CTRL/C to stop
     @PUSH (COMMAND LEVEL)         !Save the program and set up
                                    a new copy of memory
      TOPS-20 Command processor 2(154)
     @CREATE (FILE) NUMBER.DAT     !Create the missing file
     INPUT: NUMBER.DAT.1
     00100   23461                 !Store one number in it.
     00200   $
     *E                            !Save the file

     [NUMBER.DAT.1]                
     @POP (COMMAND LEVEL)          !Return to the last command level
     @CONTINUE                     !Resume execution
     NUMBER.DAT                    !Type the name of the file
     STOP                          !The program finishes

     END OF EXECUTION
     CPU TIME: 0.38  ELAPSED TIME: 0.87
     EXIT
     @

Whenever you need to run a program and do  not  want  to  destroy  the
current contents of memory, give the PUSH command, run the appropriate
program, give the POP command and continue the  first  program.   Each
PUSH  command  puts you at an inferior process level.  The POP command
returns you to the previous level.  You can give as many pairs of  the
PUSH  and  POP commands as you need.  If the system cannot execute the
command, it cancels the command and prints the message:

     ?Insufficient resources available

Wait a minute or two and  reissue  the  command.   If  you  still  get
errors,  you most likely have given too many PUSH commands without any
intervening POP commands and should give a POP command.  

Whenever you give a PUSH command, the contents of memory are saved  in
their  exact  state and cannot be changed until you give a POP command
to return to that level.











                              CHAPTER 8

               PRODUCING AND RUNNING YOUR OWN PROGRAMS



This chapter describes how to prepare and run your own  programs.   It
is  divided  into  three sections.  The first section describes how to
prepare and run a program contained in  a  single  file.   The  second
section describes how to prepare and run a program that has modules in
more than  one  file.   The  last  section  describes  the  LOAD-class
commands  (COMPILE, LOAD, EXECUTE and DEBUG) that you use in producing
programs.



8.1  PRODUCING A SIMPLE PROGRAM

To produce a simple program:

     1.  Write the source program in a programming language.

     2.  Enter the source program into a file.

     3.  Execute (compile, load and start) the program.

After executing the program for the first time, you will probably want
to eliminate errors by changing the source program and reexecuting it.
If there still are errors, refer to Part II, which  describes  how  to
use the debugging programs COBDDT, FORDDT, and DDT.



8.1.1  Writing The Source Program

The first step is writing the source program.  Choose any one  of  the
programming  languages:  ALGOL, COBOL, FORTRAN, or MACRO.  If you want
to write a program in BASIC, CPL, APL, or any other language that does
not  produce  an  object  program  (also known as a relocatable binary
program), you must follow the procedure described for that language.

The program used in the following examples asks the  user  to  type  a
number, then prints twice that number.

     C     THIS IS A SMALL FORTRAN PROGRAM
           TYPE 101
     101   FORMAT (' TYPE A NUMBER:  '$)
           ACCEPT 102,X
     102   FORMAT (F)
           Y=2*X
           TYPE 103,X,Y
     103   FORMAT (' TWO TIMES ',F,' IS ',F)
           STOP
           END
PRODUCING AND RUNNING YOUR OWN PROGRAMS                       Page 8-2


8.1.2  Entering The Program Into A File

After writing the program, enter it into a file  using  EDIT.   Choose
the  name  of  the file you want to contain the program, then give the
CREATE command.  Use EDIT commands to enter the program correctly into
the  file.   The  following  example  shows  how to enter the previous
FORTRAN program into a file named SMALL.FOR.

     @CREATE (FILE) SMALL.FOR
     Input: SMALL.FOR.1
     00100  C     THIS IS A SMALL FORTRAN PROGRAM
     00200        TYPE 101
     00300  101   FORMAT (' TYPE A NUMBER:  '$)
     00400        ACCEPT 102,X
     00500  102   FORMAT (F)
     00600        Y=2*X
     00700        TYPE 103,X,Y
     00800  103   FORMAT (' TWO TIMES ',F,' IS ',F)
     00900        STOP
     01000        END
     01100  $
     *E

     [SMALL.FOR.1]
     @



8.1.3  Executing The Program

Once you enter the source  program  into  a  file,  you  must  do  the
following:

     1.  Compile the source program to produce an object program.

     2.  Load the object program into memory.

     3.  Start the program in memory.

The particular compiler or assembler translates  the  source  program,
thereby  producing  an  object  program.   The LINK program places the
object program in memory, then the START command starts  the  program.
You  do  not have to give all these commands to perform the individual
functions.  Instead, give  the  EXECUTE  command  which  performs  the
functions  collectively.   Thus, once you have your program in a file,
give the EXECUTE command to run it.

     @EXECUTE (FROM) SMALL.FOR
     FORTRAN: SMALL
     MAIN.
     LINK:   Loading
     [LNKXCT SMALL Execution]
     TYPE A NUMBER: 5
     TWO TIMES      5.0000000  IS      10.0000000
     STOP

     END OF EXECUTION
     CPU TIME: 0.11  ELAPSED TIME: 18:05
     EXIT
     @
PRODUCING AND RUNNING YOUR OWN PROGRAMS                       Page 8-3


8.1.4  Debugging The Program

It is possible that your program will  not  run  correctly  the  first
time.  There are two types of errors you may have:

     1.  Syntax errors

     2.  Execution errors.

To eliminate syntax errors, examine the line or lines  for  which  the
compiler  or  assembler  prints  errors.   Decide  how  to correct the
program, then change the source program and re-execute  it.   Continue
until  your  program  successfully begins execution.  You may find the
DECSYSTEM-20 language manuals helpful in this debugging phase.

If you want to get a listing of your program, give the COMPILE command
with  the  /LIST  switch;   the listing file has the same name as your
last source file and outputs directly to the  line  printer.   If  you
have  a current object program, i.e., you have not changed your source
program since the last COMPILE, LOAD, EXECUTE, or DEBUG  command,  you
must  also  include  the  /COMPILE  switch  to  force  the compiler to
retranslate your source file.  In the next example, the user forces  a
recompilation of his program SMALL and gets a listing.

     @COMPILE (FROM) SMALL/LIST/COMPILE
     FORTRAN: SMALL
     MAIN.
     @

If you would like to see where your program is in the output queue  on
the  line  printer, give the PRINT command with no arguments and press
the RETURN key.

     @PRINT


     OUTPUT QUEUES:
       DEV       JOB      SEQ   PRIO    LIMIT       USER
     ------    ------    ----   ----    -----     ----------

     PLPT0 *   SCH1      4514    10      150      HOT
     PLPT1 *   SMALL     4524    10       26      PORADA
     LPT       CMAIN     4525    10       23      HARDY
     LPT       CODGEN    4526    10       23      HARDY
     LPT       CUTIL     4527    10       23      HARDY

     *Job being output now

     TOTAL:   LPT:   5 jobs;   1150 Pages
     @PRINT


The SMALL program is being printed and is the second job listed.

To produce a listing that contains symbolic cross-references, use  the
/CREF  switch  and  the  CREF  program.   (Refer  to Section 8.2.4 for
further information.)

If you repeatedly edit your file, give a LOAD-class command.  You  can
save  some typing by using the G command to leave EDIT.  The G command
saves your file, then gives your last LOAD-class command.  In the next
example,  the  user  gives  the  COMPILE command, edits his file, then
gives the G command to reissue the previous COMPILE command.
PRODUCING AND RUNNING YOUR OWN PROGRAMS                       Page 8-4


     @COMPILE (FROM) MORPAY.FOR         !The user compiles
     FORTRAN: MORPAY                    !the program
     08700      17      TIPE 102,I,FIP,PP,BALANC
     ?FTNNRC LINE:08700 STATEMENT NOT RECOGNIZED


     UNDEFINED LABELS

        17

     ?FTNFTL    MAIN.    2 FATAL ERRORS AND NO WARNINGS
     @EDIT (FILE) MORPAY.FOR            !Fixes the error
     Edit: MORPAY.FOR.43
     *P8700
     08700      17      TIPE 102,I,FIP,PP,BALANC
     *STI$TY$8700
     08700      17      TYPE 102,I,FIP,PP,BALANC
     *G                                 !Gives the G command
                                        !to save the file and
     [MORPAY.FOR.44]                    !give the last LOAD-class
                                        !command
     FORTRAN: MORPAY
     MAIN.
     @

After your program executes, you may find that it does  not  give  the
correct  answer  to the stated problem.  There could be a multitude of
reasons, but there is probably a logical error in  your  program.   An
easy  way  to  correct such an error is to proceed through the program
step by step.  The system provides three debugging languages that help
you  do this:  COBDDT for use with COBOL programs, FORDDT for use with
FORTRAN programs, and DDT for use with  most  other  programs.   These
debugging  languages  allow  you  to  stop  at  certain points in your
program, examine variables, change the value of variables and continue
at  other  points in the program.  (Refer to the descriptions of these
debuggers in Part II of this manual.)



8.1.5  Saving The Program For Future Use

Once you have debugged the program, load it  into  memory  (using  the
LOAD  command)  and save the loaded program in an .EXE file (using the
SAVE command).  Refer to the following example.

     @LOAD (FROM) SMALL
     LINK:   Loading

     EXIT
     @SAVE (ON FILE)
      SMALL.EXE.1 SAVED
     @

To run the program, give a RUN command.

     @RUN (PROGRAM) SMALL
     TYPE A NUMBER: 34
     TWO TIMES      34.0000000 IS       68.0000000
     STOP

     END OF EXECUTION
     CPU TIME: 0.12  ELAPSED TIME: 3.00
     EXIT
     @
PRODUCING AND RUNNING YOUR OWN PROGRAMS                       Page 8-5


Using  the  .EXE  file  and  a  RUN  command  saves  the  system  from
unnecessarily  rechecking  that the object file is current and loading
it into memory.  Eliminating just those two steps noticeably increases
the  speed in which your program starts execution and reduces the cost
of the computer time.  You should, however, only use an .EXE file when
your program is running correctly.



8.2  PREPARING A MULTI-MODULE PROGRAM

To produce a program that consists of a number of modules, you must:

     1.  Write the modules in a programming language.

     2.  Enter the modules into files.

     3.  Translate the modules, load them into memory, then start  the
         program.

Some helpful functions are described in the following sections:

     1.  Producing listings with cross-references to labels

     2.  Creating and accessing subroutine libraries

     3.  Saving the program for future use

     4.  Saving arguments in indirect files

     5.  Comparing files with the FILCOM program.




8.2.1  Writing The Program Modules

Design the program and write the modules in  a  programming  language.
The  FORTRAN  program  and the two subroutines shown below are used as
examples.

            TYPE 101
     101    FORMAT (' TYPE TWO NUMBERS: '$)
            ACCEPT 102,A,B
     102    FORMAT (2F)
            CALL ADDEM(A,B)
            CALL DIFFER(A,B)
            STOP
            END


            SUBROUTINE ADDEM(A,B)
            C = A + B
            TYPE 101,C
     101    FORMAT (' THE SUM IS: ',F)
            RETURN
            END

            SUBROUTINES DIFFER(A,B)
            C = ABS(A - B)
            TYPE 101,C
     101    FORMAT (' THE DIFFERENCE IS: ',F)
            RETURN
            END
PRODUCING AND RUNNING YOUR OWN PROGRAMS                       Page 8-6


8.2.2  Entering The Modules Into Files

Enter each of the modules into a separate file.  Using separate  files
gives you an advantage in debugging the program.  If there is an error
in one module, you do not have to retranslate the other modules, which
would be required if they are all kept in a single file.

In the example, the user enters the modules into the  files  COMP.FOR,
ADDEM.FOR and DIFFER.FOR.


Create COMP.FOR:

     @CREATE (FILE) COMP.FOR
     Input: COMP.FOR.1
     00100          TYPE 101
     00200   101    FORMAT (' TYPE TWO NUMBERS: '$)
     00300          ACCEPT 102,A,B
     00400   102    FORMAT (2F)
     00500          CALL ADDEM(A,B)
     00600          CALL DIFFER(A,B)
     00700          STOP
     00800          END
     00900   $
     *E                          !Save it

     [COMP.FOR.1]
     @


Create ADDEM.FOR:

     @CREATE (FILE) ADDEM.FOR
     Iput: ADDEM.FOR.1
     00100          SUBROUTINE ADDEM(A,B)
     00200          C = A + B
     00300          TYPE 101,C
     00400   101    FORMAT (' THE SUM IS: ',F)
     00500          RETURN
     00600          END
     00700   $
     *E

     [ADDEM.FOR.1]
     @
Create DIFFER.FOR:

     @CREATE (FILE) DIFFER.FOR
     Iput: DIFFER.FOR.1
     00100          SUBROUTINE DIFFER(A,B)
     00200          C = ABS(A - B)
     00300          TYPE 101,C
     00400   101    FORMAT (' THE DIFFERENCE IS: ',F)
     00500          RETURN
     00600          END
     00700   $
     *E

     [DIFFER.FOR.1]
     @
PRODUCING AND RUNNING YOUR OWN PROGRAMS                       Page 8-7


8.2.3  Executing The Program

Now run the program  by  giving  the  EXECUTE  command.   The  FORTRAN
compiler  creates  all  three  object  programs, then the LINK program
loads them into memory and starts them.  The user  types  two  numbers
and presses the RETURN key.

     @EXECUTE (FROM) COMP,ADDEM,DIFFER
     FORTRAN: COMP
     MAIN.
     FORTRAN: ADDEM
     ADDEM
     FORTRAN: DIFFER
     DIFFER
     LINK: LOADING
     [LNKXCT COMP EXECUTION]
     TYPE TWO NUMBERS: 34,56
     THE SUM IS:      90.0000000
     THE DIFFERENCE IS:      22.0000000
     STOP

     END OF EXECUTION
     CPU TIME: 0.16 ELAPSED TIME: 2.00
     EXIT
     @



8.2.4  Producing A Cross-reference Listing

Many programs contain numerous modules that are  significantly  larger
than  the  previous  examples.   If you want to find the place where a
variable is defined or used, it is somewhat  tedious  to  search  each
module  line by line.  The system can do this work for you by creating
a cross-reference listing that you can print on the line printer.

The cross-reference listing tells where each variable is  defined  and
used.  The listing also locates each use of global variables (but only
if you have designated them as  such  in  your  source  programs)  and
monitor calls.

The CREF (for Cross-REFerence) program produces the listing.   To  use
the  CREF  program,  you  must  give  the  /CREF  switch  along with a
LOAD-class command that translates your  source  program.   After  the
program  is  translated,  your  directory  will contain a .CRF file in
addition to your .REL file.  Thus, if you have the file  TEST.FOR  and
give the command:

     @COMPILE (FROM) /CREF TEST

your directory will contain the files TEST.FOR, TEST.REL and TEST.CRF.

The .CRF file contains information for the CREF program.  When you are
ready to produce the listing, give the CREF command.  The CREF program
produces listings for all the .CRF files in your  connected  directory
that were created since you logged in.  The program sends the listings
directly to the line printer.  In  the  following  example,  the  user
produces  a  cross-reference  listing  for the COMP, ADDEM, and DIFFER
programs.

     @EXECUTE (FROM) /CREF COMP,ADDEM,DIFFER  !Include /CREF
     FORTRAN: COMP
     MAIN.
     FORTRAN: ADDEM
PRODUCING AND RUNNING YOUR OWN PROGRAMS                       Page 8-8


     ADDEM
     FORTRAN: DIFFER
     DIFFER
     LINK: Loading
     [LNKXCT COMP EXECUTION]
     TYPE TWO NUMBERS: 34,56
     THE SUM IS:      90.0000000
     THE DIFFERENCE IS:      22.0000000
     STOP

     END OF EXECUTION
     CPU TIME: 0.15 ELAPSED TIME: 1.52
     EXIT
     @CREF                                   !Then run CREF
     CREF:   COMP
     CREF:   ADDEM
     CREF:   DIFFER
     @

If you already have object files for the programs,  give  the  COMPILE
command  with the /CREF, /NOBINARY, and /COMPILE switches.  The system
produces just the .CRF file without producing an object program.

The user in the next example produces only cross-reference listings:

     @COMPILE (FROM) /CREF /NOBINARY /COMPILE COMP,ADDEM,DIFFER
     FORTRAN: COMP
     MAIN.
     FORTRAN: ADDEM
     ADDEM
     FORTRAN: DIFFER
     DIFFER
     @CREF
     CREF:   COMP
     CREF:   ADDEM
     CREF:   DIFFER
     @

If  you  have  a  COBOL  program,  the   /CREF   switch   causes   the
cross-references  to get put directly in the listing file;  you do not
need to run the CREF program.



8.2.5  Using Subroutine Libraries

If you have a set of frequently used subroutines, rather than  keeping
the  object  files  separate,  it  is easier to group them in a single
object file called a library file.  Then when you  give  a  LOAD-class
command,  all  you  have to type is the one library file specification
instead of a list of subroutine file specifications.  In addition,  it
is  simpler  to keep track of one file, especially if a group of users
is sharing the subroutines.

For example, if you have the subroutines OPREAD, OPWRIT,  CLREAD,  and
CLWRIT,  which  may  be  called  by  the  main  program  WRITER,  your
LOAD-class command would be:

     @LOAD (FROM) WRITER,OPREAD,OPWRIT,CLREAD,CLWRIT

If you place the four subroutines in a library, DOFILE,  your  command
is shortened to:

     @LOAD (FROM) WRITER,DOFILE/LIBRARY
PRODUCING AND RUNNING YOUR OWN PROGRAMS                       Page 8-9


The /LIBRARY switch causes the system to load only  those  subroutines
that  are  actually  called.   If  you  use  the  library file and the
/LIBRARY  switch,  after  writing  a  main  program  that  calls   the
subroutines, you do not have to remember which subroutines the program
calls to include the proper  file  specifications  in  the  LOAD-class
command.

A library file is produced by separately  compiling  the  subroutines,
then running the MAKLIB program to construct the library file.  If you
have to modify any one of the library files,  edit  the  source  file,
recompile,  and  use  MAKLIB  to replace the subroutine in the library
file.

The following sections show how you might create a library  containing
four  subroutines,  use the library, change a subroutine, then replace
the old subroutine in the library with the new one.  The user has four
subroutines:   OPREAD,  OPWRIT,  CLREAD, and CLWRIT, which are entered
into files, compiled, and then stored in  the  library,  DOFILE.   The
user  then  creates  his  main  program, WRITER, and uses the library.
After he uses the library, one  of  the  subroutines  is  changed  and
replaced in the library.



8.2.5.1  Entering The Subroutines Into Files -  Enter the  subroutines
into separate files.

     @CREATE (FILE) OPREAD.FOR
     Input: OPREAD.FOR.1
     00100   C     OPREAD - OPENS A FILE FOR READING
     00200         SUBROUTINE OPREAD(NAME)
     00300         DOUBLE PRECISION NAME
     00400         OPEN(UNIT=1,ACCESS='SEQIN',FILE=NAME)
     00500         RETURN
     00600         END
     00700         $
     *E

     [OPREAD.FOR.1]
     @

     @CREATE (FILE) OPWRIT.FOR
     Input: OPWRIT.FOR.1
     00100   C     OPWRIT - OPENS A FILE FOR WRITING
     00200         SUBROUTINE OPWRIT(NAME)
     00300         DOUBLE PRECISION NAME
     00400         OPEN(UNIT=1,ACCESS='SEQOUT',FILE=NAME)
     00500         RETURN
     00600         END
     00700         $
     *E

     [OPWRIT.FOR.1]
     @

     @CREATE (FILE) CLREAD.FOR
     Input: CLREAD.FOR.1
     00100   C     CLREAD - CLOSES OPENED FOR READING
     00200         SUBROUTINE CLREAD(NAME)
     00300         DOUBLE PRECISION NAME
     00400         CLOSE(UNIT=1,ACCESS='SEQIN',FILE=NAME)
     00500         RETURN
     00600         END
     00700         $
PRODUCING AND RUNNING YOUR OWN PROGRAMS                      Page 8-10


     *E

     [CLREAD.FOR.1]
     @

     @CREATE (FILE) CLWRIT.FOR
     Input: CLWRIT.FOR.1
     00100   C     CLWRIT - CLOSES A FILE OPENED FOR WRITING
     00200         SUBROUTINE CLWRIT(NAME)
     00300         DOUBLE PRECISION NAME
     00400         CLOSE(UNIT=21,ACCESS-'SEQOUT',FILE=NAME)
     00500         RETURN
     00600         END
     00700         $
     *E

     [CLWRIT.FOR.1]
     @



8.2.5.2  Compiling The Subroutines -  After entering  the  subroutines
into files, compile them to produce four separate object files.

     @COMPILE (FROM) OPREAD,OPWRIT,CLREAD,CLWRIT
     FORTRAN: OPREAD
     OPREAD
     FORTRAN: OPWRIT
     OPWRIT
     FORTRAN: CLREAD
     CLREAD
     FORTRAN: CLWRIT
     CLWRIT
     @



8.2.5.3  Creating The Library  File -   Create  the  library  file  by
running  the  MAKLIB program.  After starting MAKLIB, type the name of
the library file followed by an equal sign.  Then, type  the  name  of
each  object  file  followed  by  the  /APPEND  switch  (which you may
abbreviate as /APP.).

     @MAKLIB
     *DOFILE=OPREAD/APPEND,OPWRIT/APPEND,CLREAD/APPEND,CLWRIT/APPEND
     *

Once the library file is created, list its contents on  your  terminal
by  giving  a  MAKLIB  command  with  the /LIST switch.  The following
command lists the contents of the DOFILE library.   The  first  number
following  the  subroutine  name is the highest relocatable address it
occupies and the second number indicates its length;  both numbers are
octal.

     *TTY:DOFILE/LIST
            Listing of Modules
     Produced by MAKLIB Version 2(20) on 22-Mar-77 at 12:07:23

          **************************

     File: DSK:DOFILE.REL[4,105]

     OPREAD  400020  000007
     OPWRIT  400020  000010
PRODUCING AND RUNNING YOUR OWN PROGRAMS                      Page 8-11


     CLREAD  400020  000007
     CLWRIT  400020  000010
     *

To end MAKLIB, type a CTRL/C.

     *^C
     @



8.2.5.4  Using The Library File -  To use the library file,  create  a
main  program that uses the subroutines and load them all into memory.
Notice that the WRITER program in the following example does  not  use
all the subroutines.  When you give the LOAD command with the /LIBRARY
switch, the system will load only the two subroutines that are  called
(OPWRIT and CLWRIT).

     @CREATE (FILE) WRITER.FOR
     Input: WRITER.FOR.1
     00100         DOUBLE PRECISION NAME,DAY
     00200         CALL DATE(DAY)
     00300         CALL OPWRIT('DATE.FIL')
     00400         TYPE 101,DAY
     00500   101   FORMAT (' UPDATING AS OF: ',A10)
     00600         WRITE (21,102) DAY
     00700   102   FORMAT ('=> UPDATED ON: ', A10)
     00800         CALL CLWRIT('DATE.FIL')
     00900         STOP
     01000         END
     01100   $
     *E

     [WRITER.FOR.1]
     @

After entering the main program, load it with  the  library  file  and
start it.  Remember to include the /LIBRARY switch.

     @LOAD (FROM) WRITER,DOFILE/LIBRARY
     FORTRAN: WRITER
     MAIN.
     LINK:   Loading

     EXIT
     @START
     UPDATING AS OF:  22-Mar-77
     STOP

     END OF EXECUTION
     CPU TIME: 0.41 ELAPSED TIME: 1.33
     EXIT
     @



8.2.5.5  Changing  A  Subroutine  In  The  Library -   To   change   a
subroutine  in  the  library,  edit  the  source  file,  recompile the
subroutine and use MAKLIB to update the library file.

     @EDIT (FILE) OPWRIT.FOR
     EDIT: OPWRIT.FOR.1
     *I450!2
     00450         TYPE 101,NAME
PRODUCING AND RUNNING YOUR OWN PROGRAMS                      Page 8-12


     00470   101   FORMAT (' [',A10,' OPENED]')
     00490   $
     *E

     [OPWRIT.FOR.2]
     @

After editing the file, compile a new object file.

     @COMPILE (FROM) OPWRIT.FOR
     FORTRAN: OPWRIT
     OPWRIT
     @

Now, run the MAKLIB program.  First, check the contents of the library
file.

     @MAKLIB
     *TTY:=DOFILE/LIST
             Listing of Modules
     Produced by MAKLIB Version 2(20) on 22-Mar-77 at 12:31:25

          **************************

     File: DSK:DOFILE.REL[4,105]

     OPREAD  400020  000007
     OPWRIT  400020  000010
     CLREAD  400020  000007
     CLWRIT  400020  000010
     *

Second, update the library file.  Type the name  of  the  new  library
file followed by an equal sign.  Type the name of the library file you
want to update and the /MASTER:  switch.   After  /MASTER:   type  the
name  of the subroutine you are replacing and a comma.  Last, type the
name of the new subroutine and the /REPLACE switch.  Press the  RETURN
key.  When the update is complete, the system prints an asterisk.

     *DOFILE=DOFILE/MASTER:OPWRIT,OPWRIT/REPLACE
     *

Check the new library to assure that the new subroutine  is  included.
As  you  can  see,  the length of the OPWRIT subroutine has changed to
include the additional statements.

     *TTY:=DOFILE/LIST
             Listing of Modules
     Produced by MAKLIB Version 2(20) on 22-Mar-77 at 12:38:03

          ***************************

     File: DSK:DOFILE.REL[4,105]

     OPREAD  400020  000007
     OPWRIT  400035  000015
     CLREAD  400020  000007
     CLWRIT  400020  000010
     *^C
     @
PRODUCING AND RUNNING YOUR OWN PROGRAMS                      Page 8-13


Load the main program with the new library.  Notice that  you  do  not
have  to recompile the main program or any of the other subroutines to
change OPWRIT.  After loading the program, save  it  for  future  use,
then start the program.

     @LOAD (FROM) WRITER,DOFILE/LIBRARY
     LINK:   Loading

     EXIT
     @SAVE
      WRITER.EXE.1 SAVED
     @START
     [DATE.FIL   OPENED]
     UPDATING AS OF:  22-Mar-77
     STOP

     END OF EXECUTION
     CPU TIME: 0.43 ELAPSED TIME: 1.86
     EXIT
     @

Refer to the description of the MAKLIB program  for  more  information
about creating and updating library files.



8.2.6  Saving The Program For Future Use

The most efficient way to save a program for future use is to save the
executable program.

In the next example, the user loads his main program and  the  library
file.   Instead  of loading all four subroutines in DOFILE, the system
loads only the two that the program actually uses (OPWRIT and CLWRIT).

     @LOAD (FROM) WRITER,DOFILE/LIBRARY
     LINK:   Loading

     EXIT
     @

Give the SAVE command to save the program, then start it by giving the
START command.  To use the program later, give the RUN command.

     @SAVE
      WRITER.EXE.1 Saved
     @START
     [DATE.FIL  OPENED]
     UPDATING AS OF: 22-Mar-77
     STOP

     END OF EXECUTION
     CPU TIME: 0.45  ELAPSED TIME: 2.68
     EXIT
     @




8.2.7  Saving Arguments In Indirect Files

You may find it  convenient  to  store  the  complex  arguments  of  a
LOAD-class  command  in  a  file  called  an indirect file.  Later, in
giving the  LOAD-class  command,  just  specify  the  file  where  the
arguments are stored instead of typing the entire line.
PRODUCING AND RUNNING YOUR OWN PROGRAMS                      Page 8-14


If you give the indirect command file a file type of .CMD, you do  not
have  to  include a file type when giving its file specification.  The
following example shows how to create a command file that will compile
the four subroutines.

     @CREATE (FILE) D.CMD
     Input: D.CMD.1
     00100   OPREAD,OPWRIT,CLREAD,CLWRIT
     00200   $
     *E

     [D.CMD.1]
     @

To use the file in a LOAD-class command, precede it with  an  @.   You
may  use  recognition in typing the file specification.  If you do not
give a file type, the system uses file type .CMD (or a null file  type
if there is no file type .CMD).

     @COMPILE (FROM ) @D
     FORTRAN: OPREAD
     OPREAD
     FORTRAN: OPWRIT
     OPWRIT
     FORTRAN: CLREAD
     CLREAD
     FORTRAN: CLWRIT
     CLWRIT
     @

The following example shows the indirect file you may  use  to  create
the program WRITER.

     @CREATE (FILE) W.CMD
     Input: W.CMD.1
     00100   WRITER.FOR,DOFILE.REL/LIBRARY
     00200   $
     *E

     [W.CMD.1]
     @LOAD (FROM) @W
     FORTRAN: WRITER
     MAIN.
     LINK:   Loading

     EXIT
     @



8.2.8  Comparing Changes In Files

Many times it is useful to view just the differences between two files
without  comparing  them  visually  line  by line.  The FILCOM program
(described  in  PART  II)  makes  the  comparison  and   outputs   the
differences.

To run the FILCOM program, type FILCOM and press the RETURN key;   the
system  prints an asterisk.  You must now type a FILCOM command in the
form:

     *output file = reference file, new file /switches
PRODUCING AND RUNNING YOUR OWN PROGRAMS                      Page 8-15


The output file is the file that contains the differences.  It can  be
a  file  or  your  terminal (TTY:) The reference file is the file that
will be listed first in the list of differences, and the new  file  is
the  file  that will be listed second.  The list of switches specifies
any special parameters for properly performing the comparison.

First, change one line in the file WRITER.FOR and save the new file in
UPDATE.FOR.

     @EDIT (FILE) WRITER.FOR.1 (OUTPUT AS) UPDATE.FOR
     Edit: WRITER.FOR.1
     *F=>$
     00700   102   FORMAT ('=> UPDATED ON: ', A10)
     *SUPDATED$ADDED NEW DATA$.
     00700   102   FORMAT ('=> ADDED NEW DATA ON: ', A10)
     *E

     [UPDATE.FOR.1]
     @

There are now two files:   WRITER.FOR,  which  contains  the  original
line,  and  UPDATE.FOR,  which  contains  the modified line.  The next
example shows how to compare the two files and output the  differences
to your terminal.  The /A switch instructs FILCOM to compare the files
as if they contained ASCII  text  (rather  than  binary  information).
Type a CTRL/C to end FILCOM.

     @FILCOM                            !Start FILCOM

     *TTY:=WRITER.FOR,UPDATE.FOR/A      !Type the command
     FILE 1) DSK:WRITER.FOR  CREATED: 1554 2-JAN-1976
     FILE 2) DSK:UPDATE.FOR  CREATED: 1556 24-JAN-1976

     1)1     00700   102   FORMAT ('=> UPDATED ON: ', A10)
     1)      00800         CALL CLWRIT('DATE.FIL')
     ****
     2)1     00700   102   FORMAT ('=> ADDED NEW DATA ON: ', A10)
     2)      00800         CALL CLWRIT('DATE.FIL')
     **************

     %files are different

     *^C                                !Type a CTRL/C to
     @                                  !end FILCOM



8.3  THE LOAD-CLASS COMMANDS (COMPILE, LOAD, EXECUTE, DEBUG)

The  LOAD-class  commands  help  you  produce  programs   easily   and
correctly.   The  four  commands perform all the functions you need to
compile (or assemble) and debug a program:

COMPILE        The COMPILE command produces an object program  from  a
               source program.

LOAD           The LOAD command produces an object program, then loads
               it into memory.

EXECUTE        The EXECUTE command produces an object  program,  loads
               it into memory, then starts its execution.

DEBUG          The DEBUG command produces an object program, loads  it
               and the appropriate debugging program into memory, then
               starts execution of the debugging program.
PRODUCING AND RUNNING YOUR OWN PROGRAMS                      Page 8-16


If you repeatedly edit your file and then give a  LOAD-class  command,
you  can save some typing by using the G command to leave EDIT.  The G
command saves your file and gives your last  LOAD-class  command.   In
the  next example, the user gives the COMPILE command, edits his file,
and gives the G command to reissue the previous COMPILE command.

     @COMPILE (FROM) MORPAY.FOR         !The user compiles
     FORTRAN: MORPAY                    !the program
     08700      17      TIPE 102,I,FIP,PP,BALANC
     ?FTNNRC LINE:08700 STATEMENT NOT RECOGNIZED


     UNDEFINED LABELS

        17

     ?FTNFTL   MAIN.    2 FATAL ERRORS AND NO WARNINGS
     @EDIT (FILE) MORPAY.FOR            !Fix the error
     Edit: MORPAY.FOR.43
     *P8700
     08700      17      TIPE 102,I,FIP,PP,BALANC !Examine the error
     *STI$TY$8700
     08700      17      TYPE 102,I,FIP,PP,BALANC !Fix the error
     *g                                 !give the G command
                                        !to save the file and
     [MORPAY.FOR.44]                    !give the last LOAD-class
                                        !command
     FORTRAN: MORPAY
     MAIN.
     @

In addition to the functions listed  above,  the  LOAD-class  commands
perform some helpful and timesaving functions by:

     1.  Recognizing the programming language in which you write  your
         program(s)

     2.  Reproducing only out-of-date object programs

     3.  Recalling arguments of the last LOAD-class command  when  you
         omit the arguments to a current command

     4.  Taking arguments from an indirect file

     5.  Appending files to produce one source program

     6.  Passing switches to the LINK program

     7.  Specifying special actions with switches.

Some useful ways you can use these features are described in the  rest
of this chapter.

The next section describes object programs and  their  use.   You  may
skip  this  section,  but the information is valuable in understanding
the flexibility that relocatable programs provide.
PRODUCING AND RUNNING YOUR OWN PROGRAMS                      Page 8-17


8.3.1  Object (Relocatable) And Executable Programs

The main function of any LOAD-class command is to  produce  an  object
program.   (Refer  to  Figure  8-1.) The source program is stored in a
source file with a file type that indicates the programming  language.
(Table  8-1  contains  file  specifications  listing the standard file
types.) By compiling  the  source  program,  you  produce  the  object
program  stored  in  an object file having a file name the same as the
source file name.  The object program is relocatable, which means  you
can  load it into memory with subroutines, or as a subroutine, without
recompiling.  Hence, the object file has a  file  type  of  .REL  (for
relocatable) and is often called a .REL file.  To run the program, you
must load the object program into memory.  At that time,  the  various
subroutines and main programs are linked together.  The loaded program
is now executable;  it may be saved in a disk file with the same  name
as the source program and the file type .EXE (for executable).


                        Source file= name.typ

                            Source program


                                     Compiling (or assembling)

                        Object file= name.REL

                            Object program


                                     Loading

                                Memory

                          Executable program


                                     Saving

                      Executable file= name.EXE

                          Executable program


          Figure 8-1 Source, Object, and Executable Programs


Any program you run is in executable  form.   To  form  an  executable
program,  you  must translate the source program, then load the object
program into memory.  After you have the executable program in memory,
you can save it for future use or start its execution.

In creating an executable program, you must go through the process  of
translating  and  loading.  Should you use the same subroutine in more
than one program, you can reuse the object program  when  loading  the
modules  into  memory.   By  eliminating the needless translation, you
save both time and computer charges.
PRODUCING AND RUNNING YOUR OWN PROGRAMS                      Page 8-18


8.3.1.1  Using Relocatable Object Programs -   Once  you  translate  a
source  program  into  an  object  program,  you  may load that object
program into memory with any combination of cooperating  programs  and
produce an executable program.  (The word program, as it is used here,
refers to both main programs and subroutines.)

The next examples show how to  use  the  FILLER  subroutine  in  three
different programs, without having to recompile it each time.

In the first example, FILLER is used with the  main  program,  TESTER.
To run TESTER, give the command:

     @EXECUTE (FROM) TESTER,FILLER

The system compiles TESTER and FILLER, loads them  into  memory,  then
starts the execution of TESTER.

The second program, LAYOUT also has another subroutine, TTYOUT,  which
you must include in the EXECUTE command.

     @EXECUTE (FROM) LAYOUT,FILLER,TTYOUT

The third program, GAMMA, has a POLAR subroutine that is  included  in
the EXECUTE command.

     @EXECUTE (FROM) GAMMA,POLAR,FILLER

When typing the file specifications, you do not have to place them  in
any specific order;  the system takes their position into account when
producing the absolute symbols.  The main program  is  usually  placed
first to make it easier for other users to identify.



8.3.1.2  Saving Executable Programs -  If you run the  LAYOUT  program
often, it is senseless to constantly reload the same object program to
produce the executable program.  You can save the  executable  program
by  giving  a  SAVE  command  after  a LOAD command.  Then, to run the
program, all you have to do is give the RUN command  or  identify  the
program  by  its  complete file specification.  Saving and running the
executable program saves you and the  system  both  time  and  effort.
Refer to the following example:

     @LOAD (FROM) LAYOUT,TTYOUT,FILLER       !Load the object file
     LINK:   Loading

     EXIT
     @SAVE                                   !Save the executable 
                                              program
      LAYOUT.EXE.3 SAVED
     @RUN (PROGRAM) LAYOUT                   !Now you can run it

     Start the layout at point: 45
     The layout is complete,
        Processed 34 angles
        Processed 35 sides
        With an error of 1 foot in 45,000.

     STOP

     END OF EXECUTION
     CPU TIME: 0.08  ELAPSED TIME: 1.00
     EXIT
     @
PRODUCING AND RUNNING YOUR OWN PROGRAMS                      Page 8-19


Never save a program after you have already started it;  some  storage
areas may not get properly cleared during restarting.



8.3.2  Selecting A File And Recognizing The Programming Language

When you give a file name as an argument to a LOAD-class command,  you
do not have to include a file type.  (Do not include the period at the
end of the file name either.) For example, you can give the command:

     @COMPILE (FROM) REDUND
     FORTRAN:  REDUND
     MAIN.
     @

The system found the file REDUND.FOR and compiled  it  using  FORTRAN.
The  file  type .FOR tells the system that the file contains a FORTRAN
program and should be compiled using FORTRAN.

Whenever you do not include a file type in a LOAD-class  command,  the
system  searches  for  a  file  specification  matching the first file
specification  in  Table  8-1.   If  there   is   no   matching   file
specification,  the  system  searches  for  a match of the second file
specification.  If there is none, the system continues the  search  in
this  manner until it finds a file specification matching one in Table
8-1, or until it reaches the  end  of  Table  8-1.   If  there  is  no
matching file, the system prints an error message.

Upon finding a matching file, the system (if  necessary)  compiles  it
using  the  language  specified by the file type.  For example, if the
file type is .CBL, the system uses the COBOL compiler.  If there is no
file   type,  or  if  the  file  type  is  not  in  one  of  the  file
specifications in Table 8-1, the system uses the FORTRAN compiler.


                              Table 8-1
           LOAD-class Command Standard File Specifications


          File Specification            Language Translator


          name.                         FORTRAN (default)
          name.FOR                      FORTRAN
          name.MAC                      MACRO
          name.CBL                      COBOL
          name.ALG                      ALGOL
          name.REL                      Object program, do not
                                        translate


For example, if you type the file name BIRCH,  the  system  looks  for
BIRCH.,   BIRCH.FOR,  BIRCH.MAC,  BIRCH.CBL,  BIRCH.ALG,  and  finally
BIRCH.REL.  If none of those  files  exists,  the  system  prints  the
message:  %SOURCE  FILE  MISSING  -  BIRCH.   Suppose  that  BIRCH.CBL
exists;  the system would then compile BIRCH.CBL using COBOL.

Notice that if you have the files BIRCH.CBL and BIRCH.MAC and  give  a
LOAD-class  command  listing  the name BIRCH, the system uses the file
BIRCH.MAC.  If you also have the file BIRCH..1,  the  system  uses  it
before  using  BIRCH.MAC.   If  BIRCH..1  needed compiling, the system
would use the FORTRAN compiler.
PRODUCING AND RUNNING YOUR OWN PROGRAMS                      Page 8-20


8.3.2.1  Using Non-standard File Types -  If you include a  file  type
in  your  file  specification,  the  system  examines the file type to
select the proper translator.  If the file type  is  not  one  of  the
standard  file  types  shown in Table 8-1, the system uses the FORTRAN
compiler.

     @COMPILE (FROM) TEST.REF
     FORTRAN: TEST
     MAIN.
     @

If you want to use a non-standard file type on a Non-FORTRAN  program,
include one of the compiler switches after the file specification.

     @COMPILE (FROM) ENABLE.MON/MACRO
     MACRO: ENABLE
     @



8.3.2.2  Using The File Type .REL -  If you want to use  a  particular
object  file,  type  the file name and the file type .REL.  The system
does not attempt to compile this file;  therefore, it  just  loads  it
into memory.

     @LOAD (FROM) START.REL
     LINK:   Loading

     EXIT
     @

If you have an object program stored in a file with a file type  other
than  .REL  (this  is  highly  discouraged),  include the /RELOCATABLE
switch after the file specification.  Otherwise, the  system  attempts
to compile the object program as a source program.

     @LOAD (FROM) MIDDLE.OBJ/RELOCATABLE
     LINK:   Loading

     EXIT
     @



8.3.2.3  Examples -  If you have the file TRYIT.FOR.1 and you give the
command;

     @EXECUTE (FROM) TRYIT

the  system  uses  the  file  TRYIT.FOR.1.   If  you  have  the  files
NXTONE.MAC and NXTONE.CBL, and give the command;

     @EXECUTE (FROM) NXTONE

The system searches Table 8-1 and finds .MAC before .CBL.   Therefore,
the system uses the file NXTONE.MAC.

If you have the files TABLE and TABLE.FOR, and give the command:

     @EXECUTE (FROM) TABLE

the system uses the file TABLE as the source program and  compiles  it
with FORTRAN (as default).
PRODUCING AND RUNNING YOUR OWN PROGRAMS                      Page 8-21


8.3.3  Reproducing Only Out-of-date Object Programs

Whenever you give a LOAD-class command that requires a .REL file,  the
system compiles an object program only if one of the following occurs:

     1.  There is no existing .REL file with the same file name.

     2.  The .REL file is out-of-date (out-of-date means that the .REL
         file is older than the corresponding source file).

     3.  You give a /COMPILE switch to the LOAD-class command.

For example, when you give the command:

     @EXECUTE (FROM) KLOPG.ALG

the system looks for the file KLOPG.REL.  If that file exists and  was
written  after KLOPG.ALG, the system does not reproduce KLOPG.REL.  If
KLOPG.REL is out of  date,  the  system  recompiles  KLOPG.ALG  before
executing the command.

You will find this feature very useful when you produce programs  with
more  than  one module.  When debugging, you can make a change and not
have to modify the command you give.  For instance, if  you  have  two
files, COMPUT.CBL and the subroutine KG.MAC, you can give the command:

     @LOAD (FROM) COMPUT,KG
     COBOL: MAIN [COMPUT.CBL]
     MACRO: KG
     LINK:   Loading

     EXIT
     @

The system compiles the COBOL program, assembles the MACRO program and
loads  them  both into memory.  If you find a bug in the subroutine KG
and edit KG.MAC, you can then give the command:

     @LOAD (FROM) COMPUT,KG
     MACRO: KG
     LINK:   Loading

     EXIT
     @

Because COMPUT.REL is current, the system does not  recompile  it  and
reassembles just KG.MAC, then loads them both into memory.  The system
has saved you the time and cost of needless compilations.

If you do not want to compile a source (even if the object file is out
of  date),  include the /RELOCATABLE switch after the file.  If in the
previous example you gave the /RELOCATABLE switch,  the  system  would
not have reassembled KG.

     @LOAD (FROM) COMPUT,KG/RELOCATABLE
     LINK:   Loading

     EXIT
     @

The /RELOCATABLE switch is useful when you  are  debugging.   You  can
find  a  bug,  fix  it in the source, re-execute the program, and find
another bug.  When you have enough changes, you can retranslate.
PRODUCING AND RUNNING YOUR OWN PROGRAMS                      Page 8-22


8.3.4  Recalling Arguments To LOAD-class Commands

Whenever you omit the arguments to a LOAD-class  command,  the  system
supplies  the  arguments  you specified in the last LOAD-class command
containing a file specification or LINK switch.  For instance, suppose
you give the following sequence of commands:

     @COMPILE (FROM) TEST.FOR,SUB1.FOR
     .
     .
     @EXECUTE (FROM)

The COMPILE command stores its arguments;  then,  when  you  omit  the
arguments  to  the  EXECUTE command, the system uses the arguments you
gave to the COMPILE command.

Whenever you give a LOAD-class command, the system saves its arguments
only  if  it  contains a source or object file specification or a LINK
switch (Refer to Section 8.3.7.)  Otherwise, the  system  appends  the
saved  arguments from a previous command to your current command.  The
system does not change the saved arguments to include the contents  of
your current command.  Suppose you give the command:

     @COMPILE (FROM) /CREF/COBOL MANCOB,TTYIN,TTYOUT,LPOUT

then the command:

     @LOAD (FROM) /MAP

The arguments from the COMPILE command  are  appended  to  the  single
switch  you  gave in the LOAD command.  The system really executes the
command:

     @LOAD (FROM) /MAP/CREF/COBOL MANCOB,TTYIN,TTYOUT,LPOUT

If your next command is:

     @COMPILE (FROM) /COMPILE

the system executes the command:

     @COMPILE (FROM) /COMPILE/CREF/COBOL MANCOB,TTYIN,TTYOUT,LPOUT

Notice this command does not include the /MAP switch.  The command:

     @EXECUTE (FROM) LINER.MAC

would change the  saved  arguments  to  just  the  file  specification
LINER.MAC.

If you give a command without a source file  specification  and  there
are  no  saved arguments to LOAD-class commands, the system prints ?No
saved arguments and cancels the command.

     @EXECUTE
     ?No saved arguments
     @
PRODUCING AND RUNNING YOUR OWN PROGRAMS                      Page 8-23


8.3.5  Taking Arguments From An Indirect File

Whenever you have a few long commands, you may store them  in  a  disk
file.   When you give a LOAD-class command, all you have to type is an
@ and type (or use recognition on) the file specification.  Instead of
receiving  the  arguments  directly  from  your  terminal,  the system
receives them indirectly from the file.  In the previous example,  you
could  enter  the arguments in the file MANCOB.CMD, and use MANCOB.CMD
in your LOAD-class command.  The following example shows how to create
and use an indirect file.

     @CREATE (FILE) MANCOB.CMD      !Create MANCOB.CMD
     Input: MANCOB.CMD.1
     00100   /MAP/CREF/COBOL MANCOB,TTYIN,TTYOUT,LPOUT
     00200   $
     *E

     [MANCOB.CMD.1]
     @LOAD (FROM) @MANCOB.CMD       !Use it in a LOAD command

The indirect file can contain any argument to  a  LOAD-class  command,
but  do  not  attempt  to use recognition on any file specification or
switch within the indirect file.  The indirect file does not  have  to
contain  all  the arguments to the particular command;  it may contain
just a partial list, but the indirect file must  always  be  the  last
argument in the command.

     @CREATE (FILE) PARAM.CMD
     Input: PARAM.CMD.1
     00100   INOUT.MAC,TYPGEN.MAC
     00200   $
     *E

     [PARAM.CMD.1]
     @LOAD (FROM) TTYOUT,@PARAM.CMD
     MACRO:  TTYOUT
     MACRO:  INOUT
     MACRO:  TYPGEN
     LINK:   Loading

     EXIT
     @

If you have a long command, place each source/object specification  on
a  separate line;  the system treats each new line exactly as it would
a comma.  For instance, the arguments from the command:

     @LOAD (FROM) T1+T2+T3,T4+T5+T6,T7+T8+T9

could be placed in an indirect file as:

     @CREATE (FILE) TARGS.CMD
     Input: TARGS.CMD.1
     00100   T1+T2+T3 
     00200   T4+T5+T6 
     00300   T7+T8+T9 
     00400   $
     *E

     [TARGS.CMD.1]
     @
PRODUCING AND RUNNING YOUR OWN PROGRAMS                      Page 8-24


The command could then be given as:

     @LOAD (FROM) @TARGS



8.3.6  Appending Files To Produce One Source

Frequently it is useful to combine a parameter definition  file  or  a
small  subroutine library with a main program.  The + sign appends the
file following it to the file before it to produce one source program.
The  next  example  shows  how  you  might  use a + to produce a MACRO
program.  The DEFS file contains the parameter  definitions  and  some
storage  whereas  the  PROMPT  file  contains  the  main  logic of the
program.

     @CREATE (FILE) DEFS.MAC          !Create the parameter file
     Input:  DEFS.MAC.1
     00100           SEARCH MONSYM,MACSYM
     00200   PRMTXT: ASCIZ/NEXT COMMAND>/
     00300           T1==1
     00400           T2==2
     00500   $
     *E

     [DEFS.MAC.1]
     @CREATE (FILE) PROMPT.MAC       !Create the main file
     Input:  PROMPT.MAC.1
     00100           TITLE PROMPT
     00200   PROMPT: HRROI T1,PRMTXT ;Get address of string
     00300           PSOUT           ;Print it
     00400           HALTF           ;Stop
     00500           END PROMPT
     00600   $
     *E

     [PROMPT.MAC.1]
     @COMPILE (FROM) DEFS+PROMPT     !Append into one source
     MACRO:  PROMPT
     @



8.3.7  Passing Switches To The LINK Program

Advanced applications may require intricate control during the loading
of certain object programs.  To exercise this control, you may want to
pass switches to the LINK program.  (For a list of the valid  switches
and  a  complete  description  of  the LINK program, refer to the LINK
Reference Manual.)

To pass a switch to the  LINK  program,  precede  the  switch  with  a
percent  sign  and enclose the switch in double quotes.  The following
command contains the LINK switch EXCLUDE:DEVTYP.

     @LOAD (FROM) MANIPL.MAC,SUB1A.MAC%"EXCLUDE:DEVTYP"
PRODUCING AND RUNNING YOUR OWN PROGRAMS                      Page 8-25


8.3.8  Specifying Special Actions With Switches

There is an  assortment  of  switches  that  you  may  type  with  any
LOAD-class  command.   These  switches  are  described along with each
LOAD-class command in Part II of this manual.

Many switches have a global effect if you type them  before  any  file
specifications.  For instance, the command:

     @COMPILE (FROM) /CREF TAB,SIFT,WOB

produces  a  cross-reference  listing  for  each  file  and   requires
significantly less typing than if you had to type:

     @COMPILE (FROM) TAB/CREF,SIFT/CREF,WOB/CREF

It may be easier to set some global switches and turn them off  for  a
particular file.  If you have a list of source files with non-standard
file types that you want to compile with FORTRAN, you  might  use  the
command:

     @COMPILE (FROM) /FORTRAN SCHED.R1,ENA.R1,DIS.R1

Now suppose you add the routine MONINT.R1 that is a  COBOL  file,  you
could modify your command as follows:

     @LOAD (FROM) /FORTRAN SCHED.R1,ENA.R1,MONINT.R1/COBOL,DIS.R1

As a result of this command, all the files are compiled  with  FORTRAN
except  MONINT.R1,  which  is  compiled with COBOL.  The /COBOL switch
located after the file affects only the file it follows.

However, if you add two COBOL programs, MON1 and  MON2,  your  command
would be:

     @LOAD (FROM) /FORTRAN SCHED.R1,ENA.R1,DIS.R1,/COBOL MON1.R1,MON2.R1

In that case, you have changed the global /FORTRAN switch  to  /COBOL,
and each succeeding file is compiled using COBOL.











                              CHAPTER 9

                      CONTROLLING YOUR TERMINAL



You can control how your terminal operates.   The  following  sections
describe  the  basic  ways  in  which  a terminal operates and how you
control it by giving the TERMINAL command.   The  command  INFORMATION
(ABOUT)  TERMINAL-MODE  prints  the  status  of  your  terminal.  (For
detailed  instructions  about  the  TERMINAL  command,  refer  to  its
description in Part II.)

If you give the same series of TERMINAL commands every  time  you  log
in,  place  these  commands  in  your LOGIN.CMD file so the system can
automatically give them each time you give the LOGIN command.



9.1  SETTING THE TERMINAL SPEED

Terminals can operate at different speeds,  ranging  from  10  to  960
characters per second.  These speeds are usually stated in baud rates:
10 characters per second is 110 baud;  30 characters per second is 300
baud, etc.

When the  system  starts,  each  terminal  speed  is  set  at  a  rate
determined  by  the system manager.  Normally, 300 baud is the slowest
speed at which a line is set.  If you want to change the speed of  the
line  you  are  using,  give  the  TERMINAL  (MODE IS) SPEED baud rate
command.  After pressing the RETURN key to end the command, change the
setting  on  your  terminal.   You are now ready to operate at the new
speed.  Never use a speed greater than 300 baud if you  are  connected
to the computer via a telephone line.

In the following example, the user sets his terminal speed  for  input
and output to 2400 baud.

     @TERMINAL (MODE IS) SPEED (OF INPUT) 2400 (AND OUTPUT) 2400
     @

If you accidentally set an  incorrect  speed  for  your  terminal  and
cannot  correct  it, contact the operator, give him your terminal line
number, and ask him to set your line to the desired speed.



9.2  DECLARING THE TERMINAL TYPE

Once you have typed the initial CTRL/C, inform the system of the  type
of  terminal  that  you  are using.  The types of terminals the system
recognizes are:

     Model 33
     Model 35
CONTROLLING YOUR TERMINAL                                     Page 9-2


     Model 37
     Execuport
     LA30
     LA36
     LA (Execuport)
     VT05
     VT50
     VT52.

After you declare the type of terminal, the system is able to  perform
input  and  output to your terminal in the most efficient manner.  The
terminal type specifies the proper values for:

     FORMFEED
     TAB
     Outputting lowercase characters
     Padding vertical-spacing characters
     Line width
     Page length.

If you do not set the correct characteristics for your  terminal,  you
may  notice that the output format is not correct.  This is especially
true when you do not declare a terminal type and then operate at  high
baud rates (over 300 baud).

You may want to give the INFORMATION (ABOUT) TERMINAL-MODE command  to
print  the  results  of a TERMINAL command.  In the following example,
the user declares that he has an LA36.

     @TERMINAL (MODE IS) LA36
     @INFORMATION (ABOUT) TERMINAL-MODE
      TERMINAL LA36
      TERMINAL SPEED 300
      RECEIVE LINKS
      REFUSE ADVICE
      TERMINAL NO PAGE
      TERMINAL LENGTH 66
      TERMINAL WIDTH 132
      TERMINAL LOWERCASE
      TERMINAL RAISE
      TERMINAL NO FLAG
      TERMINAL NO INDICATE
      TERMINAL NO FORMFEED
      TERMINAL NO TABS
      TERMINAL NO IMMEDIATE
      TERMINAL FULLDUPLEX
     @

Setting the terminal type changes only the following  characteristics:
terminal  type,  length, width, lowercase, formfeed and tab.  Thus, an
LA36 has a page length  of  66,  a  paper  width  of  132,  can  print
lowercase characters, does not have a mechanical formfeed and does not
have mechanical tabs.  (Refer to the following sections if you want to
change any other terminal parameters.)



9.3  CONTROLLING TERMINAL OUTPUT

You can start and stop terminal output.  You can  also  determine  the
length of your terminal page, the treatment of formfeeds, the width of
the line, and treatment of tabs.
CONTROLLING YOUR TERMINAL                                     Page 9-3


9.3.1  Starting And Stopping Terminal Output

If you want to be  able  to  stop  output  to  your  terminal  without
interrupting  the program or command producing the output, and be able
to continue  the  output,  set  terminal  PAGE  mode.   After  setting
terminal  PAGE  mode,  you can stop the output to your terminal at any
time by typing a CTRL/S, and resume the output by typing a CTRL/Q.

Also, if any command or program produces more output than the  current
page  length  for  your  terminal,  the system automatically stops the
printout and rings the terminal bell.  To continue the output, type  a
CTRL/Q.   This  is  especially helpful when you are trying to read the
output from a very fast terminal.

The user turns on terminal page mode:

     @TERMINAL (MODE IS) PAGE (MODE)
     @

You can set the page length by including it as the  last  argument  to
the  TERMINAL  PAGE  command.   When  you  use a positive integer, the
system stops the output to your terminal after  it  has  printed  that
many  lines;  you can then type a CTRL/Q and the output continues.  If
you set the page length to 0, the system does not stop printing unless
you  type a CTRL/S.  In the example below, the user turns on page mode
and sets the page length to 20.

     @TERMINAL (MODE IS) PAGE (MODE) 20
     @

To turn page mode off, type a NO before PAGE, as  shown  in  the  next
example.

     @TERMINAL (MODE IS) NO PAGE
     @



9.3.2  Printing Formfeeds

When your terminal reaches the end  of  a  page  and  is  supposed  to
advance  to  the  top  of  the next page, i.e., output a formfeed, the
system normally indicates the formfeed by printing  a  ^L  instead  of
advancing  the  paper.  If you want to advance to the top of the page,
give the TERMINAL NO INDICATE command.

     @TERMINAL (MODE IS) NO INDICATE (FORMFEED)
     @



9.3.3  Simulating Formfeeds

If your terminal has a mechanical formfeed, the system can advance  to
the  top of the page by outputting a formfeed character (CTRL/L).  If,
however, your terminal does not have a formfeed mechanism, the  system
can  simulate a formfeed by outputting the proper number of linefeeds.
To simulate formfeeds in this manner, give the  TERMINAL  NO  FORMFEED
command.

     @TERMINAL (MODE IS) NO FORMFEED (EXISTS ON TERMINAL)
     @
CONTROLLING YOUR TERMINAL                                     Page 9-4


Now, instead of outputting a formfeed character, the  system  advances
the correct number of lines according to the page length.

When you declare your terminal type,  the  system  will  automatically
simulate formfeeds if required by your terminal.



9.3.4  Setting The Page Length

To tailor the page length to your terminal, give the  TERMINAL  LENGTH
command.   The  system  uses  this  page length in determining when to
attempt printing a formfeed, in calculating the  number  of  linefeeds
that  will simulate a formfeed, and in automatically stopping terminal
output when you have set TERMINAL PAGE mode.  When you  set  the  page
length to 0 and set TERMINAL PAGE, the system stops printing only when
you type a CTRL/S.  Notice that by using the TERMINAL LENGTH  command,
you can set the page length without setting TERMINAL PAGE mode.

The user sets the page length to 55.

     @TERMINAL (MODE IS) LENGTH (OF PAGE IS) 55
     @

When you declare your terminal type, the system will automatically set
the  correct  page length for your terminal, but you must set TERMINAL
PAGE.



9.3.5  Simulating Tab Stops

If your terminal does not have mechanical tab stops,  the  system  can
simulate  them  by outputting the correct number of spaces.  Tab stops
are set every eight columns.  If you  must  simulate  tabs,  give  the
TERMINAL NO TABS command.

     @TERMINAL (MODE IS) NO TABS (EXIST ON TERMINAL)
     @

When you declare your terminal type,  the  system  will  automatically
simulate tab stops, if they are required for your terminal.



9.3.6  Setting The Line Width

If you do not like the default line width,  give  the  TERMINAL  WIDTH
command,  which  sets  the  width of your terminal line to any desired
value between 8 and 132 inclusive.

     @TERMINAL (MODE IS) WIDTH (OF LINE IS) 60
     @

If your terminal must print a line greater than  its  terminal  width,
the  system  automatically continues on a new line when the line width
is exceeded.

When you declare your terminal type, the system will automatically set
the correct line width for your terminal.
CONTROLLING YOUR TERMINAL                                     Page 9-5


9.4  USING UPPERCASE AND LOWERCASE LETTERS

You may control the way the system  handles  uppercase  and  lowercase
letters  as  they  are sent to and from your terminal.  If you prepare
text files, typing lowercase characters is probably useful;   however,
in  creating  programs,  you  should  make  sure that any instructions
contain  uppercase  characters  even  though  comments   can   contain
lowercase characters.

The system controls case shifting separately on input and output.  The
separate treatment is useful because you may type lowercase letters on
a terminal that can only print uppercase letters.  The result  is  you
may   type  lowercase  letters  (which  are  sent  to  the  system  as
lowercase), but they appear on your terminal as uppercase.



9.4.1  Raising Lowercase Letters In Input

The RAISE parameter instructs the  system  to  convert  any  lowercase
letter  you  type  to  the appropriate uppercase letter.  Thus, if you
have a program that requires all uppercase letters, give  the  command
TERMINAL  (MODE IS) RAISE to direct the system to raise your lowercase
letters.  If you want to restore the capability  of  typing  lowercase
letters, give the command TERMINAL (MODE IS) NO RAISE.

In the example, the user  starts  typing  in  lowercase,  converts  to
uppercase,  then  returns  to  lowercase.   The  example presumes your
terminal can type and print lowercase letters.

     @!This is a line in uppercase and lowercase.
     @terminal (MODE IS) raise (TERMINAL INPUT)
     @!NOW ALL THIS TERMINAL CAN TYPE IS UPPERCASE
     @TERMINAL (MODE IS) NO RAISE (TERMINAL INPUT)
     @!This is uppercase and lowercase.



9.4.2  Printing Lowercase Letters In Output

Some  terminals  cannot  print  lowercase  letters.   Generally  these
terminals print the corresponding uppercase letter whenever the system
tries to print a lowercase  letter,  but  the  system  is  capable  of
converting any lowercase letter to the corresponding uppercase letter.
If you want the system to  recognize  that  your  terminal  can  print
lowercase letters, give the command TERMINAL (MODE IS) LOWERCASE.

     @TERMINAL (MODE IS) LOWERCASE (EXISTS ON TERMINAL)
     @

Now the system will not translate any lowercase letters to  uppercase.
If  you  want  the translation, give the command TERMINAL (MODE IS) NO
LOWERCASE (EXISTS ON TERMINAL).

     @TERMINAL (MODE IS) NO LOWERCASE (EXISTS ON TERMINAL)
     @

If your terminal cannot print lowercase letters and you need  to  know
which are lowercase and which are uppercase, give the command TERMINAL
(MODE IS) FLAG (UPPERCASE OUTPUT).  The system  flags  each  uppercase
letter  by  printing  an apostrophe before it.  For flagging to occur,
you must also set TERMINAL (MODE IS) NO LOWERCASE.

     @TERMINAL (MODE IS) NO LOWERCASE (EXISTS ON TERMINAL)
CONTROLLING YOUR TERMINAL                                     Page 9-6


     @TERMINAL (MODE IS) FLAG (UPPER CASE OUTPUT)
     @TYPE (FILE) T.FIL.3
     'THIS IS A FILE THAT CONTAINS CAPITAL LETTERS ONLY AT
     THE BEGINNING OF SENTENCES AND PROPER NAMES
     LIKE 'T'O'P'S-20.
     @TERMINAL (MODE IS) LOWERCASE (EXISTS ON TERMINAL)
     @TYPE (FILE) T.FIL.3
     This is a file that contains capital letters only at
     the beginning of sentences and proper names
     like TOPS-20.
     @



9.4.3  Testing For Lowercase Letters

To find out if you can type lowercase letters on your terminal,  first
give  the  command  TERMINAL  (MODE  IS)  LOWERCASE.  As a result, the
system will print all lowercase letters without converting them to the
corresponding uppercase letter.  Try typing a few words.

     @TERMINAL (MODE IS) LOWERCASE (EXISTS ON TERMINAL)
     @! This is a test

If your terminal prints lowercase  letters  (as  shown  in  the  above
example),  it is capable of typing and printing lowercase letters.  If
your terminal prints uppercase letters,  the  system  may  be  raising
lowercase  letters  you  type  to the corresponding uppercase letters.
Give the command TERMINAL (MODE IS) NO RAISE.  Try typing again.

     @TERMINAL (MODE IS) NO RAISE (TERMINAL INPUT)
     @! This is a test

If your terminal still prints uppercase letters, you  know  that  your
terminal  cannot  print lowercase letters, but it still may be able to
type lowercase letters.  Give  the  commands  TERMINAL  (MODE  IS)  NO
LOWERCASE and TERMINAL (MODE IS) FLAG.  Try typing a third line.

     @TERMINAL (MODE IS) NO LOWERCASE (EXISTS ON TERMINAL)
     @TERMINAL (MODE IS) FLAG (UPPERCASE CHARACTERS)
     @! 'THIS IS A TEST
CONTROLLING YOUR TERMINAL                                     Page 9-7


If only the uppercase letters you typed are flagged (as shown  in  the
example  above),  your  terminal  can  type  lowercase letters, but it
prints them as the corresponding uppercase letters.

     @TERMINAL (MODE IS) NO LOWERCASE (EXISTS ON TERMINAL)
     @TERMINAL (MODE IS) FLAG (UPPERCASE CHARACTERS)
     @! 'T'H'I'S 'I'S 'A 'T'E'S'T

If all the letters you type are  flagged  (as  shown  in  the  example
above), your terminal can type only uppercase letters.



9.5  TALKING TO OTHER USERS

If you want to  conduct  a  conversation  with  another  user  who  is
logged-in  to  the  system,  give  the TALK command.  After the system
prints a message, everything printed on your terminal is also  printed
on  the  other  user's  terminal  and  everything printed on the other
user's terminal is printed on your terminal.  To terminate a  session,
give the BREAK (LINKS) command.

     @TALK (TO) HESS

     LINK FROM MILLER, TTY 23
     @! COULD YOU PLEASE DEASSIGN MTA2:?
     @! OK,
     @DEASSIGN (DEVICE) MTA2:
     @BREAK (LINKS)
     @

No matter what one user types, the typing does not  affect  the  other
user's  job.   For  example,  if your job is waiting for you to type a
command and another user TALKs to you, the system does  not  interpret
what he types as the command it is expecting from you.

     LINK FROM HESS, TTY 45
     @! WHERE IS THE EDIT FILE?
     @! IN THE DIRECTORY <MANUALS>
     @! TNX
     @BREAK (LINKS)

Notice in the example above that the talking did  not  interfere  with
the user's job.  If you are running a program and a user TALKS to you,
you should exit from the program by typing two CTRL/Cs.  Exiting helps
you  avoid  giving  an  erroneous  command  to your program.  Give the
CONTINUE command when you are ready to resume the  program.   See  the
next example.

     @FILCOM              !The user starts FILCOM

     *
     LINK FROM PORADA, TTY 22     !Receives a link
     @!What time will the repro be ready
     @^C                  !Exits from his program
     @!3PM TODAY
     @!OK, BYE
     @BREAK (LINKS)
     CONTINUE             !Then continues the program
     TTY:=A.SOS,B.SOS/A

(Refer to the TALK and BREAK commands for more information.)























                               PART II

                   COMMAND AND PROGRAM DESCRIPTIONS
PART II COMMAND AND PROGRAM DESCRIPTIONS                     Page II-2


                           TOPS-20 COMMANDS


In addition to the detailed  command  and  program  descriptions,  the
following  list  is  provided  to  briefly explain ALL commands in the
TOPS-20 Command Language.  The commands are grouped in  categories  of
similar  use.  Although some of these commands have not been described
in this manual, the purpose of this list is to make you aware  of  the
full extent and capability of the TOPS-20 Command Language.


SYSTEM ACCESS COMMANDS

These commands allow you to gain and relinquish access to the  system,
to  change  your  job's  account  number,  and  to release and connect
terminals to your job.

  ATTACH            Connects your terminal to a designated job.

  DETACH            Disconnects your terminal  from  the  current  job
                    without affecting the job.

  DISABLE           Returns a privileged user to normal status.

  ENABLE            Permits privileged  users  to  access  and  change
                    confidential system information.

  LOGIN             Gains access to the TOPS-20 system.

  LOGOUT            Relinquishes access to the TOPS-20 system.

  UNATTACH          Disconnects a terminal from a job;   it  does  not
                    have to be the terminal you are using.


FILE SYSTEM COMMANDS

The file system commands allow you to  create  and  delete  files,  to
specify  where they are to be stored, to copy them, and to output them
on any device.

  ACCESS            Grants ownership and group rights to  a  specified
                    directory.

  APPEND            Adds information from one or more source files  to
                    an existing disk file.

  CLOSE             Closes a file or files left open by a program.

  CONNECT           Removes  you  from  your  current  directory   and
                    connects you to a specified directory.

  COPY              Duplicates a source file in a destination file.

  CREATE            Starts EDIT for making a new file.

  DELETE            Marks the specified file(s) for eventual  deletion
                    (disk  files  only) or deletes the specified files
                    (all other devices).

  DEFINE            Associates a logical name with one  or  more  file
                    names.
COMMAND AND PROGRAM DESCRIPTIONS (continued)                 Page II-3


  DIRECTORY         Lists the names of files residing in the specified
                    directory and information relating to those files.

  EDIT              Starts EDIT for changing an existing file.

  EXPUNGE           Permanently removes any  deleted  files  from  the
                    disk.

  END-ACCESS        Relinquishes  ownership  rights  to  a   specified
                    directory.

  FDIRECTORY        Lists all the information about a file or files.

  LIST              Prints one or more files on the line printer  with
                    or without formatting.

  PRINT             Lists one or more files on the line printer.

  QUEUE             Places an  entry  into  or  examines  a  specified
                    queue, for example, the line printer output queue.

  RENAME            Changes one or more  descriptors  of  an  existing
                    file specification.

  SDISMOUNT         Notifies the system that the given structure is no
                    longer needed.

  TDIRECTORY        Lists the names of all files in the order  of  the
                    date and time they were last written.

  SMOUNT            Requests that a structure be made available to the
                    user.

  TYPE              Types the specified files on your terminal.

  SREMOVE           Makes a structure  unavailable  and  requests  its
                    removal.

  UNDELETE          Restores  one  or  more  disk  files  marked   for
                    deletion.

  TMOUNT            Requests that a magnetic tape be made available to
                    the user.

  VDIRECTORY        Lists the names of all files,  as  well  as  their
                    protection, size, and date and time they were last
                    written.


DEVICE HANDLING COMMANDS

These commands allow you to reserve a device prior  to  using  it,  to
manipulate the device, and to release it once it is no longer needed.

  ASSIGN            Reserves a device for use by your job.

  BACKSPACE         Moves a magnetic tape drive  back  any  number  of
                    records or files.

  DEASSIGN          Releases a previously assigned device.

  EOF               Writes an end-of-file mark on a magnetic tape.
COMMAND AND PROGRAM DESCRIPTIONS (continued)                 Page II-4


  REWIND            Positions a magnetic tape  backward  to  its  load
                    point.

  SKIP              Advances a magnetic tape one or  more  records  or
                    files.

  UNLOAD            Rewinds a magnetic tape until the  tape  is  wound
                    completely on the source reel.


PROGRAM CONTROL COMMANDS

The following commands help you create, run, edit, and debug your  own
programs.

  COMPILE           Translates a source program using the  appropriate
                    compiler.

  CONTINUE          Resumes execution of a program  interrupted  by  a
                    CTRL/C.

  CREF              Runs   the   CREF   program   which   produces   a
                    cross-reference listing and automatically sends it
                    to the line printer.

  CSAVE             Saves the program currently in memory so  that  it
                    may  be used by giving a RUN command.  The program
                    is saved in a compressed format.

  DDT               Merges  the  debugging  program,  DDT,  with   the
                    current program and then starts DDT.

  DEBUG             Takes a source program, compiles it, loads it with
                    DDT and starts DDT.

  EXECUTE           Translates,  loads,  and  begins  execution  of  a
                    program.

  FORK              Makes the TOPS-20 language work for  a  particular
                    address space.

  GET               Loads an executable  program  from  the  specified
                    file.

  LOAD              Translates a program and loads it into memory.

  MERGE             Loads an executable program into memory and merges
                    it with the current contents of memory.

  POP               Stops a copy of the TOPS-20 Command  Language  and
                    returns  control  to  the  previous  copy  of  the
                    Command Language.

  PUSH              Starts a new copy of the TOPS-20 Command Language.

  R                 Runs a system program.

  REENTER           Starts the  program  currently  in  memory  at  an
                    alternate entry point specified by the program.

  RESET             Clears the job to which your terminal is currently
                    attached.
COMMAND AND PROGRAM DESCRIPTIONS (continued)                 Page II-5


  RUN               Loads an executable program from a file and starts
                    it at the location specified in the program.

  SAVE              Copies the contents  of  memory  into  a  file  in
                    executable  format.  If memory contains a program,
                    you may now execute the program by giving the  RUN
                    command with the proper file specification.

  START             Begins execution of  a  program  at  the  location
                    specified in the entry vector.


INFORMATION COMMANDS

These commands return information about TOPS-20  commands,  your  job,
and the system as a whole.

  DAYTIME           Prints the current date and time of day.

  INFORMATION       Provides  information  about  your   job,   files,
                    memory,  errors,  system  status,  and  many other
                    parameters.

  SYSTAT            Outputs a summary of system  users  and  available
                    computing resources.


TERMINAL COMMANDS

The terminal commands allow you to declare the characteristics of your
terminal and to control linking to another user's terminal.

  ADVISE            Sends whatever you type on your terminal as  input
                    to a job connected to another terminal.

  BREAK             Clears terminal links and advising links.

  RECEIVE           Allows your terminal to receive links  and  advice
                    from other users.

  REFUSE            Denies links and advice to your terminal.

  SET               Declares certain action be taken when  errors  are
                    detected in TOPS-20 commands.

  TAKE              Accepts commands from a file, just as if  you  had
                    typed its contents on your terminal.

  TALK              Links two terminals so that each user can  observe
                    what  the other user is doing, yet does not affect
                    the other user's job.

  TERMINAL          Declares the hardware type of terminal  you  have,
                    and   lets  you  inform  TOPS-20  of  any  special
                    characteristics of the terminal.
COMMAND AND PROGRAM DESCRIPTIONS (continued)                 Page II-6


BATCH COMMAND

The TOPS-20 system also has a Batch System to  which  you  may  submit
jobs for later execution.

  SUBMIT            Enters a file into the Batch waiting  list.   When
                    it  is  your job's turn, the commands contained in
                    the file are executed.
ACCESS Command                                               Page II-7


Function

     The ACCESS command grants  you  owner  and  group  privileges  to
     directories  and  their  files  without  changing  your currently
     connected directory.


Hints

     Your currently connected directory and structure do not change.

     In addition to the owner  privileges  you  are  granted  for  the
     directory  you  are  ACCESSing,  you  are also considered to be a
     member of the same groups as the real owner of the directory.

     The first time you give an ACCESS command to a directory that  is
     on  a  file  structure other than the public structure (PS:), you
     should give the SMOUNT command before the ACCESS command.


Format

     @ACCESS (TO DIRECTORY) dev:<dir> (PASSWORD) password

     dev:           is the name of the file  structure  that  contains
                    the  directory  you  are  accessing.   The  ACCESS
                    command will only accept a file structure name  in
                    the dev:  field.

     <dir>          is the name of the directory  you  are  accessing.
                    The  brackets must be included in directory names.
                    You can use  recognition  provided  you  type  the
                    left-hand-bracket.

     password       is the user password of the directory you wish  to
                    access.   The  password is not required if you own
                    the  directory  (you  own  a  directory  if   your
                    logged-in  user  name is the same as the directory
                    name), or if the directory protection  allows  you
                    access without giving a password.


Operation

     1.  Type AC and press the ESC key.  The system  prints  CESS  (TO
         DIRECTORY).

              @ACCESS (TO DIRECTORY)

     2.  Type the file structure name and a colon.  (You do  not  have
         to  type  the  file  structure  name if the directory you are
         accessing is located on your currently connected structure.)

              @ACCESS (TO DIRECTORY) ACCTG:

     3.  Type (or use recognition on) the directory name.   Press  the
         ESC  key  if  you did not use recognition.  The system prints
         (PASSWORD).

              @ACCESS (TO DIRECTORY) ACCTG:<ESTEY> (PASSWORD)
ACCESS Command (continued)                                   Page II-8


     4.  Type the password and press the RETURN key.  (If you own  the
         directory or if the directory protection gives you the proper
         access, you do not have to give a password;  just  press  the
         RETURN  key.)  When  the  ACCESS command succeeds, the system
         prints an @ on your terminal.

              @ACCESS (TO DIRECTORY) ACCTG:<ESTEY> (PASSWORD)
              @



Errors

     1.  If you do not enter the correct password, the  system  pauses
         and prints the message:

              ?INVALID PASSWORD

         and cancels the  command.   You  should  obtain  the  correct
         password and reissue the command.

     2.  If you did not give the  SMOUNT  command  before  the  ACCESS
         command  and  you  specify a non-existent file structure or a
         file structure that is not on line,  the  system  prints  the
         message:

              ?STRUCTURE IS NOT MOUNTED

         and cancels the command.  Check to see  if  you  entered  the
         correct  structure  name first, i.e., spelling.  Then, if you
         have, give the SMOUNT command to request that  the  structure
         be put on line.

     3.  If you enter the structure name in an incorrect  format,  the
         system responds:

              ?INVALID STRUCTURE NAME

         Perhaps you have omitted the brackets in the  directory  name
         or the colon after the structure name.

     4.  If you enter a non-existent directory name, the system prints
         the message:

              ?NO SUCH DIRECTORY

         and cancels the command.

     5.  If you attempt to given an ACCESS  command  to  a  files-only
         directory, the system responds:

              ?DIRECTORY IS "FILES-ONLY" AND CANNOT BE LOGGED IN TO

         If you require ownership privileges to  that  directory,  use
         the CONNECT command.
ACCESS Command (continued)                                   Page II-9


Characteristics

     The ACCESS command:

     Leaves your terminal at TOPS-20 command level.

     Does not change any program in memory.
ACCESS Command (continued)                                  Page II-10


     Owner and group privileges  gained  through  the  ACCESS  command
     remain  in  effect until you log out, the structure is dismounted
     or you give the ACCESS command to a different  directory  on  the
     same structure.


Restrictions

     You can only give the ACCESS command to user directories.  If you
     require  owner  access to files-only directories, use the CONNECT
     command.


Examples

     The  user  accesses  the  directory  <ESTEY>  on  his   currently
     connected structure.

          @ACCESS (TO DIRECTORY) <ESTEY>(PASSWORD)

     The user accesses directory <SMITH> on file structure ACCTG:.  He
     types  AC,  leaves  a space, types ACCTG:<SMITH>, leaves a space,
     types the password and presses the RETURN key.

          @AC ACCTG:<SMITH>
          @

     The user gives the ACCESS command  (with  no  arguments)  to  his
     connected  directory  to  regain  his  group  privileges for that
     directory.

          @ACCESS (TO DIRECTORY)
ALGOL Compiler                                              Page II-11


Function

     The ALGOL compiler produces object  programs  from  ALGOL  source
     programs.


Hints

     To run an ALGOL program:

     1.  Enter your source program into a file (by using EDIT).

     2.  Give the EXECUTE command  to  compile,  load  and  start  the
         program.

     3.  If you plan to execute the program frequently, use  the  LOAD
         command and SAVE command instead of EXECUTE.  You can now use
         the RUN command, which is faster than EXECUTE, until you EDIT
         the program again.

     Use the DDT program to debug ALGOL programs.

     If you have a main program and assorted subroutines that  require
     special  loading,  refer  to  Section  8.3  which  describes  the
     LOAD-class commands.


Operation

     1.  Enter your ALGOL program into a file.

         @CREATE (FILE) SQRT.ALG
         Input: SQRT.ALG.1
         00100   BEGIN
         00200   REAL X, Y;
         00300   WRITE ("[2C] TYPE THE VALUE OF X: [B]");
         00400      READ (X);
         00500      Y := SQRT(X);
         00600   WRITE ("[C] THE SQUAREROOT OF ");
         00700      PRINT (X,3,3);
         00800      WRITE (" IS ");
         00900      PRINT (Y,3,3);
         01000   END
         01100   $
         *E

         [SQRT.ALG.1]
         @

     2.  Give the EXECUTE command to run the program.

         @EXECUTE (FROM) SQRT.ALG
         ALGOL: SQRT
         LINK:   Loading
         [LNKXCT SQRT Execution]

          TYPE THE VALUE OF X: 34.889

          THE SQUAREROOT OF   34.889 IS   5.907

         END OF EXECUTION.
         @
ALGOL Compiler (continued)                                  Page II-12


Characteristics

     The LOAD-class commands run the ALGOL compiler to translate  your
     ALGOL  source  program, thereby clearing any program from memory.
     Depending on the operation you request, your terminal may or  may
     not be left at TOPS-20 command level.


Examples

     The user creates and runs his ALGOL program.

        @CREATE (FILE) T.ALG
        Input: T.ALG.1
        00100   BEGIN
        00200   INTEGER I,J;
        00300   WRITE ("[2C] TYPE THE NUMBER: [B]");
        00400      READ (I);
        00500      J := 2 * I;
        00600      WRITE ("[C] TWICE THAT NUMBER IS: ");
        00700      PRINT (J);
        00800   END
        00900   $
        *E

        [T.ALG.1]
        @EXECUTE (FROM) T.ALG
        ALGOL: T
        LINK:   Loading
        [LNKXCT T Execution]
         TYPE THE NUMBER: 345

         TWICE THAT NUMBER IS:          690

        END OF EXECUTION.
        @


     The user runs an ALGOL program which uses two subroutines.

        @EXECUTE (FROM) COMPAR,NEWTON,PSQRT
        ALGOL: COMPAR
        ALGOL: NEWTON
        ALGOL: PSQRT
        LINK:   Loading
        [LNKXCT COMPAR Execution]
         TYPE A NUMBER: 4.

        END OF EXECUTION.
        @
APPEND Command                                              Page II-13


Function

     The APPEND command adds the contents of one or more source  files
     to the end of a destination file.  The destination file can be an
     existing file or a new file.


Hints

     The APPEND command is useful for appending a sequence  of  files.
     You  should  give  the files (and only these files) a common file
     type.  Then,  give  the  APPEND  command  with  the  source  file
     specification *.typ.

     The system appends the files to the destination file.  The source
     files are taken in alphabetical order of their file names.

     For example, if you have three files:  ANGLE1.RAD, ANGLE2.RAD and
     ANGLE3.RAD (and no other files with the file type .RAD), then the
     command

          @APPEND (SOURCE FILE) *.RAD.1 (TO) RADII.RAD.1  !NEW FILE!

     appends the files ANGLE1.RAD, ANGLE2.RAD and ANGLE3.RAD (in  that
     order) to RADII.RAD.

     When you append more than one file  with  a  given  command,  the
     system  prints  the  name of each file as it starts appending the
     file, then the word [OK]  when  the  transfer  of  that  file  is
     finished.


Format

     @APPEND (SOURCE FILE) filespecs (TO) dev:<dir>name.typ.gen

     filespecs      is a single file specification or a string of file
                    specifications   (separated   by   commas),   that
                    indicate the source file(s).

                    You  can  use  wildcards  in   the   source   file
                    specification.    The   files  identified  by  the
                    wildcards are appended in the  alphabetical  order
                    of their file specifications.

     dev:           is the name of the device.  Most often, the device
                    is   the   file   structure   that   contains  the
                    destination file.  The  system  uses  DSK:   (your
                    currently  connected file structure) if you do not
                    give a device name.

     <dir>          is the directory  that  contains  the  destination
                    file.   You  must  have  access privileges to this
                    directory.  If you omit  <dir>,  the  system  uses
                    your connected directory.

     name.typ.gen   is the file name, type, and generation  number  of
                    the  destination  file.  The destination file does
                    not have to  exist  before  you  give  the  APPEND
                    command.   The  generation defaults to the highest
                    existing generation number, or 1 if it  is  a  new
                    file.
APPEND Command (continued)                                  Page II-14


                    You  may  not  use  wildcard  characters  in   the
                    destination file specification.


Operation

     1.  Type APPE and press  the  ESC  key;   the  system  prints  ND
         (SOURCE FILE).

         @APPEND (SOURCE FILE)

     2.  Type   (or   use   recognition   on)    the    source    file
         specification(s).   If  you do not use recognition, press the
         ESC key.  The system prints (TO).

         @APPEND (SOURCE FILE) SHIFT.SIZ.5 (TO)

         If you type a non-existent file  name,  type,  or  generation
         number,  the  system  prints  an  appropriate  message.   The
         messages below are a  sample  of  several  errors  you  might
         receive.   If  you receive a message of this type, you should
         find the correct argument and reissue the command.

         ?File not found
         ?No such file type
         ?No such filename

     3.  Type  (or  use   recognition   on)   the   destination   file
         specification.

         @APPEND (SOURCE FILE) SHIFT.SIZ.5 (TO) SHIFT.TYP

     4.  If you use recognition on a destination  file  specification,
         the system prints a message describing your destination file.

         !Old Generation!   if the destination file  has  an  existing
                            file name, type and generation number.

         !New Generation!   if the destination file  has  an  existing
                            file  name  and  type,  but the generation
                            number  is  larger  (or  defaults  to  one
                            larger)   than   the  existing  generation
                            number.

         !New File!         if the destination file has  a  file  name
                            and type that are not in your directory.

         @APPEND (SOURCE FILE) SHIFT.SIZ.5 (TO) SHIFT.NXT.1 !New file!

     5.  Press the RETURN key.  The system appends the source  file(s)
         to  the  destination file.  If you append more than one file,
         the system prints each file specification as it  appends  the
         corresponding file.  When the command is finished, the system
         prints an @.

         @APPEND (SOURCE FILE) SHIFT.SIZ.5 (TO) SHIFT.TYP
          SHIFT.SIZ.5 [OK]
         @
APPEND Command (continued)                                  Page II-15


Characteristics

     The APPEND command does not change any program in memory.

     The APPEND command leaves your terminal at TOPS-20 command  level
     when  TTY:   is  not  the source device.  If the source device is
     your terminal, the system transfers anything you type  (following
     the  termination  of  the  command) to the destination file.  The
     transfer  continues  until  you  type  a  CTRL/Z  (^Z).    CTRL/Z
     completes  the  execution  of  the APPEND command and leaves your
     terminal at TOPS-20 command level.


Restrictions

     The destination must be a disk file, or else  the  system  prints
     the following message and cancels the command.

          ?DESTINATION FILE MUST BE ON DISK

     Files which contain a program that has been SAVED (i.e., files in
     .EXE  file  format)  can not be appended since their structure is
     destroyed in the transfer.  The transfer does not succeed even if
     both source and destination files are on disk.

     If you attempt to append to a file that cannot  be  appended  to,
     the system prints a message.  One of the messages is as follows:

          ?APPEND PROTECTION VIOLATION

     If you receive this error,  check  to  see  if  you  have  access
     privileges to the file.


Examples

     The user appends all the files with the file type  .DAT  (R2.DAT,
     TSTAT.DAT, ROOT.DAT and WALDS.DAT) to the new file MASTER.DAT.

        @APPEND (SOURCE FILE) *.DAT.1 (TO) MASTER.DAT.1 [New file]
         R2.DAT.1 [OK]
         TSTAT.DAT.2 [OK]
         ROOT.DAT.1 [OK]
         WALDS.DAT.3 [OK]
        @

     The user appends the file RASTER.SCA.1 to the highest  generation
     of the file SCREEN.LAY.

        @APPEND (SOURCE FILE) RASTER.SCA.1 (TO) SCREEN.LAY
         RASTER.SCA.1 [OK}
        @

     The user appends the file SMALL.FOR on the public structure (PS:)
     to the file LARGE.FOR on structure STU:.

          @APPEND (SOURCE FILE) PS:<PORADA>SMALL.FOR (TO) STU:<PORADA>LARGE.FOR
             PS:<PORADA>SMALL.FOR.2 [OK]
          @
APPEND Command (continued)                                  Page II-16


     The user appends a number of source files to a  destination  file
     by placing a comma between the source files.

        @APPEND (SOURCE FILE) MAIN.DAT.1,HEADER.FRM.1 (TO) NEW.FIL
         MAIN.DAT.1 [OK]
         HEADER.FRM.1 [OK]

     The source files will appear in the  given  order  from  left  to
     right in NEW.FIL.

     The user appends the same source files, and retains the  name  of
     MAIN.DAT  by  including the next higher generation number as part
     of the destination file.

        @APPEND (SOURCE FILE) MAIN.DAT.1,HEADER.FRM.1 (TO) MAIN.DAT.2 !NEW GENERATION!
         MAIN.DAT.1 [OK]
         HEADER.FRM.1 [OK]
ASSIGN Command                                              Page II-17


Function

     The ASSIGN command allocates an input-output (I/O) device for the
     exclusive  use  of  your  job.  Your job retains control over the
     device until you give a DEASSIGN command or until you log off the
     system.


Hints

     Before giving an ASSIGN command,  give  the  INFORMATION  (ABOUT)
     AVAILABLE  DEVICES  command  to  obtain  a  list of the available
     devices.  After selecting an available device,  give  the  ASSIGN
     command to allocate that device to your job.

     You can give  a  second  INFORMATION  (ABOUT)  AVAILABLE  DEVICES
     command to confirm that the device has been assigned to your job.

     Remember to have the operator  load  your  magnetic  tape  before
     using  a  magnetic tape drive.  You can use the TMOUNT command to
     request the operator to load your tape.

     Use the DEFINE command to assign a logical name to a device.


Format

     @ASSIGN (DEVICE) dev:

     dev:   specifies  the  device  that  you  want  to  assign.   The
            standard  input/output  devices and their device names are
            listed in Table 5-1.


Operation

     1.  Type ASSI and press  the  ESC  key;   the  system  prints  GN
         (DEVICE).

         @ASSIGN (DEVICE)

     2.  Type the name of the device that  you  wish  to  assign  (you
         cannot use recognition).

         @ASSIGN (DEVICE) MTA1:

     3.  Press the RETURN key.  When the device is  assigned  to  your
         job, the system prints an @ on your terminal.

         @ASSIGN (DEVICE) MTA1:
         @


Errors

     1.  If the device is already assigned to another job, the  system
         prints  the  message  ?dev:  ALREADY  ASSIGNED  TO  JOB n and
         returns you to TOPS-20 command level.  If you  want  to  know
         who is using the device, give the SYSTATn command (where n is
         the job number).

     2.  If you have already assigned the  device  to  your  job,  the
         system   prints   the   message  [ALREADY  ASSIGNED  TO  YOU]
         immediately following the ASSIGN command.
ASSIGN Command (continued)                                  Page II-18


Characteristics

     The ASSIGN command does not change  any  program  in  memory  and
     leaves your terminal at TOPS-20 command level.


Restrictions

     You cannot assign structure names.  Therefore you  cannot  assign
     the  device  DSK:  (your currently connected structure).  Use the
     SMOUNT command to use structures.

     You cannot ASSIGN various other devices such as LPT:  and NUL:.

     Logical names cannot be assigned to devices by using  the  ASSIGN
     command;  refer to the DEFINE command.

     You cannot assign a device that is already  assigned  to  another
     job, or that you have already assigned to your job.


Examples

     The user assigns magnetic tape drive number three to his job:

        @ASSIGN (DEVICE) MTA3:
        @
BACKSPACE Command                                           Page II-19


Function

     The BACKSPACE command moves  a  magnetic  tape  backward  over  a
     specified number of files or records.


Hints

     Remember to assign the tape  drive  to  your  job  and  have  the
     operator load your tape.

     Be sure you have the correct tape parameters set (check them with
     the  INFORMATION (ABOUT) TAPE-PARAMETERS command);  if necessary,
     give the SET TAPE command.


Format

     @BACKSPACE (DEVICE) dev: n units

     dev:           specifies the magnetic tape you want to backspace.
                    The  device  name is in the form MTAn:  where n is
                    the drive number.

     n              is the number of files or records over  which  you
                    want to backspace.

     units          is either FILES or RECORDS.  If you do not specify
                    the units, the system uses FILES.


Operation

     1.  Type BACK and press the ESC key;  the system prints
         SPACE (DEVICE).

         @BACKSPACE (DEVICE)

     2.  Type the device name and leave a space.

         @BACKSPACE (DEVICE) MTA2:

         If the device is not a magnetic tape, the system ignores  the
         command and prints the message:

         ?dev: Device is not a magtape

         where dev: is the device name you typed.

         If you typed a non-existent device, the  system  ignores  the
         command and prints the message:

         ?No such device

     3.  Type the number of files or records and leave a space.

         @BACKSPACE (DEVICE) MTA1: 5

         If you type a number  greater  than  67777777777(octal),  the
         system ignores the command and prints the message:

         ?NUMBER OUT OF RANGE
BACKSPACE Command (continued)                               Page II-20


     4.  Type (or use recognition on) the word FILES  or  RECORDS  and
         press the RETURN key.

         @BACKSPACE (DEVICE) MTA1: 5 FILES
         @


Errors

     1.  If the device is not on line, the system ignores the  command
         and prints the message:

         ?Device is not on-line

         Use the TMOUNT command to contact the operator to  mount  the
         tape(s).

     2.  If a tape is not mounted on the drive, the system  may  print
         the message:

         ?Device or data error

         Use the PLEASE program to contact the operator, then  reissue
         the command.

     3.  If you type a CTRL/C to exit from a program that  has  opened
         the magnetic tape drive, and then give the BACKSPACE command,
         the system prints the following message:

              ?Device MTAn: open on JFN m
              %Close JFN? YES

         If you answer YES (or just press the RETURN key), the  system
         closes  the file, prints a confirming message, backspaces the
         tape, and leaves you at TOPS-20  command  level.   Continuing
         the  program  that  previously  opened  the magnetic tape may
         produce an error because the file has been closed.

              @BACKSPACE (DEVICE) MTA1: 3 FILES
              ?Device MTA1: open on JFN 3
              %Close JFN? YES
               3   MTA1:   [OK]
              @

         If you answer NO, the  system  prints  the  message  ?Command
         aborted...   and  does  not  close  the file or backspace the
         tape.


Characteristics

     The BACKSPACE command does not change any program in  memory  and
     leaves your terminal at TOPS-20 command level.
BACKSPACE Command (continued)                               Page II-21


Restrictions

     The BACKSPACE command works only for magnetic tapes.


Examples

     The user backspaces his tape 3 files.

        @BACKSPACE (DEVICE) MTA2: 3 FILES
        @

     The user backspaces MTA0: 5 records.

        @BACKSPACE (DEVICE) MTA0:  5 RECORDS
        @
BASIC Program                                               Page II-22


Function

     BASIC runs user's programs written in the BASIC language.

Hints

     You may create program and data files with EDIT and use them with
     BASIC.  Remember to enter EU at the end of EDIT to strip the line
     numbers.


Format

     @BASIC

     READY

     command        is any valid BASIC command listed in Table II-1.


                              Table II-1
                            BASIC Commands


       CATALOG dev:
          Prints the names and types of the files on  the  specified
          device  or logical name.  If you do not give a device, the
          system uses DSK:.

       DELETE range, range
          Deletes the specified lines from your program  in  memory.
          A  range  is  either  a  line  number  or two line numbers
          separated by a hyphen.

       HELP
          Prints  a  list  of   all   the   BASIC   commands   (with
          explanations) on your terminal.

       LIST range, range
       LISTNH range, range
          Prints the specified lines.  A range is  either  a  single
          line  number  or  two  line numbers separated by a hyphen.
          LISTNH prints the lines without a heading.

       MONITOR
          Returns you to TOPS-20 command level.  If you are going to
          give  a  command  that  clears  any  previous program from
          memory, before giving the MONITOR command give the SAVE or
          REPLACE  command  to  save  your  program,  or  else it is
          destroyed and you cannot reclaim it.

       NEW name.typ
          Places BASIC in input mode and you may  begin  entering  a
          new  file.  To enter a line in a file, you must first type
          the line number followed by a space and  the  contents  of
          the line.

       OLD name.typ
          Places the specified file in memory so you can  change  it
          or run it.
BASIC Program (continued)                                   Page II-23


                          Table II-1 (Cont.)
                            BASIC Commands


       RESEQUENCE n,o,i
          Renumbers the lines in your  current  program  in  memory.
          New  line number n replaces old line number o;  succeeding
          lines are numbered  by  adding  i  to  the  previous  line
          number.  If you give only n, the first line in the file is
          changed to n and each succeeding line number is created by
          successively adding 10.

       RUN
       RUNNH
          Starts the program in memory.  RUNNH does  not  print  the
          initial heading.

       SAVE
          Saves the program in memory on disk storage.

       SCRATCH
          Clears the current contents of memory.

       UNSAVE name.typ
          Deletes the file with the given name and type.

Operation

     1.  Type BASIC and press the RETURN key;  the system prints
         READY.

         @BASIC

         READY

     2.  Type any valid BASIC command, chosen from the list in Table
         II-1.

         NEW TEST.B20

         READY

     3.  When you are finished, give the MONITOR command  to  return
         you to TOPS-20 command level.

         MONITOR
         @


Characteristics

     The BASIC  program  translates  your  BASIC  programs,  thereby
     clearing  any  previous  program from memory.  Your terminal is
     left at BASIC command level.


Examples

     The user creates a new program, saves  it  on  disk,  runs  it,
     prints  it,  changes  a line, replaces the previous copy of the
     program, and runs the program again.  The user then returns  to
     TOPS-20 command level.
BASIC Program (continued)                                   Page II-24


        @BASIC                                  !The   user   starts
                                                !BASIC

        READY
        NEW TEST.B20                            !Starts inputting a
                                                !new file - TEST.B20

        READY
        10 X=6.5                                !Types the program
        20 Y=2.1
        30 PRINT "THE VALUE OF THE SUM IS;";  X+Y
        40 END
        SAVE                                    !Saves it on disk

        READY
        RUN                                     !Runs it

        TEST.B20
        Tuesday, March 22, 1977 12:30:20


        THE VALUE OF THE SUM IS;  8.6


        RUNTIME:  0.09 SECS          ELAPSED TIME: 0:00:02

        READY
        LIST                                    !Lists the program

        TEST.B20
        Tuesday, March 22, 1977 12:30:33


        10 X=6.5
        20 Y=2.1
        30 PRINT "THE VALUE OF THE SUM IS;";  X+Y
        40 END

        READY
        MONITOR
        @
BASIC Program (continued)                                   Page II-25


     The user recalls an old  program,  runs  it,  then  returns  to
     TOPS-20 command level.

        @BASIC                                  !The   user   starts
                                                !BASIC

        READY
        OLD TEST.B20                            !Gets    his     old
                                                program

        READY
        RUN                                     !And runs it

        TEST.B20
        Tuesday, March 22, 1977 12:31:52


        THE VALUE OF THE SUM IS;  8.6


        RUNTIME:  0.08 SECS          ELAPSED TIME: 0:00:01

        READY
        MONITOR                                 !Then returns to
                                                !TOPS-20     command
                                                !level
        @
BATCH Commands                                              Page II-26


Function

     The Batch commands control the operation of a Batch job.


Hints

     To create a Batch job, use EDIT to enter the commands  you  would
     type on your terminal into a file.  This file is referred to as a
     Batch control file, and can also contain Batch commands (some are
     listed in Table II-2).  Each line may be preceded by a label (six
     or less alphanumeric characters followed by two colons, the first
     character  must be alphabetic).  After creating the control file,
     give the SUBMIT command to ask  the  system  to  start  the  job.
     Remember,  the system logs your job into the system, connects the
     job to your connected directory at the time you gave  the  SUBMIT
     command,   gives  the  commands  stored  in  your  BATCH.CMD  and
     COMAND.CMD files, and then starts processing your control file.

     Refer to Section 3.4 for more information on Batch jobs.


Format

     @name argument

     name           is the name of the Batch command.

     argument       is either a label or  a  character.   A  label  is
                    comprised   of  not  more  than  six  alphanumeric
                    characters.  When the label is used in a  command,
                    it  contains just the label name;  when it is used
                    at the beginning of a line to indicate a position,
                    it is followed by a double colon.  An example of a
                    label is BEGIN::.


                              Table II-2
                            Batch Commands


       @BACKTO label
          Transfers control to the line in the control file that  is
          preceded  by  the specified label.  This labeled line must
          be located between the  beginning  of  the  file  and  the
          BACKTO statement.  If such a line does not occur, your job
          is terminated.

       @ERROR character
          Declares that an error has occurred  whenever  the  system
          prints the given character in the first character position
          of a line.  If you do not specify a character, the  system
          uses ?;  if you specify a character it cannot be a control
          character (CTRL/C, CTRL/O, etc.), an exclamation point, or
          a semicolon.

       @GOTO label
          Transfers control to the line in the control file that  is
          preceded  by  the  specified  label  or  the label %FIN::,
          whichever comes  first.   This  labeled  line  must  exist
          between  the  GOTO  statement and the end of the file.  If
          such a line does not occur, your job is terminated.
BATCH Commands (continued)                                  Page II-27


                          Table II-2 (Cont.)
                            Batch Commands


       @IF (condition) statement
          Tests for the given condition and if  that  condition  has
          occurred  (or  is true), executes the specified statement.
          The statement may be a Batch command, a TOPS-20 command, a
          command  to  a  program, data, or a comment.  The variable
          condition may  be  either  ERROR  or  NOERROR;   you  must
          include the parentheses.

       @NOERROR
          Ignores all error signals except the ?TIME LIMIT  EXCEEDED
          message and any Batch error.


Operation

     1.  Enter the commands which form your job into a file.

         @CREATE (FILE) TESTV.BAT
         Input: TESTV.BAT.1
         00100   @COMPILE /CREF PRMAIN.MAC
         00200   @IF (ERROR) GOTO NOLUC
         00300   @COMPILE /CREF PRSUB.MAC
         00400   @IF (ERROR) GOTO NOLUC
         00500   @COMPILE /CREF PROUT.MAC
         00600   @IF (ERROR) GOTO NOLUC
         00700   @CREF
         00800   @LOAD PRMAIN,PRSUB,PROUT
         00900   @SAVE
         01000   NOLUC::@DELETE *.TMP
         01100   $
         *E

                    [TESTV.BAT.1]
         @

     2.  Give the SUBMIT command to enter the job into the Batch 
         input queue.

         @SUBMIT TESTV.BAT
         [INP:TESTV=/SEQ:3148/TIME:00:05:00]
         @


Output

     Refer to the description of the SUBMIT command for an explanation
     of the output resulting from a Batch job.


Characteristics

     Batch commands can be used only in a Batch control  file  created
     at  your terminal or in a card deck and cannot be given from your
     terminal.

     Submitting a Batch job requires giving the SUBMIT  command  which
     clears  any  program  from  memory  and  leaves  your terminal at
     TOPS-20 command level.
BATCH Commands (continued)                                  Page II-28


Examples

     The user creates and submits a Batch job.

        @CREATE (FILE) SUBT.CTL
        Input: SUBT.CTL.1
        00100   @EXECUTE LIBRAY.FOR,LIBSUB.FOR,IO.MAC
        00200   *45.
        00300   *46.
        00400   @PRINT LIBRAY.DAT
        00500   $
        *E

        [SUBT.CTL.1]

        @SUBMIT SUBT
        [INP:SUBT=/SEQ:3149/TIME:00:05:00]
        @

     The user checks to see if his batch job is running.

        @SUBMIT
        INPUT QUEUE:
        STS   JOB     SEQ   PRIO    TIME      USER

        RUN SUBT      4344   10  00:05:00  ESTEY

        TOTAL:   INP:   1 JOB;  00:05:00 RUNTIME
        @

     The user creates a control file containing a command that  has  a
     subcommand.

        @CREATE (FILE) DELGEN.CTL
        Input: DELGEN.CTL.1
        00100   @DELETE *.*
        00200   @KEEP 1
        00300   @
        00400   $
        *E

        [DELGEN.CTL.1]
        @
BREAK Command                                               Page II-29


Function

     The BREAK command clears all links that have been made to or from
     your terminal.


Hints

     The TALK command establishes a link  between  your  terminal  and
     another user's terminal.


Format

     @BREAK (LINKS)

     There are no arguments to the BREAK command.


Operation

     1.  Type BREA and  press  the  ESC  key;   the  system  prints  K
         (LINKS).

         @BREAK (LINKS)

     2.  Press the RETURN key.  When the system breaks the  links,  it
         prints an @ on your terminal.

         @BREAK (LINKS)
         @


Characteristics

     The BREAK command:

         Is opposite in function to the TALK command, except  for  the
         difference  that  BREAK  removes all links while TALK creates
         only one link.

         Does not require you to be logged in to the system.

         Breaks only the links to or from your terminal.

         Gives no error message if you do not have  any  links  to  or
         from your terminal.

         Does not change a program in memory.

         Leaves your terminal at TOPS-20 command level.


Examples

     The user breaks all the links to his terminal.

        @BREAK (LINKS)
        @
CLOSE Command                                               Page II-30


Function

     The CLOSE command closes any open files.


Hints

     Each time you open a file, the  system  assigns  this  opening  a
     unique  number called a Job File Number, or JFN.  The INFORMATION
     (ABOUT) FILE-STATUS command lists all your open files  and  their
     associated JFNs.

     If you stop a program by typing two CTRL/Cs, you may examine  any
     files  which  it  has  opened  by  immediately  giving  the CLOSE
     command, then typing or printing  that  file's  contents.   After
     closing  the  files,  you  generally will not be able to give the
     CONTINUE command to resume execution of the program.


Format

     @CLOSE (JFN) n

     n              is a JFN of an open file.  If you  want  to  close
                    all open files, do not include this argument.


Operation

     1.  Type CLOS and press the ESC key;  the system prints E (JFN).

         @CLOSE (JFN)

     2.  Type the JFN (to close one specific opening)  and  press  the
         RETURN key, or simply press the RETURN key (to close all open
         files).  The system prints a  message  about  every  file  it
         tries to close.

         @CLOSE (JFN) 3
          3   NXTFIL.FOR.2   [OK]
         @


Characteristics

     The CLOSE command does not change a program in memory and  leaves
     your terminal at TOPS-20 command level.


Restrictions

     The CLOSE command  cannot  close  files  which  are  mapped  into
     memory.   Give  the  RESET command, remembering that RESET clears
     the contents of memory.  If RESET does not succeed, you may  have
     done a PUSH command.  Give the POP command, the RESET command and
     finally, the CLOSE command again.
CLOSE Command (continued)                                   Page II-31


Examples

     The user gives the INFORMATION command, then closes all his  open
     files.

        @INFORMATION (ABOUT) FILE-STATUS (OF JFN)

         CONNECTED TO PS:<MCKIE>.  JFNS:
         5   024EDI.TEM.1 WRITE, NEW FILE, 0.(36)
         4   COMPILE.TXT.6 READ, 1555.(36)
         3   <SUBSYS>PA1050.EXE.362 READ, EXECUTE
         2   <NEW>EDIT.EXE.15 READ, EXECUTE
         1   <SYSTEM>EXEC.EXE.287 READ, EXECUTE

         DEVICES ASSIGNED TO/OPENED BY THIS JOB:  TTY16

        @CLOSE (JFN)
         5   024EDI.TEM.1   [OK]
         4   COMPILE.TXT.6   [OK]
         3   <SUBSYS>PA1050.EXE.362   CAN'T CLOSE FILE - FILE STILL MAPPED
         2   <NEW>EDIT.EXE.15   CAN'T CLOSE FILE - FILE STILL MAPPED
         1   <SYSTEM>EXEC.EXE.287   CAN'T CLOSE FILE - FILE STILL MAPPED
        @

     The user closes the file COMPILE.MAC.6.

        @CLOSE (JFN) 5
         5   COMPILE.MAC.6   [OK]
        @

     The user tries to close a file, but finds the file is still
     mapped into memory. After giving the RESET command,
     the file is successfully closed.

        @CLOSE (JFN) 5
         5   T.FOR.7   CAN'T CLOSE FILE - FILE STILL MAPPED
        @INFORMATION (ABOUT) MEMORY-USAGE
         504. PAGES, ENTRY VECTOR LOC 435 LEN 2

        0-1          PRIVATE   R, W, E
        2-10         <OLD>VTED.EXE.34  5-13   R, CW, E
        20-137       @ T.FOR.7  0-117   R, W, E
        140-141      T.FOR.7  120-121   R, W, E
        142-767      @ T.FOR.7  122-747   R, W, E
        770-775      <SUBSYS>UDDT.EXE.3  1-6   R, CW, E
        777          PRIVATE   R, W, E

        @RESET
        @INFORMATION (ABOUT) FILE-STATUS (OF JFN)

        CONNECTED TO PS:<MCKIE>.  JFNS:
        1   <SYSTEM>EXEC.EXE.298        READ, EXECUTE

        DEVICES ASSIGNED TO/OPENED BY THIS JOB: TTY107

        @DIRECTORY (OF FILES) T.FOR.*
          <MCKIE>
         T.FOR.7
        @
COBDDT Program                                              Page II-32


Function

     The COBDDT program helps you debug COBOL programs.


Hints

     You must load your program into memory along with  COBDDT.   Your
     program  must  contain  symbols, thus you must not use the switch
     /NOSYMBOLS.

     If you type a CTRL/C, you may resume COBDDT execution  by  giving
     the CONTINUE command.


Format

     @DEBUG (FROM) /COBOL filespecs
     COBOL:  MAIN
     LINK:   Loading
     [LNKDEB COBDDT Execution]

     STARTING COBOL DDT

     command        is  any  valid  COBDDT  command  listed   in   the
                    following table.

     filespecs      is a list of COBOL programs.  If  the  files  have
                    the  type  .CBL,  you  do  not have to include the
                    /COBOL switch.


                              Table II-3
                           COBDDT Commands


       Commands
          After you have given the DEBUG  command,  and  the  system
          prints  an  asterisk,  you can give a COBDDT command.  You
          can abbreviate each command to one letter.

       Data-names, Paragraph-names, and Section-names
          You can  abbreviate  each  data-name,  paragraph-name,  or
          section-name   to   a   unique   string   of   characters.
          Paragraph-names  can  be   qualified   by   section-names;
          data-names  can  be  qualified  by higher-level data names
          and/or  subscripted.   The  subscripts  for  a   qualified
          data-name   must   appear   immediately  after  the  first
          data-name.   Section-names  and   data-names   cannot   be
          qualified  by  program-names because COBDDT uses the names
          in the program specified in the MODULE command.

       ACCEPT data-name
          Changes the  value  of  the  specified  data-item.   After
          giving the ACCEPT command, type the data on the next line.
          If you omit data-name, the system uses the last  name  you
          gave in the most recent ACCEPT or DISPLAY command.


       BREAK paragraph-name
          Sets a break point (or pause)  at  the  beginning  of  the
          specified paragraph.  You can set twenty break points.  If
          you are using overlays, be careful where  you  place  your
          break points.
COBDDT Program (continued)                                  Page II-33


                          Table II-3 (Cont.)
                           COBDDT Commands


       CLEAR paragraph-name
          Removes the breakpoint at the specified paragraph.  If you
          omit   the   paragraph   name,   the  system  removes  all
          breakpoints.

       DISPLAY data-name
          Prints the  value  of  a  data  item.   If  you  omit  the
          data-name,  the  system  prints the value of the data name
          you  specified  in  the  most  recent  ACCEPT  or  DISPLAY
          command.

       MODULE program-name
          Takes data names and procedure names  from  the  specified
          program.  Normally, within a run unit containing more than
          one program, COBDDT searches for data names and  procedure
          names  in the current program.  The MODULE command changes
          the current program.  All  subsequent  searches  for  data
          names  and  procedure  names  will be within the specified
          program until COBDDT enters the next program  in  the  run
          unit or until you give another MODULE command.

       PROCEED n
          Starts  execution   or   continues   execution   after   a
          breakpoint.  If you give a number n, the program continues
          until completion or until it reaches n occurrences of  the
          preceding breakpoint.

       STOP
          Stops the program and closes all  open  files.   The  STOP
          command is equivalent to the COBOL STOP RUN statement.

       TRACE value
          Starts or stops tracing, depending on whether you  use  ON
          or  OFF  for value.  When tracing is on, the system prints
          the name of each paragraph or section (enclosed in  double
          angle brackets) as it is entered.

       WHERE
          Prints the current location, the names of  all  paragraphs
          at  which  you  set  breakpoints,  and the number of break
          points which you may yet assign.


Operation

     1.  Type DEBU and press the ESC key;  the system prints G (FROM).

         @DEBUG (FROM)

     2.  If the source file specifications do  not  contain  the  file
         type  .CBL,  type  the  /COBOL  switch  and  leave  a  space;
         otherwise,  type   (or   use   recognition   on)   the   file
         specifications.   The  system  will  compile  the sources (if
         necessary), load them into memory  along  with  COBDDT,  then
         transfer control to COBDDT.
COBDDT Program (continued)                                  Page II-34


         @DEBUG (FROM) NUMBER.CBL,SUMSUB.CBL
         COBOL:  NUMBER
         COBOL:  SUMSUB
         LINK:   Loading
         [LNKDEB COBDDT Execution]

         STARTING COBOL DDT
         *

     3.  Once the system prints an asterisk, you are at COBDDT command
         level  and  you  may  give  any of the COBDDT commands listed
         above.  In the example, the user gives  the  PROCEED  command
         which starts execution of his program.

         *PROCEED

     4.  If your program generates an error that would normally  cause
         abortion  of execution, the system returns control to COBDDT,
         printing the message:

         ?ENTERING COBDDT FROM: paragraph-name
         *

         where paragraph-name is the name of the paragraph  containing
         the error.  You may then give any COBDDT command.


Characteristics

     The DEBUG command loads your COBOL program into memory along with
     COBDDT,  thereby clearing any previous program from memory.  Your
     terminal is left at COBDDT command level.


Restrictions

     You may use COBDDT to debug only COBOL programs.


Examples

     The user debugs his program.
        @DEBUG (FROM) COMPUT.CBL    !Load the program with COBDDT
        COBOL:  MAIN  [COMPUT.CBL]  
        LINK:   Loading
        [LNKDEB COBDDT Execution]

        STARTING COBOL DDT          !COBDDT starts

        *BREAK NXT1                 !Set a breakpoint at NXT1

        *BREAK NXT2                 !And also at NXT2

        *WHERE                      !List the breakpoints

        PROGRAM NOT STARTED
        BREAK POINTS:
        <<NXT1>>
        <<NXT2>>
COBDDT Program (continued)                                  Page II-35


        18 UNUSED BREAK POINTS
        *TRACE ON                   !Enable tracing

        *PROCEED                    !Start the program
        <<ST>>                      !Execution has entered the
        -7.0E0                      !PARAGRAPH ST.
        1.0E0
        BREAK AT  <<NXT1>>          !The program reached a break-
                                    !point
        *DISPLAY A                  !Print the value of A
        3
        *ACCEPT A                   !Change the value of A
        4
        *D A                        !Print the new value of A
        4
        *PROCEED                    !Resume execution
        <<CC>>                      !Execution has entered the
                                    !PARAGRAPH CC.
        BREAK AT  <<NXT2>>          !The program reached a break-
                                    !point
        *WHERE                      !Print the current status

        PROGRAM STOPPED AT <<NXT1>>
        BREAK POINTS
        <<NXT1>>
        <<NXT2>>

        18 UNUSED BREAK POINTS
        *CLEAR NXT2                 !Remove a break point

        *PROCEED                    !Resume execution
        <<NXT3>>                    !Beginning paragraph NXT3
        <<ENDIT>>                   !Beginning paragraph ENDIT
        THE RESULT IS 4.566         !Here is the answer

        EXIT                        !The program ends

        @
COBOL Compiler                                              Page II-36


Function

     The COBOL compiler produces object  programs  from  COBOL  source
     programs.


Hints

     To run a COBOL program:

     1.  Enter your source program into a file (by using EDIT).

     2.  Give the EXECUTE command to compile,  load,  and  start  your
         program.

     3.  If you plan to execute the program frequently, use  the  LOAD
         command instead of EXECUTE.  You can now use the RUN command,
         which is faster than EXECUTE,  until  you  EDIT  the  program
         again.

     Use the COBDDT program to debug COBOL programs.

     If you have a main program and assorted subroutines that  require
     special  loading,  refer  to  Section  8.3  which  describes  the
     LOAD-class commands.


Operation

     1.  Enter your program into a file using EDIT.

         @CREATE (FILE) COMPUT.CBL
         Input: COMPUT.CBL.1
         00100   ID DIVISION.
         00200   DATA DIVISION.
         00300   WORKING-STORAGE SECTION.
         00400   77      F1 COMP-1 VALUE 3.
         00500   77      F2 COMP-1 VALUE 4.
         00600   77      F3 COMP-1.
         00700   PROCEDURE DIVISION.
         00800   DISPLAY "TYPE A NUMBER: " WITH NO ADVANCING.
         00900   ACCEPT F3.
         01000   COMPUTE F3 = 2.0 * F3.
         01100   DISPLAY "TWICE THAT NUMBER IS: " WITH NO ADVANCING.
         01200   DISPLAY F3.
         01300   STOP RUN.
         01400   $
         *E

         [COMPUT.CBL.1]
         @

     2.  Compile, load, and start your program.

         @EXECUTE (FROM) COMPUT.CBL
         COBOL:  MAIN  [COMPUT.CBL]
         LINK:   Loading
         [LNKXCT COMPUT EXECUTION]
         TYPE A NUMBER: 4
         TWICE THAT NUMBER IS 6.0E0

         EXIT
         @
COBOL Compiler (continued)                                  Page II-37


Characteristics

     The LOAD-class commands run the COBOL compiler to translate  your
     COBOL  source  program, thereby clearing any program from memory.
     Depending on the operation you request, your terminal may or  may
     not be left at TOPS-20 command level.


Restrictions

     In order to  use  the  COBOL  compiler,  you  cannot  change  the
     definition  of  the  logical  name  SYS:.   Should you change the
     definition and try to compile a COBOL program, the system  prints
     the following message, then cancels the command:

     ? "DSK" IS NOT THE DSK

     Remove the definition of the logical name SYS:  and  reissue  the
     command.


Examples

     The user creates and executes a COBOL program.

        @CREATE (FILE) COMPUT.CBL          !Enter the program
        Input: COMPUT.CBL.1                 into COMPUT.CBL
        00100   ID DIVISION.
        00200   DATA DIVISION.
        00300   WORKING-STORAGE SECTION.
        00400   77      F1 COMP-1 VALUE 3.
        00500   77      F2 COMP-1 VALUE 4.
        00600   77      F3 COMP-1.
        00700   PROCEDURE DIVISION.
        00800   DISPLAY "TYPE A NUMBER: " WITH NO ADVANCING.
        00900   ACCEPT F3.
        01000   COMPUTE F3 = 2.0 * F3.
        01100   DISPLAY "TWICE THAT NUMBER IS: " WITH NO ADVANCING.
        01200   DISPLAY F3.
        01300   STOP RUN.
        01400   $
        *E

        [COMPUT.CBL.1]
        @EXECUTE (FROM) COMPUT.CBL     !Give the EXECUTE command
        COBOL:  MAIN  [COMPUT.CBL]
        LINK:   Loading
        [LNKXCT COMPUT Execution]
        TYPE A NUMBER: 35
        TWICE THAT NUMBER IS: 7.0E1

        EXIT
        @

     The user starts debugging the NUMBER program.

        @DEBUG (FROM) NUMBER.CBL
        COBOL:  LETTER  [NUMBER.CBL]
        LINK:   Loading
        [LNKDEB COBDDT Execution]

        STARTING COBOL DDT

        *
COBOL Compiler (continued)                                  Page II-38


     The user loads the main program TEST3  and  its  two  subroutines
     TEST1  an  TEST2.  The program is then saved for future use so it
     can be executed by giving the RUN  command.   This  procedure  is
     highly  recommended  because  RUN uses much less time and expense
     than EXECUTE.

        @LOAD (FROM) TEST1,TEST2,TEST3
        COBOL:  TEST1   [TEST1.CBL]
        COBOL:  TEST2   [TEST2.CBL]
        COBOL:  TEST3   [TEST3.CBL]
        LINK:   Loading

        EXIT
        @SAVE
         TEST3.EXE.1 SAVED
        @RUN (PROGRAM) TEST3

        EXIT
        @
COMPILE Command                                             Page II-39


Function

     The  COMPILE  command  translates  one  or  more  source   files,
     producing one or more object files.


Hints

     After compiling a program, you can  run  it  by  using  the  LOAD
     command  and  START  commands.   If you intend to run the program
     often, you should use, in order, the LOAD, SAVE and RUN commands.
     (You  will find this process faster than LOADing the program each
     time you run it.)

     If you give only  COMPILE-command  switches  as  arguments  to  a
     COMPILE command, the system appends the arguments you gave in the
     last LOAD-class command which contained a file  specification  or
     LINK  switch,  then  executes  the  command.   If  there  are  no
     arguments to recall, the system  prints  the  message  ?No  saved
     arguments.   Refer to Section 8.3.4 which describes the manner in
     which arguments are recalled.

     The system will update the object file if it is  older  than  any
     one  of  the  corresponding  source  files.  Suppose you give the
     command:

     @COMPILE (FROM) NXTLAT.FOR

     If NXTLAT.REL does not exist, or if it is  older  than  the  most
     recent  NXTLAT.FOR  (i.e.,  it  has a write date before the write
     date of NXTLAT.FOR),  then  the  system  compiles  NSTLAT.FOR  to
     produce  an  up-to-date NXTLAT.REL.  Refer to Section 8.3.3 which
     describes the manner in which object files are updated.


Format

     @COMPILE (FROM) sources object,sources object,...

     sources        is one or more source file specifications preceded
                    and/or  followed  by  switches.  You must separate
                    the source files with plus signs.   No  spaces  or
                    tabs  are allowed.  If you do not give a file type
                    in a file specification, the system  looks  for  a
                    source  file with one of the standard types listed
                    in  Table  8-1.   Refer  to  Section  8.3.2  which
                    describes more about how the system selects a file
                    when you do not specify its file type.

     a space        separates the source file specifications from  the
                    object  file specification.  If you do not give an
                    object file specification, you must  not  leave  a
                    space.

     object         is an object file specification.  If  you  do  not
                    give an object file specification, the system uses
                    the name of the last  file  in  the  corresponding
                    sources and the type .REL.

     @name.typ      You can store any portion  of  the  command  in  a
                    file.   That  portion of the command is included -
                    just as  if  you  typed  it  on  your  terminal  -
                    whenever you type an @ followed by the name of the
                    file.  Refer to Section 8.3.5 which describes  how
                    the system takes commands from an indirect file.
COMPILE Command (continued)                                 Page II-40


     switches       You can use recognition to help you type a  switch
                    and any file specification which is an argument to
                    a switch.  If you place a switch before a  set  of
                    sources,  the  switch  applies to all the files in
                    the  rest   of   the   command   line   unless   a
                    contradictory switch appears later in the command.
                    If you place a switch after a  file  specification
                    in  a  set  of sources, the switch applies to just
                    that file.  Table II-4  lists  switches  that  are
                    useful with the COMPILE command.


                              Table II-4
                       COMPILE Command Switches


       /ALGOL
          Compiles the file using ALGOL.  This is  the  default  for
          sources with the extension .ALG.

       /BINARY
          Generates a binary (object) file for each source  program.
          Normally the system generates object files, so this switch
          is useful in reversing a global /NOBINARY switch.

       /COBOL
          Compiles the program using COBOL.  This is the default for
          sources with the extension .CBL.

       /COMPILE
          Compiles the program regardless of whether the object file
          is  up-to-date  or  not.   The  /NOCOMPILE  switch  causes
          compilation only if the object file is out-of-date.

       /CREF
          Creates a file containing cross-reference information  for
          each source file you compile.  The name of the file is the
          name of the last source file and the file  type  is  .CRF.
          Give  the CREF command to run the CREF program which reads
          this file and prints a listing.  If the object file is not
          out  of  date, include the /COMPILE switch in your COMPILE
          command.  When a source file contains a COBOL program, the
          system  produces  a  listing  file  (the file type is .LST
          instead   of   .CRF)   containing   the    cross-reference
          information;   give  the  PRINT  command in the form PRINT
          name.LST (instead of CREF) to print the .LST file.

       /DDT
          Loads the DDT debugger along with the program.

       /DEBUG
          Provides additional debugging information  in  the  object
          program (FORTRAN only).

       /FORTRAN
          Compiles the file using FORTRAN.  This is the default  for
          sources with the extension .FOR or a nonstandard type.

       /LIBRARY
          Loads only the routines from  the  object  file  that  are
          called  by  the  main  program or another subroutine.  The
          system libraries are always searched.
COMPILE Command (continued)                                 Page II-41


                          Table II-4 (Cont.)
                       COMPILE Command Switches


       /LIST
          Prints a listing of each program you compile.  The listing
          name  is  the  name  of  the last source file.  Unless you
          specify this switch, the system does not print  a  listing
          of  your program.  If you also include a /CREF switch, the
          system ignores the /LIST switch.

       /MACRO
          Assembles the file using MACRO.  This is the  default  for
          sources with the extension .MAC.

       /MAP:name.typ
          Produces loader maps during the loading process and stores
          them in the file name.typ.  If you do not give a file name
          and type, the system uses nnnLNK.MAP, where  nnn  is  your
          job  number.   The  /MAP  switch  applies  to  the  entire
          command, not to just one file.  You  may  use  recognition
          input in typing the file specification, the system creates
          a new generation of the recognized file.

       /NOBINARY
          Inhibits the generation of a binary (object)  file.   This
          switch  is  useful along with the /CREF or /LIST switch to
          produce listings without additionally producing an  object
          file.

       /NOCOMPILE
          Compiles a file only if  it  is  out-of-date.   Since  the
          system normally does this, the /NOCOMPILE switch is useful
          for turning off a global /COMPILE or /RELOCATABLE switch.

       /NODEBUG
          Omits  loading  debugging  information  with  the  program
          (FORTRAN only).

       /NOLIST
          Inhibits the generation of a listing file.  Normally,  the
          system does not generate a listing file.

       /NOOPTIMIZE
          Inhibits the generation of optimized object files (FORTRAN
          programs only).

       /NOSEARCH
          Loads all routines in a file, regardless  of  whether  the
          routines  are  called  by  another  module.   Normally the
          system loads all the routines in an object file, therefore
          this  switch  is  useful  in  reversing  a  global /SEARCH
          switch.

       /NOSYMBOLS
          Inhibits loading symbols with the program.  Normally,  the
          system loads symbols with all programs.

       /OPTIMIZE
          Produces optimized object files (FORTRAN programs only).
COMPILE Command (continued)                                 Page II-42


                          Table II-4 (Cont.)
                       COMPILE Command Switches


       /RELOCATABLE
          Uses the specified object files, even though they  may  be
          out  of date, or may have extensions other than .REL.  For
          example, the  command  COMPILE  FILE.FOR/REL  would  cause
          FILE.FOR  to be treated as a relocatable file and load and
          compile it.  It would normally be regarded  as  a  FORTRAN
          source file.

       /SEARCH
          Is identical to the /LIBRARY switch.

       /SYMBOLS
          Loads the  program  with  its  appropriate  symbol  table.
          Normally, the system loads all programs with symbols.


Operation

     1.  Type COMP and press the  ESC  key;   the  system  prints  ILE
         (FROM).

         @COMPILE (FROM)

     2.  Type  (or  use  recognition   on)   the   sets   of   sources
         specifications,  object  specifications  and switches.  Press
         the RETURN key.  The system translates the specified files.

         @COMPILE (FROM) TEST.FOR,SUB1.FOR
         FORTRAN: TEST
         FORTRAN: SUB1
         @


Errors

     1.  If you give a command and one of the source files is missing,
         the  system  continues  processing the command and prints the
         message:

         %SOURCE FILE MISSING - name.typ

         where name.typ is the name and type of the source file.


Characteristics

     The COMPILE command runs  the  appropriate  language  translator,
     thereby  clearing  any  previous  program from memory, and leaves
     your terminal at TOPS-20 command level.


Examples

     The user compiles a simple MACRO program.

        @COMPILE (FROM) TRANSL.MAC
        MACRO:  TRANSL
        @
COMPILE Command (continued)                                 Page II-43


     The user compiles three FORTRAN programs into one  main  program,
     and the entire subroutine package TYPE2.

        @COMPILE (FROM) 1+2+3,TYPE2
        FORTRAN: 1
        MAIN.
        FORTRAN: TYPE2
        TYPE2
        @

     The user assembles a MACRO program, producing  a  cross-reference
     listing.

        @COMPILE (FROM) /CREF INIT.MAC+CONTRL.MAC+SUBS.MAC
        MACRO:  INIT
        MACRO:  CONTRL
        MACRO:  SUBS
        @

     The user  compiles  his  programs,  using  the  arguments  in  an
     indirect file.

        @COMPILE (FROM) @TYP.CMD
        FORTRAN: 1
        MAIN.
        FORTRAN: TYPE2
        TYPE2
        @
CONNECT Command                                             Page II-44


Function

     The  CONNECT  command  connects  you  to  another  directory  and
     disconnects you from the current directory.


Hints

     Connecting to a directory grants you  owner  privileges  to  that
     directory and files.  Whenever you give a command, the system now
     uses the files in this connected directory.

     If you omit the structure or  directory  name  from  the  CONNECT
     command,   the   system  defaults  to  your  currently  connected
     structure or directory.  But, if you omit both the structure  and
     directory  name,  i.e.,  CONNECT  ,  the  system  defaults to the
     public structure (PS:) and your logged-in directory.

     The first time you give a CONNECT command to a directory that  is
     on  a  file  structure other than the public structure (PS:), you
     should give the SMOUNT command before the CONNECT command.


Format

     @CONNECT (TO DIRECTORY) dev:<dir> (PASSWORD) password

     dev:           is the name of the file  structure  that  contains
                    the  directory  to  which you are connecting.  The
                    CONNECT command will only accept a file  structure
                    name in the dev:  field.

     <dir>          is the name of the  directory  to  which  you  are
                    connecting.   The  brackets  must  be  included in
                    directory  names.   You  can  use  recognition  on
                    directory    names.     Remember   to   type   the
                    left-hand-bracket.

     password       is the password of the directory to which you wish
                    to  connect.   The password is not required if you
                    own the directory (you own  a  directory  if  your
                    logged-in  user  name is the same as the directory
                    name), or if the directory protection  allows  you
                    to connect without giving a password.


Operation

     1.  Type CONN and press the ESC key.  The system prints  ECT  (TO
         DIRECTORY).

         @CONNECT (TO DIRECTORY)

     2.  Type the file structure name and a colon.  (You do  not  have
         to  type  the  file  structure  name if the directory you are
         connecting to is on your currently connected structure.)

         @CONNECT (TO DIRECTORY) ADMIN1:
CONNECT Command (continued)                                 Page II-45


     3.  Type (or use recognition on) the directory name.   Press  the
         ESC  key  if  you  do not use recognition.  The system prints
         (PASSWORD).

         @CONNECT (TO DIRECTORY) ADMIN1:<BERLITZ> (PASSWORD)

     4.  Type the password belonging to the directory  and  press  the
         RETURN  key.   (If  you own the directory or if the directory
         protection gives you the proper access, you do  not  have  to
         give  a  password;   just press the RETURN key.) When you are
         connected to the directory, the system prints an  @  on  your
         terminal.

         @CONNECT (TO DIRECTORY) ADMIN1:<BERLITZ> (PASSWORD)
         @


Errors

     1.  If you do not supply the correct password or if  you  do  not
         give  a  password  and  it is required, the system pauses and
         then prints the message:

         ?INCORRECT PASSWORD or ?  PASSWORD IS REQUIRED

         and cancels the  command.   You  should  obtain  the  correct
         password and reissue the command.

     2.  If you did not give the SMOUNT command and you specify a file
         structure that is not on line, the system prints the message:

         ?STRUCTURE IS NOT MOUNTED or ?NO SUCH DEVICE

         and cancels the command.  First, check to see if you  entered
         the  name  correctly.  If you did, give the SMOUNT command to
         request that the file structure be placed on line.

     3.  If you give a non-existent directory name, the system  prints
         the message:

         ?NO SUCH DIRECTORY

         and cancels the command.


Characteristics

     The CONNECT command:

         Leaves your terminal at TOPS-20 command level.

         Does not change any program in memory.

         Causes  an  allocation  check  for  the  directory  you  were
         originally  connected  to  and the directory to which you are
         now connecting.  If either directory contains more space than
         is allowed, the system prints a warning message.
CONNECT Command (continued)                                 Page II-46


Examples

     The user connects  to  the  directory  <INSTRUMENTATION>  on  his
     currently connected structure.

        @CONNECT (TO DIRECTORY) <INSTRUMENTATION> (PASSWORD)
        @

     The user connects to the directory <SHELDON>  on  file  structure
     ACCTG:.   He  types  CONN, leaves a space, types ACCTG:<SHELDON>,
     leaves a space, types the password, and presses the RETURN key.

        @CONN ACCTG:<SHELDON>
        @
CONTINUE Command                                            Page II-47


Function

     The CONTINUE command restores execution of  a  program  that  was
     interrupted  by  a  CTRL/C.   The  program  is not changed by the
     CTRL/C-CONTINUE process as long as you do not change the contents
     of memory or the files it manipulates.


Hints

     When you stop a program by typing a CTRL/C once (or if necessary,
     up   to  four)  times,  the  contents  of  the  program  counter,
     accumulators, and memory are saved.  The  CONTINUE  command  uses
     this information to resume execution of your program.

     You may also stop a program by typing one or more CTRL/Cs, give a
     PUSH  command, run another program, give a POP command, then give
     a CONTINUE command to continue the initial program.


Format

     @CONTINUE (PROGRAM)

     There are no arguments to the CONTINUE command.


Operation

     1.  Type CONT and press the ESC  key.   The  system  prints  INUE
         (PROGRAM).   Press  the  RETURN  key  and the program resumes
         execution.

         @CONTINUE (PROGRAM)


Characteristics

     The CONTINUE command continues the program in memory  and  leaves
     your terminal under its control.


Restrictions

     Some non-standard programs may not allow  you  to  CONTINUE  them
     once they are interrupted.
CONTINUE Command (continued)                                Page II-48


Examples

     The user runs the SORT program.  Once it is  running,  it  prints
     the  message  [SRTXPN  Expanding  to  55P], so the user gives two
     CTRL/Cs to stop the  program.   He  gets  information  about  the
     contents  of  memory,  then gives the CONTINUE command to let the
     program run to completion.

        @SORT
        *LIST.SRT=LIST.FIL/K:1:6/R:40

        [SRTXPN Expanding to 55P]
        ^C
        @INFORMATION (ABOUT) MEMORY-USAGE

         79. PAGES, ENTRY VECTOR LOC 1762 LEN 254000

        0-2    PRIVATE   R, W, E
        3-4    SORT.EXE.8  5-6     R, CW, E
        5      PRIVATE   R, W, E
        6-12   SORT.EXE.8  10-14   R, CW, E
        13-20  PRIVATE   R, W, E
        22-41  PRIVATE   R, W, E
        400-424 SORT.EXE.8  16-42   R, CW, E
        700-726 <SUBSYS>PA1050.EXE.354  2-30   R, E
        734    PRIVATE   R, W, E
        735    <SUBSYS>PPN-TO-DIRECTORY-HASH-TABLE.BIN.22  0  R, E

        @CONTINUE (PROGRAM)
        Sorted 211 Records
        1444 KEY comparisons,  6.84 per record
        0 Runs
         0:00:02 CPU time,     10.5: MS per record
         0:00:51 Elapsed

        *
COPY Command                                                Page II-49


Function

     The COPY command copies the contents of one or more source  files
     to one or more destination files.


Hints

     Use the RENAME command instead of the COPY  command  if  you  are
     moving  files  from  one  name  to  another  or  one directory to
     another.  RENAME is faster than COPY.   However,  to  move  files
     from one structure to another, use the COPY command.  RENAME will
     not work across structures.

     Use the wildcard construction in the source file specification to
     copy  multiple files.  For example, the source file specification
     *.FOR would copy all the files with the file  type  .FOR  to  the
     destination.   The  source file specification EXPAND.* would copy
     all the files with the file name EXPAND.

     When  you  use   wildcard   characters   in   the   source   file
     specification,    carefully    select    the   destination   file
     specification:

       -If you are copying the  files  from  another  directory,  just
        press  the  ESC  key  at the beginning of the destination file
        specification.  The system copies the files to the destination
        using  the  same  names  and  files  types,  but  creating new
        generations if any files with the same name and  type  already
        exist.   The  following  command copies all the files with the
        type .FOR from the directory <MOSLER> and gives them the  same
        name in your directory.

        @COPY (FROM) <MOSLER>*.FOR.* (TO) *.FOR.-1

       -If you are copying the files within a directory, you  probably
        want  to make another copy with a different name or type.  For
        the destination file specification, use a wildcard  character.
        The  following command copies all the files with the type .FIL
        to files with the same name, but with the type .LIB.

        @COPY (FROM) *.FIL.* (TO) *.LIB

       -If you want to change the file name as you are copying  files,
        specify  the  new  name as the destination file specification.
        The following command copies  all  the  source  files  to  the
        destination  using  the source file type and the new file name
        NEWTST.

        @COPY (FROM) TESTFL.*.* (TO) NEWTST.*


Format

     @COPY (FROM) source (TO) destination

     source         is a single file specification or a string of file
                    specifications    (separated   by   commas)   that
                    designate   the   source    file(s).     A    file
                    specification has the form:

                    dev:<dir>name.typ.gen
COPY Command (continued)                                    Page II-50


                    If you omit dev:,  the  system  uses  DSK:   (your
                    currently  connected file structure).  If you omit
                    <dir> the system uses  your  connected  directory.
                    The wildcard characters are permitted.

     destination    is the destination  file  specification.   If  you
                    press  the ESC key at the beginning of this field,
                    the  system  copies  the  source  files  to   your
                    connected  directory  using the same file name and
                    type, but with a generation new to the destination
                    directory.  The * wildcard character is permitted.
                    The destination file specification takes the form:

                    dev:<dir>name.typ.gen

                    If you omit dev:,  the  system  uses  DSK:   (your
                    currently  connected file structure).  If you omit
                    <dir>, the system uses your  connected  directory.
                    If  you  omit the file type (or use an asterisk in
                    its place),  the  system  uses  the  type  of  the
                    appropriate   source   file.    If  you  omit  the
                    generation, the system uses  a  generation  number
                    new to the destination directory.


Operation

     1.  Type COPY and press the ESC key;  the system prints (FROM).

         @COPY (FROM)

     2.  Type (or use recognition on) the  source  file  specification
         and  press the ESC key (if you did not use recognition).  The
         system prints (TO).

         @COPY (FROM) LISTFL.ALG.1 (TO)

     3.  Type  (or  use   recognition   on)   the   destination   file
         specification,  then  press  the RETURN key.  If you want the
         default of creating a new file with the same name and type as
         the source file specification, just press the RETURN key.  If
         you copy one or more  files,  the  system  prints  a  running
         record of the files it is copying.  It prints the source file
         specification followed by an arrow and the  destination  file
         specification.   When  the  transfer  is complete, the system
         prints [OK] and proceeds to the next source file.

         @COPY (FROM) LISTFL.ALG.1 (TO) NEWPRG.ALG
          LISTFL.ALG.1 => NEWPRG.ALG.1 [OK]
         @



Characteristics

     The COPY command does not change a program in memory  and  leaves
     your terminal at TOPS-20 command level.
COPY Command (continued)                                    Page II-51


Restrictions

     You may use the COPY  command  to  transfer  files  to  the  line
     printer and magnetic tape, but refer to the PRINT command and the
     DUMPER program for a description of the additional features  they
     provide.

     You cannot continue a  COPY  command  that  you  stop  by  typing
     CTRL/Cs.


Examples

     The user copies a file from the user <PORADA>.

        @COPY (FROM) <PORADA>LETTER.CBL.1 (TO) LETTER.CBL.1 !NEW FILE!
         <PORADA>LETTER.CBL.1 => LETTER.CBL.1 [OK]
        @

     The user copies all the files with the file type  .FOR  from  the
     directory <MOSLER> to his connected directory.

        @COPY (FROM) <MOSLER>*.FOR.2 (TO) *.FOR.-1
         <MOSLER>ADDTWO.FOR.2 => ADDTWO.FOR.1 [OK]
         <MOSLER>CUBIT.FOR.1 => CUBIT.FOR.1 [OK]
         <MOSLER>GRADES.FOR.1 => GRADES.FOR.1 [OK]
         <MOSLER>NETFLO.FOR.3 => NETFLO.FOR.1 [OK]
         <MOSLER>PLAYER.FOR.31 => PLAYER.FOR.1 [OK]
         <MOSLER>T.FOR.1 => T.FOR.1 [OK]
         <MOSLER>TEST.FOR.2 => TEST.FOR.1 [OK]
        @

     The user makes an additional copy of all his files with the  file
     type  .FIL,  giving  them  the  same name, but with the file type
     .LIB.

        @COPY (FROM) *.FIL.1 (TO) *.LIB
         FOO.FIL.1 => FOO.LIB.1 [OK]
         LIST.FIL.1 => LIST.LIB.1 [OK]
         LOC.FIL.1 => LOC.LIB.1 [OK]
         REMEM.FIL.1 => REMEM.LIB.1 [OK]
         RUN3.FIL.1 => RUN3.LIB.1 [OK]
         SYMBOL.FIL.1 => SYMBOL.LIB.1 [OK]
        @


     The user is connected to a directory on a  structure  other  than
     PS:.   He  copies the file DIFFER.FOR.2 from directory <MCKIE> on
     PS:  to his connected structure and directory.

          @COPY (FROM) PS:<MCKIE>DIFFER.FOR.2 (TO) DIFFER.FOR
          PS:<MCKIE>DIFFER.FOR.2 => DIFFER.FOR.1 [OK]

     In the above example, suppose directory <MCKIE> on  PS:   is  not
     the  user's  logged-in directory and the protection codes set for
     directory <MCKIE> do not allow this COPY function.  The  user  in
     this  case  can give the ACCESS command for the directory <MCKIE>
     to gain owner privileges then give the COPY command, providing he
     has the password.
CREATE Command                                              Page II-52


Function

     The CREATE command lets you create a file using the EDIT program.


Special Cases

     The CREATE command always starts EDIT as long as you give a legal
     file  specification as an argument.  If you give just a file name
     and type, the system creates a new generation of that  file.   If
     you  give  a file name, type and existing generation number, EDIT
     sets the output file generation number to  one  higher  than  the
     highest  existing  generation  number,  even though it prints the
     generation number you gave.

     If you do not give any  arguments  to  the  CREATE  command,  the
     system  uses  the  arguments  you gave in the last CREATE or EDIT
     command.  If you have not given a CREATE or  EDIT  command  since
     you  have  logged  in, the system cannot recall any arguments and
     prints the message ?NO SAVED ARGUMENTS.


Hints

     Refer to the description of the EDIT program for a  list  of  all
     the EDIT commands.

     You may give any EDIT command switch as a  command  to  the  EDIT
     program.


Format

     @CREATE (FILE) /switches input

     /switches  is any combination of switches listed in  Table  II-5.
                You  may use recognition on the switch name and switch
                value.  Refer to the EDIT User's Guide for a  complete
                list of switches.

     input      specifies the file you want to change or  create.   If
                the  file  exists,  the  system recognizes the highest
                generation;  if the file does not  exist,  the  system
                allows you to create the file.


                              Table II-5
                       CREATE Command Switches


     /C128
        Starts EDIT in 128-character mode that allows you  to  enter
        special   control  characters.   Normally,  EDIT  starts  in
        64-character mode.

     /DPY
        Enters display mode  that  uses  overprinting  to  make  the
        output  more concise on a video terminal screen.  Otherwise,
        EDIT starts in Model 33 (normal terminal) mode.

     /EXPERT
        Starts expert mode that allows more  powerful  commands  and
        abbreviates  error  messages.   Otherwise,  EDIT  starts  in
        standard novice mode.
CREATE Command (continued)                                  Page II-53


                          Table II-5 (Cont.)
                       CREATE Command Switches


     /INCREMENT:n
        Uses the specified increment when assigning  numbers  to  an
        unsequenced  file.  The numbering starts at the value of the
        START parameter (the default value is 100) and assigns  line
        numbers  by  adding  the specified increment.  If you do not
        specify an increment, the system uses 100.

     /ISAVE:n
        Starts ISAVE mode that  automatically  gives  a  B  (Backup)
        command  every  time  you  insert  n lines.  You must give a
        value for n.

     /NOBAK
        Inhibits EDIT from renaming the input file to  be  a  backup
        file with the file type .Qyp.  Instead, EDIT does not change
        its file specification.  If you give the /NOBAK switch,  you
        should  SET FILE GENERATION-RETENTION-COUNT for this file to
        a number greater than one.

     /OLD
        Makes a backup file with the file type .Zyp if no other  one
        with  this  file  name  and  type  exists  in your connected
        directory.  Even though you may  give  another  /OLD  switch
        with   an  EDIT  or  CREATE  command,  this  file  is  never
        overwritten unless you  delete  it  with  a  TOPS-20  DELETE
        command.

     /READONLY
        Starts EDIT in readonly mode where you are  not  allowed  to
        make  any  changes  to  the  file.  When you start EDIT, the
        system prints Read:  instead of Edit:  or Input:.   You  may
        give any EDIT command that does not change the file.

     /SAVE:n
        Starts SAVE mode which automatically gives a B command every
        time you give n EDIT commands.  You must give a value for n.

     /START:n
        Starts numbering an unsequenced file at the  number  n.   If
        you  do  not give a /START switch, EDIT uses a value of 100.
        To produce each succeeding line number, EDIT uses the  value
        of the /INCREMENT switch.

     /UNSEQUENCE
        Removes line numbers from the output file.


Operation

     If you do not want to give switches--

     1.  Type CREATE and press the ESC key;  the system prints (FILE).

         @CREATE (FILE)
CREATE Command (continued)                                  Page II-54


     2.  Type (or use recognition on) the  input  file  specification,
         then  press  the RETURN key.  The system prints a message and
         leaves you at EDIT input level.

         @CREATE (FILE) TEST.FOR
         Input:  TEST.FOR.1
         00100

     If you want to give switches--

     1.  Type the letters CREATE and press the ESC  key;   the  system
         prints (FILE)

         @CREATE (FILE)

     2.  Type a slash and type (or  use  CTRL/F  recognition  on)  the
         switch  name.   If  the  switch  has  a  value,  type a colon
         followed by the value.   You  may  recognize  the  switch  by
         pressing the ESC key.

                           CTRL/F

         @CREATE (FILE) /INCREMENT:10


                            ESC

         @CREATE (FILE) /UNSEQUENCE

     3.  Type (or use recognition on) as many switches  as  you  need,
         then   type   (or   use   recognition   on)  the  input  file
         specification and press the RETURN key.  The system prints  a
         message and leaves you at EDIT input level.

                             CTRL/F

         @CREATE (FILE) /INCREMENT:10/EXPERT NEWFIL.CPL
         Input:  NEWFIL.CPL.1
         00100


Characteristics

     The CREATE command starts the EDIT program, thereby clearing  any
     previous  program  from  memory.   Your  terminal is left at EDIT
     input level.


Restrictions

     If you are using the automatic feature of  the  EDIT  and  CREATE
     commands,  do not give a generation number in your initial CREATE
     or EDIT command or else subsequent commands will try to use  that
     exact  generation rather than the highest existing generation for
     the file.  That is, give the command:

          @CREATE (FILE) T.FIL

     rather than:

          @CREATE (FILE) T.FIL.1
CREATE Command (continued)                                  Page II-55


     In the latter case, the output file is T.FIL.1.   Later,  if  you
     give  the EDIT command without any arguments, the input file will
     be T.FIL.1 and the output file will be T.FIL.2.  When you give  a
     second EDIT command, the input file will still be T.FIL.1 when it
     should  be  T.FIL.2  and  you  will  not  use  the  most  current
     generation of your file.


Examples

     The user creates a new file.

        @CREATE (FILE) NUMBER.DAT
        Input: NUMBER.DAT.1
        00100

     The user creates a file, setting the SAVE parameter to give  a  B
     command  after  every  5 EDIT commands and the ISAVE parameter to
     give a B command every 10 inserts.

        @CREATE (FILE) /SAVE:5/ISAVE:10 CRISCR.ALG
        Input: CRISCR.ALG.1
        00100

     The user starts EDIT in DPY mode and unsequences his output file.
     There is already an existing generation number 5 of this file, so
     EDIT uses generation number 6.

        @CREATE (FILE) /DPY/UNSEQUENCE NXTVER.MAC
        Input: NXTVER.MAC.6
        00100
CREF Command                                                Page II-56


Function

     The CREF command produces  cross  reference  listings  from  .CRF
     files.   (.CRF  files  are  produced by LOAD-class commands.) The
     listings are printed on device LPT:,  which  usually  causes  the
     files to be sent to the line printer.  The .CRF files are deleted
     from the directory.


Hints

     To create a listing of your  program,  first  give  a  LOAD-class
     command  with  the  /CREF  switch, then give the CREF command.  A
     cross-reference listing contains your source program plus a  list
     of  all  the  symbols  in  the  program  and  the  locations that
     reference them.

     If you want to place the listing in a  file,  do  the  following.
     Type  R  CREF  and  press  the  RETURN key;  the system prints an
     asterisk.  Type the file specification of the output file, an  =,
     and the name of the .CRF file.  Press the RETURN key;  the system
     prints a message and a second *.  Type  a  CTRL/C  to  return  to
     TOPS-20  command level.  If you want to print this file, give the
     PRINT command.  Refer to the second example.


Format

     @CREF

     There are no arguments to the CREF command.


Operation

     1.  Type CREF and press the RETURN key.  The  system  prints  the
         word CREF:  and the name of each file it processes.

         @CREF
         CREF:    GRADES
         @


Characteristics

     The CREF command runs the CREF program to  produce  the  listing,
     thereby  clearing  any  previous  program from memory, and leaves
     your terminal at TOPS-20 command level.  If you forget to precede
     the  CREF  command with the LOAD-CLASS command containing a /CREF
     switch, the system prints an asterisk and leaves your terminal at
     CREF  command  level.  Type a CTRL/C to return to TOPS-20 command
     level.


Restrictions

     If the .CRF file is in your logged-in directory and  was  created
     before  you logged-in, the system will not produce a listing file
     from it.  To produce the listing file in this case, refer to  the
     second example.
CREF Command (continued)                                    Page II-57


Examples

     The user produces a cross-referenced listing.

        @CREF
        CREF:    TMAC
        @

     The user forces the production of a .CRF file, then runs the CREF
     program and keeps the file without printing it.

        @COMPILE (FROM) /COMPILE /CREF FILEIO
        MACRO:   FILEIO

        EXIT
        @R CREF

        *FILEIO.REF=FILEIO
        [CRFXKC 3K CORE]
        *^C
        @
DAYTIME Command                                             Page II-58


Function

     The DAYTIME command prints  the  day,  date,  and  time  on  your
     terminal.


Format

     @DAYTIME

     There are no arguments to the DAYTIME command.


Operation

     1.  Type DA and press the ESC key;  the system prints YTIME.

         @DAYTIME

     2.  Press the RETURN key;  the system prints the  day,  date  and
         time.

         @DAYTIME
          FRIDAY, NOVEMBER 16, 1976 9:10:06
         @


Characteristics

     The DAYTIME command;

         Does not require you to be logged in to the system.

         Does not change a program in memory.

         Leaves your terminal at TOPS-20 command level.


Example

     The user requests the day, date and time.

         @DAYTIME
          FRIDAY, NOVEMBER 16, 1976 9:11:05
         @
DDT Command                                                 Page II-59


Function

     The DDT command starts the debugger you have loaded  into  memory
     along with your program.


Special Cases

     If you do not have a debugger in memory,  the  system  loads  and
     starts DDT.

     If you are using COBDDT, the system starts DDT, not COBDDT.


Hints

     The DDT command is useful when you want  to  halt  a  program  by
     typing two CTRL/Cs, then continue running the debugger.

     To find out  if  you  have  a  debugger  loaded,  examine  memory
     location  74;   type  74/.  This command examines the contents of
     memory location 74.  If the system prints 0, or  ?NO  SUCH  PAGE,
     you  do not have the debugger loaded yet.  The DDT command causes
     DDT to be loaded.


Format

     @DDT

     There are no arguments to the DDT command.


Operation

     1.  Type DDT and press the RETURN key;   the  system  starts  the
         debugger, or loads and starts DDT.

         @DDT

         ENTERING FORDDT

         >>


Characteristics

     The DDT command merges DDT into memory (if required)  and  leaves
     your terminal at command level in the debugging program.
DDT Command (continued)                                     Page II-60


Examples

     The user wants to debug his program;  he has no debugger  loaded,
     so the system loads and starts DDT.

        @DDT                  !The user types the DDT command.
        DDT                   !The system loads and starts
                              !DDT.

     The user starts debugging his FORTRAN program.

        @DDT                  !The user types the DDT command.

        ENTERING FORDDT       !FORDDT is loaded, so the
                              !system starts it.
        >>                    !Once the system prints >>,
                              !the user can give any FORDDT
                              !command.
DDT Program                                                 Page II-61


Function

     The DDT  program  helps  you  debug  your  program  by  providing
     commands  which  control  the  execution  of  a  program, without
     reassembling or recompiling the source program.


Hints

     To use DDT, you must first load your object program into  memory,
     then  transfer  control  to  DDT.   There are three ways of doing
     this.  The first method entails giving the  DEBUG  command  which
     produces an up-to-date object program, loads it into memory, then
     starts DDT.  (Remember to give the /DDT switch if your file  type
     is other than .ALG, .FAI, .MAC, or .SAI.).

        @DEBUG (FROM) TEST.MAC
        MACRO:  TEST
        LINK:   Loading
        [LNKDEB DDT EXECUTION]
        DDT

     The second method entails loading an object program into  memory,
     then giving the DDT command.

        @LOAD (FROM) TEST.MAC
        LINK:   Loading
        EXIT
        @DDT
        DDT

     The third method entails placing an .EXE  file  in  memory,  then
     giving the DDT command.

        @GET (PROGRAM) TEST.EXE
        @DDT
        DDT

     In all cases, once the system prints DDT, you may  give  any  DDT
     command.

     You may use DDT to change the contents of an executable  program.
     To  do  this, place the program in memory, make the changes using
     DDT, then save the altered program in a file.  You may also  save
     a program with breakpoints.  Refer to the examples.


Operation

     The following pages contain a brief description  of  how  to  use
     DDT.   You  may  give any of these commands after you have loaded
     your program with DDT using one of the methods described  in  the
     previous paragraph.


                  Opening The Symbol Table - name$:

     To open the symbol  table  of  the  program  or  module  you  are
     debugging, type its name, press the ESC key and type a colon.  If
     DDT can find the symbol table, the system prints a  tab;   if  it
     cannot  find the symbol table, it prints a U.  This should be the
     first DDT command you give.

        TRANSL$:
DDT Program (continued)                                     Page II-62


     The name is the name following the TITLE  statement  in  a  MACRO
     program or a FORTRAN SUBROUTINE or FUNCTION statement.


       Examining Storage Words - location/ , <TAB>, <LF>, ^, =

     To print the contents of a location in memory, type the  location
     and  a  slash.   The  system  prints  the  contents  preceded and
     followed by tabs.  The variable "location" can be  a  variety  of
     things   including   a   symbol   name  such  as  PNTUSR, .   (an
     abbreviation for the current position),  a  symbol  name  and  an
     offset  such  as  PNTUSR 5 (the offset is an octal number), or an
     octal value such as 453.

        PNTUSR/  MOVE 1,6

                                  U

               If the system prints a U, it cannot find
               the symbol name.  Check your spelling of
               the  symbol.   You   must   retype   the
               instruction and the symbol.  After the U
               is printed, DDT has forgotten everything
               you   typed   to   DDT  since  the  last
               characters DDT typed out.  For  example,
               if  you type MOVE A, and A is undefined,
               which causes DDT  to  type  U,  and  you
               meant  to  type MOVE B, you will have to
               retype MOVE.

     If you want to examine the contents of the  address  part  (right
     half)  of  an  instruction, press the TAB key.  The system prints
     the contents  of  that  location  and  it  becomes  your  current
     location.

        INFIL/   HRROI T1,MESAGE   <TAB>
        MESAGE/   64252,,252634


     To examine the next location, press the LINEFEED key:

        MESAGE/   64252,,252634   <LF>
        MESAGE+1/   65242,,115622


     To examine the previous location, type an up-arrow:

        MESAGE+1/65242,,115622   ^
        MESAGE/   64252,,252634


     To print  the  octal  half-words  corresponding  to  the  current
     symbolic instruction, type an equals sign:

        INFIL/   HRROI T1,MESAGE  =561040,,640


          Changing Typeout Modes - $$C, $$F, $$T, $$nO, $$S

     You may change the typeout mode to print numeric constants ($$C),
     floating-point  numbers  ($$F),  ASCII  text  ($$T),  SIXBIT text
     ($$6T),  and  n-bit  bytes  ($$nO).   DDT  initially  prints  the
     symbolic  instruction  associated  with  each memory location you
     examine.  If you change the typeout mode, you can return to  this
DDT Program (continued)                                     Page II-63


     initial  state by typing $$S ($ means press the ESC key, not type
     a dollar-sign).  The $$C command prints numbers  in  the  current
     radix;   if you want to change the current radix, type $$nR where
     n is a decimal number specifying the radix you want.

        $$C USRFLG/   600000

        $$10R   USRFLG/   196608.

        $$F  STRSWT/   45.599999

        $$T  PRMPT/    .SPAC

        $$6T  P6BIT/   .HL 4

        $$70  PRMPT/   56,123,120,101,103,0

        $$S  RTRANS+23/   PUSHJ P,MESOUT

     To reprint the current line in the new mode, type a semicolon.

          $$C USRFLG/  600000  $$IOR;196608.

                       Modifying Storage Words

     Once you have  examined  a  storage  word,  you  can  change  its
     contents by typing its new contents, and pressing the RETURN key.

           To enter                       Type

        An octal number - 23       The octal number - 23

        A decimal number - 109     The decimal number, followed
                                   by a decimal point - 109.

        Floating point number -    The floating point number,
        .0078                      optionally in E-notation:
                                   7.8E-3, or .0078.

        ASCII text - HELLO         a double quote, a delimiter,
                                   the text, the same delimiter -
                                   "/HELLO/. The delimiter
                                   may be any character not in
                                   the text.

        An instruction -           The instruction - MOVEI T2,4
        MOVEI T2,4


      Setting And Removing Breakpoints - location$B, $nB/ , 0$nB

     Once you have started your program, you may want  to  stop  at  a
     particular  location.  Type two CTRL/Cs and give the DDT command.
     If you have not already opened the symbol table, open it.   Next,
     set  a  breakpoint  at  that  location  by  typing  the location,
     pressing the ESC key and typing a B.  The  system  prints  a  tab
     when the breakpoint is set.

        TRANSL+34$B
DDT Program (continued)                                     Page II-64


     Whenever,  during  execution,   your   program   encounters   the
     instruction  where  you  have set a breakpoint, the system prints
     the number of the breakpoint,  two  greater-than  signs  and  the
     location.  The system has not executed the instruction containing
     the breakpoint.  To proceed from the breakpoint, type $P.

        $1B>>TRANSL+34      $P

     While at a breakpoint, you may examine  storage  words,  set  and
     remove breakpoints, and change the contents of memory.

     Each time you assign  a  breakpoint,  the  system  assigns  it  a
     number.  You can find out what location each breakpoint is set at
     by pressing the ESC key, typing the  number  of  the  breakpoint,
     typing a B and pressing the slash key.

        $1B/   TRANSL+34

     To remove a breakpoint, type a 0, press the  ESC  key,  type  the
     number  of the breakpoint and type a B.  The system prints a tab.
     The next example shows how to remove breakpoint 1.

          0$1B


            Controlling Execution - $$G, $X, $$X, $P, n$P

     To start your program, press the ESC key twice and type a G.  DDT
     starts  your  program  and its execution continues until it has a
     fatal error, the  program  terminates,  or  until  it  reaches  a
     breakpoint instruction.

        $$G

        INPUT FILE:  TEST1.FIL

                                   $1B>>TRANSL+34

     To continue from a breakpoint, press the ESC key and  type  a  P.
     Execution  resumes  until  the  program  finishes,  encounters an
     irrecoverable error, or reaches a breakpoint.   If  you  want  to
     proceed through the breakpoint a number of times and stop the nth
     time the breakpoint is encountered, type n$P instead of just $P.

        $1B>>TRANSL+34   5$P

        OUTPUT FILE:  TEST2.DAT

        $3B>>DATA5

     To proceed through your program statement-by statement, press the
     ESC  key  and  type  an  X.  The system executes the instruction,
     prints the results of the instruction and prints the contents  of
     the next instruction to be executed and stops.

        $3B>>DATA5   ./   PUSHJ P,PUTCHR  $X

        <JMP>

        GETCHR/    MOVE GETPNT
DDT Program (continued)                                     Page II-65


     To proceed through an entire subroutine, press the ESC key  twice
     and type an X.

        $3B>>DATA5    $$X

        DATA5+1/   CAIN C,N


                         Leaving DDT - CTRL/Z

     To halt the debugging session, type a CTRL/Z to return to command
     level.   You may continue DDT by giving the CONTINUE command.  If
     you want to save your program with  the  modifications  you  have
     made, give the TOPS-20 command SAVE.


Characteristics

     After you start DDT, your terminal is at DDT command level.  Type
     a CTRL/Z to return to TOPS-20 command level.


Examples

     The user debugs a MACRO program.  Refer to Section 2.2.5  of  the
     Monitor Calls Reference Manual.

        @LOAD (FROM) FILEIO.MAC      !Load the program into memory
        MACRO:  FILEIO
        LINK:   Loading

        EXIT
        @SAVE                        !Save it for reference
        FILEIO.EXE.1 SAVED
        @DDT                         !Start DDT
        DDT
        FILEIO$:                     !Open the symbol table
        OUTFIL$B   LOOP$B   DONE$B   !Set breakpoints at the
                                     !labels OUTFIL, LOOP, and DONE
        $$G                          !Start the program

        INPUT FILE: T.FIL            !Type the input file name
        $1B>>OUTFIL                  !Execution stops at the first
                                     !breakpoint you hit
        ./   HRROI 1,ZAP+12          !Examine this location, it
                                     !contains an instruction
        <TAB>                        !Press the TAB key to look at
                                     !the location ZAP+12
        ZAP+12/   64251,,752650      !It must contain text
        $$T                          !Tell DDT to print ASCII
                                     !characters
        ./                           !Check this location again
        OUT     <LF>                 !It contains a new line and OUT
                                     !Examine the next location
                                     !by pressing the LF key
        ZAP+13/   PUT F    <LF>      !And the following location
        ZAP+14/   ILE:
        OUTFIL/   \"R@               !Look at the contents of OUTFIL
        $$S                          !But change to symbolic
                                     !instruction printout
        ./   HRROI 1,ZAP+12          !And look again
        $P                           !Let the program continue
                                     !execution
        OUTPUT FILE: O.FIL           !Type the output file
DDT Program (continued)                                     Page II-66


        $2B>>LOOP                    !Execution stops at the next
                                     !breakpoint
        $X                           !Execute the instruction at the
                                     !current location - the system
           1/   5   INJFN/   5       !prints the results
        LOOP+1/   BIN   $X           !Execute this instruction
        LOOP+2/   JUMPE 2,DONE   =322100,,203
                                     !Print the contents
                                     !of this location in octal
                                     !numbers
        $X                           !Then execute the instruction
           2/   15   DONE
        LOOP+3/   MOVE 1,OUTJFN   $X
           1/   6   OUTJFN/   6
        LOOP+4/   BOUT
        $1B/   OUTFIL                !Find the location of the first
                                     !breakpoint
        $2B/   LOOP                  !And the location of the second
        0$2B                         !Remove the breakpoint at LOOP
        $P                           !And continue execution
        $3B>>DONE                    !Execution stops at the last
                                     !breakpoint
        JRST CLOSIF$X                !Execute this instruction and
                                     !continue

        [DONE}
        @

     The user places an  executable  program  in  memory,  changes  an
     instruction, then saves the altered program.

        @GET (PROGRAM) RTRANS
        @DDT
        DDT
        RTRANS$:   PUTTAB/   MOVE PT,PDLEN   MOVEM PT,PDLEN
        ^Z
        @SAVE
         RTRANS.EXE.2 SAVED
        @


     The  user  places  an  executable  program  in  memory,  sets   a
     breakpoint,   then  saves  the  program.   Whenever  the  program
     encounters the breakpoint, it will stop and wait for a $P.

        @GET (PROGRAM) RTRANS
        @DDT
        DDT
        RTRANS$:   COMDSP$B   ^Z
        @SAVE
         RTRANS.EXE.3 SAVED
        @
DEASSIGN Command                                            Page II-67


Function

     The DEASSIGN command returns a  device  you  previously  assigned
     back to the pool of available devices.


Hints

     When you are finished using a device,  you  should  DEASSIGN  the
     device so that it may be accessed by other users.

     Use  the  INFORMATION  (ABOUT)  AVAILABLE  DEVICES   command   to
     determine what devices are assigned to you.


Format

     @DEASSIGN (DEVICE) dev:

     dev:           is the device name of the device that you want  to
                    deassign,  followed  by a colon.  The standard I/O
                    devices and their device names are listed in Table
                    5-1  (the only names in this table that you cannot
                    deassign are structure names).  Use an asterisk to
                    dessign  all the devices you have assigned to your
                    job.


Operation

     1.  Type DEAS and press the ESC  key;   the  system  prints  SIGN
         (DEVICE).

         @DEASSIGN (DEVICE)

     2.  Type the name of the device that you want to deassign.

         @DEASSIGN (DEVICE) MTA2:

     3.  Press the RETURN key.  When the  device  is  deassigned,  the
         system prints an @ on your terminal.

         @DEASSIGN (DEVICE) MTA2:
         @


Errors

     1.  If you have not previously assigned the device to  your  job,
         the system prints the message:

         ?dev: NOT ASSIGNED TO YOU

         then cancels the command.
DEASSIGN Command (continued)                                Page II-68


Characteristics

     The DEASSIGN command does not change any program  in  memory  and
     leaves your terminal at TOPS-20 command level.


Restrictions

     You must type a device name in the DEASSIGN command;  if  you  do
     not give the device name, no default action is taken.


Examples

     The user deassigns magnetic tape unit number 3.

        @DEASSIGN (DEVICE) MTA3:
        @

     The user deassigns all the devices allocated to his job.

        @DEASSIGN (DEVICE) *
        @
DEBUG Command                                               Page II-69


Function

     The DEBUG command loads a program and  a  debugger  into  memory,
     then starts the debugger.


Special Cases

     If you give only DEBUG-command switches as arguments to  a  DEBUG
     command,  the  system  appends the arguments you gave in the last
     LOAD-class command that contained a file  specification  or  LINK
     switch,  then executes the command.  If there are no arguments to
     recall, the system prints the message ?No saved arguments.  Refer
     to  Section  8.3.4  which describes the manner in which arguments
     are recalled.

     The system will update the object file if it is  older  than  any
     one  of  the  corresponding  source  files.  Suppose you give the
     command:

     @DEBUG (FROM) NXTLAT.FOR

     If NXTLAT.REL does not exist, or if it is  older  than  the  most
     recent  NXTLAT.FOR  (i.e.,  it  has a write date before the write
     date of NXTLAT.FOR),  then  the  system  compiles  NSTLAT.FOR  to
     produce  an  up-to-date  NXTLAT.REL.  After producing NSTLAT.REL,
     the system loads it into memory.  Refer to  Section  8.3.3  which
     describes the manner in which object files are updated.


Format

     @DEBUG (FROM) sources object,sources object,...

     sources        is one or more source file specifications preceded
                    and/or  followed  by  switches.  You must separate
                    the source files with plus signs.   No  spaces  or
                    tabs  are allowed.  If you do not give a file type
                    in a file specification, the system  looks  for  a
                    source  file with one of the standard types listed
                    in Table 8-1.  If there is more than one file with
                    a standard file type, the system uses .FOR.  Refer
                    to Section 8.3.2 which describes  more  about  how
                    the  system selects a file when you do not specify
                    its file type.

     a space        separates the source file specifications from  the
                    object  file specification.  If you do not give an
                    object file specification, you must  not  leave  a
                    space.

     object         is an object file specification.  If  you  do  not
                    give an object file specification, the system uses
                    the name of the last  file  in  the  corresponding
                    sources and the type .REL.

     @name.typ      You can store any portion  of  the  command  in  a
                    file.   That  portion of the command is included -
                    just as  if  you  typed  it  on  your  terminal  -
                    whenever you type an @ followed by the name of the
                    file.  Refer to Section 8.3.5 that  describes  how
                    the system takes commands from an indirect file.
DEBUG Command (continued)                                   Page II-70


     switches       You can use recognition to help you type a  switch
                    and  any file specification that is an argument to
                    a switch.  If you place a switch before a  set  of
                    sources,  the  switch  applies  to all the files n
                    that set of sources;  if you place a switch  after
                    a  file  specification  in  a  set of sources, the
                    switch applies to  just  that  file.   Table  II-6
                    lists  the switches that are useful with the DEBUG
                    command.


                              Table II-6
                        DEBUG Command Switches


       /ALGOL
          Compiles the file using ALGOL, then loads and  starts  the
          DDT  debugging  program.   This is the default for sources
          with the extension .ALG.

       /BINARY
          Generates a binary (object) file for each source  program.
          Normally,  the  system  generates  object  files,  so this
          switch is useful in reversing a global /NOBINARY switch.

       /COBOL
          Compiles the program using COBOL, then  loads  and  starts
          the  COBDDT  debugging  program.   This is the default for
          sources with the extension .CBL.

       /COMPILE
          (or an object file older than any one of its source files)
          Compiles  the  source  program  regardless  of whether the
          object file is up-to-date or not.  The  /NOCOMPILE  switch
          causes compilation only if the object file is out-of-date.
          /RELOCATABLE switch causes the system to use  an  existing
          object file, regardless of its date.  Normally, the system
          assumes the action of the /NOCOMPILE switch.

       /CREF
          Creates a file containing cross-reference information  for
          each source file you compile.  The name of the file is the
          name of the last source file and the file  type  is  .CRF.
          Give  the CREF command to run the CREF program which reads
          this file and prints a listing.  If the object file is not
          out  of  date,  include  the /COMPILE switch in your DEBUG
          command.  When a source file contains a COBOL program, the
          system  produces  a  listing  file  (the file type is .LST
          instead   of   .CRF)   containing   the    cross-reference
          information;   give the PRINT command (instead of CREF) to
          print the .LST file.

       /DDT
          Loads the DDT debugger along with the program.

       /DEBUG
          Provides additional debugging information  in  the  object
          program (FORTRAN only).

       /FORTRAN
          Compiles the file using FORTRAN, then loads and starts the
          FORDDT debugging program.  This is the default for sources
          with the extension .FOR.
DEBUG Command (continued)                                   Page II-71


                          Table II-6 (Cont.)
                        DEBUG Command Switches


       /LIBRARY
          Loads only the routines from  the  object  file  that  are
          called  by  the  main  program or another subroutine.  The
          system libraries are always searched.

       /LIST
          Prints a listing of each program you compile.  The listing
          name  is  the  name  of  the last source file.  Unless you
          specify this switch, the system does not print  a  listing
          of  your program.  If you also include a /CREF switch, the
          system ignores the /LIST switch.

       /MACRO
          Assembles the file using MACRO, then loads and starts  the
          DDT  debugging  program.   This is the default for sources
          with the extension .MAC.

       /MAP:name.typ
          Produces loader maps during the loading process and stores
          them in the file name.typ.  If you do not give a file name
          and type, the system uses nnnLNK.MAP, where  nnn  is  your
          job  number.   The  /MAP  switch  applies  to  the  entire
          command, not to just one file.  You  may  use  recognition
          input in typing the file specification, the system creates
          a new generation of the recognized file.

       /NOBINARY
          Inhibits the generation of a binary (object)  file.   This
          switch  is  useful along with the /CREF or /LIST switch to
          produce listings without additionally producing an  object
          file.

       /NOCOMPILE
          Compiles a file only if  it  is  out-of-date.   Since  the
          system normally does this, the /NOCOMPILE switch is useful
          for turning off a global /COMPILE or /RELOCATABLE switch.

       /NODEBUG
          Omits  loading  debugging  information  with  the  program
          (FORTRAN only).

       /NOLIST
          Inhibits the generation of a listing file.  Normally,  the
          system does not generate a listing file.

       /NOOPTIMIZE
          Inhibits the generation of optimized object files (FORTRAN
          programs only).

       /NOSEARCH
          Loads all routines in a file, regardless  of  whether  the
          routines  are  called  by  another  module.   Normally the
          system loads all the routines in an object file, therefore
          this  switch  is  useful  in  reversing  a  global /SEARCH
          switch.
DEBUG Command (continued)                                   Page II-72


                          Table II-6 (Cont.)
                        DEBUG Command Switches


       /NOSYMBOLS
          Inhibits loading symbols with the program.  Normally,  the
          system loads symbols with all programs.

       /OPTIMIZE
          Produces optimized object files (FORTRAN programs only).

       /RELOCATABLE
          Uses the specified object files, even though they  may  be
          out-of-date  or  may have extensions other than .REL.  For
          example,  the  command  LOAD  FILE.FOR/REL   would   cause
          FILE.FOR  to be treated as a relocatable file and load it.
          It would normally be regarded as a FORTRAN source file.

       /SEARCH
          Is identical to the /LIBRARY switch.

       /SYMBOLS
          Loads the  program  with  its  appropriate  symbol  table.
          Normally, the system loads all programs with symbols.


Operation

     1.  Type DEBU and press the ESC key;  the system prints G (FROM).

         @DEBUG (FROM)

     2.  Type  (or  use   recognition   on)   the   sets   of   source
         specifications,  object  specifications  and switches.  Press
         the RETURN key.  The system loads the  file  and  starts  the
         debugger.

         @DEBUG (FROM) TEST.FOR
         FORTRAN: TEST
         LINK:   Loading
         [LNKDEB FORDDT EXECUTION]

         ENTERING FORDDT

         >>


Errors

     1.  If you give a command and one of the source files is missing,
         the  system  continues  processing the command and prints the
         message:

         %SOURCE FILE MISSING - name.typ

         where name.typ is the name and type of the source file.
DEBUG Command (continued)                                   Page II-73


Characteristics

     The DEBUG command minimally runs the appropriate  translator  and
     the  LINK  program,  thereby  clearing  any previous program from
     memory.  Your terminal is left at command level in your debugging
     program.


Examples

     The user debugs a simple MACRO program.

        @DEBUG (FROM) TRANSL.MAC
        MACRO:  TRANSL
        LINK:   Loading
        [LNKDEB DDT Execution]
        DDT

     The user combines three FORTRAN programs into  one  main  program
     and includes the entire subroutine package TYPE2.

        @DEBUG (FROM) 1+2+3,TYPE2
        FORTRAN: 1
        MAIN.
        FORTRAN: TYPE2
        TYPE2
        LINK:   Loading

        [LNKDEB FORDDT Execution]

        ENTERING FORDDT

        >>

     The user debugs his COBOL program.

        @DEBUG (FROM) COMPUT.CBL
        COBOL:  MAIN  [COMPUT.CBL]
        LINK:   Loading
        [LNKDEB COBDDT Execution]

        STARTING COBOL DDT

        *
DEFINE Command                                              Page II-74


Function

     The DEFINE command defines or removes logical name assignments.


Hints

     Refer to Section 5.12 for an explanation of logical names.

     To  print  a  list  of  your  current  logical  names  and  their
     definitions, give the command INFORMATION (ABOUT) LOGICAL-NAMES.


Format

     @DEFINE (LOGICAL NAME) logname: (AS) filespecs

     logname:       is  the  logical  name  comprised  of  up  to   39
                    alphanumeric  characters (including hyphen, dollar
                    sign and underline) followed by a colon.

     filespecs      is a list of  file  specifications  (separated  by
                    commas)  that  define  the  logical  name.  A file
                    specification may contain  any  combination  of  a
                    structure name, device name, directory, file name,
                    file type, generation number, and  wildcards.   If
                    you  are  removing  a  logical name, do not type a
                    list of file specifications.


Operation

     1.  Type DEFI and press  the  ESC  key;   the  system  prints  NE
         (LOGICAL NAME).

         @DEFINE (LOGICAL NAME)

     2.  Type the logical name  followed  by  a  colon.   If  you  are
         defining  the  logical name, press the ESC key and the system
         prints (AS).  If you are removing the logical name, press the
         RETURN key.

         @DEFINE (LOGICAL NAME) LIB: (AS)

     3.  Type (you may not use recognition) the file  specification(s)
         that define the logical name, then press the RETURN key.  The
         system prints an @.

         @DEFINE (LOGICAL NAME) LIB: (AS) <MILLER>,<BOSACK>
         @


Errors

     1.  If you try to remove a non-existent logical name, the  system
         prints the message:

         % Logical name xxx:  was not defined

         where xxx:  is the nonexistent name.
DEFINE Command (continued)                                  Page II-75


Characteristics

     The DEFINE command does not change  any  program  in  memory  and
     leaves your terminal at TOPS-20 command level.


Restrictions

     Some programs may use restricted logical names.  Refer to Section
     5.12.


Examples

     The user defines  the  logical  name  LIB:   as  the  directories
     <FORTRAN-LIBRARY> and <COBOL-LIBRARY>.

        @DEFINE (LOGICAL NAME) LIB: (AS) <FORTRAN-LIB>,<COBOL-LIB>
        @INFORMATION (ABOUT) LOGICAL-NAMES
        LIB => <FORTRAN-LIBRARY>,<COBOL-LIBRARY>
        @

     The user removes the logical name LIB:  which he defined  in  the
     previous example.

        @DEFINE (LOGICAL NAME) LIB:
        @INFORMATION (ABOUT) LOGICAL-NAMES
        @
DELETE Command                                              Page II-76


Function

     The  DELETE  command  identifies  a  disk  file(s)  for  eventual
     deletion.


Hints

     Once you delete a disk file, it is kept  on  disk  storage  until
     either  you  (or  the operator) give an EXPUNGE command, or until
     you log off the system.  If you want to see what files  you  have
     deleted,  but  not  expunged, give the DIRECTORY command with the
     DELETED SUBCOMMAND.

     Between the time when you give the DELETE command  and  the  time
     when  the  file  is  expunged,  you cannot access the file with a
     normal TOPS-20  command  or  program,  except  with  an  UNDELETE
     command,  a DIRECTORY command (and the DELETED subcommand), or an
     EXPUNGE command.

     If you want to restore a deleted file, give the UNDELETE command.


Format

     @DELETE (FILES) filespecs

     filespecs      is a single file specification or a string of file
                    specifications (separated by commas) that indicate
                    the files to be deleted.  A file specification has
                    the form:

                    dev:<dir>name.typ.gen

                    If you omit dev:  or <dir>, the system  uses  your
                    connected  structure  and/or  directory.  You must
                    give  a  file  name.    You   can   use   wildcard
                    characters.


Subcommand

     There are a few subcommands  to  the  DELETE  command,  the  most
     useful one is KEEP.

     @@KEEP n
        Deletes all but the n most recent generations of the specified
        files.   For  example,  if  you have TEST.FIL.1,2,3 and give a
        DELETE command with a  KEEP  2  subcommand,  the  system  will
        delete  TEST.FIL.1 leaving TEST.FIL.2,3.  This subcommand when
        used with the EXPUNGE command is useful when you want to  free
        up space in your directory when you are over quota.

Operation

        1.  Type DELE and press the ESC key;   the  system  prints  TE
            (FILES).

            @DELETE (FILES)

        2.  Type (or use recognition  on)  the  file  specification(s)
            (separated by commas) that you want to delete;  then press
            the RETURN key.  If you want to give a subcommand, do  not
            press the RETURN key;  proceed to step 3.
DELETE Command (continued)                                  Page II-77


            @DELETE (FILES) ADDTWO.REL.3
             ADDTWO.REL.3 [OK]
            @

        3.  To give a subcommand, type a comma, then press the  RETURN
            key.  The system prints @@.

            @DELETE (FILES) *.FIL,
            @@

        4.  Type the subcommand and  press  the  RETURN  key  once  to
            terminate  the  subcommand  and a second time to terminate
            the entire command.

            @DELETE (FILES) *.FIL,
            @@KEEP 1
            @@
             SORT.FIL.3 [OK]
             T.FIL.1 [OK]
             TAP.FIL.2 [OK]
            @


Output

     As the system starts to delete each  file,  it  prints  the  file
     specification  and leaves a space.  When the file is deleted, the
     system prints the success message [OK].


Characteristics

     The DELETE command does not change  any  program  in  memory  and
     leaves your terminal at TOPS-20 command level.


Examples

     The user deletes the file TEST.FIL.

        @DELETE (FILES) TEST.FIL
         TEST.FIL.2 [OK]
        @

     The user deletes all the files with the file type .QOR.

        @DELETE (FILES) *.QOR
         ADDEM.QOR.2 [OK]
         RESULT.QOR.1 [OK]
         TEST.QOR.1 [OK]
         ZEROS.QOR.5 [OK]
        @

     The user keeps two generations of every file in his directory.

        @DELETE (FILES) *.*,
        @@KEEP 2
        @@
         ADDTWO.REL.2 [OK]
         NUMBER.FOR.4 [OK]
         SQRT.ALG.1 [OK]
        @
DIRECTORY Command                                           Page II-78


Function

     The DIRECTORY command prints information about a file or group of
     files.


Hints

     Normally the DIRECTORY command prints the file  name,  type,  and
     generation number for each file specified in the command.

     1.  Order the files chronologically  by  the  date  of  creation,
         read, or write (CHRONOLOGICAL).

     2.  Print information about deleted files (DELETED).

     3.  Print all the information about a file (EVERYTHING).

     4.  Print the length (in bytes) of the files, and also  the  byte
         size (LENGTH).

     5.  Omit the heading (NO HEADING).

     6.  Write the directory listing in a file (OUTPUT) or to the line
         printer (LPT).

     7.  Print the protection codes of the files (PROTECTION).

     8.  Reverse the order in which the files are printed (REVERSE).

     9.  Print the size (in pages) of each file.

    10.  Print the times and dates of creation, read, or write.

     For convenience, there are three additional  commands  that  have
     exactly  the same command format and subcommands as the DIRECTORY
     command.  They are:

     FDIRECTORY (for Full DIRECTORY) automatically  prints  everything
         about  the  files,  without  any headings, and compresses the
         output.  It is the same as giving the DIRECTORY command  with
         the CRAM (output), EVERYTHING, and NO HEADING subcommands.  

     TDIRECTORY (for Time-ordered DIRECTORY) orders the files with the
         most  recent write dates first and prints the write times and
         dates.  It is the same as giving the DIRECTORY  command  with
         the  CHRONOLOGICAL  (BY)  WRITE,  REVERSE (SORTING) and TIMES
         (AND DATES OF) WRITE subcommands.  

     VDIRECTORY  (for  Verbose  DIRECTORY)  automatically  prints  the
         protection,  size,  length,  and write time and date for each
         file.  No headings are printed.  It is the same as giving the
         DIRECTORY  command  with  the  PROTECTION,  SIZE,  LENGTH (IN
         BYTES),  TIMES  (AND  DATES  OF)  WRITE,   and   NO   HEADING
         subcommands.

     By giving  the  proper  file  specification(s),  you  can  obtain
     information  about  a  single file, a group of files, or files in
     another directory.   The  directory  can  be  on  your  connected
     structure or on another online structure.

     If the directory is on  another  structure  and  the  "all  user"
     protection  code  does  not  allow  you to list the files in that
     directory, you must give the ACCESS or CONNECT command before the
DIRECTORY Command (continued)                               Page II-79


     DIRECTORY  command.   (Remember  that once a structure is mounted
     you will only have "all user" access privileges to directories on
     that  structure,  including your own user-name-directories, until
     you give an ACCESS or CONNECT command.)


Format

     @DIRECTORY (OF FILES) dev:<dir>name.typ.gen,dev:<dir>name.typ.gen,...

     dev:           is the name of the file  structure  that  contains
                    the  directory  and  files.   If you omit the file
                    structure  (dev:)  name,  the  system  uses   your
                    currently connected structure.

     <dir>          is the name of the directory  which  contains  the
                    files   about   which   you   are   obtaining  the
                    information.  If you omit the directory name,  the
                    system uses your connected directory.  You may use
                    the  wildcard  construction  in   specifying   the
                    directory name.

     name.typ.gen   is the file name, type, and generation  number  of
                    the  file.   If the type is omitted, all the files
                    with the given name are described.  If  the  name,
                    type,  and  generation  are  all  omitted, all the
                    files in the specified  directory  are  described.
                    You   may   use   the   wildcard  construction  in
                    specifying the name or type.

     Additional file specifications may be included by separating  the
     file specifications with commas.


Subcommands

     The subcommands  of  the  DIRECTORY  command  request  additional
     information,  modify  the  printing  format,  or change where the
     directory listing is sent.

     @@CHRONOLOGICAL (BY) date
         Lists the files in the order of ascending  dates  (i.e.,  the
         oldest date is first and the most recent date is last).

         date  may be CREATION, READ, or  WRITE.   CREATION  uses  the
               date  the  files  were  created, READ uses the date the
               files were last read, and WRITE uses the date the files
               were last changed.

     @@DELETED (FILES ONLY)
         Prints information only for deleted files that have  not  yet
         been expunged.

     @@EVERYTHING
         Prints all the information about the  files.   This  includes
         the  file  name,  type, generation number, protection number,
         account, size (in pages), length (in bytes), byte size,  file
         retention count, creation date and time, write date and time,
         read date and time, creator and most recent writer.

     @@HEADING
         Prints a heading that labels each file descriptor.
DIRECTORY Command (continued)                               Page II-80


     @@LENGTH (IN BYTES)
         Prints the length of the file (in bytes) and  the  associated
         byte size (in parentheses).

     @@LPT (IS OUTPUT DEVICE)
         Prints the directory listing on the line printer.

     @@NO HEADING
         Stops the printing of any headings.

     @@OUTPUT (TO FILE)
         Sends the output to a destination other than your terminal.

         dev:name.typ.gen is a single file  specification  that  tells
                          the  system  where  to  send  the  directory
                          information.  If you omit dev:,  the  system
                          uses DSK:.  If you omit the name, the system
                          uses DIR.  If you omit the type, the  system
                          uses DIR.

     @@PROTECTION
         Prints the protection number of the files.

     @@REVERSE (SORTING)
         Orders the files in reverse.  Thus, to obtain a list of  your
         files  from  the  most  recent  to  the least recent give the
         subcommands  @@CHRONOLOGICAL   (BY)   WRITE   and   @@REVERSE
         (SORTING).   Conversly,  this  can  also  be  done  with  the
         TDIRECTORY command.

     @@SIZE
         Prints the size of the files in pages;  a page  contains  512
         36-bit words.

     @@TIMES (AND DATES OF) date
         Prints the most recent CREATION, READ, or WRITE dates for the
         files.


Operation

     1.  Type DIR and press the ESC key;  the system prints ECTORY (OF
         FILES).

         @DIRECTORY (OF FILES)

     2.  Type the list of file specifications,  separated  by  commas.
         Press  the  RETURN  key  and  the system prints the directory
         information.  If you want to give one or more subcommands, do
         not press the RETURN key;  proceed to step 3.

         @DIRECTORY (OF FILES)

            <LUSE>
          EDIT.CTL.2
            .LAST.2
            .MAC.2
          SNOOP.HLP.1
          WATCH.MAC.1

          TOTAL OF 5 FILES
         @
DIRECTORY Command (continued)                               Page II-81


     3.  To give subcommands, type a comma, then press the RETURN key.
         The system prints @@.

         @DIRECTORY (OF FILES) *.MAC,
         @@


     4.  Type (or use recognition on) the  subcommands,  pressing  the
         RETURN key once again after you are finished.

         @DIRECTORY (OF FILES) *.MAC,
         @@TIMES (AND DATES OF) WRITE
         @@

            <LUSE>

                                   WRITE

          EDIT.MAC.2               16-JAN-76 03:06:36
          WATCH.MAC.1              15-JAN-76 01:16:14

          TOTAL OF 2 FILES
         @


Output

     The system lists the files  in  alphabetical  order,  unless  you
     change  this  action  by  giving  the  REVERSE  or  CHRONOLOGICAL
     subcommands.  If two files have the same file name, only the type
     and  generation  number  for each succeeding file after the first
     are printed.  The  period  before  the  type  is  indented  three
     spaces.   If  a  file  is  temporary,  a  ;T is printed after the
     generation number.


Characteristics

     The DIRECTORY command does not change any program in  memory  and
     leaves your terminal at TOPS-20 command level.


Examples

     The user obtains a list of all his files with the type .MAC.

        @DIRECTORY (OF FILES) *.MAC

           <LUSE>
         EDIT.MAC.2
         WATCH.MAC.1

         TOTAL OF 2 FILES
        @

     The user obtains a directory listing and stores it  in  the  file
     1-16.DIR.

        @DIRECTORY (OF FILES) ,
        @@OUTPUT (TO FILES) 1-16.DIR.1 !New file!
        @@
        @
DIRECTORY Command (continued)                               Page II-82


     The user obtains a list of his deleted (but not expunged) files.

        @DIRECTORY (OF FILES) ,
        @@DELETED (FILES ONLY)
        @@

           <MANUALS>
         020EDI.TEM.1
           .TMP.1
         CHANGE.XEC.2

         TOTAL OF 3 FILES
        @


     The user is connected to his  logged-in  directory  on  PS:   and
     obtains a list of his files on structure STU:.

        @DIRECTORY (OF FILES) STU:

           STU:<ESTEY>
        ADDEM.FOR.1
        COMP.FOR.1
           .REL.1

        TOTAL OF 3 FILES
        @
DUMPER Program                                              Page II-83


Function

     The DUMPER program transfers one or more files between  disk  and
     magnetic tape.


Hints

     Before starting DUMPER, set the  proper  magnetic  tape  defaults
     with the system command SET TAPE.

     Instead of giving a TAPE command to DUMPER each  time  you  start
     it,  you  can  assign  a  magnetic tape file specification to the
     logical name MTA-DUMPER using the TMOUNT command.

     Before restoring files, be sure to read the  description  of  the
     RESTORE command or, for simple cases, refer to the examples.

     The following cookbook examples are at the end of this section:

     Saving/restoring your entire directory (Examples 1, 13)
     Saving/restoring a single file (Examples 2, 14)
     Saving/restoring a group of files (Examples 3, 15)
     Saving/restoring files from another directory (Examples 4, 16)
     Saving/restoring files for a TOPS-10 system (Examples 5, 17)
     Saving/restoring changed files (Examples 6, 18)
     Saving/restoring accessed files (Examples 7, 19)
     Saving/restoring modified files (Examples 8, 20)
     Saving/restoring on a second reel of tape (Examples 9, 22)
     Checking the saved files (Example 10)
     Using DUMPER in a Batch job (Example 11)
     Keeping information about saved files (Example 12)
     Restoring files changed during a certain time period (Example 21)
     Restoring files from system backup tapes (Example 23)
     Examining a tape (Example 24)
     Stopping DUMPER (Example 25)
DUMPER Program (continued)                                  Page II-84


Format

     @DUMPER

     DUMPER 2(154)

     DUMPER> command arguments

     command        is  a  DUMPER   action-command,   tape-positioning
                    command, or status-command.  Table II-7 contains a
                    list of the DUMPER commands, grouped by function.

     arguments      is a file specification,  date,  density,  parity,
                    drive  number, number, or save-set name, depending
                    on the command.

                    dates          are  in  the  form  day-month-year.
                                   Type January 16, 1975 as 16-JAN-75.

                    times          are in 24-hour  format  (nn:mm:ss),
                                   or  in  AM,  PM form.  Thus 9:23 in
                                   the evening  is  either  21:23,  or
                                   9:23 PM.

                    filespecs
                    source
                    destination    are    files    in     the     form
                                   dev:<dir>name.typ.gen.  The * and %
                                   wildcard characters are permitted.

                    save-set name  is   a   string   of   alphanumeric
                                   characters which is used as a title
                                   for a save set.
DUMPER Program (continued)                                  Page II-85


                              Table II-7
                           DUMPER Commands

     ACTION-COMMANDS

          DUMPER action commands start, stop, interrupt or  continue
          a file transfer or file check.

       CHECK (ALL MTA FILES)
          Checks the files in the current save set to make sure that
          they  agree  with  the files on disk.  The system prints a
          message if the files do not agree;  refer to items 1 and 2
          in  the  error section.  Be sure to rewind the tape to the
          beginning of the save set before giving the CHECK command.

       CONTINUE
          Continues  a  CHECK,  RESTORE,  SAVE  or  tape-positioning
          command  after you have typed a CTRL/E to halt it.  If you
          have prevented DUMPER from continuing, the  system  prints
          ?CANNOT CONTINUE on your terminal.

       CTRL/E
          Halts  the  action  of  a   CHECK,   RESTORE,   SAVE,   or
          tape-positioning  command.   When the system processes the
          CTRL/E, it prints a message, suspends the action, and then
          prints the DUMPER prompt.

          INTERRUPTING...

          DUMPER>

          After typing CTRL/E, you may give a CONTINUE, DIRECTORIES,
          EXIT,  FILES,  HELP,  or SILENCE command.  If you give any
          other command, DUMPER loses the information  necessary  to
          continue   the  action  you  halted.   If  DUMPER  is  not
          performing an action command, typing a CTRL/E returns  you
          to TOPS-20 command level.

       EXIT
          Exits immediately to TOPS-20 command level.

       HELP
          Prints a  list  of  the  valid  DUMPER  commands  on  your
          terminal.

       PRINT (DIRECTORY OF TAPE ONTO FILE) destination
          Prints a directory of the entire  tape  in  the  specified
          file.  The destination file specification defaults to TTY:
          (your terminal).

       RESTORE (MTA FILES) source (TO) destination
          Searches the current save set  and  copies  the  specified
          magnetic  tape  source  file(s) to disk and gives them the
          specified destination file specification(s).  After giving
          a  RESTORE  command,  the tape is positioned at the end of
          the save set.   You  may  specify  additional  source  and
          destination  file  specifications  by separating each pair
          with a comma.
DUMPER Program (continued)                                  Page II-86


                          Table II-7 (Cont.)
                           DUMPER Commands


     source         is a file specification  identifying  the  files
                    you  want copied from the tape.  You may use the
                    * and % wildcard characters to specify  a  group
                    of  files.  The system restores all the files in
                    the save set if you omit the source file.

                    Defaults:   dev:   * (the source device)
                                <dir>  * (the source directory)
                                name   * (all file names)
                                type   * (all file types)
                                gen    * (the source generation)

     destination    is a file specification  identifying  where  you
                    want  the files copied.  You may use the * and %
                    wildcard characters to  refer  to  corresponding
                    fields in the source file specification.  If you
                    omit the  destination  file  specification,  the
                    system uses the corresponding source file.

                    Defaults:   dev:   * (the source device)
                                <dir>  * (the source directory)
                                name   * (the source file name)
                                type   * (the source file type)
                                gen    * (the source generation)

     Operation

          After you give the RESTORE command, DUMPER prints a header
          on  your  terminal  and then starts searching the tape for
          files to restore.

          DUMPER TAPE # 1, save-set name, date

          Once DUMPER starts restoring files to disk, it prints  the
          following message on your terminal:

          LOADING FILES INTO <directory>

          where directory specifies where the files are copied.   If
          this  message  is  NOT  printed,  DUMPER has not found any
          source files you specified and no files have been restored
          to  a  directory.   Also, if you try to restore files to a
          directory in which you are not allowed  to  create  files,
          DUMPER  will  not  print this message or attempt restoring
          the files.

          Give the FILES command if you want  DUMPER  to  print  the
          file specification of each file as it is restored.

          DUMPER prints the following message if  the  save  set  is
          continued on another reel of tape:

          END OF TAPE, MOUNT NEXT REEL
          %FILE filespec CONTINUED ON NEXT REEL
          TAPE (FILESPEC)

          DUMPER rewinds the current tape.  Use the  TMOUNT  command
          to  request  a new tape, or mount the tape yourself.  When
          the new tape is mounted,  type  the  drive  name  and  the
          restore will continue.
DUMPER Program (continued)                                  Page II-87


                          Table II-7 (Cont.)
                           DUMPER Commands


                          CTRL/C
                          !
          TAPE (FILESPEC)
          @TMOUNT (TAPE) NEXT: (VOLID) BLUE
          [OPERATOR NOTIFIED]
          [MTA0: ASSIGNED]
          @CONTINUE (PROGRAM)
          CTRL/R
          !
          TAPE (FILESPEC) MTA0:

          DUMPER TAPE # 2,  , date

          DUMPER prints the following message when  it  reaches  the
          end of the current save set:

          END OF SAVESET

       Restoring Files Saved From Another Directory
          You must specifically specify the source  and  destination
          directory  names to restore files saved from one directory
          to another.  Refer  to  Example  16.   For  instance,  the
          following  command  restores  all the files saved from the
          directory <MANUALS> to  the  user's  connected  directory,
          <WILEY>:

          DUMPER>RESTORE (MTA FILES) <MANUALS>*.*.* (TO) <WILEY>

       Superseding Existing Files And Selecting Generation Numbers
          Once DUMPER has found a tape file to restore to  disk,  it
          examines the directory to see if a file with the same file
          name and file type already exists.  If such  a  file  does
          not  exist,  DUMPER  immediately copies the tape file to a
          disk.

          If a disk file exists with the same  file  name  and  file
          type  as the tape file, DUMPER restores the file according
          to the value of the SUPERSEDE parameter.

             SUPERSEDE OLDER
                           is the default.  DUMPER restores the tape
                           file  only  if  it was created or written
                           more recently than the disk file.  If the
                           generation  number  of  the  tape file is
                           ALSO less  then  the  disk  file,  DUMPER
                           deletes  the  disk  file  and  prints the
                           message:


                           %FILE filespec DELETED WHILE SUPERSEDING

                           Note:  you can avoid trying to restore  a
                           more  recent file with a lower generation
                           number by  using  -1  as  the  generation
                           number    in    the    destination   file
                           specification.
DUMPER Program (continued)                                  Page II-88


                          Table II-7 (Cont.)
                           DUMPER Commands


             SUPERSEDE ALWAYS
                           DUMPER  restores   the   file   to   disk
                           (regardless  of  its age) using a default
                           generation number one  greater  than  the
                           existing file.

             SUPERSEDE NEVER
                           DUMPER does not restore the file.

          Restoring Changed And Accessed Files
             Refer to the description of the BEFORE, SINCE, ABEFORE,
             ASINCE,  MBEFORE,  and  MSINCE commands described under
             SAVE.


       SAVE (DISK FILES) source (AS) dest, source (AS) dest
          Creates  a  save  set  containing  all  the  source  files
          specified in the SAVE command.  The source files are saved
          using the destination file specification.  You may use the
          *  and  %  wildcard characters to specify groups of files.
          You may specify additional  source  and  destination  file
          specifications by separating each pair with a comma.

          source         is a  file  specification  identifying  the
                         files  you  want  to save.  If you omit the
                         source  file  specification  entirely,  the
                         system   saves   all   the  files  in  your
                         connected directory.

                         Defaults:  dev:   * (the source device)
                                    <dir>  * (the source directory)
                                    name   * (all file names)
                                    type   * (all file types)
                                    gen    * (the source generation)

          destination    is the file specification that is  assigned
                         to  the tape file.  The file is saved using
                         its current file specification  if  you  do
                         not give a destination file specification.

                         Defaults:  dev:   * (the source device)
                                    <dir>  * (the source directory)
                                    name   * (the source file name)
                                    type   * (the source file type)
                                    gen    * (all generations)

          Operation

             When you give the SAVE command, DUMPER prints a  header
             on your terminal and then starts the save set.


             DUMPER TAPE # 1, save-set name, date

             DUMPER prints the name of each file  you  save  if  you
             give  the  FILES  command  before  you  give  the  SAVE
             command.  Give the LIST command  before  you  give  the
             SAVE command if you want a list of the files you save.
DUMPER Program (continued)                                  Page II-89


                          Table II-7 (Cont.)
                           DUMPER Commands


             DUMPER  rewinds  the  current  tape  and   prints   the
             following  message  when the save set must be continued
             on a second reel of tape:

             END OF TAPE, CONTINUE SAVE ON
             TAPE (FILESPEC)

             Type a CTRL/C and give the TMOUNT command, or mount the
             reel  yourself.   Then  type  CONTINUE (if you gave the
             TMOUNT command), and type the drive name.

             END OF TAPE, CONTINUE SAVE ON
                             CTRL/C
                             !
             TAPE (FILESPEC)
             @TMOUNT (TAPE) SECOND: (VOLID) GREEN
             [Operator notified]
             [MTA0: assigned]
             @CONTINUE (PROGRAM)
             CTRL/R
             !
             TAPE (FILESPEC) MTA0:

             DUMPER TAPE # 2, , date

             When the save is  finished,  DUMPER  prints  the  total
             number   of   files  saved  and  the  number  of  pages
             comprising those files.

             TOTAL FILES DUMPED = 253
             TOTAL PAGES DUMPED = 1751
             @

          Saving Changed And Accessed Files
             You may find it useful to save only  those  files  that
             have  been  changed or read.  DUMPER has commands which
             select those files.   To  save  files  that  have  been
             changed  or  read  within  a  certain  period  use both
             ABEFORE and ASINCE commands.

             SINCE and BEFORE      Specify files whose contents have
                                   changed  (i.e., whose write dates
                                   are)   after   or   before    the
                                   specified date.

             ASINCE and ABEFORE    Specify files that have been read
                                   or  changed  after  or before the
                                   specified date and time.


             MSINCE and MBEFORE    Specify  files  which  have  been
                                   modified   after  or  before  the
                                   specified date  and  time.   This
                                   includes  files  created with the
                                   RENAME and COPY commands.  SINCE,
                                   BEFORE, ASINCE and ABEFORE do not
                                   include these files.
DUMPER Program (continued)                                  Page II-90


                          Table II-7 (Cont.)
                           DUMPER Commands


     TAPE-POSITIONING COMMANDS

          DUMPER tape-positioning commands control the tape you have
          specified  with  the last TAPE command or, if you have not
          given a TAPE command, the tape  assigned  to  the  logical
          name  MTA-DUMPER.   You  should  have previously allocated
          these drives to your job with the TOPS-20 ASSIGN command.

       EOT
          Skips to the end of the last save  set  on  the  tape  and
          prints  the message:  TAPE POSITIONED AT EOT.  If any save
          sets are encountered, the system prints the save set names
          and the time and date that the save set was written.

       REWIND
          Rewinds the tape to the beginning of the tape (BOT).

       SKIP (NUMBER OF SAVESETS) n
          Skips the tape over n save sets.

       SKIP (NUMBER OF SAVESETS) 0
          Backspaces the tape to the beginning of the  current  save
          set.

       SKIP (NUMBER OF SAVESETS) -n
          Backspaces the tape over n save sets.


     STATUS-COMMANDS

          DUMPER status-commands set  parameters  which  affect  the
          operation  of  the CHECK, RESTORE and SAVE commands.  Once
          you set a parameter, it stays in effect until  you  change
          it or restart DUMPER.  If you want to select only specific
          files, use the ABEFORE, ASINCE, BEFORE,  MBEFORE,  MSINCE,
          and  SINCE  commands.   If  you set multiple conditions, a
          file must satisfy  all  the  conditions  in  order  to  be
          transferred.

       ABEFORE (DATE AND TIME) date time
          Includes only those files which were accessed (written  or
          read)  before  the  given  date and time.  This command is
          useful in transferring files that were actually used,  but
          not necessarily changed.


       [NO] CHECKSUM (FILES) type
          Prints a checksum for each file  when  you  give  a  PRINT
          command and includes the checksum in the log file when you
          give a SAVE command.  When the checksum of the  disk  file
          disagrees  with  the  checksum of the tape file, there has
          been an error in the file  transfer.   DUMPER  computes  a
          checksum  for  the  entire  file  when  you  use  the type
          SEQUENTIAL;  DUMPER computes a checksum for each  page  of
          the  file  when  the  type  is  BY-PAGES.   The SEQUENTIAL
          checksum is the easiest to use.
DUMPER Program (continued)                                  Page II-91


                          Table II-7 (Cont.)
                           DUMPER Commands


       ACCOUNT (OF RESTORED FILES FROM) location
          Specifies that any file being restored  will  have  either
          the  SYSTEM-DEFAULT account (usually your current account)
          or the account that was stored  with  the  file  on  TAPE.
          Normally, the system uses the system default.

       ASINCE (DATE AND TIME) date time
          Includes only those files which were accessed (written  or
          read)  since  the  given  date  and time.  This command is
          useful in transferring files that were actually used,  but
          not necessarily changed.

       BEFORE (DATE AND TIME) date time
          Includes only those  files  which  were  created  or  last
          written  (i.e.,  whose  contents  were changed) before the
          given  date  and  time.   This  command   is   useful   in
          transferring only those files that have changed.

       [NO] CHECKSUM (FILES) type
          Prints a checksum for each file  when  you  give  a  PRINT
          command and includes the checksum in the log file when you
          give a SAVE command.  When the checksum of the  disk  file
          disagrees  with  the  checksum of the tape file, there has
          been an error in the file  transfer.   DUMPER  computes  a
          checksum  for  the  entire  file  when  you  use  the type
          SEQUENTIAL;  DUMPER computes a checksum for each  page  of
          the  file  when  the  type  is  BY-PAGES.   The SEQUENTIAL
          checksum is the easiest to use.

       DENSITY (OF MAGTAPE) n
          Sets the tape density to the given number of bits per inch
          (BPI).   The  density  must  be  200,  556,  800, 1600, or
          JOB-DEFAULT (set by the system command SET TAPE  DENSITY).
          If  you  do  not give the DENSITY command, DUMPER uses the
          density listed in the TOPS-20 command INFORMATION  (ABOUT)
          TAPE-PARAMETERS.

       [NO] DIRECTORIES
          Starts (or  stops,  if  you  type  NO)  printing  on  your
          terminal  each directory name as the directory is saved or
          restored.  Normally,  the  system  prints  each  directory
          name.

       [NO] FILES
          Starts (or  stops,  if  you  type  NO)  printing  on  your
          terminal  each  file specification as the file is saved or
          restored.  Normally, the system does not print  each  file
          specification.

       FORMAT (VERSION NUMBER IS) n
          Allows the system to read and write DUMPER tapes that were
          written  with other (unsupported) versions of DUMPER.  The
          default format is 2;  BBN-TENEX users should use 0 to read
          and write tapes created by BBN-DUMPER.

       [NO] INITIAL (FILESPEC) filespec
          Starts (or stops, if you  type  NO)  saving  at  the  file
          identified  by  filespec.   This  is useful for continuing
          interrupted save sets.
DUMPER Program (continued)                                  Page II-92


                          Table II-7 (Cont.)
                           DUMPER Commands


       [NO] INTERCHANGE (FORMAT)
          Starts (or stops, if you type NO) using  the  DECsystem-10
          (TOPS10  BACKUP) interchange format in reading and writing
          tapes.  Otherwise, DUMPER uses its own format.

       [NO] LIST (LOG INFORMATION ON FILE) filespec
          Makes  a  list  of  the  files  transferred  in  the  file
          identified by filespec.  The default file specification is
          LPT:DUMPER.LOG.  If an existing file is specified,  it  is
          appended to rather than rewritten.

       MBEFORE (DATE AND TIME) date time
          Include only those files modified (i.e., written, created,
          appended,  or  renamed) before the specified internal date
          and time.

       MSINCE (DATE AND TIME) date time
          Includes  only  those  files  modified   (i.e.,   written,
          created,   appended,   or  renamed)  since  the  specified
          internal date and time.

       PARITY (OF MAGNETIC TAPE) type
          Sets the parity of the current magnetic tape  to  EVEN  or
          ODD.   DUMPER  normally  uses  the  parity  listed  in the
          TOPS-20 command INFORMATION (ABOUT) TAPES.

       PROTECTION (OF RESTORED FILES FROM) location
          Takes the  protection  of  the  restored  files  from  the
          SYSTEM-DEFAULT (usually 777700) or from the TAPE.

       SET TAPE-NUMBER (DECIMAL NUMBER) n
          Sets the reel number used in  the  next  SAVE  or  RESTORE
          command.   This is useful when you are saving or restoring
          files on mulitple reels of tape and do not want to process
          the reels in order.

       [NO] SILENCE
          Stops (or starts, if you type NO) printing directory names
          and   file  specifications  as  the  files  are  saved  or
          restored.  NO SILENCE is  equivalent  to  giving  a  FILES
          command followed by a DIRECTORIES command.

       SINCE (DATE AND TIME) date time
          Includes only  those  files  that  were  created  or  last
          written  (i.e.,  whose  contents  were  changed) since the
          specified date  and  time.   This  command  is  useful  in
          transferring only those files that have changed.

       SSNAME save-set name
          Identifies a save set name.  This save set name is printed
          on your terminal whenever you save or restore files.
DUMPER Program (continued)                                  Page II-93


                          Table II-7 (Cont.)
                           DUMPER Commands


       SUPERSEDE condition
          Sets the condition under which  DUMPER  will  supersede  a
          disk  file with a magnetic tape file of the same file name
          and type.  Use ALWAYS when you always  want  to  supersede
          the disk file with the tape file.

          Use NEVER when you never want to supersede the disk  file;
          in  this  case,  a  file  is transferred from tape only if
          there is no disk file in the directory with the same  file
          name and type.

          Use OLDER when you want the tape file  to  supersede  only
          disk  files  with older write dates;  in this case, a tape
          file is transferred to disk file.  If you do  not  give  a
          SUPERSEDE command, the system uses SUPERSEDE OLDER.  Refer
          to the RESTORE command.

       TAPE (FILESPEC) MTAn:
          Uses the specified tape for the file  transfers.   If  the
          drive is not available to your job, the system prints:

          ?INVALID FILESPEC, DEVICE IS NOT AVAILABLE TO THIS JOB

          Wait until you can assign a magnetic  tape  to  your  job.
          You  do  not  have  to give a TAPE command if you assign a
          magnetic tape device name to the logical name MTA-DUMPER.


Operation

     1.  Type DUMPER and press the  RETURN  key;   the  system  prints
         DUMPER,  the  version of this installation of DUMPER, and the
         prompt DUMPER>.

         @DUMPER

         DUMPER 2(154)

         DUMPER>

     2.  Give the DUMPER commands you want.  (You  must  give  a  TAPE
         command  or assign a magnetic tape device name to the logical
         name MTA-DUMPER before giving an action  command.)  When  you
         are finished, give the EXIT command.

         DUMPER>TAPE (FILESPEC) MTA1:
         DUMPER>REWIND
         DUMPER>SSNAME TEST1
         DUMPER>SAVE

         DUMPER TAPE # 1, TEST1, WEDNESDAY, 27-DEC-75 0958

         TOTAL FILES DUMPED = 5
         TOTAL PAGES DUMPED = 95
         DUMPER>EXIT
         @


     If you want the names of the individual files printed,  give  the
     FILES command before the SAVE command.
DUMPER Program (continued)                                  Page II-94


Errors

     1.  If a file on magnetic tape does not  agree  with  a  file  on
         disk,  the system prints the following message after you give
         a CHECK command:

         %COMPARE ERROR, PAGE n, FILE filespec

         where n is the page in the disk file, and filespec  specifies
         the  file  in  which  the  error occurs.  This means that the
         actual data differs between the file on disk and the file  on
         tape.   Try transferring the file again, but beware that this
         error is often caused by a  program  that  updated  the  file
         after  you saved it on tape.  An actual example of this error
         is:

         %COMPARE ERROR, PAGE 8, FILE DUMPER.EX3.1

     2.  The system may also print the following line:

         %DIFFERENCES IN location OF FILE filespec

         The location describes the entry in the file descriptor block
         (refer  to the Monitor Calls Manual) that differs between the
         two files.  (Each file has  a  file  descriptor  block  which
         contains  information describing the history and structure of
         the file.) The common  locations  and  the  differences  they
         describe are listed in Table II-8.  After receiving a message
         of this type, try transferring the file again.  If the  error
         still occurs, contact the operator or system manager.


                              Table II-8
                 File Descriptor Block (FDB) Entries

           A difference
           in location:  Means the files do not have the same:

           .FBCTL        -Temporary, permanent, not-to-be-saved-by
                          DUMPER, or file-class status.
           .FBCRE        -Dates and times they were last written.
           .FBUSE        -Directory numbers of the last
                          writer, or directory number of author
           .FBBYV        -Number of generations to retain,
                          byte size, mode of the last write, or the
                          number of pages.
           .FBSIZ        -Pointer to the byte beyond the
                          end-of-file.
           .FBCRV        -Creation date or time.
           .FBWRT        -Date or time they were last written
                          (modifiable by the user).
           .FBREF        -Date or time they were accessed by a
                          non-write operation.
           .FBCNT        -Count of writes or references.
           .FBBKO        -Contents of the DUMPER data area.
           .FBUSW        -Contents of the user-settable
                          data area.

         Examples of these errors are:

         %DIFFERENCE IN .FBREF OF FILE <MCKIE>ESQRT.ALG.14
         %DIFFERENCE IN .FBCNT OF FILE <MCKIE>DEFER.FOR.14
         %DIFFERENCE IN .FBREF OF FILE <MCKIE>LOGIN.CMD.2
DUMPER Program (continued)                                  Page II-95


     3.  When you are saving files on the tape, there may be bad spots
         that do not record properly.  If the system finds an error in
         the record that was  just  written,  it  writes  a  duplicate
         record  immediately following the erroneous record and prints
         the message:

         %WRITE ERROR ON TAPE, RECORD n, WRITING DUPLICATE RECORD.

         If there  are  many  errors,  try  moving  the  tape  to  the
         beginning  of  the  save  set and saving the files again.  If
         there are less errors, most likely your  tape  is  dirty  and
         repeated saving will clean the tape and reduce errors.

         When you restore the files from that tape,  the  system  will
         read  the bad record first.  Since normal reading operates at
         higher sensitivity than write-checking,  the  system  may  be
         able  to read a record that was previously thought to be bad.
         If this occurs,  the  system  takes  the  second  record  and
         ignores the duplicate record, while printing the message:

         %DUPLICATE RECORD ENCOUNTERED, RECORD 13, IGNORED.

         If there is an error  in  the  original  record,  the  system
         prints  either  ?MTA  DATA  ERROR,  ?MTA  UNKNOWN ERROR, ?MTA
         CHECKSUM ERROR, or another message of that type,  then  reads
         the  next  record.   If the next record is a duplicate record
         (two records are duplicate if their sequence numbers are  the
         same), the system reads that record.  If the duplicate record
         is correct, the system prints the message, RECOVERED.  If the
         error  is  not recovered, the transfer continues after DUMPER
         prints a message indicating the location of the bad record.

         Due to differences in inter-record gaps between tape  drives,
         the  same  bad spot does not necessarily have to occur at the
         same record number if the tape is being written by  different
         drives.

     4.  Each record on  the  tape  has  a  sequence  number  somewhat
         similar  to  an  EDIT  line  number.  When the system reads a
         record, it makes sure that the sequence number is one greater
         than  the last record.  If the sequence number is the same as
         the last record, it  prints  the  message  %DUPLICATE  RECORD
         ENCOUNTERED,  RECORD  n,  IGNORED.   If the difference is not
         one, the  system  reads  the  record,  prints  the  following
         message,  resets  the  internal  sequence  counter to the new
         number and continues with  the  current  operation.   If  the
         sequence  number  is  irregular,  you  may  receive  a second
         message when the numbers regain their previous value.

         ?SEQUENCE ERROR, RECORD 15, CONTINUING.

     5.  If you try to use a magnetic tape and have not given  a  tape
         command,  the  system  postpones the command and tries to use
         the logical name MTA-DUMPER.  If that  logical  name  has  no
         magnetic tape definition, the system prints:

         Tape specification needed,
         TAPE (FILESPEC)

         Type the name of the magnetic tape drive you are using,  then
         press the RETURN key.  If you have to run the PLEASE program,
         refer to the SAVE command.
DUMPER Program (continued)                                  Page II-96


     6.  Each DUMPER tape normally starts with a tape header.  If  the
         system  encounters  a tape without a tape header, it tries to
         perform the specified operation and prints the message:

         %TAPE DOESN'T START WITH HEADER, CONTINUING...

         You probably  forgot  to  rewind  the  tape  before  doing  a
         RESTORE.

     7.  If the tape drive you are using is not  on-line,  the  system
         prints the following message if you try to access it:

         ?FAILED TO OPEN MTA
         ?Device is not on-line
         TRY AGAIN?

         Type Y or N (for yes or no) if you want to try again or  not.
         Contact the operator if you have any questions.

     8.  If you try any command that reads the tape and if the  system
         prints the message:

         ?DRIVE PROBABLY OFF-LINE, TYPE CR TO TRY AGAIN.

         Check with the operator to make sure that he has  placed  the
         drive  on-line.   If  he  has, you are probably attempting to
         read the tape at the wrong density.  Type a  CTRL/C,  restart
         DUMPER,  then  set the proper density.  You can try different
         densities (try 1600, 800, 556, then 200) if you cannot recall
         the correct density to set.

     9.  If you are accessing a file and the file  is  not  available,
         the system prints one of a variety of messages explaining why
         you may not use the  file.   Make  sure  that  you  have  not
         deleted  the file, or that you are not over your working disk
         storage limit.

         ?CANNOT GET JFN FOR FILE <MCKIE>DUMPER.TXT.13;P777752;A10300 BECAUSE:
           No such generation number

         ?CANNOT OPEN FILE <MCKIE>TRANSL.CMD.10;P777752;A10300 BECAUSE:
           Disk quota exceeded


Output

     Whenever you give a FILES command before a SAVE  command,  DUMPER
     normally prints (as it processes the SAVE command):

       -A heading,

     For each directory:
       -The directory name followed by the directory number (for
        internal system accounting)
       -A line for each file containing the file specification, date
        and time the file was last written, and the size in pages.
       -The total number of files and pages dumped from the directory.

     For the entire SAVE command:
       -The total number of files and pages dumped.

     Refer to the LIST command which controls log file output.
DUMPER Program (continued)                                  Page II-97


Characteristics

     Running the DUMPER program clears any  program  from  memory  and
     leaves  your  terminal  at DUMPER command level.  Give the DUMPER
     command EXIT to return to TOPS-20 command level.


Examples

     The examples are  divided  into  three  parts.   The  first  part
     describes  various  ways  you may save files on tape;  the second
     part shows how to restore files from tape to disk;  and the third
     part  shows  how  to  use  some  special  DUMPER  commands.  Some
     examples in the first two parts are  keyed  to  each  other - for
     instance (A) to saving and restoring an entire directory.

                             SAVING FILES

1.   SAVING YOUR ENTIRE DIRECTORY (A)

     To save your entire directory on tape, start  DUMPER,  assign  or
     request a magnetic tape, and give the SAVE command.

     @DUMPER

     DUMPER 2(154)

     DUMPER>TAPE (FILESPEC) MTA1:
     DUMPER>REWIND
     DUMPER>SSNAME FULL SAVE
     DUMPER>SAVE (DISK FILES)

     DUMPER TAPE # 1, FULL SAVE, WEDNESDAY, 4-AUG-76 1957
     PS:<PORADA>

     TOTAL FILES DUMPED = 61
     TOTAL PAGES DUMPED = 162
     DUMPER>EXIT
     @

2.   SAVING A SINGLE FILE (B)

     To save a single file, type the name of the file after  the  SAVE
     command.

     @DUMPER

     DUMPER 2(154)

     DUMPER>TAPE (FILESPEC) MTA1:
     DUMPER>REWIND
     DUMPER>FILES
     DUMPER>SSNAME SINGLE FILE
     DUMPER>SAVE (DISK FILES) TMOUNT.TXT

     DUMPER TAPE # 1, SINGLE FILE, WEDNESDAY, 4-AUG-76 1955
     PS:<PORADA>
     TMOUNT.TXT.1 (AS) TMOUNT.TXT.1  [OK]

     TOTAL FILES DUMPED = 1
     TOTAL PAGES DUMPED = 1
     DUMPER>EXIT
     @
DUMPER Program (continued)                                  Page II-98


3.   SAVING A GROUP OF FILES (C)

     To save a group of files, use the wildcard characters % and *  in
     the file specification after the SAVE command.

     @DUMPER

     DUMPER 2(154)

     DUMPER>TAPE (FILESPEC) MTA1:
     DUMPER>REWIND
     DUMPER>FILES
     DUMPER>SSNAME ALL .FOR FILES
     DUMPER>SAVE (DISK FILES) *.FOR

     DUMPER TAPE # 1, ALL .FOR FILES, WEDNESDAY, 4-AUG-76 1955
     PS:<PORADA>
     DPEX2.FOR.3 (AS) DPEX2.FOR.3    [OK]
     DPEX3.FOR.3 (AS) DPEX3.FOR.3    [OK]
     DPEX4.FOR.2 (AS) DPEX4.FOR.2    [OK]
     DPEXP.FOR.5 (AS) DPEXP.FOR.5    [OK]
     FUN.FOR.2 (AS) FUN.FOR.2        [OK]
     HI.FOR.2 (AS) HI.FOR.2          [OK]
     MAIN.FOR.2 (AS) MAIN.FOR.2      [OK]
     SIND2.FOR.2 (AS) SIND2.FOR.2    [OK]
     SIND3.FOR.2 (AS) SIND3.FOR.2    [OK]
     SPEX2.FOR.2 (AS) SPEX2.FOR.2    [OK]
     SPEX3.FOR.2 (AS) SPEX3.FOR.2    [OK]
     SPEX4.FOR.2 (AS) SPEX4.FOR.2    [OK]
     SPEXP.FOR.3 (AS) SPEXP.FOR.3    [OK]
     TRIG.FOR.2 (AS) TRIG.FOR.2      [OK]
     WONDER.FOR.2 (AS) WONDER.FOR.2  [OK]

     TOTAL FILES DUMPED = 15
     TOTAL PAGES DUMPED = 15
     DUMPER>EXIT
     @
DUMPER Program (continued)                                  Page II-99


4.   SAVING FILES LOCATED IN ANOTHER DIRECTORY (D)

     To  save  files  located  in  another  directory,   include   the
     <directory>  or dev:<directory> name in the file specification in
     the SAVE command.

     @DUMPER

     DUMPER 2(154)

     DUMPER>TAPE (FILESPEC) MTA1:
     DUMPER>REWIND
     DUMPER>FILES
     DUMPER>SSNAME MANUAL FILES
     DUMPER>SAVE (DISK FILES) <MANUALS>*.FOR

     DUMPER TAPE # 1, MANUAL FILES, WEDNESDAY, 4-AUG-76 1955
     PS:<MANUALS>
     ADDEM.FOR.1 (AS) ADDEM.FOR.1    [OK]
     ADDTWO.FOR.1 (AS) ADDTWO.FOR.1  [OK]
     COMP.FOR.1 (AS) COMP.FOR.1      [OK]
     CUBIT.FOR.1 (AS) CUBIT.FOR.1    [OK]
     DIFFER.FOR.1 (AS) DIFFER.FOR.1  [OK]
     MORPAY.FOR.1 (AS) MORPAY.FOR.1  [OK]
     SMALL.FOR.1 (AS) SMALL.FOR.1    [OK}
     SUB1.FOR.1 (AS) SUB1.FOR.1      [OK]
     SUM.FOR.1 (AS) SUM.FOR.1        [OK]
     TRYIT.FOR.1 (AS) TRYIT.FOR.1    [OK]

     TOTAL FILES DUMPED = 11
     TOTAL PAGES DUMPED = 20
     DUMPER>EXIT
     @

5.   SAVING A FILE TO BE RESTORED TO A TOPS-10 SYSTEM (E)

     To save a file so that it can  be  restored  to  a  TOPS-10  file
     system  using  the  TOPS-10  BACKUP program, give the INTERCHANGE
     command before you give the SAVE command.

     @DUMPER

     DUMPER 2(154)

     DUMPER>TAPE (FILESPEC) MTA1:
     DUMPER>REWIND
     DUMPER>FILES
     DUMPER>SSNAME FILES FOR TOPS-10
     DUMPER>INTERCHANGE (FORMAT)
     DUMPER>SAVE (DISK FILES) *.OVL

     DUMPER TAPE # 1, FILES FOR TOPS-10, WEDNESDAY, 4-AUG-76 1956
     PS:<PORADA>
     TEST.OVL.5 (AS) TEST.OVL.5      [OK]
     TEST1.OVL.2 (AS) TEST1.OVL.2    [OK]

     TOTAL FILES DUMPED = 2
     TOTAL PAGES DUMPED = 64
     DUMPER>EXIT
     @
DUMPER Program (continued)                                 Page II-100


6.   SAVING CHANGED FILES (F)

     Use the SINCE command to save only:

        a.  Changed files,
        b.  New files, and

     The example shows how to save all the  files  that  were  changed
     since August 4, 1976.

     @DUMPER

     DUMPER 2(154)

     DUMPER>TAPE (FILESPEC) MTA1:
     DUMPER>REWIND
     DUMPER>FILES
     DUMPER>SSNAME CHANGES ON 4-AUG
     DUMPER>SINCE (DATE AND TIME) 4-AUG-76 0:0
     DUMPER>SAVE (DISK FILES)

     DUMPER TAPE # 1, CHANGES ON 4-AUG-76 WEDNESDAY, 1956
     PS:<PORADA>
     DUMPER.CTL.3 (AS) DUMPER.CTL.3  [OK]
     DUMPER.EXA.3 (AS) DUMPER.EXA.3  [OK]
     TMOUNT.TXT.1 (AS) TMOUNT.TXT.1  [OK]

     TOTAL FILES DUMPED = 3
     TOTAL PAGES DUMPED = 21
     DUMPER>EXIT
     @

7.   SAVING ACCESSED FILES (G)

     Give the ASINCE command to save all the files that were  accessed
     in  any way (read, written, appended, accessed, or created).  The
     example shows how to save all the files that were accessed  since
     August  4,  1976.   Notice that these files include all the files
     that were saved using the SINCE command.

     @DUMPER

     DUMPER 2(154)

     DUMPER>TAPE (FILESPEC) MTA1:
     DUMPER>REWIND
     DUMPER>FILES
     DUMPER>SSNAME USED ON 4-AUG
     DUMPER>ASINCE (DATE AND TIME) 4-AUG-76 0:0
     DUMPER>SAVE (DISK FILES)

     DUMPER TAPE # 1, USED ON 4-AUG, WEDNESDAY, 4-AUG-76 1957
     PS:<PORADA>
     DUMPER.CTL.3 (AS) DUMPER.CTL.3  [OK]
     DUMPER.EXA.3 (AS) DUMPER.EXA.3  [OK]
     PLM.MAC.1 (AS) PLM.MAC.1        [OK]
     TMOUNT.TXT.1 (AS) TMOUNT.TXT.1  [OK]

     TOTAL FILES DUMPED = 4
     TOTAL PAGES DUMPED = 23
     DUMPER>EXIT
     @
DUMPER Program (continued)                                 Page II-101


8.   SAVING MONITOR-ACCESSED FILES (H)

     Use the MSINCE command to save any files that have  been  changed
     or  accessed  by  the monitor.  These files include all the files
     that were saved by the SINCE command.

     @DUMPER

     DUMPER 2(154)

     DUMPER>TAPE (FILESPEC) MTA1:
     DUMPER>REWIND
     DUMPER>FILES
     DUMPER>SSNAME ALL CHANGES
     DUMPER>MSINCE (DATA AND TIME) 4-AUG-76 0:0
     DUMPER>SAVE (DISK FILES)

     DUMPER TAPE # 1, ALL CHANGES, WEDNESDAY, 4-AUG-76 1957
     PS:<PORADA>
     DUMPER.CTL.3 (AS) DUMPER.CTL.3  [OK]
     DUMPER.EXA.3 (AS) DUMPER.EXA.3  [OK]
     MAIL.TXT.1 (AS) MAIL.TXT.1      [OK]
     TEST.OVL.5 (AS) TEST.OVL.5      [OK]
     TEST1.OVL.2 (AS) TEST1.OVL.2    [OK]
     TMOUNT.TXT.1 (AS) TMOUNT.TXT.1  [OK]

     TOTAL FILES DUMPED = 6
     TOTAL PAGES DUMPED = 86
     DUMPER>EXIT
     @

9.   CONTINUING A SAVE SET ON A SECOND REEL (I)

     To continue a save onto a second reel,  type  a  CTRL/C,  give  a
     TMOUNT  command,  give  a  CONTINUE  command,  and  then type the
     logical name or tape drive number.

     @TMOUNT (TAPE) REEL1: (VOLID) GREEN
     [OPERATOR NOTIFIED]
     [MTA1: ASSIGNED]
     @DUMPER

     DUMPER 2(154)

     DUMPER>TAPE (FILESPEC) REEL1:
     DUMPER>SAVE (DISK FILES)

     DUMPER TAPE # 1, , WEDNESDAY, 4-AUG-76 2058
     PS:<MCKIE>

     END OF TAPE, CONTINUE SAVE ON
                     CTRL/C
                     !
     TAPE (FILESPEC) ^C
     @TMOUNT (TAPE) REEL2: (VOLID) BLUE
     [OPERATOR NOTIFIED]
     [MTA1: ASSIGNED]
     @CONTINUE (PROGRAM)
     CTRL/R
     !
     TAPE (FILESPEC) REEL2:
     DUMPER TAPE # 2, , WEDNESDAY, 4-AUG-76 2100
DUMPER Program (continued)                                 Page II-102


     TOTAL FILES DUMPED = 253
     TOTAL PAGES DUMPED = 1751
     DUMPER>EXIT
     @

10.  CHECKING THE SAVED FILES

     If you want to check to make sure the files are  correctly  saved
     on  the tape, give a REWIND command and a CHECK command after you
     give the SAVE command.  This procedure does not work if you saved
     the files with a different file specification.

     @DUMPER

     DUMPER 2(154)

     DUMPER>TAPE (FILESPEC) MTA0:
     DUMPER>REWIND
     DUMPER>SSNAME COBOL PROGRAMS
     DUMPER>SAVE (DISK FILES) *.CBL

     DUMPER TAPE # 1, COBOL PROGRAMS, THURSDAY, 5-AUG-76 1325
     PS:<MCKIE>

     TOTAL FILES DUMPED = 4
     TOTAL PAGES DUMPED = 5
     DUMPER>REWIND
     DUMPER>FILES
     DUMPER>CHECK (ALL MTA FILES)

     DUMPER TAPE # 1, COBOL PROGRAMS THURSDAY, 5-AUG-76 1325
     PS:<MCKIE>COMPUT.CBL.1;P777752;A10300
     PS:<MCKIE>NUMBER.CBL.1;P777752;A10300
     PS:<MCKIE>STR.CBL.1;P777700;A10300
     PS:<MCKIE>TEST3.CBL.3;P777700;A10300

     END OF SAVESET
     DUMPER>EXIT
     @

11.  USING DUMPER FROM A BATCH JOB

     Place the commands you would normally type in  a  file  and  then
     submit  that  control  file  to the Batch system.  Use the TMOUNT
     command for assigning tape drives.  The following  example  shows
     the control file and the resulting log file from a Batch job that
     saves the user's entire directory.

     @TYPE (FILE) DAILY.CTL
     00100   !BATCH JOB FOR SAVING FILES
     00200   @TMOUNT MTA-DUMPER RED,
     00300   @WRITE-ENABLED
     00400   @
     00500   @DUMPER
     00600   *REWIND
     00700   *SSNAME DAILY SAVE
     00800   *LIST DAILY-SAVE.LOG
     00900   *SAVE
     01000   *REWIND
     01100   *CHECK
     01200   *EXIT
     01300   @UNLOAD MTA-DUMPER
DUMPER Program (continued)                                 Page II-103


     01400   @DEASSIGN MTA-DUMPER
     @SUBMIT DAILY
     [INP:DAILY=/SEQ:3454/TIME:00:05:000]
     @

     The log file from this job is shown below.  Notice that the files
     DAILY.LOG and DAILY-SAVE.LOG do not check properly since they are
     modified between the save and check operations.

10:36:42 BAJOB   BATCON version 102(2052) running DAILY  sequence  467
                 in stream 1
10:36:42 BAFIL   Input from PS:<MCKIE>DAILY.CTL
10:36:42 BAFIL   Output to PS:<MCKIE>DAILY.LOG
10:36:42 BASUM   Job parameters
                 Time:00:04:00  Unique:YES  Restarting:NO  Output:NOL
10:36:42 MONTR
10:36:42 MONTR    2102 DEVELOPMENT SYS., TOPS-20 MONITOR 2(233)
10:36:42 MONTR   @LOGIN MCKIE 10300
10:36:43 MONTR    JOB 26 ON TTY112 6-AUG-76 10:36
10:36:44 MONTR    2102 DEVELOPMENT SYS., TOPS-20 MONITOR 2(233)
10:36:44 MONTR    TOPS-20 COMMAND PROCESSOR 2(236)
10:36:44 MONTR    USED 0:00:00 IN 0:00:00
10:36:44 MONTR    TOPS-20:  0:00:00.2
10:36:44 MONTR    SET UUO-SIMULATION (FOR PROGRAM)
10:36:44 MONTR    SET NO CONTROL-C-CAPABILITY (OF PROGRAM)
10:36:45 MONTR    END OF BATCH.CMD.2
10:36:46 MONTR   @SET TIME-LIMIT 240
10:36:47 MONTR   @
                 !BATCH JOB FOR SAVING FILES
10:36:47 MONTR   @TMOUNT MTA-DUMPER RED,
10:36:47 MONTR   @@@WRITE-ENABLED
10:36:48 MONTR   @@@
10:36:49 MONTR   [OPERATOR NOTIFIED]
10:42:19 MONTR   [MTA1:  ASSIGNED]
10:42:19 MONTR   @@DUMPER
10:42:19 USER
10:42:19 USER    DUMPER 2(154)
10:42:19 USER
10:42:19 USER    DUMPER>*REWIND
10:42:20 USER    DUMPER>*SSNAME DAILY SAVE
10:42:20 USER    DUMPER>*LIST DAILY-SAVE.LOG
10:42:21 USER    DUMPER>*SAVE
10:42:22 USER
10:42:22 USER    DUMPER TAPE # 1, DAILY SAVE, FRIDAY, 6-AUG-76 1042
10:42:22 USER    PS:<MCKIE>
10:44:54 USER
10:44:54 USER
10:44:54 USER    TOTAL FILES DUMPED = 235
10:44:54 USER    TOTAL PAGES DUMPED = 1223
                 10:44:55 USER DUMPER>*REWIND
10:44:56 USER    DUMPER>*CHECK
10:44:56 USER
10:45:17 USER
10:45:17 USER    DUMPER TAPE # 1, DAILY SAVE, FRIDAY, 6-AUG-76 1042
10:46:12 USER
10:46:12 USER    %COMPARE ERROR, PAGE 0, FILE DAILY.LOG.1
10:46:12 USER    %DIFFERENCE IN .FBCRE OF FILE DAILY.LOG.1
10:46:12 USER    %DIFFERENCE IN .FBSIZ OF FILE DAILY.LOG.1
10:46:12 USER    %DIFFERENCE IN .FBCRV OF FILE DAILY.LOG.1
10:46:12 USER    %DIFFERENCE IN .FBWRT OF FILE DAILY.LOG.1
10:46:12 USER    %DIFFERENCE IN .FBCNT OF FILE DAILY.LOG.1
10:46:13 USER
10:46:13 USER    %COMPARE ERROR, PAGE 11, FILE DAILY-SAVE.LOG.1
10:46:13 USER    %DIFFERENCE IN .FBCRE OF FILE DAILY-SAVE.LOG.1
DUMPER Program (continued)                                 Page II-104


10:46:13 USER    %DIFFERENCE IN .FBSIZ OF FILE DAILY-SAVE.LOG.1
10:46:13 USER    %DIFFERENCE IN .FBCRV OF FILE DAILY-SAVE.LOG.1
10:46:13 USER    %DIFFERENCE IN .FBWRT OF FILE DAILY-SAVE.LOG.1
10:46:13 USER    %DIFFERENCE IN .FBCNT OF FILE DAILY-SAVE.LOG.1
10:47:26 USER
10:47:26 USER    END OF SAVESET
10:47:26 USER    DUMPER>*EXIT
10:47:26 MONTR   @@UNLOAD MTA-DUMPER
10:47:27 MONTR   @@DEASSIGN MTA-DUMPER
10:47:28 MONTR   @^C
10:47:29 MONTR   @LOGOUT
10:47:37 MONTR   KILLED JOB 26, USER MCKIE, ACCOUNT 10300, TTY 112, AT
                 6-AUG-76 10:47:37
10:47:37 MONTR   USED 0:0:45 IN 0:10:54
10:47:39 LPDAT   [LPTLSJ LPTSPL version 102(2226)  running  on  PDPT1,
                 6-Aug-76 10:47:39]
10:47:39 LPDAT   [LPTSJS Starting Job DAILY, Seq #467, request created
                 at 6-Aug-76 09:47:38]

12.  KEEPING INFORMATION ABOUT SAVED FILES

     If you want to keep information about the files you have saved on
     the  tape,  give  the LIST command.  If you do not specify a file
     specification, the system automatically sends the information  to
     the line printer.

     @DUMPER

     DUMPER 2(154)

     DUMPER>TAPE (FILESPEC) MTA0:
     DUMPER>CHECKSUM (FILES) SEQUENTIAL
     DUMPER>LIST (LOG INFORMATION ON FILE) TAPE.LOG
     DUMPER>SAVE (DISK FILES) *.CBL

     DUMPER TAPE # 1, , THURSDAY, 5-AUG-76 1251
     PS:<MCKIE>

     TOTAL FILES DUMPED = 4
     TOTAL PAGES DUMPED = 5
     DUMPER>EXIT
     @TYPE (FILE) TAPE.LOG.1

     DUMPER TAPE # 1, , THURSDAY, 5-AUG-76 1251

     DIRECTORY (NUMBERS)
          FILE             LAST WRITE       SIZE (PAGES)   CHECKSUM

     MCKIE (212)

          COMPUT.CBL.1     25-JAN-76 1624   1              624555
          NUMBER.CBL.1     25-JAN-76 1625   2              571212
          STR.CBL.1        30-APR-75 0703   1              057514
          TEST3.CBL.3      25-JAN-76 1612   1              411253

          TOTAL 4 FILES, 5 PAGES

     TOTAL FILES DUMPED = 4
     TOTAL PAGES DUMPED = 5
     @
DUMPER Program (continued)                                 Page II-105


                           RESTORING FILES

13.  RESTORING YOUR ENTIRE DIRECTORY (A)

     Type just the RESTORE command to restore the files from the  tape
     to  your connected directory.  The system restores any files that
     are:

        a.  Not in your connected directory, or

        b.  Newer than an existing file with the same  file  name  and
            file type.

     If the file specification on the tape does not specify  that  the
     file  came from your connected directory, it will not be restored
     to your connected directory.

     Use the SUPERSEDE ALWAYS command to restore all  the  files  from
     the tape regardless of their dates.

     Use the SUPERSEDE NEVER command to restore only those files  that
     have a file name and file type not found in your directory.

     @DUMPER

     DUMPER 2(154)

     DUMPER>TAPE (FILESPEC) MTA1:
     DUMPER>REWIND
     DUMPER>RESTORE (MTA FILES)

     DUMPER TAPE # 1, FULL SAVE, WEDNESDAY, 4-AUG-76 1957
     LOADING FILE(S) INTO <PORADA>

     END OF SAVESET
     DUMPER>EXIT
     @

14.  RESTORING A SINGLE FILE (B)

     Type the file specification after the RESTORE command to  restore
     a single file.

     @DUMPER

     DUMPER 2(154)

     DUMPER>TAPE (FILESPEC) MTA1:
     DUMPER>REWIND
     DUMPER>FILES
     DUMPER>RESTORE (MTA FILES) TMOUNT.TXT

     DUMPER TAPE # 1, FULL SAVE, WEDNESDAY, 4-AUG-76 1957
     LOADING FILE(S) INTO <PORADA>
     PS:<PORADA>TMOUNT.TXT.1;P777700;A10300 (TO) TMOUNT.TXT.1 [OK]

     END OF SAVESET
     DUMPER>EXIT
     @
DUMPER Program (continued)                                 Page II-106


15.  RESTORING A GROUP OF FILES (C)

     To restore a group of files use the wildcard characters % and  *,
     or separate the file specifications with commas.

     @DUMPER

     DUMPER 2(154)

     DUMPER>TAPE (FILESPEC) MTA1:
     DUMPER>REWIND
     DUMPER>FILES
     DUMPER>RESTORE (MTA FILES) *.FOR

     DUMPER TAPE # 1, FULL SAVE, WEDNESDAY, 4-AUG-76 1957
     LOADING FILE(S) INTO <PORADA>
     PS:<PORADA>DPEX2.FOR.3;P777700;A10300 (TO) DPEX2.FOR.3 [OK]
     PS:<PORADA>DPEX3.FOR.3;P777700;A10300 (TO) DPEX3.FOR.3 [OK]
     PS:<PORADA>DPEX4.FOR.2;P777700;A10300 (TO) DPEX4.FOR.2 [OK]
     PS:<PORADA>DPEXP.FOR.5;P777700;A10300 (TO) DPEXP.FOR.5 [OK]
     PS:<PORADA>FUN.FOR.2;P777700;A10300 (TO) FUN.FOR.2     [OK]
     PS:<PORADA>HI.FOR.2;P777700;A10300 (TO) HI.FOR.2       [OK]
     PS:<PORADA>MAIN.FOR.2;P777700;A10300 (TO) MAIN.FOR.2   [OK]
     PS:<PORADA>SIND2.FOR.2;P777700;A10300 (TO) SIND2.FOR.2 [OK]
     PS:<PORADA>SIND3.FOR.2;P777700;A10300 (TO) SIND3.FOR.2 [OK]
     PS:<PORADA>SPEX2.FOR.2;P777700;A10300 (TO) SPEX2.FOR.2 [OK]
     PS:<PORADA>SPEX3.FOR.2;P777700;A10300 (TO) SPEX3.FOR.2 [OK]
     PS:<PORADA>SPEX4.FOR.2;P777700;A10300 (TO) SPEX4.FOR.2 [OK]
     PS:<PORADA>SPEXP.FOR.3;P777700;A10300 (TO) SPEXP.FOR.3 [OK]
     PS:<PORADA>TRIG.FOR.2;P777700;A10300 (TO) TRIG.FOR.2   [OK]
     PS:<PORADA>WONDER.FOR.2;P777700;A10300 (TO) WONDER.FOR.2  [OK]

     END OF SAVESET
     DUMPER>EXIT
     @

16.  RESTORING FILES SAVED FROM ANOTHER DIRECTORY (D)

     To  restore  files  saved  from  another  directory,  make   your
     directory  name  the  last  argument of the RESTORE command.  The
     example  restores  files  from  the  directory   <MANUALS>   into
     <PORADA>.

     @DUMPER

     DUMPER 2(154)

     DUMPER>TAPE (FILESPEC) MTA1:
     DUMPER>REWIND
     DUMPER>FILES
     DUMPER>RESTORE (MTA FILES) <MANUALS>*.FOR.* (TO) <PORADA>

     DUMPER TAPE # 1, , WEDNESDAY, 4-AUG-76 2034
     LOADING FILE(S) INTO <PORADA>
     PS:<MANUALS>ADDEM.FOR.1;P777700;A10300 (TO) ADDEM.FOR.1   [OK]
     PS:<MANUALS>ADDTWO.FOR.1;P777700;A10300 (TO) ADDTWO.FOR.1 [OK]
     PS:<MANUALS>COMP.FOR.1;P777700;A10300 (TO) COMP.FOR.1     [OK]
     PS:<MANUALS>CUBIT.FOR.1;P777700;A10300 (TO) CUBIT.FOR.1   [OK]
     PS:<MANUALS>DIFFER.FOR.1;P777700;A10300 (TO) DIFFER.FOR.1 [OK]
     PS:<MANUALS>MORPAY.FOR.1;P777700;A10300 (TO) MORPAY.FOR.1 [OK]
DUMPER Program (continued)                                 Page II-107


     PS:<MANUALS>SMALL.FOR.1;P777700;A10300 (TO) SMALL.FOR.1   [OK]
     PS:<MANUALS>SUB1.FOR.1;P777700;A10300 (TO) SUB1.FOR.1     [OK]
     PS:<MANUALS>SUM.FOR.1;P777700;A10300 (TO) SUM.FOR.1       [OK]
     PS:<MANUALS>TRYIT.FOR.1;P777700;A10300 (TO) TRYIT.FOR.1   [OK]

     END OF SAVESET
     DUMPER>EXIT
     @

17.  RESTORING A FILE SAVED FROM A TOPS-10 SYSTEM (E)

     To restore a file saved from a TOPS-10 system, be sure to include
     the INTERCHANGE command before your RESTORE command.

     @DUMPER

     DUMPER 2(154)

     DUMPER>TAPE (FILESPEC) MTA1:
     DUMPER>REWIND
     DUMPER>FILES
     DUMPER>INTERCHANGE (FORMAT)
     DUMPER>RESTORE (MTA FILES) <*>*.OVL.* (TO) *.TEST

     DUMPER TAPE # 1, FILES FOR TOPS-10, WEDNESDAY, 4-AUG-76 1956
     LOADING FILE(S) INTO <PORADA>
     TEST.OVL.5 (TO) TEST.TEXT.5     [OK]
     TEST1.OVL.2 (TO) TEST1.TEXT.2   [OK]

     END OF SAVESET
     DUMPER>EXIT
     @

18.  RESTORING CHANGED FILES (F)

     Use the SINCE switch to restore only  those  files  that  changed
     after a certain date.

     @DUMPER

     DUMPER 2(154)

     DUMPER>TAPE (FILESPEC) MTA1:
     DUMPER>REWIND
     DUMPER>FILES
     DUMPER>SINCE (DATE AND TIME) 4-AUG-76 0:0
     DUMPER>RESTORE (MTA FILES)
     DUMPER TAPE # 1, FULL SAVE, WEDNESDAY, 4-AUG-76 1957
     LOADING FILE(S) INTO <PORADA>
     PS:<PORADA>DUMPER.CTL.3;P777700;A10300 (TO) DUMPER.CTL.3  [OK]
     PS:<PORADA>DUMPER.EXA.3;P777700;A10300 (TO) DUMPER.EXA.3  [OK]
     PS:<PORADA>TMOUNT.TXT.1;P777700;A10300 (TO) TMOUNT.TXT.1  [OK]

     END OF SAVESET
     DUMPER>EXIT
     @
DUMPER Program (continued)                                 Page II-108


19.  RESTORING ACCESSED FILES (G)

     Use the ASINCE command to restore  files  you  accessed  after  a
     certain date.

     @DUMPER

     DUMPER 2(154)

     DUMPER>TAPE (FILESPEC) MTA1:
     DUMPER>REWIND
     DUMPER>FILES
     DUMPER>ASINCE (DATE AND TIME) 4-AUG-76 0:0
     DUMPER>RESTORE (MTA FILES)

     DUMPER TAPE # 1, FULL SAVE, WEDNESDAY, 4-AUG-76 1957
     LOADING FILE(S) INTO <PORADA>
     PS:<PORADA>DUMPER.CTL.3;P777700;A10300 (TO) DUMPER.CTL.3  [OK]
     PS:<PORADA>DUMPER.EXA.3;P777777;A10300 (TO) DUMPER.EXA.3  [OK]
     PS:<PORADA>PLM.MAC.1;P777700;A220100 (TO) PLM.MAC.1    [OK]
     PS:<PORADA>TMOUNT.TXT.1;P777700;A10300 (TO) TMOUNT.TXT.1  [OK]

     END OF SAVESET
     DUMPER>EXIT
     @

20.  RESTORING MODIFIED FILES (H)

     Give the MSINCE command to transfer only those  files  that  were
     modified since a certain date.

     @DUMPER

     DUMPER 2(154)

     DUMPER>TAPE (FILESPEC) MTA1:
     DUMPER>REWIND
     DUMPER>FILES
     DUMPER>MSINCE (DATE AND TIME) 4-AUG-76 0:0
     DUMPER>RESTORE (MTA FILES)

     DUMPER TAPE # 1, FULL SAVE, WEDNESDAY, 4-AUG-76 1957
     LOADING FILE(S) INTO <PORADA>
     PS:<PORADA>DUMPER.CTL.3;P777700;A10300 (TO) DUMPER.CTL.3  [OK]
     PS:<PORADA>DUMPER.EXA.3;P777777;A10300 (TO) DUMPER.EXA.3  [OK]
     PS:<PORADA>MAIL.TXT.1;P770404;A1 (TO) MAIL.TXT.1          [OK]
     PS:<PORADA>TEST.OVL.5;P777777;A10300 (TO) TEST.OVL.2      [OK]
     PS:<PORADA>TEXT1.OVL.2;P777752;A10300 (TO) TEST1.OVL.2    [OK]
     PS:<PORADA>TMOUNT.TXT.1;P777700;A10300 (TO) TMOUNT.TXT.1  [OK]

     END OF SAVESET
     DUMPER>EXIT
     @
DUMPER Program (continued)                                 Page II-109


21.  RESTORING FILES CHANGED DURING A CERTAIN TIME PERIOD

     Give both the SINCE and BEFORE commands  to  restore  only  those
     files  that were changed during a certain time period.  The SINCE
     command contains  the  beginning  date  and  the  BEFORE  command
     contains  the ending date.  The example shows how to restore only
     those files that changed on January 21, 1976.

     @DUMPER

     DUMPER 2(154)

     DUMPER>TAPE (FILESPEC) MTA1:
     DUMPER>REWIND
     DUMPER>FILES
     DUMPER>SINCE (DATE AND TIME) 21-JAN-76 0:0
     DUMPER>BEFORE (DATE AND TIME) 22-JAN-76 0:0
     DUMPER>RESTORE (MTA FILES)

     DUMPER TAPE # 1, FULL SAVE, WEDNESDAY, 4-AUG-76 1957
     LOADING FILE(S) INTO <PORADA>
     PS:<PORADA>FUN.FOR.2;P777700;A10300 (TO) FUN.FOR.2     [OK]
     PS:<PORADA>FUN.MAP.1;P777700;A10300 (TO) FUN.MAP.1     [OK]
     PS:<PORADA>HI.FOR.2;P777700;A10300 (TO) HI.FOR.2       [OK]
     PS:<PORADA>WONDER.FOR.2;P777700;A10300 (TO) WONDER.FOR.2  [0K]

     END OF SAVESET
     DUMPER>EXIT
     @

22.  RESTORING FILES FROM A CONTINUED SAVE SET (I)

     To restore files when a save set is continued on a  second  reel,
     mount  the  tape (or type a CTRL/C and give the TMOUNT command to
     have the operator mount it), and then type the drive name.

     @DUMPER

     DUMPER 2(154)

     DUMPER>TAPE (FILESPEC) MTA1:
     DUMPER>RESTORE (MTA FILES) <ROMPER>*.*.* (TO) <MCKIE>*.FOO

     DUMPER TAPE # 1, , WEDNESDAY, 4-AUG-76 2116
     LOADING FILE(S) INTO <MCKIE>

     END OF TAPE, MOUNT NEXT REEL
     %FILE <ROMPER>MAKEIT.MEM.1 CONTINUED ON NEXT REEL
     TAPE (FILESPEC) MTA1:

     DUMPER TAPE # 2, , WEDNESDAY, 4-AUG-76 2116

     END OF SAVESET
     DUMPER>EXIT
     @
DUMPER Program (continued)                                 Page II-110


23.  RESTORING FILES FROM SYSTEM BACKUP TAPES

     If you accidentally delete some files, you may  restore  them  by
     using  your system backup tapes.  Usually the operator makes full
     saves on a weekly basis and then saves only those files that  are
     new  or  changed  on a daily basis.  Mount the full save tape and
     restore the proper files, then mount the  incremental  save  tape
     and restore the remainder.

     @DUMPER

     DUMPER 2(154)

     DUMPER>REWIND
     DUMPER>FILES
     DUMPER>RESTORE (MTA FILES) <PORADA>

     DUMPER TAPE # 1, FULL DUMP, WEDNESDAY, 4-AUG-76 2107
     LOADING FILE(S) INTO <PORADA>
     PS:<PORADA>COMP.FOR.1;P777700;A10300 (TO) COMP.FOR.1      [OK]
     PS:<PORADA>DPEX2.FOR.3;P777700;A10300 (TO) DPEX2.FOR.3    [OK]
     PS:<PORADA>DPEX2.QOR.1;P777700;A10300 (TO) DPEX2.QOR.1    [OK]
     PS:<PORADA>EXAM1.MAC.1;P777700;A220100 (TO) EXAM1.MAC.1   [OK]
     PS:<PORADA>FIRST.FIL.1;P777700;A220100 (TO) FIRST.FIL.1   [OK]
     PS:<PORADA>FUN.FOR.2;P777700;A10300 (TO) FUN.FOR.2        [OK]
     PS:<PORADA>GTJFN.MAC.1;P777700;A220100 (TO) GTJFN.MAC.1   [OK]
     PS:<PORADA>MAIL.TXT.1;P770404;A1 (TO) MAIL.TXT.1          [OK]
     PS:<PORADA>MAIN.FOR.2;P777700;A10300 (TO) MAIN.FOR.2      [OK]
     PS:<PORADA>PLM.MAC.1;P777700;A220100 (TO) PLM.MAC.1       [OK]
     PS:<PORADA>SECOND.FIL.1;P777700;A220100 (TO) SECOND.FIL.1 [OK]
     PS:<PORADA>SIND2.FOR.2;P777700;A10300 (TO) SIND2.FOR.2    [OK]
     PS:<PORADA>SPEX2.FOR.2;P777700;A10300 (TO) SPEX2.FOR.2    [OK]
     PS:<PORADA>SQUARE.BAS.4;P777700;A220100 (TO) SQUARE.BAS.4 [OK]
     PS:<PORADA>TEST.CMD.3;P777700;A10300 (TO) TEST.CMD.3      [OK]
     PS:<PORADA>TEST.EXE.5;P777700;A10300 (TO) TEST.EXE.5      [OK]
     PS:<PORADA>TRIG.FOR.2;P777700;A10300 (TO) TRIG.FOR.2      [OK]
     PS:<PORADA>WONDER.FOR.2;P777700;A10300 (TO) WONDER.FOR.2  [OK]

     END OF SAVESET
     DUMPER>EXIT
     @

     The user mounts the incremental tape...

     @DUMPER

     DUMPER 2(154)

     DUMPER>TAPE (FILESPEC) MTA1:
     DUMPER>FILES
     DUMPER>RESTORE (MTA FILES) <PORADA>

     DUMPER TAPE # 1, INCREMENTAL, WEDNESDAY, 4-AUG-76 2109
     LOADING FILE(S) INTO <PORADA>
     PS:<PORADA>DUMPER.CTL.3;P777700;A10300 (TO) DUMPER.CTL.3  [OK]
     PS:<PORADA>DUMPER.EXA.3;P777777;A10300 (TO) DUMPER.EXA.3  [OK]
     PS:<PORADA>TMOUNT.TXT.1;P777700;A10300 (TO) TMOUNT.TXT.1  [OK]

     END OF SAVESET
     DUMPER>EXIT
     @
DUMPER Program (continued)                                 Page II-111


                      ADDITIONAL DUMPER EXAMPLES

24.  EXAMINING A TAPE

     Give the PRINT command to print a list  of  the  files  that  are
     stored on the tape.

     @DUMPER

     DUMPER 2(154)

     DUMPER>TAPE (FILESPEC) MTA1:
     DUMPER>REWIND
     DUMPER>CHECKSUM (FILES) SEQUENTIAL
     DUMPER>PRINT (DIRECTORY OF TAPE ONTO FILE)

     DUMPER TAPE # 1, ALL CHANGES, WEDNESDAY, 4-AUG-76 1957
     FILE                       LAST WRITE   SIZE (PAGES)   CHECKSUM

     DDB FOR PORADA

     PS:<PORADA>DUMPER.CTL.3   4-Aug-76 1913    1          563372
     PS:<PORADA>DUMPER.EXA.3   4-Aug-76 1936    19         250044
     PS:<PORADA>MAIL.TXT.1     21-Jul-76 1116   1          540237
     PS:<PORADA>TEST.OVL.5     3-Mar-76 1122    32         565042
     PS:<PORADA>TEST1.OVL.2    26-Jan-76 1642   32         203313
     PS:<PORADA>TMOUNT.TXT.1   4-Aug-76 1821    1          454061

     END OF TAPE.
     ^L
     DUMPER>EXIT
     @
DUMPER Program (continued)                                 Page II-112


25.  STOPPING DUMPER

     Type CTRL/E to stop DUMPER.  You can give the CONTINUE command to
     DUMPER to resume the operation you interrupted.  If you interrupt
     a command and then give a command which  will  prevent  you  from
     continuing  the  interrupted command, DUMPER prints a message and
     gives you the alternative of aborting the offending command.

     @DUMPER

     DUMPER 2(154)

     DUMPER>TAPE (FILESPEC) MTA0:
     DUMPER>REWIND
     DUMPER>SSNAME FULL SAVE
     DUMPER>SAVE (DISK FILES)

     DUMPER TAPE # 1, FULL SAVE THURSDAY, 5-AUG-76 1326
     PS:<MCKIE>

     CTRL/E
     !
     INTERRUPTING...
     DUMPER>FILES
     DUMPER>CONTINUE
     008-PTYCON.TXT.1 (AS) 008-PTYCON.TXT.1     [OK]
     009-SWATCH.MEM.1 (AS) 009-SWATCH.MEM.1     [OK]
     009-SWATCH.TXT.4 (AS) 009-SWATCH.TXT.4     [OK]
     00IN.MEM.2 (AS) 00IN.MEM.2 [OK]
     00IN.RNO.2 (AS) 00IN.RNO.2 [OK]
     00TITL.MEM.4 (AS) 00TITL.MEM.4     [OK]
     00TITL.RNO.34 (AS) 00TITL.RNO.34   [OK]
     00TOC.RNO.32 (AS) 00TOC.RNO.32

     CTRL/E
      !
     INTERRUPTING...
     DUMPER>NO FILES
     DUMPER>REWIND

     %DO YOU REALLY WANT TO ABORT YOUR INTERRUPTED COMMAND?
     YES OR NO? N
     DUMPER>CONTINUE

     TOTAL FILES DUMPER = 226
     TOTAL PAGES DUMPED = 1179
     DUMPER>EXIT
     @
EDIT Command                                               Page II-113


Function

     The EDIT command lets you edit or create a file  using  the  EDIT
     program.


Special Cases

     The EDIT command always starts EDIT as long as you give  a  legal
     file  specification  as  an  argument.   If the file exists, EDIT
     enters edit mode for the file;  if the file does not exist,  EDIT
     prints a warning message, then lets you input the file.

     If you do not give any arguments to the EDIT command, the  system
     uses  the  arguments you gave in the last CREATE or EDIT command.
     If you have not given a CREATE or EDIT  command  since  you  have
     logged  in, the system cannot recall any arguments and prints the
     message:  ?NO SAVED ARGUMENTS.


Hints

     Refer to the description of the EDIT program for a  list  of  all
     the EDIT commands.

     You may give any EDIT command switch as a  command  to  the  EDIT
     program.


Format

     @EDIT (FILE) /switches input (OUTPUT AS) output

     /switches  is any combination of switches listed in  Table  II-9.
                You  may use recognition on the switch name and switch
                value.

     input      specifies the file you want to change or  create.   If
                the  file  exists,  the  system recognizes the highest
                generation, if the file does  not  exist,  the  system
                allows you to create the file.

     output     specifies  the  output  file.    The   system   always
                recognizes  a  new  generation of the output file.  If
                you do not specify an output file, the system uses  an
                output  file  with the same name and type as the input
                file, but with a new generation  number.   The  output
                file  is  always  placed  in  your currently connected
                structure and directory unless you explicitly type  in
                an  alternative  structure  or directory in the output
                specification.
EDIT Command (continued)                                   Page II-114


                              Table II-9
                        EDIT Command Switches


     This table lists many of the switches you  can  give  with  the
     EDIT  command.   Refer  to the EDIT User's Guide for a complete
     list.

     /C128
        Starts EDIT in 128-character mode which allows you to  enter
        special control characters.  Refer to the EDIT User's Guide.
        Normally, EDIT starts in 64-character mode.

     /DPY
        Enters display mode  that  uses  overprinting  to  make  the
        output  more concise on a video terminal screen.  Otherwise,
        EDIT starts in Model 33 (normal terminal) mode.

     /EXPERT
        Starts expert mode which allows more powerful  commands  and
        abbreviates  error  messages.   Otherwise,  EDIT  starts  in
        standard novice mode.

     /INCREMENT:n
        Uses the specified increment when assigning  numbers  to  an
        unsequenced  file.  The numbering starts at the value of the
        START parameter (the default value is 100) and assigns  line
        numbers  by  adding  the specified increment.  If you do not
        specify an increment, the system uses 100.

     /ISAVE:n
        Starts ISAVE mode that  automatically  gives  a  B  (backup)
        command  every  time  you  insert  n lines.  You must give a
        value for n.

     /NOBAK
        Inhibits EDIT from renaming the input file to  be  a  backup
        file  with  the  file  type  .Qyp.   If  you give the /NOBAK
        switch, you should SET FILE  GENERATION-RETENTION-COUNT  for
        this file to a number greater than one.

     /OLD
        Makes a backup file with the file type .Zyp if no other  one
        with  this  file  name  and  type  exists  in your connected
        directory.  Even though you may  give  another  /OLD  switch
        with   an  EDIT  or  CREATE  command,  this  file  is  never
        overwritten unless you  delete  it  with  a  TOPS-20  DELETE
        command.

     /READONLY
        Starts EDIT in read-only mode where you are not  allowed  to
        make  any  changes  to  the  file.  When you start EDIT, the
        system prints Read:  instead of Edit:  or Input:.   You  may
        give any EDIT command that does not change the file.

     /SAVE:n
        Starts SAVE mode which automatically gives a B command every
        time you give n EDIT commands.  You must give a value for n.
EDIT Command (continued)                                   Page II-115


                          Table II-9 (Cont.)
                        EDIT Command Switches


     /START:n
        Starts numbering an unsequenced file at the  number  n.   If
        you  do  not give a /START switch, EDIT uses a value of 100.
        To produce each succeeding line number, EDIT uses the  value
        of the /INCREMENT switch.

     /UNSEQUENCE
        Removes line numbers from the output file.


Operation
     If you do not want to give switches--

     1.  Type EDIT and press the ESC key;  the system prints (FILE).

         @EDIT (FILE)

     2.  Type (or use recognition on) the  input  file  specification;
         then  (if  you have not used recognition), press the ESC key.
         The system prints (OUTPUT AS).

         @EDIT (FILE) TEST.FOR.4 (OUTPUT AS)

     3.  Press the RETURN key if you want  a  new  generation  of  the
         input  file  as your output file.  If you want, press the ESC
         key and the system will print this default output file.  Then
         press the RETURN key.  Otherwise type (or use recognition on)
         the output file, then  press  the  RETURN  key.   The  system
         always  chooses  a new generation if you use recognition.  If
         the input file exists, the system prints Edit:   followed  by
         the input file specification, then the asterisk.

         @EDIT (FILE) TEST.FOR.4 (OUTPUT AS) TEST.FOR.5
         Edit:  TEST.FOR.4
         *

         You can, provided you have the appropriate access privileges,
         edit  a file in another directory or a file in a directory on
         another  file  structure  by   giving   the   complete   file
         specification (dev:<dir>filename.type).  You can also specify
         the placement of the output  file  in  another  directory  on
         another structure.  For example:

         @EDIT (FILE) HSTRY:<ESTEY>TEST.COB (OUTPUT AS) ADMIN:<GREEN>TEST.COB

         If a file does not exist,  the  system  prints  the  message:
         %File  not  found, Creating New file, or the message %No such
         file type, Creating New file, then lets you input the file.

         @EDIT (FILE) TEST.CBL

         %File not found, Creating New file
         INPUT* TEST.CBL.1
         00100
EDIT Command (continued)                                   Page II-116


     If you want to give switches--

     1.  Type the letters EDIT and press  the  ESC  key;   the  system
         prints (FILE).

         @EDIT (FILE)

     2.  Type a slash and type (or  use  CTRL/F  recognition  on)  the
         switch  name.   If  the  switch  has  a  value,  type a colon
         followed by a value.  You can use recognition on  the  switch
         by pressing the ESC key.

                           CTRL/F

         @EDIT (FILE) /INCREMENT:10

                           ESC

         @EDIT (FILE) /UNSEQUENCE

     3.  Type (or use recognition on) as many switches  as  you  need,
         then follow the directions in steps 2 and 3 under Operations.

                                       ESC

         @EDIT (FILE) /INCREMENT:10/EXPERT


Characteristics

     The EDIT command starts the EDIT program,  thereby  clearing  any
     program  from  memory.   Your  terminal  is  left at EDIT command
     level.


Restrictions

     If  you  let  the  EDIT  and  CREATE  commands  recall   previous
     arguments, do not give a generation number in your initial CREATE
     or EDIT command, or else subsequent commands will try to use that
     exact  generation rather than the highest existing generation for
     that file.  That is, give the command:

          @EDIT (FILE) T.FIL

     rather than:

          @EDIT (FILE) T.FIL.2

     In the latter case, the output file is T.FIL.3.  Subsequently, if
     you  give the EDIT command without any arguments, EDIT will start
     you in the file T.FIL.2 and not the most recent file T.FIL.3.


Examples

     The user edits his file, outputting it as NUMBER.REF

          @EDIT (FILE) NUMBER.FOR.3 (OUTPUT AS) NUMBER.REF.1 !NEW FILE!
          Edit:  NUMBER.FOR.3
          *
EDIT Command (continued)                                   Page II-117


     The user edits his file, setting the SAVE parameter to give  a  B
     command after every 5 EDIT commands.

          @EDIT (FILE) /SAVE:5 CRISCR.ALG.1 (OUTPUT AS)
          Edit:  CRISCR.ALG.1
          *

     The user starts EDIT in DPY mode and unsequences his output file.

          @EDIT (FILE) /DPY/UNSEQUENCE NXTVER.MAC
          Edit:  NXTVER.MAC.3
          *

     The user gives an EDIT command without any arguments.

          @EDIT
          Edit:  NXTVER.MAC.4
          *
EDIT Program                                               Page II-118


Function

     The EDIT program helps you create and edit files.  You  may  also
     use EDIT to peruse files.


Hints

     If you need a tutorial to start learning EDIT, refer  to  Getting
     Started With DECsystem-20 or the EDIT User's Guide.


Format

     @CREATE (FROM) /switches input
                or
     @EDIT (FROM) /switches input (OUTPUT AS) output


Operation

     1.  Give either the CREATE or EDIT command to start  EDIT  (Refer
         to their individual descriptions).

         @CREATE (FILE) TEST.FOR

     2.  If you give the CREATE command, EDIT starts  at  input  level
         where  you  may  insert  lines  into  a  new  file.   To stop
         inputting and move to EDIT command level, press the ESC  key.
         The system prints an asterisk.

         Input: TEST.FOR.1
         00100         TYPE 101
         00200   101   FORMAT (' This is only a test!')
         00300   $
         *

     3.  Once you are at EDIT command level, you may give any  one  of
         the EDIT Commands listed in the following table.
EDIT Program (continued)                                   Page II-119


                             Table II-10
                            EDIT Commands


     Positions and ranges
        You must specify the line or  lines  on  which  you  want  a
        command to work.  To specify a single line, type a position;
        to specify a group of  lines,  type  a  range.   A  position
        specifies a single line and has the following format:

        line/page
           The argument line is a line number and  page  is  a  page
           number.   A  line  number  or  page  number is one of the
           following:

           A positive integer less than 2^35,

           . (to indicate the current line or page),

           ^ (to indicate the first line or page), or

           * (to indicate the last line or page).


           Defaults:  If you omit the line  number,  EDIT  uses  the
           entire  page.  If you omit the slash and the page number,
           EDIT uses the current page.

           Examples:  300/2 specifies line 300 on page 2
                      ^/3   specifies the first line on page 3
                      ^/^   specifies the beginning of the file
                      */*   specifies the end of the file
                      /1    specifies all of page 1
                      300   specifies line 300 on the current page

        A range specifies one or more lines and is in one of the two
        following forms:

        starting-position:ending-position
           The starting-position is the  first  line  on  which  the
           command  will  work, the ending-position is the last line
           on which the command will work.  Any command  that  works
           on a range of lines will also work on a single line, thus
           a range may also be just a single line.

           Defaults:   If  you  omit  the  page  number   from   the
           ending-position,   EDIT  uses  the  page  number  in  the
           starting-position, not your current page.

           Examples:  100/1:300/3 specifies all  the  lines  between
                                  100/1 and 300/3 inclusive
                      600/5:2400  specifies all  the  lines  between
                                  600/5 and 2400/5

        starting-position!number
           The starting-position is the  first  line  on  which  the
           command  will  work.   The number specifies the number of
           lines (including the first) on  which  the  command  will
           work.

           Examples:  400/2!8 specifies line 400/2 and the following
                              7 lines.
                      300!5   specifies line 300 on the current page
                              and the next 4 lines
EDIT Program (continued)                                   Page II-120


                         Table II-10 (Cont.)
                            EDIT Commands


     Arange
        Enters Alter command level for the  specified  line(s).   In
        Alter  command  level  you  give  the special Alter commands
        which allow you to edit  a  line,  character  by  character.
        When  you  are  finished editing the current line, press the
        RETURN key or type E and EDIT enters Alter mode for the next
        line,  or  returns you to EDIT command level if all lines in
        the range have been altered.

        The Alter  commands  are  listed  below.   Some  Alter  mode
        commands  are  preceded by a minus sign that is optional and
        reverses the direction of the command.  Other commands  have
        an  argument  n,  that  is  optional  and  defaults  to 1 if
        omitted.  The arguments in angle brackets (such as  <space>)
        identify a specific key you are required to press.


                            Alter Commands


        ?  Prints a list of the Alter commands.

        nCchars     Deletes n  characters,  then  lets  you  type  n
                    characters   (or  press  the  ESC  key  to  stop
                    inserting).

        nD          Deletes the next n characters.
        -nD         Deletes the last n characters.

        E           Ends Alter mode for the current line,  but  does
                    not print the rest of the line.

        nFc         Finds the nth occurrence of the character c.
        -nFc        Finds the nth last occurrence of  the  character
                    c.

        nItext$     Lets you insert text, starting  at  the  current
                    position, until you press the RETURN key (to end
                    Altering the line) or the ESC key (to  end  just
                    the insert).  If you press the linefeed key, the
                    system takes  the  remainder  of  the  line  and
                    places  it at the beginning of a new line formed
                    by adding n to the current line number.  If  you
                    omit n, EDIT uses the current increment.

        J           Places the rest  of  the  current  line  at  the
                    beginning of the next line in the file.

        nKc         Deletes all  the  characters  from  the  current
                    position up to n occurrences of the character c.
        -nKc        Deletes all  the  characters  from  the  current
                    position  back  through  n  occurrences  of  the
                    character c.

        L           Prints the rest of the line and returns  to  the
                    beginning.
EDIT Program (continued)                                   Page II-121


                         Table II-10 (Cont.)
                            EDIT Commands


        P           Prints the rest of the line and the beginning of
                    the  line  up  to  your  current position.  This
                    command  is  useful  for  viewing  the   correct
                    contents of the line after you delete some text.

        Q           Ends Alter mode for this range,  without  saving
                    the changes for this line.

        nRtext$     Deletes the next n characters, then gives  an  I
                    command.   Stop  inserting  text by pressing the
                    ESC key.

        -nRtext$    Deletes the last n characters, then gives  an  I
                    command.

        nW          Skips forward n words.

        Xtext$      Deletes  the  current  word,   then   gives   an
                    automatic I command.

        n<space>    Skips ahead n characters.
        -n<space>   Backspaces n characters.
        n<DELETE>   Backspaces n characters.

        <RETURN>    Prints the rest of the line and returns to  EDIT
                    command level.

        <TAB>       Skips to the end of the line.
        -<TAB>      Backspaces to the beginning of the line.

        CTRL/U      Restores the original line, leaving you at Alter
                    command level.


     B (FILE) name.typ.gen
        Saves the  current  file,  but  does  not  end  the  editing
        session.   You may use recognition on the file specification
        or use the default which is a new generation  of  the  input
        file.   To  make  a  backup  file that does not contain line
        numbers, use the command name BU.  The user makes  a  backup
        file.

        *B

        [NXTONE.FOR.2]
        *

     Cposition,range
        Copies a range of lines so that the first line being  copied
        starts  at  the  specified  position.   The  user copies the
        contents of lines 600 through 3000 to just after  line  300.
        EDIT has used an increment of 1 to create the new lines.

        *C300,600:3000
        INC1=1
        *
EDIT Program (continued)                                   Page II-122


                         Table II-10 (Cont.)
                            EDIT Commands


     Cposition$ (FILE) name.typ,range
        Copies a range of lines from the specified file, so that the
        first  line  being  copied starts at the specified position.
        The  user  copies  the  first  three  pages  from  the  file
        SUBS.SNO.

        *C400/2$ (FILE) SUBS.SNO./1:/3
        *


     Cposition (FILE) name.typ/S
        Lets you search through the specified file before giving the
        range  of  lines  to  transfer.   In  this  mode,  the ready
        character is C* and you may give  F  and  P  commands  only.
        When  you are finished examining the file, give an E command
        and the system prints SOURCE LINES=.  Type  the  appropriate
        range  of  lines.  If you do not want to copy any lines, end
        search mode by giving  the  EQ  command  instead  of  the  E
        command.   The user looks at the file NUMBER.MAC then copies
        pages 3 through 5.

        *C.$ (FILE) NUMBER.MAC.1/S
        C*P^/3
        00100   ;Subroutines for inputting and outputting numbers.
        C*E
        SOURCE LINES=/3:/5
        *


     Drange
        Deletes a range of lines and prints a confirming message.

        *D100:600
        6 LINES (00100/1:00600/1) DELETED
        *


     E (FILE) name.typ
        Ends the editing session and saves the results in  the  file
        name.typ.   You may add a letter after the E to perform some
        special functions:  B creates a new generation of the output
        file  rather  than generating a .Qxx file;  I inserts a line
        at the beginning of your input file which includes the  file
        specification,  date,  time, and your user name;  Q ends the
        editing session and restores the original file;   U  removes
        the line numbers (unsequences) your file.  The user ends the
        editing session and saves his file.

        *E

        [TEST.MAC.2]
        @

        The user saves his file without line numbers.

        *EU

        [NOBAD.ALG]
        @
EDIT Program (continued)                                   Page II-123


                         Table II-10 (Cont.)
                            EDIT Commands


     Fstring$range,options
        Finds  the  next  occurrence  of  the  specified  string  of
        characters and prints the line containing it.  Note that you
        press the ESC key where the $ is shown.  The user looks  for
        the first FORMAT statement on page 1.

        *FFORMAT$/1
        09200   101   FORMAT ('Input file:  ')
        *

        If you give an F command without any  arguments,  EDIT  uses
        the  arguments  to  the  last F command.  The user finds the
        next FORMAT statement.

        *F
        10400   102   FORMAT ('The file ',A10,' does not exist.')
        *

        You can print the saved arguments to an F command by  giving
        the  =STRING  command.  An F command may include the options
        and special characters described with the S command.


     G (FILE) name.typ
        Ends the editing session, saves  the  results  in  the  file
        name.typ, then executes your last COMPILE, LOAD, EXECUTE, or
        DEBUG command.  If you add the letter U to  the  G  command,
        the  system  removes  the  line numbers before executing the
        last LOAD-class command.  Refer to the  E  command  for  the
        other  letters  you  may  add.   The  user  saves  his  file
        TEST.FOR, then the system gives his last LOAD-class command,
        which was COMPILE.

        *G

        [TEST.FOR.5]

        FORTRAN:  TEST
        MAIN.
        @


     H
        Prints a list of EDIT commands and options.


     Iposition,increment
        Lets you input a line or lines  starting  at  the  specified
        position.   The  optional increment numbers subsequent lines
        inserted with this command;  the permanent increment is  not
        affected.   To  return  to EDIT command level, press the ESC
        key.  The user inserts line 100.   Since  line  100  already
        exists, EDIT selects a line halfway between line 100 and the
        next line in the file.

        *I100
        00150   THIS IS A TEST LINE.
        *
EDIT Program (continued)                                   Page II-124


                         Table II-10 (Cont.)
                            EDIT Commands


        The user inserts line 350, then line 360.

        *I350,10
        00350          ADDI 3,.NUMPAR
        00360          MOVEM 3,PERMPR
        00370   $
        *

        There are a number of special functions which the I  command
        may perform:


        I<CR>
           Starts inserting where  you  last  stopped  inserting  or
           replacing  lines.   You  can  find  out  this location by
           giving the =INSERT command.  The  user  starts  inserting
           where he left off.

           *I
           02400   T1:    HALTF
           02500          JRST T1
           02600   $
           *


        I/page
           Inserts a page mark at the end  of  the  specified  page,
           then  starts  insert mode beginning with the value of the
           START parameter (the default is 100).   The  user  starts
           inserting lines on page 4.

           *I/3
           00100   TOP OF PAGE 4.
           00200   $
           *


        Iposition!n
           Chooses an increment which will allow  you  to  insert  n
           lines  starting  at  the  specified  position.   The user
           inserts 3 lines after line 100.

           *I100!3
           00120   TEST1:  HRROI T1,MESSAGE
           00140           PSOUT
           00160           JRST RETSKP
           00180$
           *


        I^
           Inserts a line at the top of the  page,  halfway  between
           line  0  and  the first line.  The user inserts a line at
           the beginning of the file.

           *I^/^
           00050   ;This is a test program.
           *
EDIT Program (continued)                                   Page II-125


                         Table II-10 (Cont.)
                            EDIT Commands


        Jposition
           Appends the next line in the file to the specified  line,
           thereby  joining  the  two.   The second line is deleted.
           The user joins line 500 and 600.

           *P500!2
           00500   FIRST LINE!
           00600   SECOND LINE
           *J500
           *P500
           00500   FIRST LINE!SECOND LINE
           *



        K/page
           Deletes the page mark between the specified page and  the
           one  preceding  it.   This  command deletes only the page
           MARK, not the CONTENTS of the page.  The system may print
           the  message %OUT OF ORDER, which tells you that the line
           numbers are not in ascending order although your file  is
           still  in  the correct logical order.  Give the N command
           to renumber the offending page  (refer  also  to  the  NA
           command).   The user deletes the page mark between page 1
           and page 2.

           *K/2
           *

           Note that page mark 2 is the first page mark in the file,
           thus the command K/1 is illegal.


        Lrange
           Lists the specified range of lines on the  line  printer.
           If  you  do not give a range, the system lists the entire
           file.  The user lists the contents of page 1.

           *L/1
           *


        Mposition
           Marks the specified line as the beginning of a new  page.
           Each  succeeding  page  number  is increased by one.  The
           user makes line 300 the first line 2 on a new page.

           *M300
           *


        Nincrement,range,start
           Renumbers the specified range of lines starting with  the
           specified  value  and  adding  the specified increment in
           generating the line number for each succeeding line.  The
           user  renumbers  page  1, starting with 150 and adding 10
           for each new line number.

           *N10,/1,150
           *
EDIT Program (continued)                                   Page II-126


                         Table II-10 (Cont.)
                            EDIT Commands


           If you do not give a starting number, the system uses the
           increment.   The  user  renumbers page 2 starting with 50
           and adding 50 for each new line number.

           *N50,/2
           *

           If you do not give a  range,  the  system  renumbers  the
           entire   file.   The  user  renumbers  the  entire  file,
           starting with 10 and adding 10 for each new line.

           *N10
           *

           If you do not specify an increment, the system  uses  the
           value  of  the  INCREMENT parameter (the default is 100).
           The user renumbers his entire file starting with 100  and
           adding 100.

           *N
           *

           The system assigns the starting number to the first  line
           on  each  page and numbers each succeeding line by adding
           the increment, unless you add  the  letter  P  to  the  N
           command.   This  stops  the  system from resetting to the
           starting number of the beginning of each page.  You  will
           find  this  command  useful  when you want to delete some
           page marks without getting the  %OUT  OF  ORDER  message.
           The user numbers his file sequentially starting at 10 and
           adding 10.

           *NP10
           *

           If you want to add an increment to a range of lines,  use
           the  command NAincrement,range.  The user adds 5 to lines
           100 through 400 on page 2.

           *NA5,100/2:400
           *

        Prange,S
           Prints the range of lines.   If  you  do  not  specify  a
           range, the system prints a group of lines.  The number of
           lines it prints specified by  the  value  of  the  PLINES
           parameter  (the default is 16).  The user prints line 500
           and the following line.

           *P500!2
           00500   THIS IS THE FIFTH LINE.
           00600   THIS IS THE SIXTH LINE.
           *

           If you do not want the system to print the line  numbers,
           include  the ,S qualifier at the end of the command.  The
           * prompt is not reprinted until you press the RETURN  key
           a second time.  The user prints line 500 without its line
           number, then presses the RETURN key again to get the EDIT
           prompt.
EDIT Program (continued)                                   Page II-127


                         Table II-10 (Cont.)
                            EDIT Commands


           *P500,S
           THIS IS THE FIFTH LINE.

           *

           Pressing the <LF> key prints the next line in your  file;
           pressing  the  <ESC> key prints the previous line in your
           file.


        .position
           Makes the specified position your current line.  The user
           moves to the line 500 on page 4.

           *.500/4
           *


        Rrange
           Deletes the specified range of lines, then enters  insert
           mode  with  the  specified  increment.  The user replaces
           line 300.

           *R300
           00300   THIS IS LINE 300.
           1 LINE (00300/1) DELETED
           *


        Sexisting$new$range,options
           Substitutes  the  new  string  of  characters   for   all
           occurrences   of   the   existing  string  of  characters
           contained within the specified range.  The user  replaces
           all occurrences of SKIPA with JFCL on line 900.

           *SSKIPA$JFCL$900
           00900   TEST: JFCL 0
           *

           If you do not give a range, the S  command  performs  the
           substitution  for  the  next  occurrence  of the existing
           string.  Should you give the S command a second time, the
           system performs the substitution on the rest of the file.
           The user replaces the next occurrence of SKIPA with JFCL,
           then performs the substitution over the rest of the file.

           *SSKIPA$JFCL$
           05500   T5:   JFCL 0
           *S
           06700   T6A:  JFCL 0
           09400         JFCL 0
           *

           In addition to the options described below, ,D  lets  you
           check  on  each substitution and ,L stops the printing of
           each line that contains a substitution.
EDIT Program (continued)                                   Page II-128


                         Table II-10 (Cont.)
                            EDIT Commands


           You may use the  following  options  with  the  F  and  S
           commands:

           ,E    Requires an exact match of  upper  and  lower  case
                 characters.

           ,A    Enters Alter  mode  for  each  line  on  which  the
                 characters are found.

           You  may  use  the  following  matching  and  replacement
           characters in F and S commands if you are using the /C128
           character set.

           Match:        '%     not
                         ')     arbitrary number of
                         '/     any character
                         '7     quote next character
                         ':     separator

           Replacement:  '"     Next match string
                         '*     '*n'* is nth match string
                         '7     Quote next character

           The following command searches for a  space  followed  by
           any  two  characters  and  a comma, then inserts an extra
           space beside the first.  Notice that  the  characters  '"
           supply  the  new  string  with  the  characters that were
           matched in the existing string.

           */C128
           *P300
           00300        HRRI T1,40000
           *S '/'/,$  '"'",$.
           00300        HRRI  T1,40000
           */C64
           *

           The following  command  replaces  the  word  the  at  the
           beginning of line 900 with the word that.  Notice that '%
           (not) '/ (any character) matches the  beginning,  or  the
           ending, of a line.

           */C128
           *P900
           00900   THE NEWEST METHOD IS USEFUL.
           *S'%'/THE$THAT$900
           00900   THAT NEWEST METHOD IS USEFUL.
           */C64
           *

           The user switches the numbers before a , with the numbers
           before a .  on line 600.  1')'/, matches 1 and any number
           of any character until a , is reached.  ')'/ matches  all
           the characters from the space after the comma up to the 1
           in 1976.  1')'/6.   matches  1  and  any  number  of  any
           character  until a .  is reached.  Now in the new string,
           '*3'* supplies the characters  from  the  third  pattern:
           86;   '*2'* supplies the middle characters:  but not in ;
           and '*1'* supplies the characters from the first pattern:
           97.
EDIT Program (continued)                                   Page II-129


                         Table II-10 (Cont.)
                            EDIT Commands


           */C128
           *P600
           00600   They were known well in 1975, but not in 1866.
           *S1')'/,')'/1')'/,$1'*3'*,'*2'*1'*1'*.$600
           00600   They were known well in 1865, but not in 1976.
           */C64
           *


        Tposition,range
           Transfers a specified range of lines so  the  first  line
           being transferred starts at the specified position.  If a
           line already  exists  at  the  specified  position,  EDIT
           creates  a line following it and tells you what increment
           it uses.  The user transfers line 300 to  the  line  just
           after 100.

           *T100,300
           INC1=50
           *

           The specified range of lines is deleted  after  they  are
           transferred.


        Xrange
           Allows you to extend the  specified  range  of  lines  by
           printing the line and then giving an Alter I command.  If
           you do not want the system to print the line number,  add
           the  ,S  specifier  at  the end of the command.  The user
           adds on to line 600.

           *X600
           00600   T3:   MOVEM T1,REFPNT          ;Place in REFPNT
           *


        ?
           Prints a list of all the EDIT commands.


        *@name.typ
           Gives the commands stored in the  specified  file.   When
           the  commands  are processed, EDIT prints a message.  The
           user gives the commands in the file T.CMD.

           *@T.CMD

           %End of indirect file
           *
EDIT Program (continued)                                   Page II-130


     You may set the following EDIT parameters with  the  /  command
     and examine them with the = command.


                             Table II-11
                           EDIT Parameters


                            Default
  Name         Set  Print    Value           Function


    .           n     y       ---    Indicates your current position
                                     in the file
    ?           n     y       ---    /? prints the names of
                                     settable switches; =? prints
                                     the names of printable switches
  BAK           y     y       on     Causes Creation of .Qxx backup
                                     files rather than new
                                     generations of the output file
  BIG           n     y       ---    Gives the largest page number
  C64           y     CASE    on     Causes EDIT to use the standard
                                     64-character set
  C128          y     CASE    off    Lets you use the extended
                                     128-character set
  CASE          n     CASE    ---    Prints information about the
                                     character set, terminal
                                     characteristics, and case
  DECIDE        y     y       off    Sets decide mode for S commands
  DPY           y     CASE    off    Sets special mode for display
                                     terminals
  ERROR         n     y       ---    Prints the last error message
  EXPERT        y     CASE    off    Sets expert mode, which gives
                                     extended capabilities and
                                     shorter error messages
  INCREMENT     y     y       100    Sets the default increment in
                                     forming new line numbers
  INSERT        y     y       ---    Prints the location of the line
                                     inserted by an I<CR> command
  ISAVE         y     y       0      Gives a B command after you
                                     have inserted n new lines,
                                     n is a non-zero value of ISAVE
  LOCATION      n     y       ---    Prints the location of the
                                     first line in the buffer.
                                     You may "backup" to this
                                     line without any overhead
  LOWER         y     CASE    off    In C128 mode forces all
                                     characters you type to be
                                     lowercase unless preceded by an
                                     apostrophe. All uppercase
                                     characters are flagged on
                                     output
  M33           y     CASE    on     Sets normal terminal parameters
  M37           y     CASE    off    Sets terminal parameters that
                                     allow you to type and print
                                     lowercase
  NAME          y     y       ---    Specifies the output file
  NOBAK         y     BAK     off    Forces a new generation of the
                                     output file rather than the
                                     creation of a .Qxx backup file
  NODECIDE      y     DECIDE  on     Turns decide mode off
EDIT Program (continued)                                   Page II-131


                         Table II-11 (Cont.)
                           EDIT Parameters


  NONSEPARATORS y     CASE    on     Declares %,$,. are not
                                     alphanumerics
  NONUMBER      y     n       off    Inhibits line number printing
  NOVICE        y     n       on     Sets normal mode
  NUMBER        y     n       on     Starts printing of line numbers
  OLD           y     n       off    Creates a backup file (.Zxx) if
                                     one does not exist
  OPTION        y     n       ---    Reads the SWITCH.INI file
  PLINES        y     y       16     Determines the number of lines
                                     printed by P<CR>
  READONLY      y     n       off    Sets readonly mode; you cannot
                                     change the file
  RUN           y     y       LOAD   Sets the program to be run when
                                     you give a G command; normally
                                     is your last LOAD-class command
  SAVE          y     y       0      Causes EDIT to give a B command
                                     after you give every n
                                     commands,
                                     n is a non-zero value of SAVE
  SEPARATORS    y     n       off    Declares %,$,. are alphanumeric
  SEQUENCE      y     n       off    Removes line numbers
                                     from the output file
  START         y     y       100    Sets the line number used to
                                     start numbering files and pages
  STRING        n     y       ---    Prints the current default
                                     strings for F and S commands
  UNSEQUENCE    y UNSEQUENCE  off    Removes line numbers from the
                                     output file
  UPPER         y     CASE    on     In C128 mode forces everything
                                     you type to uppercase; precede
                                     lowercase with an apostrophe.
                                     All lowercase output is flagged
  WINDOW        y     y   8 pages    Sets the amount of memory
                                     used to store the file while
                                     you are editing. Increase this
                                     value if you are perusing a
                                     file.


Characteristics

     After the EDIT program  has  printed  either  Input:,  Edit:,  or
     Read:,  any program in memory is cleared and you are left at EDIT
     command level or EDIT input level.  To return to TOPS-20  command
     level, press the ESC key then type E and press the RETURN key.
EDIT Program (continued)                                   Page II-132


Examples

     The user creates a small file and replaces a line.

        @CREATE (FILE) TEST.FIL
        Input: TEST.FIL.1
        00100   This file will contain three lines: line 100
        00200   Line 300, and
        00300   Line 300.
        00400   $
        *R200
        00200   Line 200, and
        1 LINE (00200/1) DELETED
        *E

        [TEST.FIL.1]
        @

     The user edits a text file to be used with the RUNOFF program.

        @EDIT (FILE) NEWRUN.RNO
        Edit: NEWRUN.RNO.3
        *SLEVLE$LEVEL$500
        00500  THE HEADER LEVEL COMMANDS ARE ALSO VERY USEFUL.
        *E

        [NEWRUN.RNO.4]
        @
EOF Command                                                Page II-133


Function

     The EOF command writes  an  end-of-file  mark  on  the  specified
     magnetic tape.


Hints

     Remember to assign the tape  drive  to  your  job  and  have  the
     operator load your tape.

     Be sure to have the correct tape parameters set (check them  with
     the  INFORMATION (ABOUT) TAPE-PARAMETERS command);  if necessary,
     give the SET TAPE command.


Format

     @EOF (DEVICE) dev:

     dev:           is the magnetic  tape  device  name  in  the  form
                    MTAn:, where n is the drive number.


Operation

     1.  Type EOF and press the ESC key;  the system prints
         (DEVICE).

         @EOF (DEVICE)

     2.  Type the device name and press the RETURN  key.   The  system
         prints an @ after it writes the EOF.

         @EOF (DEVICE) MTA3:
         @


Errors

     1.  If the device is not on line, the system ignores the  command
         and prints the message:

         ?Device is not on-line

         Use the PLEASE program to contact the operator;  then reissue
         the command.

     2.  If a tape is not mounted on the drive, the system  may  print
         the message:

         ?Device or data error

         Use the TMOUNT command to contact the operator;  then reissue
         the command.

     3.  If you type a CTRL/C to exit from a program that  has  opened
         the  magnetic  tape drive, and then give the EOF command, the
         system prints the following message:
EOF Command (continued)                                    Page II-134


              ?Device MTAn: open on JFN m
              %Close JFN?  YES

         If you answer YES (or just press the RETURN key), the  system
         closes  the  file,  prints  a  confirming message, writes the
         end-of-file mark, and leaves you at  TOPS-20  command  level.
         Continuing  the  program  that previously opened the magnetic
         tape may produce an error because the file has been closed.

              @EOF (DEVICE) MTA2:
              ?Device MTA1: open on JFN 3
              %Close JFN? YES
               3   MTA1:    OK
              @

         If you answer NO, the  system  prints  the  message  ?Command
         aborted...and   does   not   close  the  file  or  write  the
         end-of-file mark.


Characteristics

     The EOF command does not change any program in memory and  leaves
     your terminal at TOPS-20 command level.


Restrictions

     The EOF command works only for magnetic tapes.


Examples

     The user writes an EOF on the tape mounted on drive 3.

        @EOF (DEVICE) MTA3:
        @
EXECUTE Command                                            Page II-135


Function

     The EXECUTE command places one or more object  files  in  memory,
     then starts the main program.

Special Cases

     If you give only EXECUTE-command  switches  as  arguments  to  an
     EXECUTE command, the system appends the arguments you gave in the
     last LOAD-class command which contained a file  specification  or
     LINK  switch,  then  executes  the  command.   If  there  are  no
     arguments to recall, the system  prints  the  message  ?No  saved
     arguments.   Refer to Section 8.3.4 which describes the manner in
     which arguments are recalled.

     The system will update the object file if it is  older  than  any
     one  of  the  corresponding  source  files.  Suppose you give the
     command:

     @EXECUTE (FROM) NXTLAT.FOR

     If NXTLAT.REL does not exist, or if it is  older  than  the  most
     recent  NXTLAT.FOR  (i.e.,  it  has a write date before the write
     date of NXTLAT.FOR),  then  the  system  compiles  NSTLAT.FOR  to
     produce  an  up-to-date  NXTLAT.REL.  After producing NSTLAT.REL,
     the system loads it into memory.  Refer to  Section  8.3.3  which
     describes the manner in which object files are updated.


Format

     @EXECUTE (FROM) sources object,sources object,...

     sources        is one or more source file specifications preceded
                    and/or  followed  by  switches.  You must separate
                    the source files with plus signs.   No  spaces  or
                    tabs  are allowed.  If you do not give a file type
                    in a file specification, the system  looks  for  a
                    source  file with one of the standard types listed
                    in Table 8-1.  If there is more than one file with
                    a standard file type, the system uses .FOR.  Refer
                    to Section 8.3.2 which describes  more  about  how
                    the  system selects a file when you do not specify
                    its file type.

     a space        separates the source file specifications from  the
                    object  file specification.  If you do not give an
                    object file specification,  you  do  not  have  to
                    leave a space.

     object         is an object file specification.  If  you  do  not
                    give an object file specification, the system uses
                    the name of the last  file  in  the  corresponding
                    sources and the type .REL.

     @name.typ      You may store any portion  of  the  command  in  a
                    file.   That  portion of the command is included -
                    just as  if  you  typed  it  on  your  terminal  -
                    whenever you type an @ followed by the name of the
                    file.  Refer to Section 8.3.5 which describes  how
                    the system takes commands from an indirect file.

     switches       You may use recognition to help you type a  switch
                    and any file specification which is an argument to
EXECUTE Command (continued)                                Page II-136


                    a switch.  If you place a switch before a  set  of
                    sources,  the  switch  applies to all the files in
                    that set of sources;  if you place a switch  after
                    a  file  specification  in  a  set of sources, the
                    switch applies to just  that  file.   Table  II-12
                    lists  the  switches  that  are  useful  with  the
                    EXECUTE command.


                             Table II-12
                       EXECUTE Command Switches


       /ALGOL
          Compiles the file using ALGOL.  This is  the  default  for
          sources with the extension .ALG.

       /BINARY
          Generates a binary (object) file for each source  program.
          Normally,  the  system  generates  object  files,  so this
          switch is useful in reversing a global /NOBINARY switch.

       /COBOL
          Compiles the program using COBOL.  This is the default for
          sources with the extension .CBL.

       /COMPILE
          (or an object file older than any one of its source files)
          Compiles  the  source  program  regardless  of whether the
          object file is up-to-date or not.  The  /NOCOMPILE  switch
          causes compilation only if the object file is out-of-date;
          the /RELOCATABLE  switch  causes  the  system  to  use  an
          existing  object  file, regardless of its date.  Normally,
          the system assumes the action of the /NOCOMPILE switch.

       /CREF
          Creates a file containing cross-reference information  for
          each source file you compile.  The name of the file is the
          name of the last source file and the file  type  is  .CRF.
          Give  the CREF command to run the CREF program which reads
          this file and prints a listing.  If the object file is not
          out  of  date, include the /COMPILE switch in your EXECUTE
          command.  When a source file contains a COBOL program, the
          system  produces  a  listing  file  (the file type is .LST
          instead   of   .CRF)   containing   the    cross-reference
          information;   give the PRINT command (instead of CREF) to
          print the .LST file.

       /DDT
          Loads the DDT debugger along with the program.

       /DEBUG
          Provides  debugging  information  in  the  object  program
          (FORTRAN only).

       /FORTRAN
          Compiles the file using FORTRAN.  This is the default  for
          sources with the extension .FOR or a non-standard type.


       /LIBRARY
          Loads only the routines from  the  object  file  that  are
          called  by  the  main  program or another subroutine.  The
          system libraries are always searched.
EXECUTE Command (continued)                                Page II-137


                         Table II-12 (Cont.)
                       EXECUTE Command Switches


       /LIST
          Prints a listing of each program you compile.  The listing
          name  is  the  name  of  the last source file.  Unless you
          specify this switch, the system does not print  a  listing
          of  your program.  If you also include a /CREF switch, the
          system ignores the /LIST switch.

       /MACRO
          Assembles the file using MACRO.  This is the  default  for
          sources with the extension .MAC.

       /MAP:name.typ
          Produces loader maps during the loading process and stores
          them in the file name.typ.  If you do not give a file name
          and type, the system uses nnnLNK.MAP, where  nnn  is  your
          job  number.   The  /MAP  switch  applies  to  the  entire
          command, not to just one file.   If  you  use  recognition
          input in typing the file specification, the system creates
          a new generation of the recognized file.

       /NOBINARY
          Inhibits the generation of a  binary  object  file.   This
          switch  is  useful along with the /CREF or /LIST switch to
          produce listings without additionally producing an  object
          file.

       /NOCOMPILE
          Compiles a file only if  it  is  out-of-date.   Since  the
          system normally does this, the /NOCOMPILE switch is useful
          for turning off a global /COMPILE or /RELOCATABLE switch.

       /NODEBUG
          Omits  loading  debugging  information  with  the  program
          (FORTRAN only).

       /NOLIST
          Inhibits the generation of a listing file.  Normally,  the
          system does not generate a listing file.

       /NOOPTIMIZE
          Inhibits the generation of optimized object files (FORTRAN
          programs only).

       /NOSEARCH
          Loads all routines in a file, regardless  of  whether  the
          routines  are  called  by  another  module.  Normally, the
          system loads all the routines in an object file, therefore
          this  switch  is  useful  in  reversing  a  global /SEARCH
          switch.

       /NOSYMBOLS
          Inhibits loading symbols with the program.  Normally,  the
          system loads symbols with all programs.
EXECUTE Command (continued)                                Page II-138


                         Table II-12 (Cont.)
                       EXECUTE Command Switches


       /OPTIMIZE
          Produces optimized object files (FORTRAN programs only).

       /RELOCATABLE
          Uses the specified object files, even though they  may  be
          out-of-date,  or  have  extensions  other  than .REL.  For
          example,  the  command  LOAD  FILE.FOR/REL   would   cause
          FILE.FOR  to be treated as a relocatable file and load it.
          It would normally be regarded as a FORTRAN source file.

       /SEARCH
          Is identical to the /LIBRARY switch.

       /SYMBOLS
          Loads the  program  with  its  appropriate  symbol  table.
          Normally, the system loads all programs with symbols.


Operation

     1.  Type EXEC and press the  ESC  key;   the  system  prints  UTE
         (FROM).

         @EXECUTE (FROM)

     2.  Type  (or  use   recognition   on)   the   sets   of   source
         specifications,  object  specifications  and switches.  Press
         the RETURN key.  The system executes the specified files.

         @EXECUTE (FROM) TEST.FOR,SUB1.FOR
         FORTRAN: TEST
         FORTRAN: SUB1
         SUB1
         LINK:   Loading
         [LNKXCT TEST EXECUTION]

         INPUT FILE: T1.IN

         END OF EXECUTION
         CPU TIME: 0.14  ELAPSED TIME: 0.47

         EXIT
         @
EXECUTE Command (continued)                                Page II-139


Errors

     1.  If you give a command and one of the source files is missing,
         the  system  continues  processing the command and prints the
         message:

         %SOURCE FILE MISSING - name.typ

         where name.typ is the name and type of the source file.


Characteristics

     The EXECUTE command runs the appropriate translator and the  LINK
     program,  thereby  clearing  any  previous  program  from memory.
     Depending on the way your program operates, your terminal may  or
     may not be left at TOPS-20 command level.


Examples

     The user executes his FORTRAN program.

        @EXECUTE (FROM) ADDTWO.FOR
        FORTRAN: ADDTWO
        MAIN.
        LINK:   Loading
        [LNKXCT ADDTWO Execution]
        TYPE TWO NUMBERS.
        23.5 45.8
        ADDING        23.5000000 TO       45.8000000 GIVES     
        69.3000000

        END OF EXECUTION
        CPU TIME: 0.14 ELAPSED TIME: 7.88
        EXIT
        @

     The user combines three FORTRAN programs into  one  main  program
     and includes the entire subroutine package TYPE2.

        @EXECUTE (FROM) 1+2+3,TYPE2
        FORTRAN: 1
        MAIN.
        FORTRAN: TYPE2
        TYPE2
        LINK:   Loading
        nkxct 3 execution]
        THIS IS IT, FOLKS, THE LAST TRY
        THIS IS TYPE2.
        STOP

        END OF EXECUTION
        CPU TIME: 0.009 ELAPSED TIME: 0.47
        EXIT
        @
EXECUTE Command (continued)                                Page II-140


     The  user   executes   his   MACRO   program   and   produces   a
     cross-reference listing file.

        @EXECUTE (FROM) TRANSL.SYS/MACRO/CREF
        MACRO:  TRANSL
        LINK:   Loading
        [LNKXCT TRANSL Execution]
        Translate (Directory) EXEC
        <EXEC> (IS) [4,111] (A files-only directory)
        @

     The user executes his COBOL program.

        @EXECUTE (FROM) COMPUT.CBL
        COBOL:  MAIN  [COMPUT.CBL]
        LINK:   Loading
        [LNKXCT COMPUT Execution]
        TYPE A NUMBER: 56
        TWICE THAT NUMBER IS: 1.12E2

        EXIT
        @
EXPUNGE Command                                            Page II-141


Function

     The EXPUNGE command erases  all  your  deleted  files  from  disk
     storage.


Hints

     After you expunge your files, you cannot access them  again.   If
     you  have  inadvertently deleted and expunged a file you actually
     need, contact your operator and ask if your files can be obtained
     from the system backup operations.

     Use the EXPUNGE command to stay under your disk storage quota.


Format

     @EXPUNGE (DIRECTORY) dev:<directory>

     dev:           is the name of the file structure  containing  the
                    directory.  If you press the ESC key, or press the
                    RETURN  key,  the  system  uses   your   connected
                    structure and directory.

     <directory>    is the name of the directory you want to  expunge.
                    You must include the brackets.


Operation

     1.  Type EXP and press the  ESC  key;   the  system  prints  UNGE
         (DIRECTORY).

         @EXPUNGE (DIRECTORY)

     2.  If you want to expunge your connected  directory,  press  the
         ESC  key;  and press the RETURN key (or just press the RETURN
         key).  You can type a structure name (dev:) if the  directory
         you  want to expunge is not on your connected structure.  You
         must  have  the  proper  access  privileges.   Type  (or  use
         recognition on) the directory name, and press the RETURN key.
         The system prints the number of pages freed.

         @EXPUNGE (DIRECTORY) <MANUALS>
          [34 PAGES FREED]
         @

Characteristics

     The EXPUNGE command does not change any  program  in  memory  and
     leaves your terminal at TOPS-20 command level.


Restrictions

     You may not expunge a directory to which  you  do  not  have  the
     proper access.

     If you have deleted a file and a program still has it opened, the
     system will not expunge the file.
EXPUNGE Command (continued)                                Page II-142


Examples

     The user expunges his connected directory.

        @EXPUNGE (DIRECTORY)
         [5 PAGES FREED]
        @

     The user tries to expunge a directory to which he does  not  have
     the proper access.

        @EXPUNGE (DIRECTORY) <COHEN>
        ?WHEEL or OPERATOR capability required
        @
FDIRECTORY Command                                         Page II-143


Function

     The FDIRECTORY command prints all the information about a file or
     group  of  files.   No  headings  are  printed  and the output is
     compressed.


Hints

     Giving  the  FDIRECTORY  command  is  exactly  like  giving   the
     DIRECTORY command with the subcommands CRAM (OUTPUT), EVERYTHING,
     and NO HEADING.

     Refer to the DIRECTORY command for  more  information;   you  can
     give any of the DIRECTORY subcommands with FDIRECTORY.


Format

     @FDIRECTORY (OF FILES) filespecs

     filespecs      is a list of the file specifications  about  which
                    you  want  to obtain the information.  If you omit
                    the  file  specifications,   the   system   prints
                    information  about all the files in your connected
                    directory.


Operation

     1.  Type FDIR and press the ESC key;  the  system  prints  ECTORY
         (OF FILES).

         @FDIRECTORY (OF FILES)

     2.  Type (or use recognition on) the  file  specifications,  then
         press  the  RETURN  key.   The  system  prints  the directory
         information.

         @FDIRECTORY (OF FILES) TEST.FOR.*
            <MCKIE>
          TEST.FOR.4;P777752;A10300   1 15(36) 2 18-SEP-75 18:51:14
          18-SEP-75 18:51:27 18-SEP-75 18:51:44 MCKIE MCKIE
         @



Output

     The system lists the files in alphabetical order.  The  following
     information is listed for each file:

     1.  Name, type, generation number,

     2.  Protection number,

     3.  Account number,

     4.  Size (in pages),

     5.  Length (in bytes) and byte size (in parentheses),
FDIRECTORY Command (continued)                             Page II-144


     6.  File retention count,

     7.  The date and time the file was created,

     8.  The date and time the file was last written,

     9.  The date and time the file was last read,

    10.  The user who created the file,

    11.  The user who last wrote the file


     After the entries for the individual files, the system  prints  a
     line  summarizing  the  total  size  (in pages) and number of the
     listed files.

Characteristics

     The FDIRECTORY command does not change any program in memory  and
     leaves your terminal at TOPS-20 command level.


Examples

     The user obtains all the information about  any  files  with  the
     name FILEIO.

     @FDIRECTORY (OF FILES) FILEIO
        <MCKIE>
      FILEIO.EXE.2;P777752;A10300   3 2048(36) 2 20-AUG-75 15:16:25
     20-AUG-75 15:16:25 9-SEP-75 16:12:50 MCKIE MCKIE
        .MAC.55;P777752;A10300   2 1005(36) 2 19-SEP-75 10:54:00 19-
     SEP-75 10:54:06 19-SEP-75 10:54:05 MCKIE MCKIE
        .REL.1;P777752;A10300   1 170(36) 1 16-MAY-75 02:57:16 16-MA
     7-75 02:57:16 16-MAY-75 02:57:18 MCKIE MCKIE

      TOTAL OF 6 PAGES IN 3 FILES
     @
FILCOM Program                                             Page II-145


Function

     The FILCOM program compares two files line by  line  and  outputs
     the differences between them.


Hints

     With FILCOM you may compare both ASCII files (i.e.,  normal  text
     files  and  files  containing  source  programs) and binary files
     (i.e., relocatable binary files and save files).  FILCOM compares
     ASCII  files  line  by line, but it compares binary files word by
     word.

     If you want to list a binary file,  type  the  first  input  file
     specification,  but  do not type a comma or the second input file
     specification.  Be sure that either the input file  specification
     has  a  standard  binary type (listed in Table II-13) or that you
     use the /W switch.


Special Cases

     Binary files are compared word by word, starting at word 0,  with
     the following exception:

     1.  Files with file types .SAV, .LOW, and .SVE are assumed to  be
         executable files and are expanded before comparing.

Format

     @FILCOM

     *output.typ=input1.typ,input2.typ/switches

     output.typ is the name and type of the file that will contain the
                differences between the two input files.

                If you do not give an output file  name,  FILCOM  uses
                the second input file name (input2).  But, if you omit
                the second input file name (refer to input2.typ),  the
                output  file  name  becomes  FILCOM.   If you omit the
                output file type, it is .SCM if the  input  files  are
                ASCII  files,  or  else  .BCM  if  the input files are
                binary  files.   If   you   omit   the   output   file
                specification completely, the system uses TTY:.

     input1.typ is the name and type of the first input file you  want
                to compare.

     input2.typ is the name and type of the second input file you want
                to compare.

                If you omit the name of the second input file,  FILCOM
                uses  the  name  of the first input file.  If you omit
                the type of the second input  file,  FILCOM  uses  the
                type  of the first input file.  To explicitly indicate
                a null type, type a period at the end  of  the  second
                input file name.
FILCOM Program (continued)                                 Page II-146


     switches   are  the  switches  following  the  two   input   file
                specifications.   They  control  the  method  in which
                FILCOM  performs  the  comparison.   All   the   valid
                switches are listed in Table II-13.

                If you do not use the /A, /W,  or  /X  switch,  FILCOM
                chooses  the  mode of comparison by examining the type
                of the input files.  If either one (or  both)  of  the
                input  files  has  one  of the types listed below, the
                files are compared in binary mode;  otherwise they are
                compared in ASCII mode.


                          Binary File Types

               .BAC                     .HGH                    .RMT
               .BIN                     .LOW                    .RTB
               .BUG                     .MSB                    .SAV
               .CAL                     .OVR                    .SFD
               .CHN                     .QUE                    .SHR
               .DAE                     .QUF                    .SVE
               .DCR                     .REL                    .SYS
               .DMP                     .RIM                    .UFD
                                        .XPN

               If a conflict arises in  the  absence  of  defaults  or
               switches,  the  files are assumed to be ordinary binary
               files.


                             Table II-13
                           FILCOM Switches


  Switch  Comparison               Function


   /A     ASCII only     Compares the two input files  in  ASCII  mode
                         (i.e.,  FILCOM  treats  both files as if they
                         contain ASCII characters).   This  switch  is
                         useful  when  the  file specifications do not
                         have standard file types.  Refer to  Appendix
                         B.

   /B     ASCII only     Considers  blank  lines  in  the  comparison;
                         otherwise blank lines are ignored.

   /C     ASCII only     Ignores  comments  (all  text   on   a   line
                         following  a  semicolon)  and spacing (spaces
                         and tabs).  If one file has a line  which  is
                         entirely  a  comment and the position of that
                         line does not correspond to a comment line in
                         the  other  file,  that  line  is output as a
                         difference between the two files.

   /H     ASCII and      Prints a list of FILCOM switches on your 
          binary         terminal.
FILCOM Program (continued)                                 Page II-147


                         Table II-13 (Cont.)
                           FILCOM Switches


  Switch  Comparison               Function


   /nL    ASCII only     Specifies the number of lines that  terminate
                         a  match.  A match occurs when FILCOM finds n
                         successive lines that are the  same  in  both
                         files.   Once FILCOM finds a match, it prints
                         all the differences discovered since the last
                         match.  Then, FILCOM prints the first line of
                         the current match so that you know where  the
                         differences  are located.  If you do not give
                         this switch, FILCOM uses the value 3.

   /nL    Binary only    The  number  n  is  an  octal  number   which
                         specifies  the  lower  limit  where a partial
                         binary comparison will begin.   If  you  also
                         use the /nU switch, FILCOM compares the files
                         only within these predefined limits.

   /Q     ASCII and      Prohibits   FILCOM   from   printing   the  
          binary         actual   differences,   only    ?FILES    ARE
                         DIFFERENT,  if  applicable.   This  switch is
                         useful when Batch control files want to  test
                         for differences, but do not want the log file
                         filled with output.

   /U     ASCII only     Compares the files in update mode.  In update
                         mode,  the  output  file  is the second input
                         file with vertical bars inserted at the  left
                         margin  on  lines  that differ from the first
                         input file.   This  feature  is  useful  when
                         updating  a document because the changes made
                         to the latest edition are flagged with change
                         bars  in the left margin.  The latest edition
                         of the file must be typed as the second input
                         file.

   /nU    Binary only    Specifies the upper  limit  where  a  partial
                         binary  comparison  will stop.  n is an octal
                         number.  Refer to the /L switch.

   /W     Binary only    Compares the two files in binary mode without
                         expanding  the  files  first.  This switch is
                         used to compare two binary  files  that  have
                         non-standard file types.

   /X     Binary only    Expands  executable   (.SAV)   files   before
                         comparing  them  in binary mode.  This switch
                         removes  differences  resulting   from   zero
                         compression.
FILCOM Program (continued)                                 Page II-148


Operation

     1.  Type the program name FILCOM,  then  press  the  RETURN  key.
         When the FILCOM program has started, it prints an asterisk on
         your terminal.

         @FILCOM

         *

     2.  After the asterisk, type a command  comprised  of  an  output
         file,  an  equals  sign,  two  input files, and any necessary
         switches.  Press the RETURN key.  When FILCOM is finished, it
         prints a second asterisk.  If the files are different, FILCOM
         precedes the asterisk with the message %files  are  different
         (if you used the /Q switch, the percent sign is replaced with
         a question mark).

         *DIFFER.FIL=EXPONT.1,EXPONT.2
         %files are different

     3.  After FILCOM prints the second asterisk, you can give another
         command  to  FILCOM.   If  you  want  to  stop FILCOM, type a
         CTRL/C.

         *^C
         @


Output

     ASCII mode
         The output file contains a header consisting of  the  device,
         file  name, type, and creation date of each input file.  This
         header is omitted if you are using update mode, that  is,  if
         you have given the /U switch.

         File 1) DSK:EXPONT.1    created:  1052 22-AUG-1975
         File 2) DSK:EXPONT.2    created:  1155 22-AUG-1975

         Each time  FILCOM  encounters  differences,  it  outputs  the
         number  of  the  file and its differences.  At the end of the
         differences, FILCOM prints a line that is common between  the
         two  files.  Then FILCOM prints four asterisks, the number of
         the second file, and its differences.  Finally, FILCOM prints
         the  common line and fourteen asterisks.  Next, FILCOM prints
         a  second  set  of  differences,  and  so  forth  until   all
         differences  are  printed.   In  the  following example, file
         EXPONT.1 contains the words corresponding to  the  numbers  1
         through  10  and EXPONT.2 contains the words corresponding to
         the numbers  1  through  10,  but  also  includes  the  words
         TWO-AND-A-HALF    and   NINE-AND-A-HALF.    There   are   two
         differences  listed:   the  first  one   is   TWO-AND-A-HALF,
         occurring  in  EXPONT.2,  the  second one is NINE-AND-A-HALF,
         occurring in EXPONT.2.
FILCOM Program (continued)                                 Page II-149


         @FILCOM

         *=EXPONT.1,EXPONT.2
         File 1) DSK:EXPONT.1    created:  1700 25-SEPT-1975
         File 2) DSK:EXPONT.2    created:  1618 25-SEPT-1975

         1)1     THREE
         ****
         2)1     TWO-AND-A-HALF
         2)      THREE
         **************
         1)1     TEN
         ****
         2)1     NINE-AND-A-HALF
         2)      TEN
         **************

         %files are different

         *

         If you give the /U switch, the system prints the second  file
         with  vertical  bars  beside  any  lines that differ from the
         first file.

         @FILCOM

         *=EXPONT.1,EXPONT.2/U
                 ONE
                 TWO
         !       TWO-AND-A-HALF
                 THREE
                 FOUR
                 FIVE
                 SIX
                 SEVEN
                 EIGHT
                 NINE
         !       NINE-AND-A-HALF
         !       TEN

         %files are different

         *

     Binary mode
         The output file contains the same header, but FILCOM compares
         the  two  files  word  by word.  If there is a difference, it
         prints the word from the first file, the word from the second
         file, then the logical exclusive OR of the two words.


         @FILCOM
         *=A.REL,B.REL

         File 1) DSK:A.REL       created:  2221 07-SEPT-1975
                                 File 2) DSK:B.REL created:  1712
         25-SEPT-1975

         000006  000005 000002   000001 000006  000004 000004
         000007  200000 000000   240000 000000  040000 000000

         %files are different

         *
FILCOM Program (continued)                                 Page II-150


Characteristics

     When you start FILCOM,  any  previous  program  is  cleared  from
     memory  and  your  terminal  is  at FILCOM command level.  Type a
     CTRL/C to return to TOPS-20 command level.


Restrictions

     You may not use recognition input in typing a FILCOM command, and
     you  must  use a project-programmer number to reference a file in
     another user's directory.  Refer to  Section  5.3.1  and  Section
     5.10.


Examples

     The user compares his two FORTRAN files and places the output  in
     the file NEW.SCM.

        @FILCOM

        *NEW=ROUND1.FOR,ROUND2.FOR

        %files are different
        *^C
        @

     The user compares two text files, leaving change bars next to new
     and changed lines.  Blank lines are not ignored.

        @FILCOM

        *NEWDOC.TXT=DOC1.TXT,DOC2.TXT/U/B

        %files are different
        *^C
        @

     The user prints the contents of a binary file, SUBRTN.REL.

        @FILCOM

        *PFILE=SUBRTN.REL/B

        %files are different
        *^C
        @PRINT PFILE.BCM
        [LPT:PFILE=/SEQ:1023/LIMIT:176, 1 FILE]
        @
FORDDT Program                                             Page II-151


Function

     The FORTDDT program helps you debug FORTRAN programs.


Hints

     Your object program  must  contain  symbols  to  be  successfully
     debugged  with  FORDDT  -  do not begin your debugging session by
     giving the switch /NOSYMBOLS.


Format

     @DEBUG (FROM) /FORTRAN filespecs
     FORTRAN: name
     MAIN.
     LINK:   Loading
     [LNKDEB FORDDT Execution]

     STARTING FORTRAN DDT

     >command

     filespecs           is   a   list   of   FORTRAN   programs   and
                         subroutines.   If  the  files  have  the type
                         .FOR, you do not have to include the /FORTRAN
                         switch.   If  you  want  to use line numbers,
                         perform  tracing,  include  array   dimension
                         tracing,  or examine DO loops, include /DEBUG
                         and  /COMPILE  switch  in   your   LOAD-class
                         command.

     command             is any valid FORDDT command in Table II-14.


                             Table II-14
                           FORDDT Commands


     ACCEPT variable/mode value
        Changes the value  of  the  specified  variable.   The  mode
        indicates  the format you will use to type the value.  Refer
        to the following list of the valid modes.

                       Modes For ACCEPT Values

     Mode   Meaning                               Example

     A      Left-justified ASCII characters       /MIXED/
            enclosed in slashes. The
            system accepts only the first 
            five characters.

     C      A complex number (two floating        1.25,79.01E-5
            point numbers separated by
            a comma).

     D      A double precision number.            6.2831853072

     F      A floating point number.              126.67

     I      An integer number.                    68
FORDDT Program (continued)                                 Page II-152


                         Table II-14 (Cont.)
                           FORDDT Commands


     Mode   Meaning                               Example


     O      An octal number.                       777777

     R      Right-justified ASCII                 \TRYIT\
            characters enclosed
            in backslashes. The system
            accepts only the first
            five characters.

     S      A symbolic value which uses           PSI(M)
            the current value of the
            variables. If M=3, the system
            uses the value of PSI(3).

     CONTINUE n
        Continues the execution of your program after encountering a
        label  at  which  you  have  set  a  pause.   The  execution
        continues until the program finishes or  encounters  another
        pause.  If you want to ignore this pause a certain number of
        times, include a number after the  CONTINUE  command.   Then
        the  system resumes execution of the program until either it
        encounters this pause n  times  or  until  it  encounters  a
        different pause, whichever comes first.

     GROUP n list
        Sets up a string of variables which a TYPE command can refer
        to  by number rather than by name.  For example, if you give
        the command:  GROUP 1 A,B,C, you can then give  the  command
        TYPE 1 which is equivalent to TYPE A,B,C.  The number n is a
        group number from 1 to 8 and list  is  a  list  of  variable
        names separated by commas.

     LOCATE symbol
        Lists the modules in which a given symbol is  defined.   You
        may  then  give the name of this module as an argument to an
        OPEN command.  The  symbol  n  can  be  a  variable,  array,
        statement  label,  #  followed  by  a line number, or FORMAT
        statement number.  If you want to locate a line  number,  be
        sure  to  include  a /DEBUG switch in the LOAD-class command
        that loads the program.

     MODE list
        Defines the default  formats  in  which  FORDDT  prints  the
        values  of  all variables.  If you give more than one value,
        they must be separated by commas.  With more than  one  mode
        set,  the  system  types out the value of a variable once in
        each mode.  The modes are:

              Mode            Meaning

              F               Floating point
              D               Double precision
              C               Complex
              I               Integer
              O               Octal
              A               ASCII (left-justified)
              R               RASCI (right-justified)
FORDDT Program (continued)                                 Page II-153


                         Table II-14 (Cont.)
                           FORDDT Commands


        For example, the command MODE F,A would  cause  the  command
        TYPE  X  to  print  the value of X in floating point format,
        then in left-justified ASCII format.

     OPEN name
        Opens  a  subprogram  so  that  you   may   manipulate   the
        subprogram's  local  variables.  When you open a subprogram,
        the main program or the subprogram you previously opened  is
        automatically  closed;  you may access only global variables
        and  those  variables  defined  within  the  currently  open
        subprogram.   If you do not specify a name, the system opens
        the main program.

     PAUSE label
        Causes FORDDT to temporarily stop execution of your  program
        at  the specified label.  You may resume execution by giving
        the CONTINUE command.  You have up to 10 pauses set  at  one
        time.  The label may be a statement label, a # followed by a
        line number, or a routine entry point name.  If you want  to
        pause  at  a line number, be sure to include a /DEBUG switch
        in the LOAD-class command that loads the program.

     REMOVE label
        Removes a pause at the specified label.  If you do not  give
        a  label  and  type  the  complete  command name, the system
        removes all pauses.  The label may be a statement label, a #
        followed by a line number, or a routine entry point name.

     START label
        Starts your program at the specified label which  can  be  a
        program  name  or  a # followed by a line number.  If you do
        not type a label (or if you type a program name), the system
        starts  execution at the beginning of the program.  Once you
        have started your program, you may return to FORDDT  command
        level  by encountering a breakpoint or by typing two CTRL/Cs
        followed by a DDT command.  If you want to start at  a  line
        number,  be sure to include a /DEBUG switch in the LOAD-call
        command that loads the program.

     STOP
        Terminates the execution of your program, closes all  files,
        and returns you to TOPS-20 command level.

     TYPE list
        Prints the value of one or more variable or  array  elements
        on your terminal.  The variable list is one or more variable
        names, array names, or group numbers.  You  must  precede  a
        group number with a slash.  If you do not type any arguments
        to the TYPE command, the system uses the arguments you  gave
        in the last TYPE command.

        The MODE command determines how the values are printed;   if
        you do not give a MODE command, the system prints all values
        in floating point form.

     WHAT
        Prints a list of groups and modes.
FORDDT Program (continued)                                 Page II-154


Operation

     1.  Type DEBU and press the ESC key;  the system prints G (FROM).

         @DEBUG (FROM)

     2.  If the source file specifications do  not  contain  the  file
         type  .FOR,  type  the  /FORTRAN  switch  and  leave a space;
         otherwise,  type   (or   use   recognition   on)   the   file
         specification.   Include  the /DEBUG and /COMPILE switches if
         they are necessary.  The system will compile the sources  (if
         necessary),  load  them  into  memory along with FORDDT, then
         transfer control to FORDDT.

         @DEBUG (FROM) MORPAY
         FORTRAN: MORPAY
         MORPAY.
         LINK:   Loading
         [LNKDEB FORDDT Execution]

         STARTING FORTRAN DDT

         >>

     3.  Once the system prints the double angle bracket, you  are  at
         FORDDT  command level and may give any of the commands listed
         in the preceding table.  In the example, the user  gives  the
         START command which starts execution of his program.

         >>START

         Once you have started your program, you may return to  FORDDT
         command  level  by encountering a breakpoint or by typing two
         CTRL/Cs followed by a DDT command.

Characteristics

     The DEBUG command loads your FORTRAN program  into  memory  along
     with  FORDDT,  thereby  clearing  any  program from memory.  Your
     terminal is left at FORDDT command level.


Restrictions

     You may use FORDDT to debug only FORTRAN programs.


Examples

     The user debugs his FORTRAN program.

     @DEBUG (FROM) MORPAY                  !Load the program with FORDDT
     LINK:   Loading
     [LNKDEB FORDDT Execution]

     STARTING FORTRAN DDT

     >> PAUSE 10                           !Pause at statement 10

     >> PAUSE 18                           !and at statement 18

     >>START                               !Start the program
     How much is the loan? 2500.           !Type an amount
FORDDT Program (continued)                                           Page II-155


     What is the interest rate? 12.        !Type an interest rate
     How long (in years) is the loan? 2.   !The loan duration
     The monthly payment is: $             117.6836900
     [Interest factor:                     21.1433850]


     PAUSE AT 10 IN MAIN PROGRAM           !Execution reached statment 10

     >>CONTINUE                            !Continue execution

       1    25.00   92.68    2407.32
     PAUSE AT 18 IN MAIN PROGRAM           !Now statement 18

     >> REMOVE 10                          !Remove the pause at 10

     >> C                                  !Abbreviated continue
       2    24.07   93.61    2313.71
     PAUSE AT 18 IN MAIN PROGRAM

     >> TYPE BALANC                        !Type the value of balance

     BALANC  =    2313.706

     >> TYPE PP                            !And the principal payment

     PP      =    93.61053

     >> C                                  !Continue execution

       3    23.14   94.55    2219.16
     PAUSE AT 18 IN MAIN PROGRAM

     >> GROUP 1,BALANC,PP,I                !Set up a group 1 containing
                                            BALANC, PP, and I, the
                                            payment number
     >> MODE F,I                           !Set the mode as floating
                                            point, then integer

     >> PAUSE 18 TYPING 1                  !Type the values in group 1
                                            whenever the statement 18
                                            is encountered

     >> WHAT                               !Print the status of FORDDT

     OPEN SECTION: MAIN PROGRAM

     GROUP   AFTER   PAUSE
     1       0       18

     GROUP 1:        BALANC,PP,I

     NO ARRAY SPECIFICATIONS
     >> C                                  !Continue execution

       4    22.19   95.49    2123.67
     PAUSE AT 18 IN MAIN PROGRAM

     BALANC  =    2123.667
             =  18860070242
FORDDT Program (continued)                                 Page II-156


     PP      =    95.49210
             =  18219524006

     I       =
     %FRSAPR Floating underflow            PC= 407713
      0.0000000
             =  4                          !When you print an integer
                                            value such as I in a
                                            floating point format.
                                            FORDDT issues a warning
     >> ACCEPT BALANC/F 0.0                !Change the floating point
                                            value of BALANC to 0.
     BALANC  =   0.0000000

     >> C                                  !Continue execution

       5     0.00    0.00       0.00
     FINAL PAYMENT IS: $   0.00
     TOTAL PRINCIPAL IS: $   376.33
     TOTAL INTEREST IS: $    94.40
     THE END                               !The program ends

     END OF EXECUTION
     CPU TIME: 1.76  ELAPSED TIME: 12.72
     EXIT
     @
FORTRAN Compiler                                           Page II-157


Function

     The FORTRAN compiler produces object programs from FORTRAN source
     programs.


Hints

     To run a FORTRAN program:

     1.  Enter your source program into a file (by using EDIT).

     2.  Give the EXECUTE command to compile,  load,  and  start  your
         program.

     Use the FORDDT program to debug FORTRAN programs.

     If you have a main program and assorted subroutines that required
     special   loading,   refer  to  Chapter  8  which  describes  the
     LOAD-class commands.


Operation

     1.  Enter your program into a file using EDIT.

         @CREATE (FILE) SMALL.FOR
         Input: SMALL.FOR.1
         00100        TYPE 101
         00200   101  FORMAT (' THIS IS A MINI FORTRAN PROGRAM.')
         00300        STOP
         00400        END
         00500   $
         *E

         [SMALL.FOR.1]
         @

     2.  Compile, load, and start your program by giving  the  EXECUTE
         command.

         @EXECUTE (FROM) SMALL.FOR
         FORTRAN: SMALL
         MAIN.
         LINK:   Loading
         [LNKXCT SMALL Execution]
         THIS IS A MINI FORTRAN PROGRAM.
         STOP

         END OF EXECUTION
         CPU TIME:  0.08 ELASPED TIME:  0.86
         EXIT
         @

Characteristics

     The LOAD-class commands run the  FORTRAN  compiler  to  translate
     your  FORTRAN  source  program,  thereby  clearing  any  previous
     program from memory.  Depending on  the  operation  you  request,
     your terminal may or may not be left at TOPS-20 command level.
FORTRAN Compiler (continued)                               Page II-158


Examples

     The user executes a FORTRAN program.

        @EXECUTE (FROM) ADDTWO.FOR      !Give the EXECUTE command
        FORTRAN: ADDTWO
        MAIN.
        LINK:   Loading
        [LNKXCT ADDTWO Execution]
        TYPE TWO NUMBERS.
        23 45                           !Type two numbers
        ADDING      23.0000000 TO     45.0000000 GIVES    68.0000000

        END OF EXECUTION
        CPU TIME: 0.13 ELAPSED TIME: 0.72
        EXIT
        @

     The user compiles a FORTRAN program.

        @COMPILE (FROM) MORPAY.FOR
        FORTRAN: MORPAY
        MAIN.
        @

     The user combines three source programs  to  produce  one  object
     program (C.REL), then loads the object program into memory.

        @LOAD (FROM) A+B+C
        FORTRAN: A
        MAIN.
        LINK:   Loading

        EXIT
        @

     The user compiles a main program (COMP) and its  two  subroutines
     (ADDEM and DIFFER), then loads them into memory and starts them.

        @EXECUTE (FROM) COMP,ADDEM,DIFFER  !Give the EXECUTE command
        FORTRAN: COMP
        MAIN.
        FORTRAN: ADDEM
        ADDEM
        FORTRAN: DIFFER
        DIFFER
        LINK:   Loading
        [LNKXCT COMP Execution]            !Execution starts
        TYPE TWO NUMBERS: 78 56            !Type two numbers
        THE SUM IS:     134.0000000
        THE DIFFERENCE IS:      22.0000000
        STOP

        END OF EXECUTION
        CPU TIME: 0.14 ELAPSED TIME: 0.63
        EXIT
        @
GET Command                                                Page II-159


Function

     The GET command clears memory, then loads an executable program.


Hints

     The only type of program that you may place in  memory  with  the
     aid  of  this  command  is  an executable program.  To produce an
     executable program, first give the LOAD command to translate  the
     program  and  load  it into memory, then give the SAVE command to
     save the executable program in a file with the type .EXE.   Thus,
     you will normally specify a file with the type .EXE when you give
     the GET command.

     After issuing the GET command,  you  may  start  the  program  by
     giving  the START command.  You may also merge another program in
     memory by giving the MERGE command.

     You can give an INFORMATION (ABOUT)  MEMORY-USAGE  command  after
     the  GET  command  to  find  out  which memory pages comprise the
     program.


Format

     @GET (PROGRAM) filespec

     filespec  is the file specification of the  file  containing  the
               executable  program.  If you do not specify a type, the
               system assumes it is .EXE.


Operation

     1.  Type GET and press the ESC key;  the system prints (PROGRAM).

         @GET (PROGRAM)

     2.  Type (or use recognition on) the  file  specification;   then
         press  the  RETURN  key.  Once your program is in memory, the
         system prints an @.

         @GET (PROGRAM) RTRANS.EXE.1
         @

Characteristics

     The GET command:

        Clears memory, then inserts a new  program,  thereby  clearing
        any previous program from memory.

        Leaves your terminal at TOPS-20 command level.


Examples

     The user places the program DIFFER.EXE.2 in memory.

        @GET (PROGRAM) DIFFER.EXE.2
        @
HELP Program                                               Page II-160


Function

     The HELP program prints information about programs.


Hints

     You can get information about most system programs by  using  the
     HELP program.


Format

     @HELP name

     name           is the name of the  program  for  which  you  need
                    information.   The  name is comprised of up to six
                    alphanumeric characters.  If you want  a  list  of
                    programs for which you can obtain information, use
                    an asterisk in place of name.


Operation

     1.  Type HELP and leave a space.

         @HELP

     2.  Type the name of the program or an asterisk, then  press  the
         RETURN key.  The system prints the information.

         @HELP EDIT

     3.  If you want to stop the printout, type two CTRL/Cs.


Errors

     1.  If the system does not have any information on the particular
         program, it prints the message:

         %No info on "name"

         where name is the name of the program which you typed.


Characteristics

     When you run the HELP program, any previous program in memory  is
     cleared and your terminal is at TOPS-20 command level.


Examples

     The user prints information about EDIT.

        @HELP EDIT
        SUMMARY OF EDIT COMMANDS
        .
        .
        .
        @
INFORMATION Command                                        Page II-161


Function

     The INFORMATION command prints information about  various  system
     and job parameters.


Hints

     The SET and TERMINAL commands change many of the  parameters  you
     can examine with the INFORMATION command.


Format

     @INFORMATION (ABOUT) parameter modifier

     parameter      is one of the parameters listed in  the  following
                    table.

     modifier       exists  for  some   parameters   and   selects   a
                    particular aspect of a parameter.


                             Table II-15
                        INFORMATION Parameters


       AVAILABLE category
          Prints a list of the available system devices and all file
          structures  that  are  presently  on  line  (if  you  type
          DEVICES, or leave category blank)  or  available  terminal
          lines (if you type LINES).

       COMMAND-LEVEL
          Prints    the    status    of    the    ERROR-RETRY    and
          LATE-CLEAR-TYPEAHEAD parameters.

       DISK-USAGE (OF DIRECTORY) dev:<directory>
          Prints the number of pages  allocated,  the  working  page
          limit,  and  the  permanent  page  limit  of the specified
          directory.  Also prints the number of pages  available  in
          system  storage.   If  you  default the directory field or
          leave it blank, the system prints the information for your
          connected directory.

       ERRORS
          Prints information about disk and drum errors.

       FILE-STATUS (OF) jfn
          Prints your connected directory name and for the specified
          JFN (or each JFN if you leave jfn blank) prints the:

          1.  JFN number,

          2.  File specification, and

          3.  Access which opened the file.
INFORMATION Command (continued)                            Page II-162


                         Table II-15 (Cont.)
                        INFORMATION Parameters


          The access describes the reason for opening the  file  and
          its access condition.  The reasons for opening a file are:

          APPEND     -for appending to the file
          EXECUTE    -for executing the file
          NOT OPENED -you have identified the file in some way,  but
                      not actually accessed its contents yet
          READ       -for reading the file
          WRITE      -for writing the file

          The access conditions are:

          DATA ERROR -there was an error accessing the file
          EOF        -the file pointer is at the end of the file

          If appropriate, the file's byte pointer is  printed  along
          with  its  byte size.  This represents the number of bytes
          that have been transferred to or from the file.

          The system also prints a list  of  the  devices  currently
          assigned to your job.

       JOB-STATUS
          Prints your job number, user name, connected structure and
          directory  (if  different  from your logged-in directory),
          and terminal number.

       LOGICAL-NAMES (OF) identifier
          Prints the current logical  names  and  their  definitions
          that  are  defined for your job (if you use the identifier
          JOB or default the field), for the system (if you use  the
          identifier  SYSTEM),  or  for both your job and the system
          (if you use the identifier ALL).

       MEMORY-USAGE
          Prints the number of memory pages assigned to you  at  the
          current  TOPS-20 command level, the location and length of
          the entry vector, and on each succeeding line:

          1.  The pages occupied by a file or program.

          2.  A file specification  if  the  pages  are  shared,  or
              PRIVATE if they are private.

          3.  The page numbers of shared pages (if a page is mapped,
              the  system  prints the file specification to which it
              is mapped).

          4.  The access of the pages.  The permitted accesses are:

              R       -Read access
              W       -Write access
              CW      -Copy-on-write access, or
              E       -Execute access
INFORMATION Command (continued)                            Page II-163


                         Table II-15 (Cont.)
                        INFORMATION Parameters


       MONITOR-STATISTICS
          Prints  a  list  of   monitor   and   system   performance
          statistics.

       PROGRAM-STATUS
          Prints the amount of central processor time you have  used
          since  you  have logged in to the system and the amount of
          time  you  have  used  in  the  TOPS-20  command  language
          interpreter    (TOPS-20).     The    system   prints   SET
          UUO-SIMULATION (FOR PROGRAM) if the Compatibility  Package
          will  simulate  TOPS-10 monitor calls when they are issued
          by    the    program.     The    system     prints     SET
          CONTROL-C-CAPABILITY   (OF  PROGRAM)  if  the  program  is
          allowed to assign CTRL/C  interrupts.   Last,  the  system
          prints  a  summary of the status of each process belonging
          to the current command level.

       PSI-STATUS
          Prints information about the pseudo-interrupt system which
          includes  whether  the  PSI system if ON or OFF, the level
          table  mask,  the  channel  table  mask,  the  levels   in
          progress,  the  numbers  of  the enabled channels, and the
          numbers of the waiting channels.

       SPOOLED-OUTPUT-ACTION
          Tells whether your job spools output IMMEDIATELY or it  is
          DEFERRED to when you log out.

       STRUCTURE (NAME) name:
          Prints the current status of a particular  structure  that
          is  mounted.   A  carriage  return after (NAME) prints the
          status of your currently connected structure.  This status
          output  includes  the mount count (the number of users who
          have given the SMOUNT command  for  this  structure),  the
          open  file  count  (the  number  of  file openings on this
          structure), and the number of disk units in the  structure
          In addition, a list is printed of the users who have given
          the SMOUNT command for this structure, the users who  have
          given the ACCESS command for a directory on this structure
          and the users who have given the  CONNECT  command  for  a
          directory  on  this  structure.   If  a  structure  is not
          mounted, the message:  ?Structure is not  mounted  or  ?No
          such  device  is  printed  on your terminal.  Also, if the
          operator has specified that a structure is unavailable for
          general  use,  you  will  receive  the  following message.
          UNAVAILABLE FOR MOUNTING.  The wildcard  character  *  can
          also be used.  INFORMATION(ABOUT) STRUCTURE (NAME) * lists
          the  current  status  of  all  the  structures  that   are
          presently mounted.
INFORMATION Command (continued)                            Page II-164


                         Table II-15 (Cont.)
                        INFORMATION Parameters


       SUBSYSTEM-STATISTICS
          Prints the name of subsystems, the  total  run  time  they
          have  incurred,  the number of page faults per second they
          cause, the number of times they went into  a  wait  state,
          and their working-set size (in pages).

       SYSTEM-STATUS
          Tells whether the operator is in attendence, logging in on
          remote terminals is allowed, logging in on local terminals
          is allowed, logging in on pseudo-teletypes is allowed, and
          if entries are being made in the fact file.

       TAPE-PARAMETERS
          Prints the current  default  tape  density  (in  bits  per
          inch),  tape parity (ODD or EVEN), format (ANSII-ASCII, or
          CORE-DUMP, INDUSTRY-COMPATIBLE,) and record length.

       TERMINAL-MODE
          Prints information about your terminal type, speed,  links
          (receiving  or  refusing), advice (receiving or refusing),
          page mode (yes or  no),  length  (decimal  number),  width
          (decimal  number),  lowercase  (yes  or no), raise (yes or
          no), flag (yes or no), indicate (yes or no), formfeed (yes
          or   no),  tabs  (yes  or  no),  immediate  (yes  or  no),
          fullduplex or halfduplex.  Refer to the  TERMINAL  command
          and Chapter 9 for more information about these parameters.

       VERSION
          Prints the system name, the date it was installed, and the
          version  of  the  command language interpreter (EXEC), and
          the name and version of the program now in memory.


Operation

     1.  Type INFO and press the ESC key;  the system  prints  RMATION
         (ABOUT).

         @INFORMATION (ABOUT)

     2.  Type (or use recognition on)  the  parameter  name.   If  the
         parameter does not have a qualifier, press the RETURN key and
         the system mprints the information.

         @INFORMATION (ABOUT) TAPE-PARAMETERS
          SET TAPE DENSITY 800
          SET TAPE PARITY ODD
          SET TAPE FORMAT ANSI-ASCII
          SET TAPE RECORD-LENGTH 80
         @

     3.  If the parameter has a qualifier, type  (or  use  recognition
         on) the qualifier, press the RETURN key and the system prints
         the information.  You may default  the  qualifier  by  simply
         omitting it.

         @INFORMATION (ABOUT) AVAILABLE LINES
          0-2, 4-10, 12-14, 16-17, 25, 30-41, 44-54, 56-101, 107-125
         @
INFORMATION Command (continued)                            Page II-165


Characteristics

     The INFORMATION command does not change the  contents  of  memory
     and leaves your terminal at TOPS-20 command level.


Examples

     The user lists the available device.

        @INFORMATION (ABOUT) AVAILABLE DEVICES
        Devices available to this job:
         DSK, PS, ADMIN, MTA0-2, LPT, LPT0, CDR, PCDR0, FE1-3, PTY13-35
         NUL
        Devices assigned to/opened by this job: TTY75
        @

     The user prints information about command level.

        @INFORMATION (ABOUT) COMMAND-LEVEL
         SET NO ERROR-RETRY
         SET NO LATE-CLEAR-TYPEAHEAD
        @

     The user finds out about his disk usage.

        @INFORMATION (ABOUT) DISK-USAGE (OF DIRECTORY)
         431 PAGES ASSIGNED, 421 IN USE, 10 DELETED
         2500 WORKING, 1300 PERMANENT ALLOWED
         26249 SYSTEM PAGES FREE
        @

     The user gets information about his file-status.

        @INFORMATION (ABOUT) FILE-STATUS (OF JFN)

         Connected to <MCKIE>.  JFNS:
         4   OUFILE.RNO.2               Read, Write, 0,(7)
         3   <SUBSYS>VTED.EXE.34        Read, Execute
         1   <SYSTEM>EXEC.EXE,282       Read, Execute

         DEVICES ASSIGNED TO/OPENED BY THIS JOB: TTY110

        @

     The user inquires about his job status.

        @INFORMATION (ABOUT) JOB-STATUS
         Job 23, User ESTEY, PS:<PORADA>, Account 10300, TTY75
        @

     The user prints the definitions of his logical names.

        @INFORMATION (ABOUT) LOGICAL-NAMES (OF)
        LIB:=> <FORTRAN-LIBRARY>
        @
INFORMATION Command (continued)                            Page II-166


     The user prints information about the contents of memory.

        @INFORMATION (ABOUT) MEMORY-USAGE

         497. Pages, Entry vector loc 435 len 2

        0       Private  R, W, E
        1-10    @ <SUBSYS>VTED.EXE,34  4-13   R, CW, E
        20-767  @ OUFILE.RNO.4  0-747   R, W, E
        @

     The user prints information about his program-status.

        @INFORMATION (ABOUT) PROGRAM-STATUS
         Used 0:00:20 in 0:06:53
         TOPS-20 0:00:07.6
         SET UUO-SIMULATION (FOR PROGRAM)
         SET CONTROL-C CAPABILITY (OF PROGRAM)
         => Fork 1:  ^C from Running at 700260, 0:00:00.3
        @

     The user finds out about the state of the pseudo-interrupt
     system.

        @INFORMATION (ABOUT) PSI-STATUS
         PSI is ON, LEVTAB=464, CHNTAB=467
         LEVELS IN PROGRESS = NONE
         CHANNELS ENABLED = 0, 1
         CHANNELS WAITING = NONE
        @

     The user inquires about the status of structure ADMIN:.

        @INFORMATION (ABOUT) STRUCTURE (NAME) ADMIN:
        Status of structure ADMIN:
        Mount count: 3, open file count: 0, units in structure: 1
        Domestic
        Users who have SMOUNTed ADMIN: HURLEY, ESTEY, HELLIWELL
        Users ACCESSing ADMIN: HURELY, HELLIWELL
        Users CONNECTed to ADMIN: ESTEY
        @

     The user gets the system status.

        @INFORMATION (ABOUT) SYSTEM-STATUS
         OPERATOR IS NOT IN ATTENDANCE
         REMOTE LOGINS ALLOWED
         LOCAL LOGINS ALLOWED
         PSEUDO-TERMINAL LOGINS ALLOWED
         CONSOLE TERMINAL LOGIN ALLOWED
         FACT FILE ENTRIES ARE ENABLED
        @

     The user gets information about tape parameters.

        @INFORMATION (ABOUT) TAPE-PARAMETERS
         SET TAPE DENSITY 1600
         SET TAPE PARITY ODD
         SET TAPE FORMAT CORE-DUMP
         SET TAPE RECORD-LENGTH 512
        @
INFORMATION Command (continued)                            Page II-167


     The user prints information about his terminal mode.

        @INFORMATION (ABOUT) TERMINAL-MODE
         TERMINAL LA36
         TERMINAL SPEED 300
         RECEIVE LINKS
         REFUSE ADVICE
         TERMINAL NO PAGE
         TERMINAL LENGTH 66
         TERMINAL WIDTH 132
         TERMINAL LOWERCASE
         TERMINAL RAISE
         TERMINAL NO FLAG
         TERMINAL INDICATE
         TERMINAL NO FORMFEED
         TERMINAL NO TABS
         TERMINAL NO IMMEDIATE
         TERMINAL FULLDUPLEX
        @
LOAD Command                                               Page II-168


Function

     The LOAD command places one  or  more  object  files  in  memory,
     forming a runnable program.


Hints

     Having loaded a runnable program,  you  may  then  start  it  (by
     giving  the START command) or save it on disk (by giving the SAVE
     command).

     The INFORMATION (ABOUT) MEMORY-STATUS is useful for checking  the
     size and placement of your program in memory.

     The LOAD command runs  the  LINK  program.   Refer  to  the  LINK
     Reference Manual for more information on this program.

     If you intend to run the program often, you should use, in order,
     the  LOAD,  SAVE  and  RUN commands.  (You will find this process
     faster than loading the program each time you run it.)


Special Cases

     If you give only LOAD-command switches as  arguments  to  a  LOAD
     command,  the  system  appends the arguments you gave in the last
     LOAD-class command that contained a file  specification  or  LINK
     switch,  then executes the command.  If there are no arguments to
     recall, the system prints the message ?No saved arguments.  Refer
     to  Section  8.3.4  which describes the manner in which arguments
     are recalled.

     The system will update the object file if it is  older  than  any
     one  of  the  corresponding  source  files.  Suppose you give the
     command:

     @LOAD (FROM) NXTLAT.FOR

     If NXTLAT.REL does not exist, or if it is  older  than  the  most
     recent  NXTLAT.FOR  (i.e.,  it  has a write date before the write
     date of NXTLAT.FOR),  then  the  system  compiles  NXTLAT.FOR  to
     produce  an  up-to-date  NXTLAT.REL.  After producing NXTLAT.REL,
     the system loads it into memory.  Refer to  Section  8.3.3  which
     describes the manner in which object files are updated.


Format

     @LOAD (FROM) sources object,sources object,...

     sources        is one or more source file specifications preceded
                    and/or  followed  by  switches.  You must separate
                    the source files with plus signs.   No  spaces  or
                    tabs  are allowed.  If you do not give a file type
                    in a file specification, the system  looks  for  a
                    source  file with one of the standard types listed
                    in  Table  8-1.   Refer  to  Section  8.3.2  which
                    describes more about how the system selects a file
                    when you do not specify its file type.

     a space        separates the source file specifications from  the
                    object  file specification.  If you do not give an
                    object file specification,  you  do  not  have  to
                    leave a space.
LOAD Command (continued)                                   Page II-169


     object         is an object file specification.  If  you  do  not
                    give an object file specification, the system uses
                    the name of the last  file  in  the  corresponding
                    sources and the type .REL.

     name.typ       you may store any portion  of  the  command  in  a
                    file.   That  portion of the command is included -
                    just as  if  you  typed  it  on  your  terminal  -
                    whenever you type an @ followed by the name of the
                    file.  You may use recognition in typing the  file
                    specification,  but  the  commands within the file
                    may not use recognition.  Refer to  Section  8.3.5
                    which describes how the system takes commands from
                    an indirect file.

     switches       you may use recognition to help you type a  switch
                    and  any file specification that is an argument to
                    a switch.  If you place a switch before a  set  of
                    sources,  the  switch  applies to all the files in
                    that set of sources;  if you place a switch  after
                    a  file  specification  in  a  set of sources, the
                    switch applies to just  that  file.   Table  II-16
                    lists  the switches that are useful with the DEBUG
                    command.


                             Table II-16
                        LOAD Command Switches


       /ALGOL
          Compiles the file using ALGOL.  This is  the  default  for
          sources with the extension .ALG.

       /BINARY
          Generates a binary (object) file for each source  program.
          Normally the system generates object files, so this switch
          is useful in reversing a global /NOBINARY switch.

       /COBOL
          Compiles the program using COBOL.  This is the default for
          sources with the extension .CBL.

       /COMPILE
          (or an object file older than any one of its source files)
          Compiles  the  source  program  regardless  of whether the
          object file is up-to-date or not.  The  /NOCOMPILE  switch
          causes compilation only if the object file is out-of-date;
          the /RELOCATABLE  switch  causes  the  system  to  use  an
          existing  object  file, regardless of its date.  Normally,
          the system assumes the action of the /NOCOMPILE switch.

       /CREF
          Creates a file containing cross-reference information  for
          each source file you compile.  The name of the file is the
          name of the last source file and the file  type  is  .CRF.
          Give  the CREF command to run the CREF program which reads
          this file and prints a listing.  If the object file is not
          out  of  data,  include  the  /COMPILE switch in your LOAD
          command.  When a source file contains a COBOL program, the
          system  produces  a  listing  file  (the file type is .LST
          instead   of   .CRF)   containing   the    cross-reference
          information;   give  the PRINT command (instead of CREF to
          print the .LST file.
LOAD Command (continued)                                   Page II-170


                         Table II-16 (Cont.)
                        LOAD Command Switches



       /DDT
          Loads the DDT debugger along with the program.

       /DEBUG
          Provides additional debugging information  in  the  object
          program (FORTRAN only).

       /FORTRAN
          Compiles the file using FORTRAN.  This is the default  for
          sources with the extension .FOR or a non-standard type.

       /LIBRARY
          Loads only the routines from  the  object  file  that  are
          called  by  the  main  program or another subroutine.  The
          system libraries are always searched.

       /LIST
          Prints a listing of each program you compile.  The listing
          name  is  the  name  of  the last source file.  Unless you
          specify this switch, the system does not print  a  listing
          of  your program.  If you also include a /CREF switch, the
          system ignores the /LIST switch.

       /MACRO
          Assembles the file using MACRO.  This is the  default  for
          sources with the extension .MAC.

       /MAP:name.typ
          Produces loader maps during the loading process and stores
          them in the file name.typ.  If you do not give a file name
          and type, the system uses nnnLNK.MAP, where  nnn  is  your
          job  number.   The  /MAP  switch  applies  to  the  entire
          command, not to just one file.   If  you  use  recognition
          input in typing the file specification, the system creates
          a new generation of the recognized file.

       /NOBINARY
          Inhibits the generation of a binary (object)  file.   This
          switch  is  useful along with the /CREF or /LIST switch to
          produce listings without additionally producing an  object
          file.

       /NOCOMPILE
          Compiles a file only if  it  is  out-of-date.   Since  the
          system normally does this, the /NOCOMPILE switch is useful
          for turning off a global /COMPILE or /RELOCATABLE switch.

       /NODEBUG
          Omits  loading  debugging  information  with  the  program
          (FORTRAN only).

       /NOLIST
          Inhibits the generation of a listing file.  Normally,  the
          system does not generate a listing file.


       /NOOPTIMIZE
          Inhibits the generation of optimized object files (FORTRAN
          programs only).
LOAD Command (continued)                                   Page II-171


                         Table II-16 (Cont.)
                        LOAD Command Switches


       /NOSEARCH
          Loads all routines in a file, regardless  of  whether  the
          routines  are  called  by  another  module.  Normally, the
          system loads all the routines in an object file, therefore
          this  switch  is  useful  in  reversing  a  global /SEARCH
          switch.

       /NOSYMBOLS
          Inhibits loading symbols with the program.  Normally,  the
          system loads symbols with all programs.

       /OPTIMIZE
          Produces optimized object files (FORTRAN programs only).

       /RELOCATABLE
          Uses the specified object files, even though they  may  be
          out-of-date,  or  have  extensions  other  than .REL.  For
          example,  the  command  LOAD  FILE.FOR/REL   would   cause
          FILE.FOR  to be treated as a relocatable file and load it.
          It would normally be regarded as a FORTRAN source file.

       /SEARCH
          Is identical to the /LIBRARY switch.

       /SYMBOLS
          Loads the  program  with  its  appropriate  symbol  table.
          Normally, the system loads all programs with symbols.


Operation

     1.  Type LOAD and press the ESC key;  the system prints (FROM).

         @LOAD (FROM)

     2.  Type  (or  use   recognition   on)   the   sets   of   source
         specifications,  object  specifications  and switches.  Press
         the RETURN key.  The system loads the specified files.

         @LOAD (FROM) TEST.FOR,SUB1.FOR
         FORTRAN: TEST
         FORTRAN: SUB1
         LINK:   Loading
         @


Errors

     1.  If you give a command and one of the source files is missing,
         the  system  continues  processing the command and prints the
         message:

         %SOURCE FILE MISSING - name.typ

         where name.typ is the name and type of the source file.
LOAD Command (continued)                                   Page II-172


Characteristics

     The LOAD command runs the  LINK  program,  thereby  clearing  any
     previous program from memory and leaving your terminal at TOPS-20
     command level.


Examples

     The user loads a simple MACRO program.

        @LOAD (FROM) TRANSL.MAC
        MACRO:  TRANSL
        LINK:   Loading

        EXIT
        @

     The user combines three FORTRAN programs into  one  main  program
     and includes the entire subroutine package TYPE2.

        @LOAD (FROM) 1+2+3,TYPE2
        FORTRAN: 1
        MAIN.
        FORTRAN: TYPE2
        TYPE2
        LINK:   Loading

        EXIT
        @

     The user loads a MACRO  program  and  obtains  a  cross-reference
     listing.   Note that you must use the /CREF switch to receive the
     listing.

        @LOAD (FROM) /CREF INIT.MAC+CONTRL.MAC+SUBS.MAC
        MACRO:  INIT
        MACRO:  CONTRL
        MACRO:  SUBS
        LINK:   Loading

        EXIT
        @

     The user loads his programs using an indirect file.

        @LOAD (FROM) @TYP.CMD
        FORTRAN: 1
        MAIN.
        FORTRAN: TYPE2
        TYPE2
        LINK:   Loading

        EXIT
        @

     The user loads his FORTRAN programs, but loading the library file
     TYPE2 in library mode.

        @LOAD (FROM) 1+2+3,TYPE2/LIBRARY
        LINK:   Loading

        EXIT
        @
LOGIN Command                                              Page II-173


Function

     The LOGIN command validates you as a user, creates your job,  and
     begins  charging  your  account.   After  creating  your job, the
     system executes the commands stored in the  files  LOGIN.CMD  and
     COMAND.CMD if they have been created.  Refer to Section 3.2.4.


Special Cases

     If you are allowed to have alphanumeric accounts, the system uses
     the  guide word (ACCOUNT) and you may type an alphanumeric string
     for an account.

Hints

     Obtain a valid user name, password, and account number from  your
     system manager.

     You must type a CTRL/C before you can give the LOGIN command.

     After the CTRL/C and before giving the  LOGIN  command,  you  may
     give a TERMINAL command to tell the system which type of terminal
     you have.  You can also give the commands listed in  Section  2.3
     without being logged in.


Format

     @LOGIN (USER) user name (PASSWORD) password (ACCOUNT #) account

     user name      is  your  user  name  (comprised  of  up   to   39
                    alphanumeric characters, including hyphen).

     password       is the password associated with  your  user  name.
                    The  password is comprised of up to 39 letters and
                    digits, including hyphen.  You  should  keep  your
                    password secret.

     account        is your account descriptor.


Operation

     1.  Type LOG and press the ESC key;  the system prints
         IN (USER)

         @LOGIN (USER)

     2.  Type your user name and press the ESC key.  The system prints
         (PASSWORD).   If  you type an incorrect user name, the system
         immediately prints a ?  and returns to command level.

         @LOGIN (USER) LANGLEY (PASSWORD)

     3.  Type your password (it is not printed) and press the ESC key;
         the system prints (ACCOUNT #).

         @LOGIN (USER) LANGLEY (PASSWORD)  (ACCOUNT #)
LOGIN Command (continued)                                  Page II-174


     4.  Type a valid account number and press the  RETURN  key;   the
         system  prints  a  line  containing your job number, terminal
         number, and the date and time.

         @LOGIN (USER) LANGLEY (PASSWORD)  (ACCOUNT #) 10400
          JOB 27 ON TTY16 16-JAN-76 15:54
         @


Errors

     1.  If you type an invalid (non-existing) user name,  the  system
         responds with a ?  immediately and does not let you continue.
         Check to see if you are spelling the name correctly.

     2.  If you type an incorrect  password,  the  system  prints  the
         following message and does not log you in.

         ?INCORRECT PASSWORD

         Reissue the command with the correct password.

     3.  If you type an incorrect number of  account  characters,  the
         system  prints  an  error indication (?) and does not log you
         in.

         @LOGIN (USER) PAVOLA (PASSWORD)  (ACCOUNT #) 1234567
          ?
         @

         Reissue the command with a correct account.

     4.  If you give an alphanumeric account when an account number is
         required, the system prints the following message.

         ?NON-DIGIT TYPED WHERE NUMBER REQUIRED

         Reissue the command with a numeric account.


Output

     Once you have completed the LOGIN command, the  system  prints  a
     line  that contains your job number, terminal number and the date
     and time you logged in.

     Next, the system prints any system  messages  that  were  created
     since  the  last  time you logged in.  If you do not want to read
     the messages, type a CTRL/O.

     If you have exceeded your permanent disk storage allocation,  the
     system prints the message:

     <directory> OVER PERMANENT STORAGE ALLOCATION BY n PAGES

     where directory is your logged-in directory and n is  the  number
     of  pages  by  which  you  have  exceeded your quota.  You should
     delete and expunge enough files so that you are under this quota.

     If another user has left you a message, the system prints:

        YOU HAVE A MESSAGE, READ WITH RDMAIL
LOGIN Command (continued)                                  Page II-175


     Use the RDMAIL program to read your mail.  Otherwise,  until  you
     run RDMAIL, you will receive this message every time you log in.

     If you have a LOGIN.CMD file and/or a COMAND.CMD file, the system
     processes these files and prints:

        END OF COMAND.CMD
     and/or
        END OF LOGIN.CMD


Characteristics

     The LOGIN command is usually the  first  command  that  you  give
     after the initial CTRL/C;  and it leaves your terminal at TOPS-20
     command level.

     Also, the LOGIN command implicitly CONNECTs to and ACCESSes  your
     logged-in  directory on PS:.  If you give the INFORMATION (ABOUT)
     STRUCTURE command after you log in, your user name will appear in
     both the CONNECTed and ACCESSing user lists.


Restrictions

     You can give the LOGIN command only after you type a CTRL/C.

     You cannot use recognition in typing the  arguments  to  a  LOGIN
     command.


Examples

     The user CONNOLY logs in  to  the  system  and  finds  he  has  a
     message.

        @LOGIN (USER) CONNOLY (PASSWORD) _ (ACCOUNT #) 10231
         JOB 23 ON TTY34 16-JAN-76 10:27
         YOU HAVE A MESSAGE, READ WITH RDMAIL
        @
LOGOUT Command                                             Page II-176


Function

     The LOGOUT command expunges deleted files in your  connected  and
     logged-in  directory,  deletes  all  ;T (temporary) files created
     during this session in your connected and logged-in  directories,
     decrements  the  mount  count  for  any  SMOUNT commands you have
     given, checks disk storage allocation, ends your job and prints a
     message.   You  may  also  log  out  another job as long as it is
     logged in under your user name.


Format

     @LOGOUT n

     n   is the job number of the job you want to log out.  If you are
         logging  out your current job (as is the common case), do not
         type a number.


Operation

     1.  Type LOGO and press the ESC key;  the system prints UT.

         @LOGOUT

     2.  To log out your current job, press the RETURN key.  (If  your
         connected  directory is over its disk storage allocation, the
         system prints a message.)

         @LOGOUT
         KILLED JOB 13, USER LESTER, ACCOUNT 10563, TTY 45,
           AT 16-JAN-76 20:03:01 USED 0:1:46 IN 3:44:12

     3.  If you are logging out another job, type the job  number  and
         press the RETURN key.  

         @LOGOUT 23
         @


Errors

     1.  If you try to log out another user's job, the system  ignores
         the LOGOUT command and prints the message:

         ?WHEEL OR OPERATOR CAPABILITY REQUIRED

     2.  If no user is logged in under that  job  number,  the  system
         ignores the LOGOUT command and prints the message:

         ?THAT JOB DOES NOT EXIST
LOGOUT Command (continued)                                 Page II-177


Output

     If you exceed your permanent disk storage allocation, the  system
     prints the message:

     <directory> OVER PERMANENT STORAGE ALLOCATION BY n PAGES

     where directory is your logged-in directory and n is  the  number
     of pages by which you exceeded your quota.  You should log in and
     delete and expunge enough files to get under quota.   Before  you
     log out, you can give the INFORMATION (ABOUT)  DISK-USAGE command
     to find if you are over your allocation.


Characteristics

     The LOGOUT command:

         Clears any program from memory and expunges the deleted files
         in  your  connected  and  logged-in directory, unless you are
         logging out  another  job,  in  which  case  it  leaves  your
         terminal at TOPS-20 command level.

         Terminates any ACCESS, CONNECT and SMOUNT commands  you  have
         given throughout your job session.


Restrictions

     You cannot log out another user's job.

     You cannot give a job number when you are logging  out  your  own
     job.


Examples

     The user logs out his own job, but is  over  his  permanent  disk
     storage allocation by 5 pages.

        @LOGOUT
         <HARDING> OVER PERMANENT STORAGE ALLOCATION BY 5 PAGES.
        KILLED JOB 36, USER HARDING, ACCOUNT 34, TTY 2,
          AT 16-JAN-76 3:04:01 USED 0:0:23 IN 0:5:12

     The user logs out job 34 which is logged in under his user name.

        @LOGOUT 34
        @
MACRO Assembler                                            Page II-178


Function

     The MACRO assembler produces object programs  from  MACRO  source
     programs.


Hints

     A program written in the  MACRO  assembly  language  may  contain
     machine  language  instructions, assembler pseudo-ops and monitor
     calls.

     To run a MACRO program:

     1.  Enter your source program into a file (usually you  will  use
         EDIT),

     2.  Give the EXECUTE command to assemble,  load  and  start  your
         program.

     3.  If you do not plan to make changes to the program (EDIT)  and
         plan  to  run  the  program often, use the LOAD, SAVE and RUN
         commands instead of EXECUTE.

     If you have a main program and assorted subroutines that  require
     special   loading,   refer  to  Chapter  8  which  describes  the
     LOAD-class commands.  Also refer to the description of  the  LINK
     program.

     The best way to produce a listing file for a MACRO program is  to
     give  a LOAD-class command with the /CREF switch.  In addition to
     your relocatable binary program, the system then produces a  file
     with  cross-reference  information  about symbols.  Give the CREF
     command to  process  this  file  and  print  it.   Refer  to  the
     examples.


Operation

     1.  Enter your program into a file using EDIT.

         @CREATE (FILE) TEST1.MAC
         Input: TEST1.MAC.1
         00100           TITLE TEST1
         00200           SEARCH MONSYM
         00300   TEST1:  RESET
         00400           HRROI T1,[ASCIZ /This is only a test program!
         00500   /]
         00600           PSOUT
         00700           HALTF
         00800           END TEST1
         00900   $
         *E

         [TEST1.MAC.1]
         @

     2.  Compile, load, and start your program.

         @EXECUTE (FROM) TEST1.MAC
         MACRO:  TEST1
         LINK:   Loading
         [LNKXCT TEST1 EXECUTION]
         THIS IS ONLY A TEST PROGRAM!
         @
MACRO Assembler (continued)                                Page II-179


Characteristics

     Giving a LOAD-class command to run a  MACRO  program  clears  any
     previous  program  from memory and, depending on the command, may
     or may not leave you at TOPS-20 command level.


Examples

     The user compiles his MACRO program.

        @COMPILE (FROM) VTED
        MACRO:  VTED

        EXIT
        @

     The user compiles his program, producing a file that is  used  by
     the CREF command to produce a cross-reference listing on the line
     printer.

        @COMPILE (FROM) /CREF INOUT
        MACRO:  INOUT

        EXIT
        @CREF                         !Give the CREF command
        CREF:   INOUT
        @

     The user compiles two files to produce one source  program,  then
     loads it into memory.

        @LOAD (FROM) DEFS+PROMPT
        MACRO:  PROMPT
        LINK:   Loading

        EXIT
        @

     The user loads his main  program  (REINIT)  and  two  subroutines
     (MEMDMP  and  CONFIG)  into  memory, saves the resulting program,
     then runs the program.

        @LOAD (FROM) REINIT,MEMDMP,CONFIG
        MACRO:  REINIT
        MACRO:  MEMDMP
        MACRO:  CONFIG
        LINK:   Loading

        EXIT
        @SAVE
         REINIT.EXE.1 SAVED
        @RUN REINIT

        NAME OF FILE TO INITIALIZE: SYMTAP.EXT.1  !NEW FILE!
        CONFIGURATION COMPLETED.

        ANOTHER FILE? NO
        [DONE!]
        @
MAIL Program                                               Page II-180


Function

     The MAIL program sends a message (commonly referred to  as  mail)
     to another user or group of users.


Special Cases

     If you have not read a message that has been sent  to  you  since
     the last time you ran RDMAIL, the system prints the line:

          YOU HAVE A MESSAGE, READ WITH RDMAIL

     on your terminal whenever you log in to the system.

     If you are logged in at the time someone sends you a message, the
     system prints the following line on your terminal:

          [YOU HAVE A MESSAGE FROM sender]

     (If you are refusing links, the system does not print  the  above
     message.)

     If an important new message-of-the-day has been  sent  to  SYSTEM
     since you logged in, you are notified with the message:

          [NEW MESSAGE-OF-THE-DAY AVAILABLE]

     You can read the new SYSTEM  message  with  the  RDMAIL  program.
     Type /M to the DATE AND TIME prompt.

     You can send MAIL to a directory called REMARKS.  This  directory
     has  been  set  up  to receive complaints about any miscellaneous
     system problems you may have (e.g., your terminal is not  working
     properly  or  you  need  paper supplies).  The type of complaints
     that are sent usually do not require an immediate  response  from
     the operator.

     If you have WHEEL or OPERATOR capabilities,  you  can  also  send
     messages  to SYSTEM.  Sending a message to SYSTEM generates a new
     message-of-the-day to all users.  Type SYSTEM to the prompt  TO:.
     Note  that SYSTEM and REMARKS are the only files-only directories
     that will accept mail.


Hints

     The RDMAIL program allows you to read  new  system  messages  and
     mail sent to you by another user.

     You can type a ?  after any one of the queries (i.e.,  TO:,  CC:,
     SUBJECT:,  and MESSAGE:) and the system prints a short summary of
     what you are expected to type.

     Normally if you have a list of users  to  whom  you  are  sending
     mail,  you  must  type their user names on the line following TO:
     or CC:  (for copies to).  But, if you have a long  list  of  user
     names you can enter them into an indirect file using EDIT.  Then,
     in the place of the user names, type an at-sign and type (or  use
     recognition on) the file name and file type.  Refer to the second
     example.

     You can also send mail to yourself.  A  convenient  time  to  use
     this  facility  is  when  you are running a Batch job and want to
MAIL Program (continued)                                   Page II-181


     know when it is done.  You can send  a  message  to  yourself  by
     including  the  MAIL  program  commands  at the end of your Batch
     control file.  After the last command in  the  control  file  has
     been  executed,  you  are notified that you have a message in the
     form:

          [YOU HAVE A MESSAGE FROM sender]

     Sender, in this case, is  yourself.   Run  RDMAIL  to  read  your
     message.  (Refer to Examples.)


Operation

     1.  Start the program by typing (or  using  recognition  on)  the
         name  MAIL,  then  press the RETURN key.  The system leaves a
         blank line and prints TO:

         @MAIL

         TO:

     2.  Type  (or  use  recognition  on)  the  list  of  user  names;
         separate them with commas.  If you are using an indirect file
         (i.e., you have stored the list of user  names  in  a  file),
         type  an  @,  then type (or use recognition on) the file name
         and file type.  The system then prints CC:.

         TO: HURLEY,MILLER,MURPHY,@USERS.LST
         CC:

     3.  Type or use recognition on the user names to whom you want to
         send  copies  of the mail.  You may use an indirect file here
         also.  The system prints SUBJECT:.

         CC: @MEMOS.DIR
         SUBJECT:

     4.  Type a one-line heading for the message and press the  RETURN
         key.   The  system  prints the second line below that prompts
         you for your message.

         SUBJECT: SYSTEM CHARGES
         MESSAGE (TERMINATE WITH ESC OR ^Z):

     5.  Type the message;  when  you  are  finished,  press  the  key
         labeled ESC.

         If you wish, you can type the message into a  file;   if  you
         have  done  so,  at  this  time  type an @ and the file name.
         Then, press the RETURN key.  If the mail  gets  sent  without
         any  system  errors,  the  system prints a three-line message
         confirming that the mail was sent.
MAIL Program (continued)                                   Page II-182


         MESSAGE (TERMINATE WITH ESC OR ^Z):

                 WOULD YOU PLEASE SEND THE LIST OF NEW SYSTEM CHARGES
                 TO THE PROJECT SUPERVISORS?


                                             THANKS.

         $
         PROCESSING MAIL...
         NO ERRORS.
         -DONE-
         @


Errors

     1.  No user will receive more than one copy of the  mail.   Thus,
         if you include a certain name once under the TO:  and another
         time under CC:, the system prints the message:

         %DUPLICATE NAME PURGED - user name

         and removes the duplicate name from the  list  of  users  who
         will receive the mail.

     2.  If there is an error sending a message to a particular  user,
         the system prints the following error message:

         user name NOT SENT reason

         You should try to send the  message  again.   If  the  second
         attempt fails, contact the operator.

     3.  If you give a non-existent user name, the system ignores that
         name and prints the message:

         ?ILLEGAL USER NAME - name

         However, if you have sent mail to a list of users,  the  list
         is printed with the illegal name deleted.

     4.  If the recipients' directory is over its working  quota,  the
         system  refuses  to  send  the  mail and prints the following
         message.

         user name NOT SENT  QUOTA EXCEEDED

         If the user is logged in, try using the TALK command.


Characteristics

     After you start the MAIL program, any previous program is cleared
     from  memory  and  your  terminal  is left at MAIL command level.
     Answer the questions, type your message, press the  ESC  key  and
     your terminal will be left at TOPS-20 command level.  If you need
     to return to TOPS-20 command level immediately, type a CTRL/C.


Restrictions

     You cannot send mail to a files-only directory (other than SYSTEM
     or REMARKS) or to a directory on a structure other than PS:.
MAIL Program (continued)                                   Page II-183


Examples

     The user sends mail to the users COHEN, BRUCKERT, and PORADA;   a
     copy is sent to user RICHER.

        @MAIL

        TO: COHEN, BRUCKERT, PORADA
        CC: RICHER
        SUBJECT:  SYSTEM USERS
        MESSAGE (TERMINATE WITH ESC OR ^Z):

        PLEASE INFORM ALL NEW USERS OF THE LOCATIONS OF THE TERMINAL
        ROOMS AND THE HOURS OF THEIR OPERATION.
        $
        PROCESSING MAIL...
        NO ERRORS.
        -DONE-
        @

     The user sends mail to two users and a list of  users  stored  in
     the  file  REST.FIL.  One user, WYMAN, occurs twice so the system
     eliminates the redundancy.

        @MAIL

        TO: MCCARTHY, TOLMAN, @REST.FIL
        CC: LEWINE, WYMAN
        %DUPLICATE NAME PURGED - WYMAN
        SUBJECT:  MAINTENANCE
        MESSAGE (TERMINATE WITH ESC OR ^Z):

        PLEASE BE ADVISED THAT THE SYSTEM WILL BE DOWN FROM 0100 TO
        0300 FOR MAINTENANCE.
        $
        PROCESSING MAIL...
        NO ERRORS.
        -DONE-
        @

     The user sends a message stored in the file MACRO.CMD to the user
     ALUSIC.

        @MAIL

        TO: ALUSIC
        CC:
        SUBJECT: MACRO FILES
        MESSAGE (TERMINATE WITH ESC OR ^Z):

        @MACRO.CMD.1

        PROCESSING MAIL...
        NO ERRORS.
        -DONE-
        @
MAIL Program (continued)                                   Page II-184


     The user sends a message-of-the-day to all users of  the  system.
     This user has WHEEL or OPERATOR capabilities enabled.

        @MAIL

        TO: SYSTEM
        CC:
        SUBJECT:  NEW MANUALS
        MESSAGE (TERMINATE WITH ESC OR ^Z):

        THE NEW DECSYSTEM-20 MANUALS WILL BE AVAILABLE  IN  MY  OFFICE
        AFTER 2:00 PM TODAY.
        $
        PROCESSING MAIL...
        NO ERRORS
        -DONE-
        @

The user sends MAIL to REMARKS.

        @MAIL

        TO: REMARKS
        CC:
        SUBJECT: SUPPLIES
        MESSAGE (TERMINATE WITH ESC OR ^Z):

        I NEED TWO BOXES OF TERMINAL
        PAPER, SIZE 97/8 X 11.
        $
        PROCESSING MAIL...
        NO ERRORS
        -DONE-
        @

The user sends a message to inform himself when his Batch job is  done
by placing the MAIL commands in his control file.  Note that he uses a
dot (or period) for the first program command TO:.

        @CREATE (FILE) TEST.CTL
        INPUT: TEST.CTL
        00100  @FILCOM
        00200  *TEST.FOR=DIFFER.FOR,ADDEM.FOR/A
        00300  @PRINT TEST.FOR
        00400  @MAIL
        00500  *.
        00600  *
        00700  *BATCH JOB IS DONE
        00800  *^Z
        00900  $
        *E
MAKLIB Program                                             Page II-185


Function

     The MAKLIB program updates files containing one  or  more  object
     programs  and  manipulates  the  individual programs within these
     files.


Hints

     Languages that produce object programs are MACRO, FORTRAN, COBOL,
     ALGOL, and BLISS-10.

     A program can be complete, or can be just a set  of  subroutines.
     One  reason  for  collecting  a group of object programs into one
     file is to enable LINK to use the file as a library (see the LINK
     Reference Manual).  The updating process employs three files:

     1.  A master file containing the file to be updated,

     2.  A transaction file containing the object programs to be  used
         when updating, and

     3.  An output file containing the updated file.

     All three files can be on the same device if it is DSK.


Format

     @MAKLIB
     *output dev:file.typ=master dev:file.typ/switch:(object-programs),
     transaction dev:file.typ/switch:(object-programs)

     output dev:         is the device name or logical name  to  which
                         the updated file is written.  If you omit the
                         device,  MAKLIB  assumes   DSK:    (currently
                         connected structure).

     master dev:         is the  device  name  or  logical  name  that
                         specifies  the  location  of  the  file to be
                         updated.  If  you  omit  the  device,  MAKLIB
                         assumes     DSK:      (currently    connected
                         structure).  To separate the master file  and
                         transaction file, use a comma.

     transaction dev:    is the device containing the object  programs
                         that MAKLIB will use in updating.

                         Note that the default for the device is  DSK:
                         (currently connected structure).

     file.typ            is the name and type of each file.  You  must
                         specify file names for directory devices, but
                         you may omit the types.  If you omit a  type,
                         MAKLIB  assumes it is .REL unless you include
                         the /L switch in the command string.  In this
                         case,  MAKLIB assumes the output file type is
                         .LST.

                         Project-programmer numbers appearing after  a
                         file  name  apply  to that file only.  If the
                         project-programmer number appears before  the
                         file name, it applies to all subsequent files
                         until you specify another device.
MAKLIB Program (continued)                                   Page II-186


                         MAKLIB gives  the  master  file's  protection
                         number to the output file.

                         You may use the asterisk  wildcard  character
                         in input file specifications.

     (object-programs)   are the names of programs  that  MAKLIB  will
                         use   in   updating.    Group   these  within
                         parentheses in the same order in  which  they
                         appear  in  the  file,  and  separate them by
                         commas.  While you are manipulating  all  the
                         programs in a file, you need specify only the
                         file name.  You may not specify program names
                         for the output file.

     /switch             specifies  a  function  you  wish  MAKLIB  to
                         perform.   Each  function  causes the updated
                         file to be output to the specified device.


                              Table II-17
                            MAKLIB Switches


       /APPEND           Appends the specified  object  programs  in
                         the transaction file(s) to the master file,
                         and adds these programs to the end  of  the
                         output file.

       /NOLOCAL          Compresses  the  master  file  by  deleting
                         local  symbols.  These symbols are included
                         in object programs primarily  because  they
                         are useful in debugging.


                                            NOTE

                             Local  symbols  cannot  be  deleted
                             from  .REL files;  for these files,
                             the   /NOLOCAL   switch   will   be
                             ignored.     Large   libraries   of
                             debugged routines, such  as  LIBOL,
                             frequently  have  the local symbols
                             deleted in order to save disk space
                             and   reduce   the  amount  of  I/O
                             required   during    the    loading
                             process.



       /DELETE           Deletes the specified object programs  from
                         the master file.

       /EXIT             Returns you to TOPS-20 command level.

       /EXTRACT          Extracts the specified files and/or  object
                         programs  from  the input files.  If you do
                         not specify program names, MAKLIB  extracts
                         the entire file.

       /HELP             Types the commands and switches available.
MAKLIB Program (continued)                                   Page II-187


                          Table II-17 (Cont.)
                            MAKLIB Switches


       /INSERT           Inserts object programs from the  specified
                         transaction  files  into  the  master file.
                         MAKLIB  inserts   the   programs   in   the
                         transaction  files immediately before those
                         programs specified  by  /M  in  the  master
                         file.   A  comma  is  used  to separate the
                         transaction files.

       /INDEX            Writes index blocks into a library file  on
                         disk.    Indexes   cannot   be  written  on
                         magnetic tape.  Index blocks are used in  a
                         direct  access  library  search.   (See the
                         LINK Reference Manual)

       /LIST             Lists the names of the modules that are  in
                         the MASTER file.

                         The name of the master file is the  default
                         file name for spooled output.

       /MASTER           Specifies which programs in the master file
                         are to be used in inserting and replacing.

       /POINTS           Lists all the entry points within an object
                         program.  These are listed across the page.
                         The name of the master file is the  default
                         file name for the spooled output.

       /REPLACE          Replaces the specified object  programs  in
                         the  master  file with the specified object
                         programs  in  the  transaction  file.   The
                         number  of  replacing  programs must be the
                         same  as  the  number  of  programs  to  be
                         replaced.


Operation

     1.  Type the program name MAKLIB,  then  press  the  RETURN  key.
         When  the  MAKLIB program has started, it prints the asterisk
         prompt on your terminal.

         @MAKLIB
         *

     2.  After the asterisk, type a command  comprised  of  an  output
         file,  an  equals  sign,  a  master  and  file, any necessary
         switch, a colon if the switch requires one, and any necessary
         object  programs followed by a comma.  (If the switch you use
         requires you to specify a transaction device,  see  the  next
         paragraph.)  Then  press  the  RETURN key.  MAKLIB prints any
         output your switch has requested:  in this case,  a  list  of
         programs  and their segment breaks.  When MAKLIB is finished,
         it prints a second asterisk.

         *TTY:=TSTLB2/LIST
         SORT      401745  007136
         MAIN      000444  001400
         TESTER    011473  001400
         *
MAKLIB Program (continued)                                   Page II-188


         If you have used a switch that  requires  you  to  specify  a
         transaction  device  and/or  file,  continue  your command by
         typing this information  after  the  comma;   then  type  any
         necessary switch, a colon if the switch requires one, and any
         necessary object  programs.   Press  the  RETURN  key.   When
         MAKLIB is finished, it prints a second asterisk.

         *LIBRY=LIBRY/MAS:TESTER, TSTBL1/INSERT:DUMP
         *


     3.  After MAKLIB prints the second asterisk, you can give another
         command  to  MAKLIB.   If  you  want  to  stop MAKLIB, type a
         CTRL/C.

         *^C
         @


                                     NOTE

             To end a command line,  press  the  RETURN  key.   To
             continue  the command on the next line, type a hyphen
             on your current line and then press the RETURN key.


         You may include comments on  the  MAKLIB  command  string  by
         preceding  each comment with a semicolon.  MAKLIB ignores all
         characters after the semicolon--except for escape--until  the
         next line feed, vertical tab, or form feed character.


Characteristics

     After you start the  MAKLIB  program,  any  previous  program  is
     cleared from memory and your terminal is at MAKLIB command level.


Restrictions

     The MAKLIB program does not allow you to use recognition input in
     typing  file specifications.  File specifications may not contain
     the characters -, $, or _ and the wildcard characters are  *  and
     ?.   The  comment character is ;  instead of !.  Refer to Chapter
     5.   To  access  a  file  in  another  user's  directory,  use  a
     project-programmer number.  Refer to Section 5.3.1.


Examples

     @MAKLIB
     *TTY:=TSTLB2/LIST                  ;List    the    programs    in
                                        TSTLB2.REL on the terminal.
     SORT    401745  007136
     OVRLAY  402736  000544
     MAIN    000444  001400
     TESTER  011473  001400
     *LIBRY=TSTLB2,POLSTR/APP:PS        ;Create a  library  containing
                                        TSTLB2.REL  and the program PS
                                        from  the   file   POLSTR.REL.
                                        List   the   contents  of  the
                                        library.
MAKLIB Program (continued)                                   Page II-189


     *TTY:=LIBRY/LIST
     SORT    401745  007136
     OVRLAY  402736  000544
     MAIN    000444  001400
     TESTER  011473  001400
     PS      000414
     *LIBRY=LIBRY/MAS:(SORT,MAIN),TSTBL1/REP:EDITOR,-
                                        ;Replace SORT with the program
                                        EDITOR and replace the program
                                        MAIN with the  program  INPUT.
                                        List  the  entry points in the
                                        new library.
     POLSTR/REP:INPUT
     *TTY:=LIBRY/POINTS
     EDITOR
     OVRLAY  GETOV.  INIOV.  LOGOV.  REMOV.  RUNOV.  .OVRLA  .OVRLU
     INPUT   INPBYT  INPUT   STRING
     TESTER  TESTER
     PS
     *LIBRY=LIBRY/MAS:TESTER,TSTBL1/INSERT:DUMP
                                        ;Insert the program DUMP  from
                                        the  file TSTBL/-.REL into the
                                        library before TESTER.
     *TTY:=LIBRY/LIST
     EDITOR  000130
     OVRLAY  402736  000544
     INPUT   000043
     DUMP    000206
     TESTER  011473  001400
     PS      000414
     *LIBRY=LIBRY/DELETE:(EDITOR,OVRLAY,PS)
                                        ;Delete  EDITOR,  OVERLAY  and
                                        PS.    Delete  local  symbols.
                                        Index the library.
     *LIBRY=LIBRY/NOLOC
     *LIBRY=LIBRY/INDEX
     */EXIT
     @
MERGE Command                                                Page II-190


Function

     The MERGE command places an .EXE file in memory, merging it  with
     any existing program.


Hints

     The  INFORMATION  (ABOUT)  MEMORY-USAGE  command  is  useful   in
     checking the operation of the MERGE command.


Special Cases

     Generally, any currently assigned memory is  left  intact  except
     where  pages  of  the  new file overlap the pages of the existing
     memory.  In that case, the pages of  the  new  file  replace  the
     pages of memory.


Format

     @MERGE (PROGRAM) filespec

     filespec       is the file specification of the file you want  to
                    merge.  If you do not give a file type, the system
                    uses .EXE.


Operation

     1.  Type MERG and  press  the  ESC  key;   the  system  prints  E
         (PROGRAM).

         @MERGE (PROGRAM)

     2.  Type (or use recognition on)  the  file  specification,  then
         press  the RETURN key.  The system prints an @ when the merge
         is complete.

         @MERGE (PROGRAM) TOPTAP.EXE.1
         @


Errors

     1.  If the program is not in the form of an .EXE file, the system
         may print the message:

         ?UNEXPECTED END-OF-FILE TRAP IN EXEC AT n

         Make sure you  have  specified  the  correct  file  (n  is  a
         particular location in memory.)

     2.  If the program is not in the form of an .EXE file, the system
         may merge it.  However, later you may receive the message:

         ?ENTRY VECTOR IS NOT LESS THAN 777

         Make sure you have specified the correct file.
MERGE Command (continued)                                    Page II-191


Characteristics

     The MERGE command changes the contents of memory and leaves  your
     terminal at TOPS-20 command level.

     The MERGE command does not alter the entry  vector  if  the  file
     being merged is in proper .EXE file format.


Examples

     The user merges the program TESTOP.EXE with the program currently
     in memory.

        @MERGE (PROGRAM) TESTOP.EXE
        @

     The user places the RTRANS program in memory, checks it by giving
     the  INFORMATION command, merges the PA1050 program, then finally
     checks the contents of memory again.

        @GET (PROGRAM) SYS:RTRANS.EXE.20 
        @INFORMATION (ABOUT) MEMORY-USAGE 
        
         4. PAGES, ENTRY VECTOR LOC 140 LEN 254000
        
        0-3      <OLD>RTRANS.EXE.20  2-5   R, CW, E
        
        @MERGE (PROGRAM) SYS:PA1050.EXE.395 
        @INFORMATION (ABOUT) MEMORY-USAGE 
        
         27. PAGES, ENTRY VECTOR LOC 140 LEN 254000
        
        0-3      <OLD>RTRANS.EXE.20  2-5   R, CW, E
        700-726  <SUBSYS>PA1050.EXE.395  1-27   R, E
        
        @
PLEASE Program                                               Page II-192


Function

     The PLEASE program  helps  you  communicate  with  the  operator.
     After  starting  the PLEASE program, you may communicate with the
     operator in a two-way conversation.


Hints

     To send a one-way message to the operator, type your message on a
     line,  but press the ESC key before you press the RETURN key.  If
     you use this method, you do not have to wait for the operator  to
     respond.

     If you type CTRL/T while you are running the PLEASE program,  the
     system  prints a message telling you where you are in the waiting
     list.  If the operator can  service  your  request,  the  message
     contains the text:  You are the current user.


Operation

     1.  Start the program by typing PLEASE,  then  press  the  RETURN
         key.  The system prints WHAT IS THE OPERATOR'S ID?.

         @PLEASE

         WHAT IS THE OPERATOR'S ID?

     2.  Type  the  operator's  identification.   In  many  cases  the
         operator's  ID  is  not  required.  In this case, simply type
         PLEASE and a space and enter the text of  your  message.   If
         the operator's identification is required, it can be obtained
         from the system manager or  by  contacting  the  operator  in
         person.   Most of the time, just pressing the RETURN key will
         link your terminal with the main  operator's  terminal.   The
         system prints ENTER TEXT:.

         WHAT IS THE OPERATOR'S ID?

         ENTER TEXT:

     3.  Type the message you want to send to the operator, ending the
         first  line  by  pressing the RETURN key.  If the operator is
         not busy, the system prints  [OPERATOR  HAS  BEEN  NOTIFIED];
         otherwise it prints [OPERATOR IS BUSY.  PLEASE WAIT.].

         ENTER TEXT:  HOW CAN I GET SOME MORE PAPER FOR MY TERMINAL?
         [OPERATOR HAS BEEN NOTIFIED.]

     4.  If  you  get  the  message  [OPERATOR  HAS  BEEN  NOTIFIED.],
         continue  typing  your message to the operator.  Whatever you
         type is printed on the operator's terminal, and whatever  the
         operator types is printed on your terminal.

         When you are finished typing, press the ESC key.  The  system
         prints  [FINISHED AT hh:mm:ss], where hh:mm:ss is the current
         time.

         [OPERATOR HAS BEEN NOTIFIED.]

         DID YOU LOOK IN THE STORAGE ROOM BEHIND YOU?

         NO, WAIT A MINUTE I'LL SEE...  OK THERE IS SOME,
PLEASE Program (continued)                                   Page II-193


         THANKS.
         $

         [FINISHED AT 23:54:15]
         @

     5.  If you get the message [OPERATOR  IS  BUSY.   PLEASE  WAIT.],
         continue  typing;   your  message is stored inside the system
         until the  operator  is  available.   When  the  operator  is
         available,   he   receives   your   message   and  a  two-way
         communication, as described in step 4,  starts.   The  system
         prints [OPERATOR HAS BEEN NOTIFIED.] to tell you that you are
         in two-way communication.  When you are done, press  the  ESC
         key.  The system prints the FINISHED message.

         [OPERATOR IS BUSY.  PLEASE WAIT.]
         [OPERATOR HAS BEEN NOTIFIED.]
         I LOOKED IN THE SUPPLY ROOM NEAR THE WINDOW AND 
         THERE IS NO PAPER.
         HI.  SORRY FOR THE WAIT.  DID YOU LOOK IN THE STORAGE ROOM
         BEHIND YOU?
         NO, WAIT A MINUTE AND I WILL.  THANKS, ITS THERE.  BYE.
         $
         [FINISHED AT 23:59:10]
         @

     6.  If the program that the operator uses to service your request
         is not running, you will get the message:

         ?OPERATOR JOB TO SERVICE PLEASE
           REQUESTS IS NOT RUNNING

         Exit the program by typing a CTRL/C and try again later.


Characteristics

     After you start the  PLEASE  program,  any  previous  program  is
     cleared  from  memory and your terminal is left at PLEASE command
     level.  Type your message and press the ESC key  to  finish;   at
     that time you are returned to TOPS-20 command level.  If you must
     return to TOPS-20 command level immediately, type a CTRL/C.


Examples

     The user sends a message to the operator  telling  him  that  his
     terminal needs a new ribbon.

        @PLEASE

        WHAT IS THE OPERATOR'S ID?

        ENTER TEXT: COULD YOU INSTALL A NEW RIBBON IN TERMINAL S/N 64?

        [OPERATOR HAS BEEN NOTIFIED]
        OK, IN ABOUT AN HOUR.
        THANKS$
        [FINISHED AT 11:04:58]
        @
POP Command                                                  Page II-194


Function

     The POP command terminates the current command level and  returns
     you to the next higher level.  The system terminates all programs
     started at the command level that is being terminated.  (Refer to
     Section 7.7.)


Hints

     After giving the POP command, you can give the  CONTINUE  command
     to  resume  execution  of a program you had previously stopped by
     typing two CTRL/Cs.

     The PUSH command performs the exact opposite function by creating
     a new copy of the command language.  Therefore, you can interrupt
     one program with 2  CTRL/Cs,  do  a  PUSH  command,  run  another
     program,  do  a  POP command, and successfully continue the first
     program.


Format

     @POP (COMMAND LEVEL)

     There are no arguments to the POP command.


Operation

     1.  Type POP and press the ESC key;  the system  prints  (COMMAND
         LEVEL).

         @POP (COMMAND LEVEL)

     2.  Press the RETURN key;  when the  system  has  terminated  the
         current command level, it prints an @.

         @POP (COMMAND LEVEL)
         @


Errors

     1.  If there is no previous level, the system ignores the command
         and prints the message:

         ?NO HIGHER COMMAND LEVEL


Characteristics

     The POP command clears any program from  memory,  terminates  the
     current  TOPS-20  command level, and returns your terminal to the
     TOPS-20 command level from which you gave the  most  recent  PUSH
     command.  Note that this previous copy of memory is generally not
     disturbed by any command (except LOGOUT) you may give between the
     PUSH and POP commands.
POP Command (continued)                                      Page II-195


Examples

     The user terminates the current command level.

         @POP (COMMAND LEVEL)
         @

     The user runs his compute-bound program for almost  an  hour  and
     receives  an  error  because  he has forgotten to create a simple
     file.  The user types a CTRL/C, gives the PUSH  command,  creates
     the  file,  gives  the  POP  command, and returns to the original
     TOPS-20 command level.  The user gives the  CONTINUE  command  to
     continue his program exactly where he left off.

        @RUN (PROGRAM) CHKERR

        DATA FILE: RUN54.DAT
        COMPARISON FILE: RUN20.DAT

        %FRSOPN File was not found
        Unit=1 DSK:PARAM.R20/ACCESS=SEQIN/MODE=ASCII

        Enter new file specs. End with an $ (ALT)
        *^C
        @PUSH (COMMAND LEVEL)

         TOPS-20 Command processor 2(236)
        @CREATE (FILE) PARAM.R20
        Input: PARAM.R20.1
        00100   35 CHECKS
        00200   $   
        *E

        [PARAM.R20.1]
        @POP (COMMAND LEVEL)
        @CONTINUE
        $
        STOP

        END OF EXECUTION
        CPU TIME: 36:8.94     ELAPSED TIME: 59:14.58
        EXIT
        @
PRINT Command                                                Page II-196


Function

     The PRINT command places entries into, examines the contents  of,
     or removes entries from the line printer output queue.


Hints

     The line printer output queue is a list of  jobs  waiting  to  be
     printed.

     To examine the contents of the entire queue, give just the  PRINT
     command;   if  you  want  just  your  job(s),  include the /CHECK
     switch.  To examine the contents of both  the  line  printer  and
     Batch input queues, give the QUEUE command without any arguments.
     If you want to examine just your jobs, include the /CHECK switch.
     (The  QUEUE  and  PRINT command clear any program from memory and
     leaves your terminal at TOPS-20 command level.)

     If you  always  want  your  PRINT  commands  to  contain  certain
     switches,  include  a line in your SWITCH.INI file beginning with
     the word PRINT and followed by the switches.   Refer  to  Section
     7.4.


Format

     @PRINT jobname=filespecs/switches

     jobname        is the name you want to  assign  to  the  printing
                    job.   If  you  do  not type a jobname, the system
                    uses the name of the first file you want to print.
                    When  omitting  the jobname, you may also omit the
                    equals sign.

     filespecs      is a list of  file  specifications,  separated  by
                    commas.   Each file specification may contain only
                    a  device  name,  file  name,   file   type,   and
                    project-programmer  number.   If  the file type is
                    .LST, you do not have to include it  in  the  file
                    specification.   To  print  a  file  from  another
                    user's directory, connect  to  the  directory,  or
                    COPY  the  file  into your own directory, and give
                    the PRINT command.  Alternatively, you may include
                    a   project-programmer   number   after  the  file
                    specification;   refer  to  Section  5.3.1.   File
                    names  can  only  be 6-alphanumeric characters and
                    file types cannot be more than  3-characters.   If
                    you  have  files  with  long names, COPY them to a
                    shorter file name and PRINT  the  file  (with  the
                    short  name).   The  /DELETE  switch  to  PRINT is
                    useful for removing the short-named file after  it
                    is printed.

     switches       is a list of switches selected from  Table  II-18.
                    If  you  want  a switch to apply to only one file,
                    place  the  switch  after  the   particular   file
                    specification;  if you want the switch to apply to
                    all files in the list, place the switch before the
                    list of file specifications.

                    To print the contents of the line  printer  output
                    queue,   give   the   PRINT  command  without  any
                    arguments.
PRINT Command (continued)                                    Page II-197


                              Table II-18
                         PRINT Command Switches


       /AFTER:time
          Submits the file for printing after  the  specified  time.
          The  argument  time  is in the form hh:mm (24-hour time of
          day), or +hh:mm (time later than the current  time).   You
          must separate the hours from minutes by typing a colon.

       /CHECK
          Prints only your entries in the line printer output queue.
          (Normally,  the  system prints all the entries in the line
          printer   output   queue.)   If   you   include   a   file
          specification,  the system only prints the contents of the
          queue;  it does not print the file.

       /COPIES:n
          Makes n copies of the file(s).  The argument n (the number
          of  copies)  must  be  less  than 64.  Normally, the PRINT
          command makes one copy of each file.

       /DELETE
          Immediately removes the file from your directory, does not
          count its size in your permanent disk space allocation and
          deletes the file after it is printed.  This is the default
          if the file has a .LST file type.

       /FILE:ASCII
          Specifies that the file is in ASCII text format.  This  is
          assumed for all files with file types other than .DAT.

       /FILE:COBOL
          Specifies that the file contains COBOL SIXBIT text.

       /FILE:FORTRAN
          Specifies that the file contains FORTRAN  ASCII  text  and
          obeys the conventions of FORTRAN control characters.  This
          is assumed for all files with the type .DAT.

       /FORMS:size
          Asks the operator to mount the specified forms before  the
          system  prints the job.  The argument size must be six (or
          less)  alphanumeric  characters;   usually  it  is  either
          NARROW  (for  8 1/2 x 11  paper)  or  NORMAL  (for 15 x 11
          paper).  The default is usually  NORMAL,  but  depends  on
          your installation.

       /HEADER:n
          Outputs block headers at the beginning of  each  file  (if
          you  do  not  give  the  switch,  or  if  n is 1), or else
          suppresses the headers (if n is 0).  The  header  contains
          the  name  of  the file, the date of the request and other
          useful information.

       /HELP
          Prints the general syntax of the PRINT command,  including
          a complete list of switches.

       /HELP:SWITCHES
          Prints a list of all the  switches,  along  with  a  brief
          description of each.
PRINT Command (continued)                                    Page II-198


                          Table II-18 (Cont.)
                         PRINT Command Switches


       /KILL
          Removes the  specified  jobnames  from  the  line  printer
          output  queue.   When  you  give  the /KILL switch, type a
          jobname or the /SEQ switch on the left side of the  equals
          sign before typing the switch /KILL on the right side.  If
          more than one job has  the  same  jobname,  use  the  /SEQ
          switch to identify the proper job.

       /LIST
          Prints information from  the  line  printer  output  queue
          about  the jobnames you specify in the command.  If you do
          not specify a jobname, the system prints the status of the
          entire line printer output queue.

       /NOTE:text
          Prints the string text (not more than  12  characters)  on
          the  header  page.   If  text  contains non-alphanumerics,
          enclose it in double quotes.  The /NOTE switch applies  to
          the entire printing job, not individual files.

       /REPORT:code
          Includes only those lines that begin  with  the  specified
          code  of up to twelve alphanumeric characters.  When these
          lines are printed,  the  system  strips  the  code  before
          printing the line.

       /SEQ:n
          Aids you in specifying the exact job to kill  or  examine.
          The  number  argument n is the sequence number listed when
          you examine the contents of the line printer output queue.

       /START:n
          Starts printing on the nth line of the file.  If you  omit
          this  switch, the system always starts at the beginning of
          the file.


Operation

     1.  Type PRINT and leave a space.

         @PRINT

     2.  Type the list of file specifications and switches, then press
         the RETURN key.

         @PRINT TEST.OUT/FORTRAN, ENABLE.MAC/COPIES:2
         [LPT:TEST=/SEQ:2040/LIMIT:200, 2 FILES]
         @
PRINT Command (continued)                                    Page II-199


Output

     If you are printing a file, the system prints a  message  in  the
     form:

     [LPT:jobname=/SEQ:n/LIMIT:p, f FILES]

     jobname is the name of your job, n is the sequence number,  p  is
     the  number of pages in your print request and f is the number of
     files in that request.

     If you are killing a job, the system  prints  a  message  in  the
     form:

     [n Jobs Killed]

     where n is the number of jobs you removed from the queue.  If the
     job is currently being output, the system prints

          [No Jobs Killed, n Job(s) Cancelled]

     The system prints the contents of the line printer  output  queue
     in the form:


     DEV          USER              JOB  SEQ PRIO LIMIT     AFTER

     LPT          MCKIE            TEST  170  10     42
     PLPT0*       MILLER           KMON  165  10    115
     * JOB BEING OUTPUT NOW


     TOTAL:       LPT:             2 JOBS;   167 PAGES


     DEV is the device name.  The device name is LPT until the job  is
     actually  being  printed, then the system changes the device name
     to the physical printer that is doing the printing.  USER is  the
     user  name  who is printing the job.  JOB is the jobname;  SEQ is
     the sequence number;  PRIO is the priority number;  LIMIT is  the
     number  of  pages  in the request and AFTER is the length of time
     the system must wait before printing the file (usually it is 0).


Characteristics

     The PRINT command runs the QUEUE program,  thereby  clearing  any
     previous program from memory and leaving your terminal at TOPS-20
     command level.


Restrictions

     To print a file from another user's  directory,  connect  to  the
     directory and give the PRINT command, or (while connected to your
     directory)   precede    the    file    specification    with    a
     project-programmer number.

     You may use recognition only on the command name.
PRINT Command (continued)                                  Page II-200


Examples

     The user prints the file DATA.FIL.

        @PRINT DATA.FIL
        [LPT:DATA=/SEQ:101/LIMIT:10, 1 FILE]
        @

     The user prints four files with the note RUN4 on the header page.

        @PRINT INDEP.VAR,DEPEND.VAR,ERROR.DEV,TIMES.VAR/NOTE:RUN4
        [LPT:INDEP=/SEQ:102/LIMIT:235, 4 FILES]
        @

     The user removes the entry he made in the last example.  All four
     files are killed.

        @PRINT INDEP=/KILL
        [1 JOB KILLED]
        @
PUSH Command                                               Page II-201


Function

     The PUSH command preserves the contents of memory at the  current
     command  level  and  creates a new command level.  After creating
     the new command level the  system  prints  a  message  and  takes
     commands  from  the  file  COMAND.CMD  (if  it exists).  Refer to
     Section 3.2.5.


Hints

     You can type two CTRL/Cs to stop your program, then give  a  PUSH
     command  to  create  a new command level.  Run programs to create
     new files or perform other functions, then give a POP command  to
     return  to  the  original  command  level.   Then,  if you give a
     CONTINUE command, you will  resume  execution  of  your  original
     program.

     The POP command performs the exact opposite function of the  PUSH
     command.  The POP command terminates the current command level.


Format

     @PUSH (COMMAND LEVEL)

     There are no arguments to the PUSH command.


Operation

     1.  Type PUSH and press the ESC key;  the system prints  (COMMAND
         LEVEL).

         @PUSH (COMMAND LEVEL)

     2.  Press the RETURN key;  the system prints a  message  followed
         by an @ when it has created a new command level.

         @PUSH (COMMAND LEVEL)

          TOPS-20 Command processor 2(236)
         @


Errors

     1.  If another command level is not  available  from  the  system
         resources,  the  system  ignores  your command and prints the
         message:

         ?INSUFFICIENT RESOURCES AVAILABLE


Characteristics

     The PUSH command preserves the contents  of  memory,  and  leaves
     your terminal at a new TOPS-20 command level with a fresh copy of
     memory.  Give the POP command to terminate this new command level
     and  return  to  the old one, restoring the preserved contents of
     memory.  The POP command destroys  the  contents  of  the  memory
     associated with the TOPS-20 command level it terminates.  You can
     not retrieve its contents after giving a POP command.
PUSH Command (continued)                                   Page II-202


Examples

     The user creates a new command level.

        @PUSH (COMMAND LEVEL)

         TOPS-20 Command processor 2(236)
        @
RDMAIL Program                                             Page II-203


Function

     The RDMAIL (for ReaDing MAIL) program prints any  messages  which
     you have received.


Hints

     If you have received a message since the last time you logged  in
     to the system, the line:

     YOU HAVE A MESSAGE, READ WITH RDMAIL

     is printed when you log in to the system.

     If someone sends you a message  while  you  are  logged  in,  the
     system rings the terminal bell and prints the line:

     [YOU HAVE A MESSAGE FROM sender]

     on your terminal.  If  you  are  refusing  links,  you  will  not
     receive this message.

     If an important new SYSTEM message of the day has been sent since
     you logged in, you are notified with the message:

          [NEW MESSAGE-OF-THE-DAY AVAILABLE]

     You can read the new SYSTEM message with the  RDMAIL  program  by
     typing /M to the DATE AND TIME prompt.

     To send a message, run the MAIL program.


Operation


     1.  Start the program by typing (or using recognition on) RDMAIL,
         then  press  the  RETURN  key.   The  system  prints DATE AND
         TIME  (/H FOR HELP).

         @RDMAIL
         DATE AND TIME  (/H FOR HELP)

     2.  To receive all messages which you have not seen before,  just
         press  the  RETURN  key.  If you want to see all the messages
         after a certain date and time, type the date and time in  the
         standard  TOPS-20  format  of  month/day/yr hr:min (where the
         time is in 24-hour format).  If you type just the  date,  the
         system  uses  a  time  of 00:01 to avoid any confusion of the
         meaning of 0:0:0.

         There are switches which you may type following the date  and
         time  to  perform special operations.  The switches and their
         functions are outlined in Table II-19.  If you omit the  date
         when  giving  a /M, /P, or /S switch the system uses only the
         messages you have not read.
RDMAIL Program (continued)                                 Page II-204


                             Table II-19
                           RDMAIL Switches


       /A           Prints all the  messages,  regardless  of  their
                    date.

       /H           Prints a message outlining the  format  for  the
                    date   and   listing  the  explanations  of  the
                    switches.

       /L           Prints the messages on the line printer  instead
                    of your terminal.

       /M           Instructs  RDMAIL  to   look   at   the   system
                    Message-of-the-day  file  (normally  new entries
                    from it are printed on your  terminal  when  you
                    log in), rather than your own message file.

       /P           Peruses your mail by inhibiting the printing  of
                    each  message;   RDMAIL  prints  only the DATE:,
                    FROM:, TO:, CC:, and SUBJECT:  lines.

       /S           Stops printing  after  each  message.   To  make
                    RDMAIL continue, press the RETURN key.

     You may add any switches together that you want;   for  instance,
     /A/P lets you peruse all your messages.

     After you type the date and time and/or any  switches  you  want,
     RDMAIL prints out the messages you requested.


     DATE AND TIME  (/H FOR HELP)
        --------

     DATE:  25-AUG-75 13:11
     FROM:  OPERATOR
     TO:  BOSACK
        -----
     SUBJECT:  MAGNETIC TAPES

     PLEASE REMOVE YOUR EXTRA MAGNETIC TAPES FROM THE OPERATOR'S TABLE
     AS SOON AS YOU CAN.

        ========
     @


Output

     Each message starts with eight hyphens, then five hyphens precede
     the subject line, and eight equals end the message.


Characteristics

     When you run the RDMAIL program, any previous program is  cleared
     from  memory  and  your terminal is left at RDMAIL command level.
     Type the necessary RDMAIL command and your terminal will be  left
     at  TOPS-20  command  level.   If  you  need to return to TOPS-20
     command level immediately, type two CTRL/C's.
RDMAIL Program (continued)                                 Page II-205


Examples

     The user reads all his mail since 3PM today.

        @RDMAIL
        DATE AND TIME  (/H FOR HELP) 25-AUG-75 15:00

           --------
        DATE:  25-AUG-75 15:32
        FROM: SYSTEM-MANAGER
        TO:  BOSACK
        CC:  OPERATOR
           -----
        SUBJECT: YOUR MAGTAPES

        PLEASE REMOVE YOUR MAGNETIC TAPES FROM THE OPERATOR'S TABLE
        IMMEDIATELY.

           ========
        @

     The user reads the system message-of-the-day file, but only
     those messages made on or after March 2, 1976.

        @RDMAIL
        DATE AND TIME  (/H FOR HELP) 2-MAR-76 /M

           --------
        DATE:  2-MAR-76 13:11
        FROM: IVAS
        TO: SYSTEM
           -----
        SUBJECT: MULTIPLE GENERATIONS

        PLEASE TRY TO KEEP ONLY ONE GENERATION
        OF A FILE.   THANKS.
           ========
        @
RENAME Command                                             Page II-206


Function

     The  RENAME  command  changes  the  file  specification,  account
     descriptor, and protection number of a file.


Hints

     The most efficient method of moving files from one  directory  to
     another  on the same structure is to rename them rather than copy
     them.  That way, the system just changes the file  specifications
     as  opposed  to  the  larger  task of actually creating new files
     containing the information from the source files.  You also  have
     to  give one less command, since after the COPY command you would
     normally give a DELETE command that  is  not  necessary  after  a
     RENAME  command.   Note,  however,  that  you cannot RENAME files
     across structures.  Use the COPY command to  move  files  on  one
     structure to a different structure.

     If the new file specification refers to  an  existing  file,  the
     contents  of  the  renamed  file  supersede  the  contents of the
     existing file.  You cannot recover the contents of  the  existing
     file.

     To change just the account descriptor or protection number  of  a
     file, use the SET FILE command.


Format

     @RENAME (EXISTING FILE) filespec (TO BE) filespec;Pprot;Aaccount

     filespec                 is the source file specification of  the
                              file  you  are  renaming.  If you do not
                              specify  a  generation  number  for  the
                              source  file  specification,  the system
                              uses an *, which causes all  generations
                              of the source file to be renamed.

     filespec;Pprot;Aaccount  is   the   new    file    specification,
                              protection     number,    and    account
                              descriptor  of  the  source  file.   The
                              system  sets  up defaults which are used
                              if you do not  specify  a  complete  new
                              file specification.  The device defaults
                              to  your   connected   structure;    the
                              directory  defaults  to  your  connected
                              directory;  the file name and file  type
                              default  to  those  of  the source file;
                              and the generation defaults to -1, which
                              searches  the  directory in the new file
                              specification and assigns  a  generation
                              number   one  higher  than  the  highest
                              existing generation number  for  a  file
                              with the same file name and type.


Operation

     1.  Type RENA and press  the  ESC  key;   the  system  prints  ME
         (EXISTING FILE).

         @RENAME (EXISTING FILE)
RENAME Command (continued)                                 Page II-207


     2.  Type (or use recognition on) the file you want to rename  and
         press  the  ESC  key  (if  you did not use recognition).  The
         system prints (TO).

         @RENAME (EXISTING FILE) TEST2.DAT.* (TO)

         If you type  an  incorrect  file  name,  type  or  generation
         number,  the  system  prints  one  of the following messages.
         Find the correct source file and reissue the command.

         ?No such filename
         ?No such file type
         ?File not found

     3.  Type (or use recognition on) the new file  specification  and
         (if  you  want  to change them) the new protection number and
         account descriptor, then press the RETURN key.

         @RENAME (EXISTING FILE) TEST2.DAT.* (TO) TEST1.DAT.1
          TEST2.DAT.1 => TEST1.DAT.2 [OK]
         @

         If you want the same file name and type as the  source  file,
         and  a  new generation number, press the ESC key (if you want
         the defaults printed on your terminal), then press the RETURN
         key.   These  defaults  are useful when you are copying files
         from another directory.

         If you want a new file name, but want the default file  type,
         press  the  ESC  key at the end of the file name.  The system
         prints the rest of the file specification and creates  a  new
         generation  of the file.  Press the RETURN key to confirm the
         command.

         If you want to create a new generation of the file, press the
         ESC  key  after typing the file type, or simply omit the file
         type and press the RETURN key.   The  system  creates  a  new
         generation  number  according  to  the files in the directory
         which will contain the new file.


    Output

         If  the  source  file   specification   or   the   new   file
         specification  has  a  wildcard  character, the system prints
         each  source  file  specification,  an  arrow  =>,  and   the
         corresponding new file specification.  When the renaming of a
         file is complete, the system  prints  [OK].   If  the  rename
         fails, the system prints a reason;  often it is:  Source file
         is not closed.

         If there are  no  wildcard  characters  in  the  source  file
         specifications  and  you  use  recognition  on  the  new file
         specification,  the  system  prints  one  of  the   following
         messages describing the new file specification.

         !Old generation!     if you are superseding an existing file.

         !New generation!     if you are creating a new generation  of
                              an existing file.

         !New file!           if you are creating a new file.
RENAME Command (continued)                                 Page II-208


Errors

     1.  If the source file you specify is open or mapped into memory,
         the system prints the message:

         ?Source file is not closed

         Give the RESET command before renaming  the  file.   If  this
         does not help try the POP command and RESET again.


Characteristics

     The RENAME command does not change  any  program  in  memory  and
     leaves your terminal at TOPS-20 command level.


Restrictions

     The source file and the destination  file  must  both  be  closed
     before the file can be renamed.

     You cannot RENAME files across structures;  use the COPY command.


Examples

     The user renames the file DUMPER.TXT to be DUMPER.OLD.

        @RENAME (EXISTING FILE) DUMPER.TXT.* (TO BE) DUMPER.OLD.-1 
         DUMPER.TXT.55 => DUMPER.OLD.1 [OK]
        @

     The user renames all files with the file type .TXT  to  have  the
     file type .FIL.

        @RENAME (EXISTING FILE) *.TXT.* (TO BE) *.FIL
         10.TXT.7 => 10.FIL.1 [OK]
         7.TXT.23 => 7.FIL.1 [OK]
         7A.TXT.61 => 7A.FIL.1 [OK]
         MAIL.TXT.1 => MAIL.FIL.1 [OK]
         NEWBAT.TXT.1 => NEWBAT.FIL.1 [OK]
         SAVE.TXT.3 => SAVE.FIL.1 [OK]
         SET.TXT.1 => SET.FIL.1 [OK]
         SUBMIT.TXT.3 => SUBMIT.FIL.1 [OK]
         TERMIN.TXT.2 => TERMIN.FIL.1 [OK]
         VTED.TXT.16 => VTED.FIL.1 [OK]
         WORDS.TXT.1 => WORDS.FIL.1 [OK]
        @


     The user obtains a file from the directory MILLER.

        @RENAME (EXISTING FILE) <MILLER>GTJFN.MAC.* (TO BE)
         <MILLER>GTJFN.MAC.221 => GTJFN.MAC.1 [OK]
        @

     The user changes the name of a set of files.

        @RENAME (EXISTING FILE) TEST.LEM.* (TO BE) TEST2.LEM.*
         TEST.LEM.1 => TEST2.LEM1 [OK]
         TEST.LEM.2 => TEST2.LEM.2 [OK]
         TEST.LEM.3 => TEST2.LEM.3 [OK]
        @
RESET Command                                              Page II-209


Function

     The RESET command clears the contents of memory.


Special Cases

     The RESET command closes files that are  open  and  still  mapped
     into memory.

     If you try to expunge a file that is mapped into memory (you  can
     find   this   out   by   giving   the  INFORMATION  command  with
     MEMORY-STATUS parameter), the expunge will not succeed unless you
     give a RESET command first.


Hints

     The RESET command does  not  deassign  any  input-output  devices
     which  are  assigned  to your job, nor does it change any logical
     name assignments.


Format

     @RESET

     There are no arguments to the RESET command.


Operation

     1. Type RESE and press the ESC key;  the system prints T.   Press
        the  RETURN  key;  when your memory is reset the system prints
        an @.

        @RESET
        @


Characteristics

     The RESET command clears any program in memory  and  leaves  your
     terminal at TOPS-20 command level.


Examples

     The user clears memory and checks the contents of memory.

        @RESET
        @INFORMATION (ABOUT) MEMORY-USAGE
         NO PROGRAM
        @
REWIND Command                                             Page II-210


Function

     The REWIND command rewinds a magnetic tape to its load point.


Hints

     Remember to assign the tape  drive  to  your  job  and  have  the
     operator mount your tape on it.

     Be sure you have the correct tape parameters set (check them with
     the  INFORMATION (ABOUT) TAPE-PARAMETERS command);  if necessary,
     give the SET TAPE command.


Format

     @REWIND (DEVICE) dev:

     dev:           is the magnetic tape device name in the form MTAn:
                    where n is the drive number.


Operation

     1.  Type REWI and press  the  ESC  key;   the  system  prints  ND
         (DEVICE).

         @REWIND (DEVICE)

     2.  Type the magnetic tape device name (the  colon  is  optional)
         and  press  the  RETURN key.  The system prints an @ when the
         tape is rewound.

         @REWIND (DEVICE) MTA2:
         @


Errors

     1.  If the device is not on line, the system ignores the  command
         and prints the message:

         ?Device is not on-line

         Use the PLEASE program to contact the operator, then  reissue
         the command.

     2.  If you type a CTRL/C to exit from a program that  has  opened
         the  magnetic  tape  drive,  and  then  you  give  the REWIND
         command, the system prints the following message:

              %Device MTAn:  open on JFN n
              %Close JFN? YES

         If you answer YES (or just press the RETURN key), the  system
         closes  the  file,  prints  a confirming message, rewinds the
         tape, and leaves you at TOPS-20  command  level.   Continuing
         the  program  that  previously  opened  the magnetic tape may
         produce an error because the file has been closed.
REWIND Command (continued)                                 Page II-211


              @REWIND (DEVICE) MTA1:
              ?Device MTA1: open on JFN 3
              %Close JFN? YES
               3   MTA1:   [OK]
              @

         If you answer NO, the  system  prints  the  message  ?Command
         aborted... and does not close the file or rewind the tape.


Characteristics

     The REWIND command does not change a program in memory and leaves
     your terminal at TOPS-20 command level.


Restrictions

     The REWIND command works only for magnetic tapes.


Examples

     The user rewinds his tape on drive 1.

        @REWIND (DEVICE) MTA1:
        @
RUN Command                                                Page II-212


Function

     The RUN command clears the contents  of  memory,  and  loads  and
     starts an executable program.


Hints

     If you are running another user's program, all you have to do  is
     type   (or  use  recognition  on)  the  full  file  specification
     including the directory name;  you do not have to  give  the  RUN
     command.

     To run system programs all you have to do is type their name  and
     press the RETURN key.

     The RUN command  is  equivalent  to  a  combined  GET  and  START
     command.

     If you plan to run a program often, use the LOAD command followed
     by a SAVE command, before you give the first RUN command.


Format

     @RUN (PROGRAM) filespec

     filespec       is the file specification of the program you  want
                    to  run.   If  you  omit the file type, the system
                    assumes .EXE.  If you omit the generation  number,
                    the system uses the highest generation.


Operation

     1.  Type RUN and press the ESC key;  the system prints (PROGRAM).

         @RUN (PROGRAM)

     2.  Type (or use recognition on) the file specification and press
         the RETURN key.  The system starts the program.

         @RUN (PROGRAM) TELL
         MESSAGES ARE BEING SENT...
         DONE.
         @


Characteristics

     The RUN command clears  any  previous  program  from  memory  and
     leaves your terminal at command level in your program.


Examples

     The user runs the program TESTER.

        @RUN (PROGRAM) TESTER
        THIS IS A TEST OF THE DISK RECOVERY PROCEDURE.
        HOW MANY DIRECTORIES?  5
        NO ERRORS.
        DONE.
        @
SAVE Command                                               Page II-213


Function

     The SAVE command saves the program in memory in a disk file or on
     magnetic tape.


Hints

     After giving the LOAD command to  load  an  object  program  into
     memory,  you  may  give  the  SAVE command to store a copy of the
     resulting executable program in a disk file or on magnetic  tape.
     To  run  the  stored program, give the RUN command instead of the
     EXECUTE command.  You will notice that the RUN  command  is  much
     faster  and  cheaper  than the EXECUTE command.  Refer to Section
     8.3.

     The file containing the copy of memory  is  called  an  EXE  file
     because  its  file  type  is  .EXE  and  because  it  contains an
     executable program.


Format

     @SAVE (ON FILE) filespec

     filespec       specifies the disk file or magnetic tape drive  on
                    which you want to save the program.  If you do not
                    give a file specification,  the  system  uses  the
                    name  of  the  current  program  and the file type
                    .EXE.  You  may  find  the  name  of  the  current
                    program  by giving the INFORMATION (ABOUT) VERSION
                    command.


Operation

     1.  Type SAVE and press the  ESC  key;   the  system  prints  (ON
         FILE).

         @SAVE (ON FILE)

     2.  Type (or use recognition on)  the  file  specification,  then
         press the RETURN key.  In using recognition on the file type,
         the system defaults the output file type  to  .EXE.   If  you
         want  to use the default (the name of the current program and
         the file type .EXE), press the RETURN key  without  typing  a
         file specification.

         @SAVE (ON FILE) TEST.EXE.1 !New file!  (PAGES FROM)
          TEST.EXE.1 SAVED
         @

         The guide words (PAGES FROM) indicate a  field  which  allows
         you to save only a portion of memory.  Generally you will not
         have to use this portion of the command, so ignore it.
SAVE Command (continued)                                   Page II-214


Errors

     1.  If you have no program in  memory,  the  system  ignores  the
         command and prints the message:

         ?No program

         Load a program into memory using the LOAD command or the LINK
         program.

Characteristics

     The SAVE command does not  change  the  contents  of  memory  and
     leaves your terminal at TOPS-20 command level.


Examples

     The user saves his program using the default file specification.

        @SAVE (ON FILE)
         PTYCON.EXE.1 SAVED
        @

     The user saves his program, giving his own file specification.

        @SAVE (ON FILE) FINLK.EXE.2
         FINLK.EXE.2 SAVED
        @

     The user saves the DUMPER program on magnetic tape drive 1.

        @SAVE (ON FILE) MTA1:
         MTA1: DUMPER SAVED
        @
SDISMOUNT Command                                          Page II-215


Function

     The SDISMOUNT command informs  the  system  that  you  no  longer
     require access to a particular structure and decrements the mount
     count (the number of users who have given the SMOUNT command) for
     that structure.


Hints

     SDISMOUNT is meaningful only if you have given the SMOUNT command
     for that structure.

     If you are connected to a directory on that  structure,  you  are
     still connected and can use the files in that directory or access
     other directories and files.

     If the open file count and mount count for a structure  equal  0,
     the  operator  can  assume  that  no user requires access to this
     structure, and may remove it from the disk drive(s).

     You cannot use recognition on structure names.


Format

     @SDISMOUNT (FILE STRUCTURE) name:

     name:     is the name of the file structure, followed by a colon.


Operation

     1.  Type SD and press the ESC key;   the  system  prints  ISMOUNT
         (FILE STRUCTURE).

              @SDISMOUNT (FILE STRUCTURE)

     2.  Type the name of the file structure and press the RETURN key.

              @SDISMOUNT (FILE STRUCTURE) ACCTG:

     3.  If you had given the SMOUNT command for this  structure,  the
         system responds with the message:

              STRUCTURE ACCTG:  DISMOUNTED
              @

     4.  If you had not given an SMOUNT command for this structure  or
         you mistyped the name, the system responds with the message:

              %STRUCTURE ACCTG:  WAS NOT MOUNTED
              @


Characteristics

     SDISMOUNT does not change any program in memory and  leaves  your
     terminal at TOPS-20 command level.
SDISMOUNT Command (continued)                              Page II-216


Examples

     The user informs the system that he no longer requires access  to
     structure LANG:.

     @SDISMOUNT (FILE STRUCTURE) LANG:

     STRUCTURE LANG:  DISMOUNTED
     @
SET Command                                                Page II-217


Function

     The SET command sets the value of various job parameters.


Hints

     The  INFORMATION  command  prints  the  values  of  many  of  the
     parameters you can set with the SET command.

     The TERMINAL command sets various terminal parameters  which  you
     can examine with the INFORMATION (ABOUT) TERMINAL-MODE command.


Format

     @SET parameter value

     parameter           is the name of the parameter you want to set.
                         Table  II-20  lists  the names of some of the
                         parameters you may set.

     value               is  the  value  of   the   parameter.    Some
                         parameters  do not have values;  they specify
                         actions which are taken or not taken.


                             Table II-20
                        SET Command Parameters


       ACCOUNT (NUMBER TO) number
          Changes the account which the system charges for your  use
          of  the computer and file storage.  The account number may
          be a number or (if you  have  the  proper  privileges)  an
          alphanumeric string.

       ERROR-RETRY (OF COMMANDS)
          Directs the system to reprint the  text  of  an  erroneous
          command  (minus  the  last  erroneous  field)  on the line
          following the error and let you retype just the  incorrect
          field.

       FILE ACCOUNT (OF FILES) filespec (TO) account
          Charges the accounts of the specified files to  the  given
          account number or string.

       FILE GENERATION-RETENTION-COUNT (OF FILES) FILESPECS (TO) n
          Sets the number of generations of  a  file  that  will  be
          kept.    Normally,   this  is  one.   If  you  change  the
          generation-retention-count to a  number  other  than  one,
          refer to Section 5.6.

       FILE PROTECTION (OF FILES) filespec (TO) protection
          Changes the protection of the specified files to the given
          protection number.  Refer to Section 4.1.3 which describes
          the valid file protection numbers.

       TAPE DENSITY (TO) density
          Declares the default density for magnetic tape operations.
          The  valid densities are 200, 556, 800, and 1600 bpi (bits
          per  inch).   To  return  to  the  usual   density,   type
          SYSTEM-DEFAULT.   The  INFORMATION (ABOUT) TAPE-PARAMETERS
          prints the current value of the density.
SET Command (continued)                                    Page II-218


                         Table II-20 (Cont.)
                        SET Command Parameters


       TAPE FORMAT (TO) format
          Sets the default format for magnetic tape operations.  The
          valid    formats    are    ANSI-ASCII,    CORE-DUMP,   and
          INDUSTRY-COMPATIBLE.  To return to the usual format,  type
          SYSTEM-DEFAULT.   The  INFORMATION (ABOUT) TAPE-PARAMETERS
          command prints the current format.

       TAPE PARITY (TO) parity
          Sets the default parity for magnetic tape operations.  The
          usual setting is ODD.

       TAPE RECORD-LENGTH (TO) bytes
          Sets  the  default  record  length   for   magnetic   tape
          operations.  The argument, bytes, is the decimal number of
          bytes in a record.  Setting the record length to  a  large
          number (such as 1000) works for most applications.


Operation

     1.  Type SET and leave a space.

         @SET

     2.  Type (or use recognition on) the rest of the arguments to the
         SET command, then press the RETURN key.

         @SET ACCOUNT (NUMBER TO) 10400
          Time used on previous account:  10300
          0:00:57 in 4:31:08
         @

Characteristics

     The SET command does not change a program in  memory  and  leaves
     your terminal at TOPS-20 command level.


Examples

     The user changes the protection of his files named TEST.

        @SET FILE PROTECTION (OF FILES) TEST.* (TO) 775500
         TEST.EXE.1 [OK]
         TEST.MAC.1 [OK]
         TEST.REL.1 [OK]
        @

     The user changes the default magnetic tape density to 1600 bpi.

        @SET TAPE DENSITY (TO) 1600
        @

     The user changes his account number to 10500.

        @SET ACCOUNT (NUMBER TO) 10500
         Time used on previous account:  10300
         0:0:22 in 1:05:02
        @
SKIP Command                                               Page II-219


Function

     The SKIP command advances a magnetic tape  a  certain  number  of
     files or records, or to the logical end-of-tape.


Hints

     Remember to assign the tape  drive  to  your  job  and  have  the
     operator mount your tape.

     Be sure to have the correct tape parameters set (check them  with
     the  INFORMATION (ABOUT) TAPE-PARAMETERS command);  if necessary,
     give the SET TAPE command.


Format

     @SKIP (DEVICE) dev: x units

     dev:           is the magnetic tape device name in the form MTAn:
                    where n is the drive number.

     x              is the number of files or records over  which  you
                    want  to skip.  If you are skipping to the logical
                    end-of-tape, you must type  a  number  but  it  is
                    ignored.

     units          is either FILES, or RECORDS, or LEOT (for  logical
                    end-of-tape).


Operation

     1. Type SKIP and press the ESC key;  the system prints (DEVICE).

        @SKIP (DEVICE)

     2. Type the device name and leave a space.

        @SKIP (DEVICE) MTA3:

        If the device is not a magnetic tape, the system  ignores  the
        command and prints the message:

        ?dev: Device is not a magtape

        where dev:  is the device name you typed.

        If you typed a non-existent device,  the  system  ignores  the
        command and prints the message:  ?No such device.

     3. Type the number of files or records and leave a space.  If you
        are  skipping  to  the  logical  end-of-tape, you may type any
        arbitrary number.

        @SKIP (DEVICE) MTA3: 2

     4. Type (or use recognition on) the word FILES, RECORDS, or  LEOT
        (for  logical  end-of-tape)  and  press  the  RETURN key.  The
        system prints an @ when it finishes advancing the tape.

        @SKIP (DEVICE) MTA3: 2 FILES
        @
SKIP Command (continued)                                   Page II-220


Errors

     1. If the device is not on line, the system ignores  the  command
        and prints the message:

        ?Device is not on-line

        Use the PLEASE program to contact the operator,  then  reissue
        the command.

     2. If you type a CTRL/C to exit from a program  that  has  opened
        the  magnetic  tape drive, and then you give the SKIP command,
        the system prints the following message:

             ?Device MTAn:  open on JFN n
             %Close JFN? YES

        If you answer YES (or just press the RETURN key),  the  system
        closes  the  file,  prints  a confirming message, advances the
        tape, and leaves you at TOPS-20 command level.  Continuing the
        program  that  previously opened the magnetic tape may produce
        an error because the file has been closed.

             @SKIP (DEVICE) MTA1:  3 FILES
             ?Device MTA1:  open on JFN 3
             %Close JFN?  YES
              3   MTA1:   [OK]
             @

        If you answer NO,  the  system  prints  the  message  ?Command
        aborted...  and does not close the file or advance the tape.


Characteristics

     The SKIP command does not change any program in memory and leaves
     your terminal at TOPS-20 command level.


Restrictions

     The SKIP command works only for magnetic tapes.


Examples

     The user skips over three records.

        @SKIP (DEVICE) MTA1: 3 RECORDS
        @

     The user skips over 6 files.

        @SKIP (DEVICE) MTA2: 6 FILES
        @

     The user skips to the logical end-of-tape.

        @SKIP (DEVICE) MTA0: 0 LEOT
        @
SMOUNT Command                                             Page II-221


Function

     The SMOUNT command informs the system that you require the use of
     a  particular  file  structure  and increments a mount count (the
     number of users who have  given  the  SMOUNT  command)  for  that
     structure.   This  incremented count assures you that a structure
     will remain mounted until you no longer need it.  If a  structure
     is  not  mounted  at  the  time  you give the SMOUNT command, the
     operator is informed of the request  and  physically  mounts  the
     structure or informs you why your request is being denied.


Hints

     Refer to Section 4.1.1 for more information about structures  and
     when you would use the SMOUNT command.

     You must log in to the system before giving the  SMOUNT  command.
     After  you  log in, you are connected to your logged in directory
     on PS:.  You do not have to give an SMOUNT command for PS:.   PS:
     is always mounted.

     Once you have given an SMOUNT command for a  structure,  you  can
     access  directories  and files on that structure according to the
     protection codes set for "all users".  If you require "owner"  or
     "group"  member  privileges  to  directories  and  files  on that
     structure, use the CONNECT or ACCESS command after SMOUNT.

     You cannot use recognition on structure names.

     If you want to know what structures are presently  mounted,  give
     the INFORMATION (ABOUT) STRUCTURE * command.  If you want to know
     if a  particular  structure  is  mounted,  give  the  INFORMATION
     (ABOUT) STRUCTURE str:  command.

     When you no longer require access to a structure, you should give
     the SDISMOUNT command to relinquish your hold on that structure.


Format

     @SMOUNT (FILE STRUCTURE) name:

     name:     is the file structure name, followed by a colon.


Operation

     1.  Type SM and press the ESC key;  the system prints OUNT  (FILE
         STRUCTURE).

         @SMOUNT (FILE STRUCTURE)

     2.  Type the name of the file structure followed by a  colon  and
         press the RETURN key.

         @SMOUNT (FILE STRUCTURE) ADMIN1:

         The system searches all the mounted structures for  the  name
         you have entered.
SMOUNT Command (continued)                                 Page II-222


     3.  If the structure is  found,  the  system  does  not  print  a
         message  to  the  operator.   He  is unaware of your request.
         SMOUNT succeeds immediately and increments the  mount  count.
         The system prints the following message on your terminal.

         STRUCTURE ADMIN1:  MOUNTED
         @

     4.  If the  structure  is  not  found,  the  system  informs  the
         operator  of  your  request  and  prints  a  message  on your
         terminal.

         WAITING FOR STRUCTURE ADMIN1:  TO BE PUT ON LINE...

         The operator places  the  structure  on  the  available  disk
         drives.  The mount count is incremented and the message:

         STRUCTURE ADMIN1:  MOUNTED
         @

         is printed on your terminal.

     5.  There may be  an  occasion  when  your  request  to  mount  a
         structure  is  denied.   The operator sends a message to your
         terminal in the form:

         ?SMOUNT REQUEST DENIED -- THE REASON GIVEN:

         THERE ARE NO AVAILABLE DRIVES,
         PLEASE TRY LATER.
         @

         Also, if the operator  has  specified  that  a  structure  is
         unavailable  for  general use, you will receive the following
         message.

         ?UNAVAILABLE FOR MOUNTING
         @

         In both cases, your  terminal  is  left  at  TOPS-20  command
         level.

     6.  If an operator is not in attendance at the time of the SMOUNT
         request  and  the structure is not mounted, the system prints
         the following message.

         WAITING FOR STRUCTURE ADMIN1:  TO BE PUT ON LINE...
         %NO OPERATOR IN ATTENDANCE

         Press two CTRL/C's to return to command level or follow  your
         installation's  procedure  for allowing user requests when an
         operator is unavailable.  Contact  your  system  manager  for
         this procedure.

     7.  If the operator is busy at the time of your request, you will
         receive a message as follows.

         SYSTEM BUSY, PLEASE HOLD ON...

         Type two CTRL/C's to exit or wait for the operator to respond
         to your request.
SMOUNT Command (continued)                                 Page II-223


Characteristics

     The SMOUNT command does not change  any  program  in  memory  and
     leaves your terminal at TOPS-20 command level.

     The SMOUNT command remains in effect until you give the SDISMOUNT
     command or you log out of the system.

     You  are  only  required  to  enter  the  SMOUNT  command  for  a
     particular structure once.  If you give the SMOUNT command again,
     the system responds with a warning message:

     %STRUCTURE ALREADY MOUNTED
     @

     and leaves your terminal at TOPS-20 command level.


Examples

     The user requires access to structure STUDNT:.

     @SMOUNT (FILE STRUCTURE) STUDNT:
     STRUCTURE STUDNT:  MOUNTED
     @

     The user requires access to a structure that is not mounted.

     @SMOUNT (FILE STRUCTURE) LANG:
     WAITING FOR STRUCTURE LANG:  TO BE PUT ON LINE...

     After the user sees this message, he decides not  to  mount  this
     structure.   He  enters two CTRL/C's to return to TOPS-20 command
     level.

     ^C^C..
     @
SORT Program                                               Page II-224


Function

     The SORT program orders the contents of a file according to rules
     you specify in a SORT command.


Hints

     With the SORT program, you may alphabetize entries or place  them
     in  numerical  order,  then  store  the  results  back on disk or
     magnetic tape.

     If you are using magnetic tape, refer to the SET TAPE command and
     the information (ABOUT) TAPE-PARAMETERS command.


Format

     @SORT
     *outfil.typ=infil1.typ/switches,infil2.typ/switches,...

     outfil.typ     specifies the output file.   No  matter  how  many
                    input  files  you  have,  you can specify only one
                    output file.  This file receives  the  results  of
                    sorting each input file.  The output file can be a
                    disk file or a magnetic tape unit.

     infil.typ      specifies an input file.   You  can  specify  more
                    than  one  input  file,  and  the  results of each
                    successive sort are merged into the output file.

     switches       is a list of switches which  control  the  sorting
                    process.   Table  II-21 describes some of the SORT
                    switches.  You must have at least one /KEY  switch
                    and one /RECORD switch for each input file.  Use a
                    combination of the switches to control the sorting
                    process.   You may abbreviate a switch name to the
                    number of letters that uniquely identify  it  from
                    any   other   switch.    Thus,  /ALP  is  a  valid
                    abbreviation for /ALPHANUMERIC and /R is  a  valid
                    abbreviation for /RECORD.

     Each SORT command must contain:

     1.  Only one output file,

     2.  An equal sign,

     3.  At least one input file,

     4.  At least one /KEY switch, and

     5.  At least one /RECORD switch.
SORT Program (continued)                                   Page II-225


                             Table II-21
                            SORT Switches

       /ALIGN
          Starts each record in the output file at the beginning  of
          a  word.   /ALIGN  increases the speed of the transfer and
          the size of the output file.   You  may  find  the  /ALIGN
          switch  useful  in  aligning records at the left margin so
          you can print the output file.  If you  do  not  give  the
          /ALIGN switch, SORT does not align each record.

       /ALPHANUMERIC
          Declares that the current key field contains  alphanumeric
          characters.   If  you  do  not  give  a  data-type  switch
          (/ALPHANUMERIC, /COMP, /COMP1, /COMP3, OR /NUMERIC),  SORT
          uses /ALPHANUMERIC;  however when you give one of the sign
          switches, it uses /NUMERIC.

       /ASCII
          Processes the input and output files in  ASCII  mode.   If
          you do not give a recording-mode switch, (/ASCII, /BINARY,
          /EBCDIC, or /SIXBIT),  SORT  uses  a  default  mode  which
          depends on the data type:

                Data type          Default mode

                /ALPHANUMERIC      /ASCII
                /NUMERIC           /ASCII
                /COMP              /SIXBIT
                /COMP1             /SIXBIT
                /COMP3             /EBCDIC

       /BINARY
          Processes binary input  and  output  files  (if  they  are
          produced  by  COBOL).   If not, Refer to the /ASCII switch
          for the normal defaults.

       /BLOCKED:n
          Blocks the input and output files with n  logical  records
          per  logical  block.   If the blocking factor is different
          for each input and output file, place a separate  /BLOCKED
          switch  after  each  file;   otherwise  place the /BLOCKED
          switch before all the files.

       /COMP
          Declares   that   the   current   key    field    contains
          computational-fixed-point    binary    data.    Refer   to
          /ALPHANUMERIC for the defaults.

       /COMP1
          Declares   that   the   current   key    field    contains
          computational-1-floating-point   binary  data.   Refer  to
          /ALPHANUMERIC for the defaults.

       /COMP3
          Declares   that   the   current   key    field    contains
          computational-3-packed-decimal     data.      Refer     to
          /ALPHANUMERIC for the defaults.

       /CORE:nP
          Allocates n pages (512 words) of memory  for  use  in  the
          sorting process.
SORT Program (continued)                                   Page II-226


                         Table II-21 (Cont.)
                            SORT Switches


       /EBCDIC
          Processes EBCDIC input and output files..  Refer to /ASCII
          for the defaults.

       /FIXED
          Fixes the record size for the input and output files.   If
          the  files  vary, place a separate switch after each file;
          otherwise place the switch before all the files.   If  you
          do  not give a /FIXED or /VARIABLE switch, the system uses
          /FIXED for SIXBIT and EBCDIC files and /VARIABLE for ASCII
          files.

       /FORTRAN
          Treats the input and output files as FORTRAN binary files.
          If you do not give the /FORTRAN switch, the system assumes
          a file specified with /BINARY is a COBOL binary file.

       /HELP
          Prints a list of the SORT switches.

       /KEY:f:n:o
          Specifies the location and size of the next field to  sort
          and whether to sort it in ascending or descending order.

          f    (a decimal integer) specifies  the  position  of  the
               first character in the field.

               Count alphanumeric and numeric characters starting at
               position  1.   Thus,  to start at the letter G in the
               following record give the value 7 to f.

               ABCDEFGHIJKLMNOPQRSTUVWXYZ

               Count COMP and COMP1 keys by specifying the  leftmost
               character  position  (which  must  begin  on  a  word
               boundary).  The method of  counting  COMP  and  COMP1
               keys depends on the recording mode:  SIXBIT fields, f
               is any value 6n+1 (i.e., 1, 7, 13, etc.).  For  ASCII
               fields,  f  is any value 5n+1 (i.e., 1, 6, 11, etc.).
               For EBCDIC fields, f is any  4n+1  (i.e.,  1,  5,  9,
               etc.).   For  example,  to  specify  the third SIXBIT
               field, use the value 13;  to specify the fourth ASCII
               field use the value 16;  to specify the second EBCDIC
               field, use the value 5.  Using ASCII  or  EBCDIC  for
               binary  files is not recommended since they may cause
               a loss of data.

               The value you give for f must not be greater than the
               record length you specify.


          n    (a  decimal  integer)   specifies   the   number   of
               characters or digits in the key.  Specify numeric and
               alphanumeric  keys  in  characters.   Specify   COMP,
               COMP1,  and  COMP3 keys in digits - 10 digits or less
               are one word;  11 digits or more are  two  words  (do
               not count the sign for COMP3).
SORT Program (continued)                                   Page II-227


                         Table II-21 (Cont.)
                            SORT Switches


          o    determines how the SORT is ordered:  use the letter A
               (for ascending) or D (for descending).  If you do not
               give an  ordering  argument,  the  sort  is  done  in
               ascending  order.  The order you specify applies only
               to the current key.


                             Line numbers

                    If you have ASCII files  containing
                    line  numbers,  remember  that they
                    occupy  one   word   (5   character
                    positions)  at the beginning of the
                    line.


       /LABEL:type
          Designates the label status of a magnetic tape file.   The
          type  is  either  STANDARD (to read and write DEC-standard
          labels), NONSTANDARD (to by-pass labels on input and  omit
          them  on  output),  or  OMITTED  (to  omit looking for, or
          producing, labels).  Nonstandard labels are assumed to  be
          one record in length.  If you omit the /LABEL switch, SORT
          assumes that the files are labeled.

       /NUMERIC
          Declares that  the  current  key  field  contains  numeric
          display   characters.   Refer  to  /ALPHANUMERIC  for  the
          defaults.

       /RECORD:n
          Specifies the length of the record and must  be  specified
          at  least  once  in  each  SORT command.  The value n is a
          decimal integer identifying the number  of  characters  or
          items in the record.  When determining the record size, do
          not include the character count word in SIXBIT records  or
          the carriage-return/linefeed sequence in ASCII records.

          For variable length records, use a record size equal to or
          greater than the length of the longest record.

          You may use the /RECORD switch to fix the record length in
          both  the  output  and  the input files.  If all the input
          files have the same record length, give the /RECORD switch
          immediately  after  the  equals sign;  otherwise, give the
          /RECORD switch after each individual file.

          If the record length is actually larger than n, the record
          will be truncated.


       /SIGNED
          Uses the operational sign in the /NUMERIC, /COMP,  /COMP1,
          or  /COMP3  field when comparing that field to the sorting
          key.  If you do not specify a /SIGNED or /UNSIGNED switch,
          the  system  assumes  /SIGNED.   You must type the /SIGNED
          switch directly after a data type switch (i.e.,  /NUMERIC,
          /COMP, /COMP1, or /COMP3).
SORT Program (continued)                                   Page II-228


                         Table II-21 (Cont.)
                            SORT Switches


       /SIXBIT
          Processes SIXBIT input and output  files.   Refer  to  the
          /ASCII switch for the normal defaults.

       /UNSIGNED
          Ignores the operational sign of a /NUMERIC, /COMP, /COMP1,
          or /COMP3 field when comparing that field to the sort key.
          Normally the sign is used in these key comparisons.

       /VARIABLE
          Specifies that the record length varies.  When  using  the
          /VARIABLE  switch, always specify a record length equal to
          or greater than the length of the longest record.  If  you
          do  not give a /FIXED or /VARIABLE switch, the system uses
          /FIXED for SIXBIT or EBCDIC files and /VARIABLE for  ASCII
          files.


Operation

     1.  Type SORT and press the RETURN key;   the  system  prints  an
         asterisk.

         @SORT
         *

     2.  Type a SORT command;  when the system is finished sorting, it
         prints a message.

         *NAME.ALP=NAME.LIS/KEY:1:10/RECORD:60/ASCII
         Sorted 16 Records
         52 KEY comparisons,     3.25 per record
         0 Runs
          0:00:01 CPU time,      81.00 MS per record
          0:00:33 Elapsed

         *


Errors

     1.  If one of the input files does not exist, the system  ignores
         the command and prints the message:

         ?SRTLRE LOOKUP ERROR (0) FILE WAS NOT FOUND DSK:name.typ

         Reissue the command with the correct file specification.


Characteristics

     Starting the SORT program clears  any  program  from  memory  and
     leaves  your  terminal at SORT command level.  Type a CTRL/C when
     you want to return to TOPS-20 command level.


Examples

     The user sorts a text file.  The first sort has  two  keys.   The
     first key sorts on columns 1 through 10;  the second key sorts on
SORT Program (continued)                                   Page II-229


     columns 10 through 49.  The input file has records of up  to  200
     characters in length;  the output file name is NAMES.1

        @SORT
        *NAMES.1=NAMES.FIL/K:1:10/K:10:40/RECORD:200

        [SRTXPN Expanding to 212P]
        Sorted 608 Records
        5195 KEY comparisons,   8.54 per record
        0 Runs
         0:00:03 CPU time,      5.62 MS per record
         0:00:05 Elapsed
        *

     The second sort uses the same first key, but the second key sorts
     on columns 30 through 34 in descending order.

        *NAMES.2=NAMES.FIL/K:1:10/K:30:5:D/RECORD:200
        Sorted 608 Records
        5225 KEY comparisons,   8.59 per record
        0 Runs
         0:00:03 CPU time,      4.95 MS per record
         0:00:05 Elapsed
        *^C
        @

     The user sorts a computational file on characters 1 through 6  of
     each record.

        @SORT
        *T1.SRT=T1.OUT/K:1:6/COMP/R:18

        [SRTXPN Expanding to 53P]

        Sorted 100 Records
        644 KEY comparisons,   6.44 per record
        0 Runs
         0:00:01 CPU time,     10.25 MS per record
         0:00:02 Elapsed
        *^C
        @

     The user sorts a computational-1 file using two keys.

        @SORT
        *T2.SRT=T2.OUT/K:1:6/K:7:6/COMP1/R:18

        [SRTXPN Expanding to 45P]

        Sorted 100 Records
        608 KEY comparisons,   6.08 per record
        0 Runs
         0:00:00 CPU time,     8.83 MS per record
         0:00:02 Elapsed
        *^C
        @
SORT Program (continued)                                   Page II-230


     The user sorts a computational-3 file on a single key.

        @SORT
        *T3.SRT=T3.OUT/K:1:6/COMP3/RECORD:18

        [SRTXPN Expanding to 39P]
        Sorted 50 Records
        221 KEY comparisons,   4.42 per record
        0 Runs
         0:00:00 CPU time,     13.78 MS per record
         0:00:02 Elapsed
        *^C
        @
START Command                                              Page II-231


Function

     The START command starts the program currently in memory.


Format

     @START (PROGRAM)


Operation

     1.  Type STAR and  press  the  ESC  key;   the  system  prints  T
         (PROGRAM).  Press the RETURN key to start your program.

         @START (PROGRAM)
          INPUT FILE:


Errors

     1.  If you do not have a program in memory,  the  system  ignores
         the START command and prints the message:

         ?NO PROGRAM

         Use the LOAD or GET command to place your program in memory.


Characteristics

     The START command starts the  program  in  memory  at  the  start
     address  specified  in  its  entry vector.  Your terminal is left
     under control of the program.


Restrictions

     You may not give a START command to restart a COBOL program after
     it has already executed.


Example

     The  user  loads  and  starts  his  program.   This  example   is
     equivalent to the command EXECUTE (FROM) TRANSL.REL.

        @LOAD (FROM) TRANSL.REL
        LINK:   Loading

        EXIT
        @START (PROGRAM)
        TRANSLATE (DIRECTORY) MILLER
        <MILLER> (IS) [4,104]
        @
SUBMIT Command                                             Page II-232


Function

     The SUBMIT command places entries into, examines the contents of,
     or removes entries from the Batch input queue.


Hints

     The Batch input queue is a list of jobs waiting to be run by  the
     Batch system.

     To examine the contents of the  entire  queue,  give  the  SUBMIT
     command  without any arguments;  if you want just the information
     about your jobs, include  the  /CHECK  switch.   To  examine  the
     contents  of  both  the line printer and Batch input queues, give
     the QUEUE command without any arguments.  If you want to  examine
     just  your  jobs,  include the /CHECK switch.  (The QUEUE command
     clears any previous program from memory and leaves your  terminal
     at TOPS-20 command level.)

     Refer to Section 3.4 and the description of the Batch Commands.

     If you always  want  your  SUBMIT  commands  to  contain  certain
     switches,  include  a line in your SWITCH.INI file beginning with
     the word SUBMIT and followed by the switches.  Refer  to  Section
     7.4.

     You can include the MAIL program commands in your  Batch  control
     file  and have the MAIL message inform you when your Batch job is
     complete.  Refer to the MAIL program for a complete description.


Format

     @SUBMIT jobname=control-filespec,log-filespec/switches

     jobname             is the name (of no more than six alphanumeric
                         characters)  you  want to assign to the Batch
                         job.  If you  do  not  type  a  jobname,  the
                         system  uses  the  name  of the log-filespec.
                         When omitting the jobname, you may also  omit
                         the  equals  sign.   If  both the jobname and
                         log-filespec are omitted, the system defaults
                         to the control-filespec.

     control-filespec    specifies the control file you are submitting
                         to  the Batch input queue.  The system uses a
                         file  type  of  .CTL   unless   you   specify
                         otherwise.   If you want to specify a file in
                         any directory but your  connected  directory,
                         use  a  project-programmer  number  (refer to
                         Section 5.3.1).

     log-filespec        specifies  the  file  which  will  contain  a
                         record  of the action taken during the course
                         of  the  job.   If  you  do  not  specify   a
                         log-filespec, the system uses the jobname and
                         the file type .LOG.

     switches            is a list of  switches  selected  from  Table
                         II-22.

                         To print the  contents  of  the  Batch  input
                         queue,  give  the  SUBMIT command without any
                         arguments.
SUBMIT Command (continued)                                 Page II-233


                             Table II-22
                       SUBMIT Command Switches


       /AFTER:date:time
          Submits the job, but runs it only after the specified date
          and  time.   The  date  is  in  the  form dd-mmm-yy (i.e.,
          :10-JAN-77:).  You must separate the day, month  and  year
          with  hyphens.   Note  also  that  specifying  the date is
          optional.  You can give  a  future  time  without  a  date
          preceding  it.   The  argument  time  is in the form hh:mm
          (24-hour time of day), or  +hh:mm  (time  later  than  the
          current  time).   You  must separate the date and time and
          hours from minutes by typing a colon.

       /HELP
          Prints the general syntax of the SUBMIT command, including
          a complete list of switches.

       /KILL
          Removes the specified jobnames from the Batch input queue.
          When you give the /KILL switch, you must type a jobname or
          the /SEQ switch on the left side of the equals sign before
          typing  the  switch /KILL on the right side.  If more than
          one of your jobs has the same jobname, use the /SEQ switch
          to identify the proper job.

       /LIST
          Prints information about the  specified  jobnames  in  the
          Batch  input  queue.  If you do not specify a jobname, the
          system prints the status of the entire Batch input queue.

       /NORESTART
          Inhibits the system  from  restarting  the  job  when  the
          system recovers after a failure.  The system normally does
          not restart a job.  Refer to the /RESTART switch.

       /OUTPUT:condition
          Specifies the condition under which a log file is printed.
          The  system  always  prints a log file if the condition is
          LOG or if you do not specify the /OUTPUT switch.   If  you
          do  not want a log file printed, use a condition of NOLOG.
          If you want the log file printed only if there are errors,
          use the condition ERROR.

       /PAGE:n
          Permits the job to  print  up  to  n  pages  on  the  line
          printer.   Normally,  the system allows 200 pages;  if you
          specify the /PAGE  switch  without  a  value,  the  system
          allows  2000 pages.  If the job should go over this limit,
          the system cancels any more line printer output.

       /RESTART
          Restarts the job when the system restarts after a failure.
          You  should  not have a job restarted if it is potentially
          dangerous to your files or the system.   The  system  does
          not  normally  restart  jobs.   Refer  to  the  /NORESTART
          switch.
SUBMIT Command (continued)                                 Page II-234


                         Table II-22 (Cont.)
                       SUBMIT Command Switches


       /TAG:label
          Starts the job at the first line containing the  specified
          label  (of  up  to five alphanumeric characters).  This is
          equivalent to a GOTO (refer  to  the  description  of  the
          Batch commands) at the beginning of the control file.


       /TIME:time
          Specifies the maximum amount of central processor time the
          job  may  use.   The argument time is in the form hh:mm:ss
          (hours:minutes:seconds).  If you do not specify a  switch,
          the  system  uses a limit of five minutes;  if you specify
          the switch without a time, the system uses a limit of  one
          hour.   If  your job exceeds this limit, the system prints
          the message ?TIME LIMIT EXCEEDED in the control file  then
          kills the job.

       /UNIQUE:n
          To run any number of concurrent batch jobs logged in under
          your  user  name, give n a value of 0.  Normally (and when
          you give n a value of 1), the system does not log in a new
          batch  job  under  your user name until there are no other
          batch jobs with your user name.


Operation

     1.  Type SUBMIT and leave a space.

         @SUBMIT

     2.  Type the arguments to the  SUBMIT  command,  then  press  the
         RETURN key.

         @SUBMIT MAKMON.CTL
         [INP:MAKMON=/SEQ:1026/TIME:00:05:00]
         @


Output

     If you are submitting a job, the system prints a message  in  the
     form:

     [INP:jobname=/SEQ:n/TIME:hh:mm:ss]

     jobname is the name of your job, n is the  sequence  number,  and
     hh:mm:ss is the time limit for the job.

     If you are killing a job, the system  prints  a  message  in  the
     form:

     [n Jobs Killed]

     where n is the number of jobs you removed  from  the  queue.   If
     your  job  is running, the system stops it and prints the message
     [No Jobs Killed, 1 Job Cancelled].
SUBMIT Command (continued)                                 Page II-235


     The system prints the contents of the Batch input  queue  in  the
     following form:

     INPUT QUEUE:
     STS  JOB    SEQ  PRIO   TIME      USER

     RUN 2MSCM   1197  10  01:00:00  HURLEY
     AFT OTSJIE  1205  10  01:00:00  EGAN  After:+01:12
         PTYCON  2144  10  00:05:00  HURLEY
         FRS20   2130  10  00:20:00  WHITLOCK
         2CSCM   1198  10  01:00:00  HURLEY
         2ESCM   1199  10  01:00:00  HURLEY
         LSTLST  1200  10  01:00:00  HURLEY



     TOTAL:  INP:   7 jobs;  05:25:00 Runtime
     @

     STS is the job status if the job is  deferred,  the  letters  AFT
     (for  AFTER)  are placed in this field.  JOB is the jobname;  SEQ
     is the sequence number and TIME is the time limit  for  the  job.
     USER is the user name who is submitting the job.


Characteristics

     Giving SUBMIT command runs the QUENCH program  which  clears  any
     previous  program from memory and leaves your terminal at TOPS-20
     command level.


Restrictions

     To submit a file from another user's directory, precede the  file
     specification  with a project-programmer number;  you may not use
     a logical name.  Refer to Section 5.3.1.

     You may use recognition only on the command name.


Examples

     The user submits a Batch job.

        @SUBMIT STAR
        [INP:STAR=/SEQ:44/TIME:00:05:00]
        @

     The user submits a Batch job and assigns  it  a  name.   The  job
     cannot  be  started  until  2  hours from the time the command is
     given.  The log file will not be printed.

        @SUBMIT RUN3=STAR.CTL/AFTER:2:00:00/OUTPUT:NOLOG
        [INP:STAR=/SEQ:45/TIME:00:05:00]
        @

     The user kills a job waiting in the Batch input queue.

        @SUBMIT NEWFIL=/KILL
        [1 Job Killed]
        @
SUBMIT Command (continued)                                 Page II-236


     The user lists the jobs running under the Batch system.

        @SUBMIT
        INPUT QUEUE:
        STS   JOB    SEQ  PRIO   TIME      USER

        RUN   CHECK  7342  10  00:05:00    MCKIE

        TOTAL:  INP:   1 job;  00:05:00 Sec. Runtime
        @

     The user then cancels the running job.

        @SUBMIT CHECK=/KILL
        [No Jobs Killed, 1 Job Cancelled]
        @
SYSTAT Command                                             Page II-237


Function

     The SYSTAT command prints information about the current state  of
     the system.


Format

     @SYSTAT arguments

     arguments  is an optional list of user names and/or job  numbers,
                separated  by  spaces.   The word ALL and/or a dot (.)
                can also be used as arguments in place of a user  name
                or job number.

                no arguments    prints the header and the job  number,
                                line  number, current program name and
                                user name for each job.

                user name       prints  information  about  only   the
                                specified user.

                job number      prints  information  about  only   the
                                specified  job.   If  you  want to get
                                information about  your  current  job,
                                type a dot (.).

                ALL             prints the header and the job  number,
                                controlling  job  number  (if  it is a
                                pseudo-terminal), line number, current
                                program  name,  state  of the job, the
                                accumulated run  time,  the  run  time
                                limit,  the  user  name  and connected
                                directory for each job.

                You may combine any or all of these arguments to print
                the   desired  information.   The  arguments  must  be
                separated by a space, tab or comma.


Operation

     1.  Type (or use recognition) on SYSTAT and leave a space.

         @SYSTAT

     2.  Type the arguments (if any), separating them with spaces, and
         press  the  RETURN key.  The system prints the information on
         your terminal.

        @SYSTAT
         WED 4-FEB-76 10:55:05  UP 1:33:31
         16+5 JOBS   LOAD AV   1.70   1.35   1.15

         JOB  LINE PROGRAM  USER
           2     3  RIP     EIBEN
           4    14  EXEC    MILLER
           9    41  FORTRA  EKLUND
          10    43  EXEC    POTTINGER
          11    32  EXEC    CLARK
          12    73  EXEC    BROWNE
          13    50  EXEC    CONNOR
          14     4  EXEC    NOT LOGGED IN
          15    15  EXEC    KIRSCHEN
SYSTAT Command (continued)                                 Page II-238


          16    61  EXEC    EDU-SERV
          19*  110  EXEC    MCKIE
          20    74  PTYCON  LIEMAN
          21    23  PTYCON  MCKIE
          22   115  EXEC    LIEMAN
          23   114  EXEC    LIEMAN
          24   107  STATUS  EIBEN
          25    10  SDDT    LEWINE

           1   101  EXEC    OPERATOR
           3   106  EXEC    OPERATOR
           5   105  OPLEAS  OPERATOR
           6   103  LPTSPL  OPERATOR
           7   104  BATCON  OPERATOR
        @


Output

     The first line of output gives the day of the week,  date,  time,
     and the length of time since the system was last started.  In the
     following example, the date is Wednesday,  February  4,  1976  at
     10:55:20  AM.   The  system  has  been up for about an hour and a
     half.

     @SYSTAT ALL
      WED 4-FEB-76 10:55:20  UP 1:33:46

     The second line gives the number of user jobs plus the number  of
     operator jobs.  In the next example, there are 16 user jobs and 5
     operator jobs.

     16+5 JOBS   LOAD AV   1.85   1.40   1.17

     The last three numbers on the second line  indicate  the  average
     number  of runnable processes over a one minute, five minute, and
     fifteen minute period.  These numbers can range from zero on  up.
     The higher the numbers the longer a job has to wait for CPU time.

     The lines following the load averages contain  information  about
     each   job.   When  you  give  the  SYSTAT  command  without  any
     arguments, only the columns JOB,  LINE,  PROGRAM,  and  USER  are
     printed;  when you give the ALL argument, they all are printed.

     JOB               - is the job number.  An *  is  printed  beside
                         your job number.
     CJB               - is the controlling job number if the job is a
                         Batch  job,  a  job  controlled by the PTYCON
                         program  or   any   other   job   that   uses
                         pseudo-terminals.
     LINE              - is the line number of the job which  is  also
                         the   terminal   number.   That  is  TTY3  is
                         connected to line 3.  If the line  is  "DET",
                         the job has been detached from a terminal (to
                         reattach  to  the  job,   give   the   ATTACH
                         command).
     PROGRAM           - is the  name  of  the  program  the  user  is
                         currently  running.  If the name is EXEC, the
                         user is probably at TOPS-20 command level  or
                         giving a TOPS-20 command.
     STATE             - is the state of the user's job.  It is either
                         running (RUN) or waiting for the user to type
                         some input on his terminal (TI).
SYSTAT Command (continued)                                 Page II-239


     TIME              - is the total central processor time  the  job
                         has used.
     LIMIT             - is the limit of central  processor  time  the
                         job  can  use  most often used for batch jobs
                         only.
     USER              - is the name of the user under which  the  job
                         is  logged  in.   If  the  user  has  typed a
                         CTRL/C, but not yet  logged  in,  the  system
                         prints NOT LOGGED IN.
     dev:<directory>   - is the name of the job's connected  structure
                         and  directory if it is other than the logged
                         in directory.

     JOB  CJB LINE PROGRAM STATE  TIME     LIMIT    USER, <DIRECTORY>
       2         3  RIP     TI    0:05:46           EIBEN, <1EIBEN>
       4        14  EXEC    TI    0:00:00           MILLER
       9        41  FORTRA  TI    0:03:36           EKLUND
      10        43  EXEC    TI    0:02:54           POTTINGER,PS:<RMS-DEBUG>
      11        32  EXEC    TI    0:00:29           CLARK
      12        73  EXEC    TI    0:00:05           BROWNE
      13        50  EXEC    TI    0:00:01           CONNOR
      14         4  EXEC    TI    0:00:00           NOT LOGGED IN
      15        15  EXEC    TI    0:03:53           KIRSCHEN
      16        61  EXEC    TI    0:00:51           EDU-SERV
      19*  21  110  EXEC    RUN   0:00:01           MCKIE,ADMIN:<MCKIE>
      20        74  PTYCON  TI    0:00:11           LIEMAN
      21        23  PTYCON  TI    0:01:10           MCKIE
      22   20  115  EXEC    TI    0:00:16           LIEMAN
      23   20  114  EXEC    TI    0:00:15           LIEMAN,PS:<DOC-SPECS>
      24    7  107  STATUS  RUN   0:00:03  0:20:01  EIBEN
      25        10  SDDT    RUN   0:01:26           LEWINE

     Last, the system lists the information for the operator's jobs.

        1      101  EXEC    TI    0:00:22           OPERATOR
        3   1  106  EXEC    TI    0:00:33           OPERATOR
        5   1  105  OPLEAS  RUN   0:00:00           OPERATOR
        6   1  103  LPTSPL  RUN   0:00:35           OPERATOR
        7   1  104  BATCON  TI    0:00:59           OPERATOR
     @


Characteristics

     The SYSTAT command does not change  any  program  in  memory  and
     leaves your terminal at TOPS-20 command level.


Examples

     The user prints all the information about the user EIBEN.

     @SYSTAT EIBEN ALL
        2         3  TV      TI    0:05:51           EIBEN, <1EIBEN>
       24    7  107  STATUS  RUN   0:00:03  0:20:01  EIBEN
     @
SYSTAT Command (continued)                                 Page II-240


     The user gives the SYSTAT command without any arguments.
     @SYSTAT
      WED 4-FEB-76 10:56:10  UP 1:34:36
      16+5 JOBS   LOAD AV   2.57   1.69   1.29

     JOB  LINE PROGRAM  USER
       2     3  EXEC    EIBEN
       4    14  EXEC    MILLER
       9    41  FORTRA  EKLUND
      10    43  EXEC    POTTINGER
      11    32  EXEC    CLARK
      12    73  EXEC    BROWNE
      13    50  EXEC    CONNOR
      14     4  EXEC    NOT LOGGED IN
      15    15  EXEC    KIRSCHEN
      16    61  EXEC    EDU-SERV
      19*  110  EXEC    MCKIE
      20    74  PTYCON  LIEMAN
      21    23  PTYCON  MCKIE
      22   115  EXEC    LIEMAN
      23   114  EXEC    LIEMAN
      24   107  STATUS  EIBEN
      25    10  EXEC    LEWINE

       1   101  EXEC    OPERATOR
       3   106  EXEC    OPERATOR
       5   105  OPLEAS  OPERATOR
       6   103  LPTSPL  OPERATOR
       7   104  BATCON  OPERATOR
     @
TALK Command                                               Page II-241


Function

     The  TALK  command  links  your  terminal  to  another   terminal
     (referred  to  as  the  linked  terminal).   Whatever you type is
     printed on both your terminal and the linked terminal;   whatever
     a  user types on the linked terminal appears both on his terminal
     and your terminal.

     The linkage affects only the output of the terminals;  the  input
     of the terminals is left intact.  For example, if your program is
     waiting for a command and a user types a command  on  the  linked
     terminal,  that  command  works only for his job, not yours - you
     see only the resulting typescript.


Hints

     The TALK command is useful when you  are  teaching  another  user
     about  a system feature.  By using the TALK facility, the teacher
     and pupil do not have to physically be in the same location.  

     To avoid getting the message ?UNRECOGNIZED COMMAND, precede  your
     comments with an !.

     The BREAK command breaks any links you have established with  the
     TALK command.


Format

     @TALK (TO) identifier

     identifier is either a user name or a line number.


Operation

     1.  Type TALK and press the ESC key;  the system prints (TO).

         @TALK (TO)

     2.  Type a user name or a terminal number and  press  the  RETURN
         key.   You  may use recognition in typing user names.  If you
         type a valid user name or terminal number, the system  prints
         a message on both terminals.

         @TALK (TO) WATERS

         LINK FROM MCKIE, TTY 23
         @

     3.  If there is more than one job logged in under  a  user  name,
         the system prints out a list of terminal numbers.  Select the
         job you want and type the appropriate terminal number.

         @TALK (TO) MACK
          TTY35, EXEC
          TTY110, BLIS10
         TTY: 35

         LINK FROM MCKIE, TTY 23
         @
TALK Command (continued)                                   Page II-242


     4.  If  the  job  you  are  linking  to  is  logged   in   on   a
         pseudo-terminal  (as  are Batch jobs and jobs logged in under
         the PTYCON job controller), the system prints a message after
         which you must press the RETURN key.  If you should link to a
         Batch job, remember that if you type a ?  or a %,  the  Batch
         system may interpret this as an error within the job.

         @TALK (TO) KIRSCHEN
          [PSEUDO-TELETYPE CONFIRM]

         LINK FROM MCKIE, TTY 23
         @


Errors

     1.  If the user is not logged in, the system ignores the  command
         and prints the message:

         ?USER IS NOT LOGGED-IN
         USE "MAIL" TO SEND MAIL TO USER

         Use the MAIL program to send the message to the user.

     2.  If the user is not allowing anyone to establish a link to his
         terminal,  the  system  rings both terminal bells five times,
         then prints the following message on your terminal.

         ?REFUSED, USE "MAIL" TO SEND MAIL TO USER

         Use the MAIL program or wait until a later time.



Characteristics

     The TALK command does not change any program in memory and leaves
     your terminal at TOPS-20 command level.


Restrictions

     You may not link to a detached job.

     The TALK command does  not  print  a  password  onto  any  linked
     terminals.  If, however, you type a CTRL/R while giving a command
     containing a password, the password is printed.


Examples

     The user TALKs to user POMFRET then BREAKS the link.

        @TALK (TO) POMFRET

        LINK FROM MCKIE, TTY 23
        @!  Did you update the FORTRAN sources?
        @!  Yes, they are in <FORLIB>
        @!  Thanks....
        @BREAK (LINKS)
        @
TDIRECTORY Command                                         Page II-243


Function

     The TDIRECTORY command prints a list of your  files,  ordered  by
     the  date  and  time  the files were most recently written to the
     least recently written.


Hints

     Giving  the  TDIRECTORY  command  is  exactly  like  giving   the
     DIRECTORY  command with the subcommands CHRONOLOGICAL (BY) WRITE,
     REVERSE (SORTING), and TIMES (AND DATES OF) WRITE.  Refer to  the
     DIRECTORY  command for more information;  you can give any of the
     DIRECTORY subcommands with TDIRECTORY.


Format

     @TDIRECTORY (OF FILES) filespecs

     filespecs      is a list of the file specifications  about  which
                    you  want  to obtain the information.  If you omit
                    the  file  specifications,   the   system   prints
                    information  about all the files in your connected
                    directory.


Operation

     1.  Type TDIR and press the ESC key;  the  system  prints  ECTORY
         (OF FILES).

         @TDIRECTORY (OF FILES)

     2.  Type (or use recognition on) the  file  specifications,  then
         press  the  RETURN  key.   The  system  prints  the directory
         information.

         @TDIRECTORY (OF FILES) EDIT

            <MCKIE>
                         WRITE

          EDIT.EXE.1     17-NOV-75 16:32:48
         @


Output

     The system lists the files in the  order  of  the  most  recently
     written  file  to the least recently written file.  The following
     information is listed for each file:

     1.  Name, type, generation number,

     2.  The date and time the file was last written, and

     3.  A line summarizing the number of  listed  files  (if  greater
         than 1).
TDIRECTORY Command (continued)                             Page II-244


Characteristics

     The TDIRECTORY command does not change any program in memory  and
     leaves your terminal at TOPS-20 command level.


Examples

     The user obtains the information about all  his  files  with  the
     name DUMPER.

        @TDIRECTORY (OF FILES) DUMPER

           <MCKIE>
                        WRITE

         DUMPER.MEM.2    6-NOV-75 20:28:49
           .TXT.4        6-NOV-75 19:18:30
           .RNO.2       27-JUL-66 05:00:00

         TOTAL OF 3 FILES
        @
TERMINAL Command                                           Page II-245


Function

     The TERMINAL command changes various terminal parameters such as:

     1.  Input/output speed,

     2.  Handling of lowercase characters,

     3.  Length and width of the terminal page, and

     4.  Handling of the RUBOUT key.


Hints

     The TERMINAL command helps  make  typing  on  the  terminal  more
     convenient.   When  you want to temporarily stop output from your
     terminal, set the PAGE parameter;  you can then stop printing  by
     typing a CTRL/S and resume printing by typing a CTRL/Q.

     If you use a video  terminal,  you  can  have  the  system  erase
     deleted  characters  from  the  screen,  rather than printing the
     character followed  by  a  backslash.   Do  this  by  giving  the
     TERMINAL  command with your terminal type as an argument.  If you
     use this type of  terminal  often,  place  the  command  in  your
     LOGIN.CMD file.  Refer to Section 3.2.4.

     You can print the current values of your terminal  parameters  by
     giving the INFORMATION (ABOUT) TERMINAL-MODE command.

     Refer to Chapter 9 for more information.


Special Cases

     Occasionally, your terminal may not work.  If typing CTRL/Cs does
     not  work,  try  the  following  procedures before contacting the
     operator:

     1.  Type a CTRL/T.  This will not hurt any work you have done and
         causes  the  system  to  print a line of information.  If the
         line prints, your terminal is working correctly;  if the line
         does not print, continue.

     2.  Type a CTRL/Q, then  a  CTRL/T.   If  the  line  prints,  the
         terminal  has  page  mode  set;   if the line does not print,
         contact the operator.


Format

     @TERMINAL (MODE IS) parameter

     parameter      is any one  of  the  parameters  listed  in  Table
                    II-23.
TERMINAL Command (continued)                               Page II-246


                             Table II-23
                         Terminal Parameters


       33
          Informs the system that your terminal is a Teletype  Model
          33.  The system assumes that a Model 33:

          1.  Does not have a formfeed or tab mechanism,

          2.  Prints lowercase letters as uppercase,

          3.  Needs extra time to print tabs and formfeeds,

          4.  Has a line width of 72, and

          5.  Has a page length of 66.

       35
          Informs the system that your terminal is a Teletype  Model
          35.  The system assumes that a Model 35:

          1.  Has a formfeed and tab mechanism,

          2.  Prints lowercase letters as uppercase,

          3.  Needs extra time to print tabs and formfeeds,

          4.  Has a line width of 72, and

          5.  Has a page length of 66.

       37
          Informs the system that your terminal is a Teletype  Model
          37.   The  system  assumes  that  a  Model 37 has the same
          characteristics as a  Model  33,  except  that  it  prints
          lowercase letters.

       EXECUPORT
          Informs the system that your  terminal  is  an  Execuport.
          The system assumes that an Execuport:

          1.  Does not have a formfeed or tab mechanism,

          2.  Prints lowercase letters,

          3.  Needs extra time to perform a carriage-return,

          4.  Has a line width of 80, and

          5.  Has a page length of 66.

       FLAG (UPPER CASE OUTPUT)
          Instructs the system to print a  single  quote  before  it
          prints  an  uppercase  character.   This works only if you
          have  set  the  NO  LOWERCASE  parameter.   To  stop   the
          flagging,  set the NO FLAG parameter.  The system does not
          ordinarily flag uppercase.
TERMINAL Command (continued)                               Page II-247


                         Table II-23 (Cont.)
                         Terminal Parameters


       FORMFEED (EXISTS ON TERMINAL)
          Informs the system  that  your  terminal  has  a  formfeed
          mechanism;   otherwise  the  system simulates formfeeds by
          printing the correct number of blank lines if you have set
          TERMINAL  NO  INDICATE,  or by printing an ^L you have set
          TERMINAL INDICATE.  To inform the system that  a  formfeed
          does not exist, set the NO FORMFEED parameter.

       FULLDUPLEX (MODE FOR TERMINAL)
          Instructs the system to repeat each character as you  type
          it;   your terminal does not print what you type until the
          system sends the character  back  to  the  terminal.   The
          system normally sets the FULLDUPLEX parameter.

       HALFDUPLEX (MODE FOR TERMINAL)
          Inhibits the system from repeating each character  as  you
          type  it;  your terminal must print each character itself.
          The system normally sets FULLDUPLEX parameter.

       HELP
          Prints information about the terminal parameters.

       IMMEDIATE (ECHO MODE)
          Instructs the system to immediately echo each character as
          you  type  it;  normally the system waits until the proper
          program (or the command language interpreter) receives the
          character  (i.e.,  NO  IMMEDIATE is the default).  To turn
          off  immediate  mode  echoing,  set   the   NO   IMMEDIATE
          parameter.    IMMEDIATE   echoing   works  only  when  the
          FULLDUPLEX parameter is set.

       INDICATE (FORMFEED)
          Instructs the system to print a ^L  instead  of  advancing
          the  proper number of lines whenever outputting a formfeed
          (or CTRL/L).  The  system  normally  advances  the  proper
          number of lines as in NO INDICATE.

       LA30
          Informs  the  system  that  your  terminal  is  a  Digital
          Equipment Corporation LA30.  The system assumes an LA30:

          1.  Does not have a formfeed or tab mechanism,

          2.  Prints  lowercase   letters   as   the   corresponding
              uppercase letters,

          3.  Needs  extra  time  to  perform   a   carriage-return,
              linefeed, tab and formfeed,

          4.  Has a line width of 80, and

          5.  Has a page length of 66.
TERMINAL Command (continued)                               Page II-248


                         Table II-23 (Cont.)
                         Terminal Parameters


       LA36
          Informs  the  system  that  your  terminal  is  a  Digital
          Equipment Corporation LA36.  The system assumes an LA36:

          1.  Does not have a formfeed or tab mechanism,

          2.  Prints lowercase letters,

          3.  Has a line width of 132, and

          4.  Has a page length of 66.

       LENGTH (OF PAGE IS) n
          Sets the number of lines you have on a page.  If you  have
          terminal  PAGE mode set, the system stops after printing n
          lines and waits for you to type a CTRL/Q.  If you set  the
          page  length to 0, the system stops printing only when you
          type a CTRL/S;  it does not automatically stop at the  end
          of a page.

       LINE-HALFDUPLEX (MODE FOR TERMINAL)
          Inhibits the system from printing each  character  as  you
          type it.  Same as HALFDUPLEX.

       LOWERCASE (EXISTS ON TERMINAL)
          Tells the system  that  your  terminal  handles  lowercase
          characters  properly.   (Handling lowercase properly means
          either printing the lowercase character  or  printing  the
          proper  uppercase  character.)  If  your terminal does not
          handle lowercase properly, use the NO LOWERCASE parameter.
          When  NO  LOWERCASE  is set, the system converts lowercase
          letters to the appropriate uppercase letters.  Also  refer
          to the FLAG parameter and the RAISE parameter.

       NO parameter
          Reverses  the  parameters;   FLAG,  FORMFEED,   IMMEDIATE,
          INDICATE, LOWERCASE, PAGE, RAISE, and TABS.

       PAGE (MODE) n
          Instructs the system to stop printing whenever  it  either
          reaches  the  end  of  a  page  or  you type a CTRL/S.  To
          continue the printout, type a CTRL/Q.   To  set  the  page
          length, give the number n or set the LENGTH parameter.  If
          you set the page length to 0, the  system  stops  printing
          only  when  you  type a CTRL/S;  it does not automatically
          stop at the end of a page.  To turn off page mode, use the
          NO  PAGE  parameter.  The system does not normally set the
          page parameter.

       RAISE (TERMINAL INPUT)
          Instructs the system to change  all  lowercase  characters
          (which  you  type on your terminal) into the corresponding
          uppercase character.  To revert to the  condition  of  not
          raising input, use the NO RAISE parameter.
TERMINAL Command (continued)                               Page II-249


                         Table II-23 (Cont.)
                         Terminal Parameters


       SPEED (OF INPUT) rate (AND OUTPUT) rate
          Sets the rate  at  which  your  terminal  does  input  and
          output.   Your  installation  sets  the rate at which your
          terminal starts at.  If you want to change that rate,  set
          the  SPEED parameters, then change the baud rate switch on
          your terminal.  If you do not give  an  output  speed  the
          system  uses  the input speed.  The valid speeds are:  50,
          75, 110, 134, 150, 200, 300, 600, 1200,  2400,  4800,  and
          9600.   Hints:  Most hard-copy terminals run at either 110
          or 300 baud;  display terminals usually run at  a  variety
          of  speeds  up  to 9600 baud;  a 2741 terminal runs at 134
          baud (actually 134.5);  the maximum speed you can use over
          a  conventional  telephone line is 300 baud.  If you set a
          baud rate your terminal cannot handle,  obtain  your  line
          number  (if possible) and ask the operator to set the baud
          rate to an appropriate value.

       TABS (EXIST ON TERMINAL)
          Informs the system that your terminal has  mechanical  tab
          stops   every   eight   columns;   otherwise,  the  system
          simulates the tabs  by  printing  the  correct  number  of
          spaces.  To invoke simulation, set the NO TABS parameter.

       TERMINET
          Informs the system that your terminal is a Terminet.   The
          system assumes a Terminet:

          1.  Does not have a formfeed or tab mechanism,

          2.  Prints lowercase letters,

          3.  Needs  extra  time  to  perform   a   carriage-return,
              linefeed, tab and formfeed,

          4.  Has a line width of 72, and

          5.  Has a page length of 66.

       TI
          Informs  the  system  that  your  terminal  is   a   Texas
          Instruments  terminal.   The  system assumes a TI terminal
          has the same characteristics as an Execuport.

       TYPE n
          Instructs the system to treat your  terminal  as  terminal
          type n.  The following table describes the characteristics
          of the different terminal types.

          Terminal
          Type      Characteristics

           0        Same as Model 33.
           1        Same as Model 35.
           2        Same as Model 37.
           3        Same as EXECUPORT and TI.
          4-7       Reserved for customer use.
           8        Same as TERMINET.  (This is the default type.)
           9        Has  a  TAB  and  FORMFEED   mechanism,   prints
                    lowercase,  infinite  line  width, infinite page
                    length.
TERMINAL Command (continued)                               Page II-250


                         Table II-23 (Cont.)
                         Terminal Parameters


          10        Same as VT05.
          11        Same as VT50.
          12        Same as LA30.
          13        Same as VT52, except with a page length  of  30.
                    Used for a Digital Equipment Corporation GT40.
          14        Same as LA36.
          15        Same as VT52.

       VT05
          Informs  the  system  that  your  terminal  is  a  Digital
          Equipment Corporation VT05.  The system assumes a VT05:

          1.  Does not have a formfeed mechanism,

          2.  Has a tab mechanism,

          3.  Prints  lowercase   letters   as   the   corresponding
              uppercase letters,

          4.  Needs extra time to perform a linefeed, or formfeed,

          5.  Has a line width of 72, and

          6.  Has a page length of 20.

       VT50
          Informs  the  system  that  your  terminal  is  a  Digital
          Equipment Corporation VT50.  The system assumes a VT50:

          1.  Does not have a formfeed or tab mechanism,

          2.  Prints  lowercase   letters   as   the   corresponding
              uppercase letters,

          3.  Has a line width of 80, and

          4.  Has a page length of 12.

       VT52
          Informs  the  system  that  your  terminal  is  a  Digital
          Equipment  Corporation  VT52.  The system assumes the same
          characteristics as  a  VT50  except  that  it  has  a  tab
          mechanism, prints lowercase letters, and has a page length
          of 24 lines instead of 12.

       WIDTH (OF LINE IS) n
          Tells the system the width of your  terminal  line.   When
          the  system prints a line longer than your terminal width,
          it prints the first n positions, then advances a line  and
          prints the rest.
TERMINAL Command (continued)                               Page II-251


Operation

     1.  Type TERM and press the RETURN key;  the system  prints  INAL
         (MODE IS).

         @TERMINAL (MODE IS)

     2.  Type (or use recognition on) the parameter you want  to  set.
         If  you  do  not have to give a parameter argument, press the
         RETURN key.  If you have to  give  one  or  more  parameters,
         press the ESC key, type (or use recognition on the argument),
         then press the RETURN key.

         @TERMINAL (MODE IS) LOWERCASE (EXISTS ON TERMINAL)
         @TERMINAL (MODE IS) LENGTH (OF PAGE IS) 30
         @


Characteristics

     The TERMINAL command does not change any program  in  memory  and
     leaves your terminal at TOPS-20 command level.


Examples

     The user sets the width of his terminal line to 65.

        @TERMINAL (MODE IS) WIDTH (OF LINE IS) 65
        @

     The user sets terminal page mode with a page length of 20.

        @TERMINAL (MODE IS) PAGE (MODE) 20
        @

     The user tells the system  to  change  all  lowercase  output  to
     uppercase.

        @TERMINAL (MODE IS) NO LOWERCASE (EXISTS ON TERMINAL)
        @

     The user tells the system to change any lowercase  characters  he
     types to the corresponding uppercase character.

        @TERMINAL (MODE IS) RAISE (TERMINAL INPUT)
        @
TMOUNT Command                                             Page II-252


Function

     The TMOUNT command assigns a magnetic tape  drive  to  your  job,
     asks the operator to mount a tape on the drive, and allows you to
     assign a logical name to reference the drive.


Hints

     The DEASSIGN command deassigns a drive  assigned  by  the  TMOUNT
     command.


Format

     @TMOUNT (TAPE) logical-name (VOLID) identifier,

     logical-name        is the logical name you want assigned to  the
                         drive.   The  logical  name  may  be up to 39
                         alphanumeric characters (including hyphen) in
                         length.

     identifier          is an identifier  of  up  to  6  alphanumeric
                         characters (including hyphen) which helps the
                         operator identify the tape you  want  mounted
                         on the drive.


Subcommands

     Normally the operator will mount the tape READ-ONLY.  If you want
     to  write  on  the tape, use the WRITE-ENABLED subcommand and the
     operator will insert a ring and then mount the tape.  If you want
     to  be  sure you do not destroy any information on the tape, give
     the READ-ONLY subcommand.

     @@WRITE-ENABLED
        Tells the operator to  mount  the  tape  with  the  write-ring
        inserted so you can write information on the tape.

     @@READ-ONLY
        Tells the operator to  mount  the  tape  with  the  write-ring
        removed   so   you   cannot   inadvertantly  destroy  valuable
        information.


                                     NOTE

            Although you  can  give  both  the  WRITE-ENABLED  and
            READ-ONLY  subcommands  consecutively,  only  the last
            subcommand  you  enter  will  be  acted  upon  by  the
            operator.



Operation

     1.  Type TMOUNT and press the ESC key;  the system prints (TAPE).

         @TMOUNT (TAPE)

     2.  Type the logical name you want associated with the drive  and
         then  press  the  ESC key.  The system prints a colon and the
         guide word (VOLID).
TMOUNT Command (continued)                                 Page II-253


         @TMOUNT (TAPE) TAPE:  (VOLID)

     3.  Type the identifier which will help the operator identify the
         tape.    Press   the   RETURN  key;   if  you  want  to  give
         subcommands, type a comma before pressing the RETURN key  and
         proceed  to  the  next  step.   The  system  prints [Operator
         notified], and the [MTAn:  assigned] when  the  operator  has
         mounted the tape.

         @TMOUNT (TAPE) TAPE: (VOLID) GREEN
         [Operator notified]
         [MTA1: assigned]
         @

     4.  Type the subcommand you need, and then press the  RETURN  key
         an extra time.

         @TMOUNT (TAPE) TAPE-1: (VOLID) RED,
         @@WRITE-ENABLED
         @@
         [Operator notified]
         [MTA0: assigned]
         @


Errors

     1.  If the system prints:

         [Operator busy, waiting...]

         the system is busy with  another  user's  request.   When  it
         successfully  informs  the  operator,  the  system will print
         [Operator notified].

     2.  If this facility  is  not  available  at  your  system,  your
         terminal will print:

         ?No operator in attendance, or

         ?Error while notifying operator, TMOUNT canceled.

         Contact the operator or system manager.

     3.  If there are not enough drives available,  the  operator  may
         cancel your request and the message:

         ?TMOUNT unsuccessful

         is printed on your terminal.  Use the PLEASE program to  talk
         to  the  operator,  or  reissue the TMOUNT command at a later
         time.


Characteristics

     The TMOUNT command does not change  any  program  in  memory  and
     leaves your terminal at TOPS-20 command level.

     Type two CTRL/Cs if you want to abort the TMOUNT request.
TMOUNT Command (continued)                                 Page II-254


Restrictions

     The  TMOUNT  command  does  not  enforce  the  WRITE-ENABLED   or
     READ-ONLY subcommands, it only advises the operator which way you
     want the tape mounted.  Therefore, if the operator has mistakenly
     mounted  a  tape  write-enabled when you wanted it read-only, you
     will be able to write on the tape.


Examples

     The user requests a  tape  drive,  rewinds  the  tape,  and  then
     returns the drive so other users can access it.

        @TMOUNT (TAPE) NEW: (VOLID) BLK34
        [Operator notified]
        [MTA0: assigned]
        @REWIND (DEVICE) NEW:
        @DEASSIGN (DEVICE) NEW:
        @

     The user creates a Batch job which will save his entire disk area
     on tape.

        @CREATE (FILE) SAVE.CTL
        Input: SAVE.CTL.1
        00100   @TMOUNT (TAPE) WRITE: (VOLID) NEW,
        00200   @WRITE-ENABLED
        00300   @
        00400   @DUMPER
        00500   *TAPE WRITE:
        00600   *FILES
        00700   *SSNAME DIRECTORY-TAPE
        00800   *SAVE *.*.*
        00900   *EXIT
        01000   @DEASSIGN WRITE:
        01000   $
        *E

        [SAVE.CTL.1]
        @
TRANSL Program                                             Page II-255


Function

     The  TRANSL  program  translates  between  directory  names   and
     project-programmer numbers.


Format

     @TRANSL
     TRANSLATE (DIRECTORY) dev:<directory>

     dev:           is thre file structure that contains the directory
                    (optional  if the currently connected structure is
                    used).

     <directory>    is  a  directory  name  or  a   project-programmer
                    number.   If you type a directory name, the system
                    prints   the   corresponding    project-programmer
                    number;   if you type a project-programmer number,
                    the  system  prints  the  corresponding  directory
                    name.

                    You must include square or angle  brackets  around
                    the  directory name.  You can also use recognition
                    on directory names.


Operation

     1.  Type TRANSL and press the  RETURN  key;   the  system  prints
         TRANSLATE (DIRECTORY) on the next line.

         @TRANSL
         TRANSLATE (DIRECTORY)

     2.  Type (or use recognition on) the directory name or  type  the
         project-programmer  number,  and  press  the RETURN key.  The
         system prints the corresponding project-programmer number  or
         directory name.

         TRANSLATE (DIRECTORY) <FORTRAN-LIBRARY>
         <FORTRAN-LIBRARY> (IS) [4,133]
         @

     3.  You can  translate  directory  names  and  project-programmer
         numbers  on  different  structures by including the structure
         name with the directory name or project-programmer number.

         TRANSLATE (DIRECTORY) LANG:<SMITH>
         LANG:<SMITH> (is) [4,123]
         @

                                  or

         TRANSLATE (DIRECTORY) LANG:[4,123]
         LANG:[4,123] (is) SMITH


Characteristics

     Running the TRANSL  program  clears  any  previous  program  from
     memory and leaves your terminal at TOPS-20 command level.
TRANSL Program (continued)                                 Page II-256


Examples

     The user translates the project-programmer number [4,226].

        @TRANSL
        TRANSLATE (DIRECTORY) [4,226]
        [4,226] (IS) <HALL>
        @

     The user translates the directory name CONNOR.

        @TRANSL
        TRANSLATE (DIRECTORY) <CONNOR>
        <CONNOR> (IS) [4,116]
        @
TYPE Command                                               Page II-257


Function

     The TYPE command  prints  the  contents  of  a  file(s)  on  your
     terminal.


Hints

     The TYPE command is useful for quickly examining the contents  of
     a file, although printing an entire file may become tiresome.  In
     the latter case, use the PRINT command to send the output to  the
     line printer which operates at a much higher speed.

     If you want to stop the printing of a file, type a CTRL/O or  two
     CTRL/Cs.   Refer  to  the commonly used control characters on the
     back of the Part I divider.

     If your file has line numbers, the system  prints  them  on  your
     terminal.


Format

     @TYPE (FILE) filespecs

     filespecs      is a single file specification or a string of file
                    specifications (separated by commas) that indicate
                    the files you want printed on your terminal.


Operation

     1.  Type TYPE and press the ESC key;  the system prints (FILE).

         @TYPE (FILE)

     2.  Type (or use recognition on) the  file  specifications,  then
         press  the RETURN key.  The system prints the file(s) on your
         terminal.

         @TYPE (FILE) TRANSL.MAC.5
         ;<MCKIE>TRANSL.MAC.5,  2-OCT-75 09:46:48, Edit by MCKIE

                 TITLE TRANSLATE

         COMMENT \
         1.  Translates a <directory> into a [ppn] and indicates if it
             is files only, or

         2.  Tr ^O...
         @


Output

     If you type more than one file with a single  TYPE  command,  the
     system  prints  the proper file specification followed by a blank
     line, before it prints the file.


Characteristics

     The TYPE command does not change any program in memory and leaves
     your terminal at TOPS-20 command level.
TYPE Command (continued)                                   Page II-258


Examples

     The user prints the files ONE.FIL and TWO.FIL.

        @TYPE (FILE) ONE.FIL,TWO.FIL.1
         ONE.FIL.1

        THIS FILE HAS JUST ONE LINE!

         TWO.FIL.1

        THIS FILE IS A LITTLE BIT BIGGER;
        IT HAS TWO LINES
        @
UNDELETE Command                                           Page II-259


Function

     The UNDELETE command restores previously DELETEd  disk  files  to
     their normal status.


Hints

     If you use the default  for  the  UNDELETE  command,  the  system
     undeletes  all  the  available  generations  of that file.  Thus,
     after the UNDELETE command you may have more than one  generation
     of  a  file.   The  next time you create a new generation of that
     file or append to the highest generation, the system deletes  all
     but one (or the number specified by your file-retention-count, if
     it is different from one) generation(s) of that file.  (To change
     the file-retention-count, refer to the SET command;  to print the
     file-retention-count of a file, give the FDIRECTORY command.)  Be
     sure  that  a  file  you  need  is  not accidentally deleted (and
     consequently expunged).


Format

     @UNDELETE (FILES) filespecs

     filespecs      is a single file specification or a string of file
                    specifications (separated by commas) that indicate
                    the files to be undeleted.  If you do not  give  a
                    generation   number,   all   the  files  with  the
                    specified name and type will be undeleted.


Operation

     1.  Type UNDE and press the ESC  key;   the  system  prints  LETE
         (FILES).

         @UNDELETE (FILES)

     2.  Type (or use recognition on) the file specifications you want
         undeleted,  then  press  the RETURN key.  The system prints a
         line for each file, indicating whether it can be undeleted or
         not.

         @UNDELETE (FILES) T.FIL.*
          T.FIL.2 [OK]
          T.FIL.3 [OK]
         @


Errors

     1.  If any one of the files you are trying to undelete  does  not
         exist,  the  system ignores the entire command and prints one
         of the following messages:

         ?File not found
         ?No such file type
         ?No such generation number
UNDELETE Command (continued)                               Page II-260


Characteristics

     The UNDELETE command prints  no  error  message  when  it  cannot
     restore  a  set  of  files  you  have specified with the wildcard
     construction.

     The UNDELETE command does not change  a  program  in  memory  and
     leaves your terminal at TOPS-20 command level.


Restrictions

     You cannot undelete files that have been expunged (i.e., actually
     removed from disk storage).  At no time does the system guarantee
     that you can undelete a previously deleted file - it is a feature
     available  only when there is enough system disk space available.
     If your attempt to UNDELETE a file fails, ask the  operator  (via
     the  PLEASE  program)  to restore the file from the system backup
     tapes.

     If MAIL.TXT is deleted, its contents  are  immediately  expunged.
     Therefore,  a subsequent UNDELETE command to MAIL.TXT will return
     the filename but none of its contents.


Examples

     The user undeletes a single file.

        @UNDELETE (FILES) OUTPUT.TXT.4
         OUTPUT.TXT.4 [OK]
        @

     The user undeletes all the files with the name T.

        @UNDELETE (FILES) T.*
         T.MEM.4 [OK]
         T.RNO.2 [OK]
         T.TXT.5 [OK]
        @
UNLOAD Command                                             Page II-261


Function

     The UNLOAD command rewinds a magnetic tape until it is completely
     on the source reel.


Hints

     The UNLOAD command makes it impossible to access the tape  unless
     it is reloaded by the operator.


Format

     @UNLOAD (DEVICE) dev:

     dev:           is the magnetic tape device name in the form MTAn:
                    where n is the drive number.


Operation

     1.  Type UNLO and press  the  ESC  key;   the  system  prints  AD
         (DEVICE).

         @UNLOAD (DEVICE)

     2.  Type the magnetic tape device name followed by  a  colon  and
         press  the  RETURN key.  The system prints an @ when the tape
         is unloaded.

         @UNLOAD (DEVICE) MTA0:
         @


Errors

     1.  If the device is not on line, the system ignores the  command
         and prints the message:

         ?Device is not on-line

         Use the PLEASE program to contact the operator, then  reissue
         the command.

     2.  If you type a CTRL/C to exit from a program that  has  opened
         the  magnetic  tape  drive,  and  then  you  give  the UNLOAD
         command, the system prints the following message:

              ?Device MTAn:  open on JFN m
              %Close JFN?  YES

         If you answer YES (or just press the RETURN key), the  system
         closes  the  file,  prints  a confirming message, unloads the
         tape, and leaves you at TOPS-20  command  level.   Continuing
         the  program  that  previously  opened  the magnetic tape may
         produce an error because the file has been closed.

              @UNLOAD (DEVICE) MTA1:
              ?Device MTA1:  open on JFN 3
              %Close JFN?  YES
               3   MTA1:   [OK]
              @
UNLOAD Command (continued)                                 Page II-262


         If you answer NO, the  system  prints  the  message  ?Command
         aborted...  and does not close the file or unload the tape.


Characteristics

     The UNLOAD command does not change  any  program  in  memory  and
     leaves your terminal at TOPS-20 command level.


Restrictions

     The UNLOAD command works only for magnetic tapes.


Examples

     The user unloads his tape on drive 3.

        @UNLOAD (DEVICE) MTA3:
        @
VDIRECTORY Command                                         Page II-263


Function

     The VDIRECTORY (for verbose directory) command  prints  the  file
     specification,  protection  number,  number  of  pages, number of
     bytes (including byte size), and date and time the file was  most
     recently written.


Hints

     Giving  the  VDIRECTORY  command  is  exactly  like  giving   the
     DIRECTORY  command  with  the  subcommands  LENGTH,  NO  HEADING,
     PROTECTION, SIZE, and TIMES (AND DATES OF) WRITE.

     Refer to the DIRECTORY command for  more  information;   you  can
     give any of the DIRECTORY subcommands with VDIRECTORY.


Format

     @VDIRECTORY (OF FILES) filespecs

     filespecs      is a list of the file specifications  about  which
                    you  want  the  information.  If you omit the file
                    specifications,  the  system  prints   information
                    about all the files in your connected directory.


Operation

     1.  Type VDIR and press the ESC key;  the  system  prints  ECTORY
         (OF FILES).

         @VDIRECTORY (OF FILES)

     2.  Type (or use recognition on) the file  specifications;   then
         press  the  RETURN  key.   The  system  prints  the directory
         information.

         @VDIRECTORY (OF FILES) EDIT

            <MCKIE>
          EDIT.EXE.1;P777752      61 31232(36)  17-NOV-75 16:32:48
         @


Output

     The system lists the files in alphabetical order.  The  following
     information is listed for each file:

     1.  Name, type, generation number,

     2.  Protection code,

     3.  Size (in pages),

     4.  Length (in bytes) and byte size (in parentheses), and

     5.  The date and time the file was last written,

     6.  A line summarizing the total size (in pages)  and  number  of
         the listed files.
VDIRECTORY Command (continued)                             Page II-264


Characteristics

     The VDIRECTORY command does not change a program  in  memory  and
     leaves your terminal at TOPS-20 command level.


Examples

     The user obtains the information about all  his  files  with  the
     name DUMPER.

        @VDIRECTORY (OF FILES) DUMPER

           <MCKIE>
         DUMPER.MEM.2;P777752 5 12658(7)    6-NOV-75 20:28:49
           .RNO.2;P777752     5 2389(36)   27-JUL-66 05:00:00
           .TXT.4;P777752     4 9672(7)     6-NOV-75 19:18:30

         TOTAL OF 14 PAGES IN 3 FILES
        @











                             APPENDIX A

                         STANDARD FILE TYPES



Table A-1 lists the file types that have a  specific  meaning  to  the
system.  When you create a file for use with a particular program, you
should assign the correct file type.  If you do, the system  has  more
information  about  the  file  and  can attempt to perform the correct
function after you  type  a  minimum  set  of  commands  or  switches.
Normally, no penalty arises from assigning an undefined file type, but
if you assign an incorrect  file  type,  the  system  may  incorrectly
interpret the file, especially when you use the LOAD-class commands.


                              Table A-1
                         Standard File Types


  File Type            Kind of File                Meaning


     A10                  ASCII         ASCII    version    of     a
                                        DECSYSTEM-20  program loaded
                                        by the PDP-11

     A11                  ASCII         ASCII version  of  a  PDP-11
                                        program loaded by the PDP-11

     ABS                  Object        Absolute    (nonrelocatable)
                                        program

     AID                  Source        Source file in AID language

     ALG                  Source        Source   file    in    ALGOL
                                        language

     ALP                  ASCII         Printer forms alignment

     ATO                  ASCII         PTYCON   automatic   command
                                        file

     ATR                  Binary        Attribute  file  in   SIMULA
                                        language

     AWT                  Binary        Data  for   automatic   wire
                                        tester.

     B10               Source           Source file in BLISS

     B11               Source           Source file in BLISS-11

     BAK               Source           Backup  file  from  TECO  or
                                        LINED
STANDARD FILE TYPES (continued)                               Page A-2


     BAS               Source           Source   file    in    BASIC
                                        language

     BCM               ASCII            Listing  file   created   by
                                        FILCOM (binary compare)

     BCP               Source           Source file in BCPL language

     BFR               ASCII            Copy of VTECO buffer

     BIN               Binary           Binary file

     BLB               ASCII            Blurb file

     BLI               Source           Source   file    in    BLISS
                                        language

     BOX               ASCII            Output  of  box  program   -
                                        picture     for    use    in
                                        specifications and manuals

     BUG               Object           Saved  to  show  a   program
                                        error

     BWR               ASCII            Beware file listing warnings
                                        about a file or program

     CAL               Object           CAL data and program files

     CBL               Source           Source   file    in    COBOL
                                        language

     CDP               ASCII, Binary    Spooled  output   for   card
                                        punch

     CED               ASCII            Input to COPYED

     CFL               ASCII            RUNFIL command file

     CKP               Binary           Checkpoint core  image  file
                                        created  by  COBOL operating
                                        system

     CHN               Object           CHAIN file

     CMD               ASCII            Command file

     COB               ASCII            COBOL Source File

     COR               ASCII            Correction file for SOUP

     CPY               Binary           Copy of a crash  written  by
                                        SETSPD

     CRF               ASCII            CREF (cross-reference) input
                                        file

     CTL               ASCII            Batch control file


     DAT               ASCII, Binary    Data (FORTRAN) file

     DCT               ASCII            Dictionary of words
STANDARD FILE TYPES (continued)                               Page A-3


     DIR               ASCII            Directory   from   DIRECTORY
                                        command

     DMP               ASCII            COBOL compiler dump file

     DOC               ASCII            Listing of modifications  to
                                        the  most  recent version of
                                        the software

     DRW               Binary           Drawing  for  VB10C  drawing
                                        system

     ERR               ASCII            Error message file

     EXE               Object           Executable program

     FAI               Source           Source file in FAIL language

     FCL               Source           Source   file    in    FOCAL
                                        language

     FLO               ASCII            English language flowchart

     FOR               Source           Source   file   in   FORTRAN
                                        language

     FRM               ASCII            Blank form  for  handwritten
                                        records

     FTP               Source           FORTRAN test programs

     GND               ASCII            List  of  ground  pins   for
                                        automatic wirewrap

     HGH               Object           Nonsharable high segment  of
                                        a     TOPS-10    two-segment
                                        program 

     HLP               ASCII            Help files containing switch
                                        explanations, etc.

     IDA               ASCII, Binary    COBOL ISAM data file

     IDX               ASCII,SIXBIT     Index file of a  COBOL  ISAM
                                        file

     INI               ASCII, Binary    Initialization file

     LAP               ASCII            Output   from    the    LISP
                                        compiler

     LIB               ASCII            COBOL source library

     LOG               ASCII            Batch, PTYCON  or  LINK  log
                                        file

     LOW               Object           Low  segment  of  a  TOPS-10
                                        two-segment program

     LPT               ASCII            Spooled  output   for   line
                                        printer

     LSP               Source           Source file in LISP language
STANDARD FILE TYPES (continued)                               Page A-4


     LSQ               ASCII            Queue  listing  created   by
                                        QUEUE program

     LST               ASCII            Listing  data   created   by
                                        assemblers and compilers

     MAC               Source           Source   file    in    MACRO
                                        language

     MAN               ASCII            Manual (documentation) file

     MAP               ASCII            LINK map file

     MEM               ASCII            Memorandum file

     MID               Source           Source file  in  MIDAS  (MIT
                                        Assembler) language

     MIM               Binary           Snapshot of MIMIC simulator

     MSB               Object           Music compiler binary output

     MUS               Source           Music compiler input

     N                 Source           Source   file   in    NELIAC
                                        language

     NEW               All              New version of a program  or
                                        file

     OBJ               Object           PDP-11  relocatable   binary
                                        file

     OLD               Source, Object   Backup source program

     OPR               ASCII            Installation  and   assembly
                                        instructions

     OVR               Object           COBOL overlay file

     P11               Source           Source  program  in   MACX11
                                        language

     PAL               Source           Source file in PAL 10 (PDP-8
                                        assembler)

     PCO               ASCII            Program change order

     PL1               Source           Source file in PL1 language

     PLM               ASCII            Program logic manual

     PLO               Binary           Compressed plot output

     PLT               ASCII            Spooled output for plotter

     PPL               Source           Source file in PPL language


     PTP               ASCII, Binary    Spooled      output      for
                                        paper-tape punch

     Qxx               ASCII            Edit backup file.
STANDARD FILE TYPES (continued)                               Page A-5


     RAM               ASCII            DECSYSTEM-20 microcode

     REL               Object           Relocatable binary file

     RIM               Object           RIM loader file

     RNB               ASCII            RUNOFF input for producing a
                                        .BLB file

     RNC               ASCII            RUNOFF input for producing a
                                        .CCO file

     RND               ASCII            RUNOFF input for producing a
                                        .DOC file

     RNE               ASCII            RUNOFF input  for  producing
                                        error message text

     RNH               ASCII            RUNOFF input for producing a
                                        .HLP file

     RNL               ASCII            RUNOFF input for  a  program
                                        logic manual

     RNM               ASCII            RUNOFF input for producing a
                                        .MAN file

     RNO               ASCII            Programming   specifications
                                        in RUNOFF input

     RNP               ASCII            RUNOFF input for producing a
                                        .OPR file

     RNS               ASCII            RUNOFF input for a text file
                                        of standards

     RSP               ASCII            Script  response  time   log
                                        file

     RSX               All              Files for RSX-11

     RUN               ASCII            Command file for SYSJOB

     SAI               Source           Source file in SAIL language

     SAV               Object           Low    segment    from     a
                                        one-segment TOPS-10 program

     SCD               ASCII            Differences in directory

     SCM               ASCII            Listing  file   created   by
                                        FILCOM (source compare)

     SCP               ASCII            SCRIPT control file

     SEQ               ASCII, SIXBIT    Sequential COBOL data  file,
                                        input to ISAM program

     SHR               Object           A TOPS-10 sharable program

     SIM               ASCII            Source   file   in    SIMULA
                                        language
STANDARD FILE TYPES (continued)                               Page A-6


     SMP               Source           Source   file   in    SIMPLE
                                        language

     SNO               Source           Source   file   in    SNOBOL
                                        language

     SPC               ASCII            Corrected  file  for   SPELL
                                        program

     SPD               ASCII            Dictionary for SPELL program

     SPM               ASCII            File of mispelled words  for
                                        SPELL program

     SPT               ASCII            SPRINT - created files

     SPU               ASCII            File of uppercase words  for
                                        SPELL program

     SPX               ASCII            File  of  exception  (error)
                                        lines for SPELL program

     SRC               ASCII            Source files

     STD               ASCII            Standards

     SYM               Binary           LINK symbol file

     SYS               Binary           Special system files

     TEC               ASCII            TECO macro

     TEM               ASCII, Binary    Temporary files

     TMP               ASCII, Binary    Temporary files

     TPB               ASCII            Typeset input for  producing
                                        a .BLB file

     TPC               ASCII            Typeset input for  producing
                                        a .CCO file

     TPD               ASCII            Typeset input for  producing
                                        a .DOC file

     TPE               ASCII            Typeset input for  producing
                                        error message text

     TPH               ASCII            Typeset input for  producing
                                        a .HLP file

     TPL               ASCII            Typeset input for  producing
                                        a logic manual

     TPM               ASCII            Typeset input for  producing
                                        a .MAN file

     TPO               ASCII            Typeset input for  producing
                                        a programming specification

     TPP               ASCII            Typeset input for  producing
                                        an .OPR file
STANDARD FILE TYPES (continued)                               Page A-7


     TST               All              Test data

     TV                ASCII            Command file for TV

     TXT               ASCII            Text file

     UPD               ASCII            Updates  flagged  in  margin
                                        (FILCOM)

     WCH               ASCII            SCRIPT monitor (WATCH) file

     WRL               ASCII            Wirelist

     XOR               Binary           Module data for XOR tester

     XPN               Object           Expanded  save  file  (FILEX
                                        and LINK)

     Zxx               ASCII            EDIT original file (all xx)