Google
 

Trailing-Edge - PDP-10 Archives - BB-PBQUC-BM_1990 - 7-documentation/user_utils.mem
There are no other files named user_utils.mem in the archive.















                                  TOPS-20
                            User Utilities Guide


|                        Electronically Distributed



             This manual describes utility  programs  available
             to  both privileged and nonprivileged users of the
             TOPS-20 operating system.



             Operating System:    TOPS-20 (KS/KL Model A)  V4.1
                                  TOPS-20 (KL Model B)     V6.1

             Software:                       MAIL   Version   6
                                             RDMAIL Version   6
                                             FILCOM Version  22
                                             CREF   Version 53B
                                             MAKLIB Version  2B
                                             DUMPER Version   5
                                             PLEASE Version   5










   digital equipment corporation                   maynard, massachusetts


|  TOPS-20 Update Tape No. 04, November 1990

   First Printing, January 1980
   Updated, January 1982
   Updated, December 1982
   Updated, September 1985
|  Updated, November 1990



   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 document.

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

   No responsibility is assumed for the use or reliability of software on
   equipment that is not supplied by DIGITAL or its affiliated companies.



|  Copyright C 1980, 1982, 1985, 1990 Digital Equipment Corporation

   All Rights Reserved.



   The following are trademarks of Digital Equipment Corporation:

   CI             DECtape     LA50             SITGO-10
   DDCMP          DECUS       LN01             TOPS-10
   DEC            DECwriter   LN03             TOPS-20
   DECmail        DELNI       MASSBUS          TOPS-20AN
   DECnet         DELUA       PDP              UNIBUS
   DECnet-VAX     HSC         PDP-11/24        UETP
   DECserver      HSC-50      PrintServer      VAX
   DECserver 100  KA10        PrintServer 40   VAX/VMS
   DECserver 200  KI          Q-bus            VT50
   DECsystem-10   KL10        ReGIS
   DECSYSTEM-20   KS10        RSX              d i g i t a l


                                      CONTENTS



   PREFACE


   CHAPTER 1       INTRODUCTION TO TOPS-20 USER UTILITIES

           1.1     INVOKING THE UTILITIES . . . . . . . . . . . . . . 1-1
           1.2     TYPING FILE SPECIFICATIONS . . . . . . . . . . . . 1-2


   CHAPTER 2       THE MAIL PROGRAM

           2.1     INTRODUCTION . . . . . . . . . . . . . . . . . . . 2-1
           2.2     RUNNING MAIL . . . . . . . . . . . . . . . . . . . 2-1
           2.3     OPTIONS TO THE MAIL PROCEDURE  . . . . . . . . . . 2-4
           2.4     MAIL MESSAGES  . . . . . . . . . . . . . . . . . . 2-7
           2.5     TECHNICAL NOTES  . . . . . . . . . . . . . . . .  2-10


   CHAPTER 3       THE RDMAIL PROGRAM

           3.1     INTRODUCTION . . . . . . . . . . . . . . . . . . . 3-1
           3.2     RUNNING RDMAIL . . . . . . . . . . . . . . . . . . 3-2
           3.2.1     Reading Mail Using RDMAIL Switches . . . . . . . 3-4
           3.3     RDMAIL MESSAGES  . . . . . . . . . . . . . . . . . 3-8


   CHAPTER 4       THE FILCOM PROGRAM

           4.1     INTRODUCTION . . . . . . . . . . . . . . . . . . . 4-1
           4.2     RUNNING FILCOM . . . . . . . . . . . . . . . . . . 4-1
           4.2.1     Comparing ASCII Files  . . . . . . . . . . . . . 4-3
           4.2.2     Comparing Binary Files . . . . . . . . . . . . . 4-9
           4.3     FILCOM SWITCHES  . . . . . . . . . . . . . . . .  4-12
           4.4     FILCOM MESSAGES  . . . . . . . . . . . . . . . .  4-14


   CHAPTER 5       THE CREF PROGRAM

           5.1     INTRODUCTION . . . . . . . . . . . . . . . . . . . 5-1
           5.2     RUNNING CREF . . . . . . . . . . . . . . . . . . . 5-1
           5.2.1     Creating .CRF Files with COMPILE . . . . . . . . 5-1
           5.2.2     Producing Cross-Reference Listings . . . . . . . 5-2
           5.3     CREF EXAMPLES  . . . . . . . . . . . . . . . . . . 5-6
           5.4     CREF MESSAGES  . . . . . . . . . . . . . . . . .  5-10
           5.5     TECHNICAL NOTES  . . . . . . . . . . . . . . . .  5-15





                                    iii


   CHAPTER 6       THE MAKLIB PROGRAM

           6.1     INTRODUCTION . . . . . . . . . . . . . . . . . . . 6-1
           6.2     RUNNING MAKLIB . . . . . . . . . . . . . . . . . . 6-3
           6.2.1     Running MAKLIB to Obtain Information About 
                     Libraries  . . . . . . . . . . . . . . . . . . . 6-4
           6.2.2     Running MAKLIB to Manipulate Libraries . . . . . 6-7
           6.2.3     Running MAKLIB to Modify Libraries . . . . . .  6-18
           6.2.4     Running MAKLIB to Edit Libraries . . . . . . .  6-19
           6.3     MAKLIB SWITCH OPTIONS  . . . . . . . . . . . . .  6-26
           6.4     MAKLIB MESSAGES  . . . . . . . . . . . . . . . .  6-27
           6.5     TECHNICAL NOTES  . . . . . . . . . . . . . . . .  6-44
           6.5.1     Format of TRACE Block Data (REL Block Type 
                     1060)  . . . . . . . . . . . . . . . . . . . .  6-44
           6.5.2     Format of Code Insertion . . . . . . . . . . .  6-45


   CHAPTER 7       THE DUMPER PROGRAM

           7.1     INTRODUCTION . . . . . . . . . . . . . . . . . . . 7-1
           7.2     FEATURES . . . . . . . . . . . . . . . . . . . . . 7-2
           7.3     USING TAPES WITH AND WITHOUT TAPE DRIVE ALLOCATION 7-3
           7.4     RUNNING DUMPER . . . . . . . . . . . . . . . . . . 7-7
           7.5     THE NONPRIVILEGED USER . . . . . . . . . . . . . . 7-7
           7.5.1     Setting the Status of Operation  . . . . . . . . 7-8
           7.5.2     Positioning the Tape . . . . . . . . . . . . .  7-20
           7.5.3     Interacting with Tape Files  . . . . . . . . .  7-23
           7.5.4     Marking Files to be Archived . . . . . . . . .  7-33
           7.6     THE PRIVILEGED USER  . . . . . . . . . . . . . .  7-33
           7.6.1     Backing Up System Files and/or Other Users' 
                     Files  . . . . . . . . . . . . . . . . . . . .  7-35
           7.6.2     Restoring Files and Directories from System 
                     Backup Tapes . . . . . . . . . . . . . . . . .  7-37
           7.6.3     Archiving Marked Files . . . . . . . . . . . .  7-38
           7.6.4     Migrating Files  . . . . . . . . . . . . . . .  7-39
           7.6.5     Retrieving or Restoring Archived and Migrated 
                     Files  . . . . . . . . . . . . . . . . . . . .  7-40
           7.7     DUMPER COMMANDS  . . . . . . . . . . . . . . . .  7-42
           7.8     DUMPER MESSAGES  . . . . . . . . . . . . . . . .  7-50


   CHAPTER 8       PLEASE

           8.1     INTRODUCTION . . . . . . . . . . . . . . . . . . . 8-1
           8.2     SWITCHES USED WITH PLEASE  . . . . . . . . . . . . 8-1
           8.3     MESSAGE TERMINATORS USED WITH PLEASE . . . . . . . 8-1
           8.4     RUNNING PLEASE . . . . . . . . . . . . . . . . . . 8-2
           8.5     PLEASE MESSAGES  . . . . . . . . . . . . . . . . . 8-3


   INDEX



                                     iv


   FIGURES

           6-1     Figure Generation of an .EXE File  . . . . . . . . 6-1
           6-2     Generation of a Library  . . . . . . . . . . . . . 6-2
           6-3     Function of /APPEND  . . . . . . . . . . . . . . . 6-8
           6-4     Function of /DELETE  . . . . . . . . . . . . . .  6-10
           6-5     Function of /EXTRACT . . . . . . . . . . . . . .  6-12
           6-6     One Function of /INSERT  . . . . . . . . . . . .  6-14
           6-7     One Function of /INSERT  . . . . . . . . . . . .  6-15
           6-8     Function of /REPLACE . . . . . . . . . . . . . .  6-17
           6-9     Order of Pseudo-ops in a .FIX File . . . . . . .  6-23


   TABLES

           3-1     RDMAIL Switches  . . . . . . . . . . . . . . . . . 3-4
           4-1     Special File Types Recognized by FILCOM  . . . . . 4-2
           4-2     FILCOM Switches  . . . . . . . . . . . . . . . .  4-13
           4-3     Reasons for File Access Errors . . . . . . . . .  4-17
           5-1     CREF Switch Options  . . . . . . . . . . . . . . . 5-4
           5-2     Reasons for File Access Errors . . . . . . . . .  5-14
           5-3     Error Status Codes . . . . . . . . . . . . . . .  5-15
           5-4     Beginning and Ending Control Characters  . . . .  5-16
           5-5     Symbol-Definition Control Characters . . . . . .  5-17
           5-6     Character-Count-Definition Characters  . . . . .  5-19
           6-1     MAKLIB Switches  . . . . . . . . . . . . . . . .  6-26
           7-1     Status-Setting Commands  . . . . . . . . . . . . . 7-8
           7-2     Tape-Positioning Commands  . . . . . . . . . . .  7-21
           7-3     Action Commands  . . . . . . . . . . . . . . . .  7-24
           7-4     File Descriptor Block (FDB) Entries Checked by 
                   DUMPER . . . . . . . . . . . . . . . . . . . . .  7-29
























































                                     vi














                                  PREFACE



   The TOPS-20 User Utilities Guide is intended for both  the  privileged
   and  the  nonprivileged user who needs information on utility programs
   that run on the TOPS-20 operating system.  Before you use this manual,
   you  should  be  familiar  with  the  information contained in Getting
   Started with TOPS-20,  the  TOPS-20  User's  Guide,  and  the  TOPS-20
   Commands Reference Manual.

   This document provides detailed information on the  following  TOPS-20
   utility  programs:   MAIL,  RDMAIL,  FILCOM, CREF, MAKLIB, DUMPER, and
   PLEASE.  The manual contains tutorial and reference material  in  each
   chapter to accommodate both the novice and the experienced user.

   The  following  conventions  are  used  throughout  the  TOPS-20  User
   Utilities Guide:

   <RET>             Indicates when you should press the RETURN  key  (on
                     some terminals the key labeled CR)

   <ESC>             Indicates when you should press the ESC key (on some
                     terminals the key labeled ALT)

   <DEL>             Indicates when you should press the DELETE key

   <CTRL/x>          Indicates when you should hold down the CTRL key and
                     at the same time type the letter x

   file spec         Indicates a file specification

|  underlined text   Indicates anything you type or are expected to  type
|                    on your terminal.








                                    vii


   The current version of the following TOPS-20 documents are  referenced
   in this manual:

        Getting Started With TOPS-20

        TOPS-20 User's Guide

        TOPS-20 Commands Reference Manual

        TOPS-20 Operator's Guide

        TOPS-20 Monitor Calls Reference Manual

        TOPS-20 LINK Reference Manual

        TOPS-20 MACRO ASSEMBLER Reference Manual

        TOPS-20 System Manager's Guide

        TOPS-10/TOPS-20 Batch Reference Manual


































                                     8











                                 CHAPTER 1

                   INTRODUCTION TO TOPS-20 USER UTILITIES



   This manual describes utility programs available to any  user  of  the
   TOPS-20 operating system.

   The following utility programs are covered in this manual:

         o  The MAIL program, which allows you to send messages to  other
            users of the system (Chapter 2)

         o  The RDMAIL program, which allows you to read messages sent to
            you via the MAIL program (Chapter 3)

         o  The FILCOM program, which allows you  to  compare  two  ASCII
            files or two binary files (Chapter 4)

         o  The CREF program, which produces cross-reference listings  of
            symbols  used  in MACRO, FORTRAN, and ALGOL programs (Chapter
            5)

         o  The MAKLIB  program,  which  performs  various  functions  on
            libraries of relocatable object modules (Chapter 6)

         o  The DUMPER program,  which  allows  you  to  save  files  and
            directories  on tape, and restore these files and directories
            to disk (Chapter 7)

         o  The PLEASE program, which allows you to communicate with  the
            system operator (Chapter 8).



   1.1  INVOKING THE UTILITIES

   To invoke these utilities, you should be  familiar  with  the  TOPS-20
   log-in  procedure.   Type  the  name  of the program after the TOPS-20
   prompt @ and press RETURN.  The utility then prompts  you  for  input.
   Thus, the general format is:



                                    1-1
                   INTRODUCTION TO TOPS-20 USER UTILITIES


        @Utility Name<RET>
        Utility prompt



   1.2  TYPING FILE SPECIFICATIONS

   Many of the utilities accept file specifications as arguments.   There
   are  two  forms  of file specifications.  The MAIL, RDMAIL, and DUMPER
   utilities accept file specifications in the following format:

        dev:<dir>name.typ.gen;att...;att

   where:

        dev:            Indicates a device name, a file  structure  name,
                        or a defined logical name

        <dir>           Indicates a directory name

        name            Indicates the filename of a  particular  file  in
                        the directory

        .typ            Indicates a file type  that  helps  identify  the
                        contents of the file

        .gen            Indicates a  generation  number  that  shows  the
                        number of times a file has been changed

        ;att            Indicates  a  file  attribute  such  as  a   file
                        protection or an account string.

   If you omit the dev:  field of  the  file  specification,  the  system
   assumes  that  you  mean  your connected structure.  When you omit the
   <dir> field of the file specification, the  system  assumes  that  you
   mean  your  connected  directory.  When you omit the .gen field of the
   file specification, the system  assumes  that  you  mean  the  highest
   generation   (largest   generation  number)  for  source  files.   For
   Destination files, the  system  assumes  that  you  mean  the  highest
   generation plus one.

   You can use recognition on file specifications in  this  format.   You
   can  use  wildcards only in the DUMPER program.  (Refer to Chapter 7.)
   For more information on file  specifications,  refer  to  the  TOPS-20
   User's Guide.

   The FILCOM, CREF, and MAKLIB utilities accept file specifications in a
   slightly different format as follows:

        dev:name.typ[PPN]




                                    1-2
                   INTRODUCTION TO TOPS-20 USER UTILITIES


   In this form of a file specification, filenames are restricted to  six
   characters.   File  types  are  restricted  to  three characters.  You
   cannot use recognition, and file generation numbers are  not  allowed.
   Therefore,  the  highest generation of a file is always used.  You can
   use wildcards only in the MAKLIB program.  (Refer to Chapter 6.)

   The PPN is a project-programmer number, which you  use  instead  of  a
   directory  name.   To  find  out  the  PPN  associated with a specific
   directory, give the TRANSLATE command.  For example, if  you  wish  to
   find  out the PPN associated with the directory <ADLEY> on PS:  you do
   the following:

        @TRANSLATE <DIRECTORY> PS:<ADLEY><RET>
        PS:<ADLEY> <IS> PS:[4,305]
        @

   You can avoid using PPN's in file specifications by defining a logical
   name  that  represents  the  directory  you  wish  to  access.  Do the
   following procedure:

        1.  Give the DEFINE command to  define  a  logical  name  as  the
            directory.

        2.  Use the logical name in place of the device name and the  PPN
            when you type the file specification.

   The following is an example of defining a logical name for a directory
   and using it with the FILCOM program:

        @DEFINE (LOGICAL NAME) ADL: (AS) <ADLEY><RET>
        @FILCOM<RET>
        *TTY:=ADL:TEST.MAC,ADL:TEST2.MAC<RET>

   You can also define logical  names  to  reference  long  filenames  or
   particular  file  generation  numbers.  This is especially useful with
   the FILCOM program when you wish to compare  two  similar  files  with
   different generation numbers.  For example:

        @DEFINE (LOGICAL NAME) A: (AS) FOO.BAR.3<RET>
        @DEFINE (LOGICAL NAME) B: (AS) FOO.BAR.4<RET>
        @FILCOM<RET>
        *TTY:=A:,B:<RET>












                                    1-3
























































                                    2-1











                                 CHAPTER 2

                              THE MAIL PROGRAM



   2.1  INTRODUCTION

   You can use the MAIL program to send messages to other  users  of  the
   system.  You can send mail to a single user or to a group of users who
   are either logged in or not logged in.



   2.2  RUNNING MAIL

   To run MAIL, type MAIL after the TOPS-20 prompt @ and press the RETURN
   key.  The program responds with the To:  prompt as follows:

        @MAIL<RET>
        To:

   Type the name of the user to whom you are  sending  the  message,  and
   press RETURN.

   If you are sending a message to a group  of  users,  type  the  names,
   separating them with commas, and press RETURN.  For example:

        To: Adley,Sartini,McElmoyle<RET>

   The program then prompts:

        CC:

   Now list any secondary recipients of your message.  Type the  name  or
   names  (separated  by commas) and press RETURN.  If you do not want to
   send a copy to others, simply press RETURN after the CC:  prompt.

   If you type an invalid (nonexistent) user name, the  program  responds
   with:

        ?Invalid user name



                                    2-1
                              THE MAIL PROGRAM


   MAIL returns with either the To:  prompt or  the  CC:   prompt.   Type
   CTRL/H  after  either prompt.  This retrieves only the names up to the
   error, and you can type any additional valid names.

   You cannot send more than one copy of a mail message to  a  user.   If
   you  type  a user name more than once after either the To:  or the CC:
   prompt, the program prints a warning message.  For example:

        To: Adley<RET>
        CC: Adley<RET>
        %Duplicate name purged - ADLEY

   The MAIL program  continues  after  it  prints  the  warning  message;
   however,  the  program  removes  the  duplicate  name from the list of
   users.

   The program then prompts with:

        Subject:

   Type a description of the message and press RETURN.  For example:

        Subject: Location of weekly writers meeting<RET>

   If  your  description  exceeds  one  line,  you  cannot  continue  the
   description  on a second line; you must continue typing when you reach
   the  end  of  a  line.   The  system  automatically   continues   your
   description  on  the  second line by responding with a carriage return
   line feed sequence.  When you have completed typing your  description,
   press RETURN.  For example:

        Subject: Location  of  weekly  meeting  and  change  in  software
        release date.<RET>

                                    NOTE

           The system may interpret a character in  the  Subject:
           line (such as a question mark) as a special character.
           To avoid this, precede the character with a CTRL/V.

   MAIL then prompts with:

        Message (Terminate with ESC or CTRL/Z):

   and waits for you to enter your message.   Once  you  have  terminated
   your  message by typing ESC or CTRL/Z, the program informs you that it
   has processed your message:

        Processing mail...


        No errors.


                                    2-2
                              THE MAIL PROGRAM


        -DONE-

   and returns you to TOPS-20 command level.

   If you send a message to a user who is logged in and  accepting  links
   and system messages, that user is informed immediately as follows:

        [You have a message from SENDER]

   If you send a message to a user who is not logged  in,  that  user  is
   informed the next time he logs in:

        @LOGIN (USER) ADLEY (PASSWORD) (ACCOUNT) 341<RET>
         Job 54 on TTY33 23-Apr-79 09:46:05
         You have a message
        @

   If you make an error in sending mail to a user, you receive one of the
   following messages:

        [USER NAME] not sent BECAUSE:
        Invalid directory number

   or

        Invalid simultaneous access

   or

        No such file type (or  some  other  reason  related  to  why  the
        recipient's MAIL.TXT file could not be found)

   or

        [USER NAME] not sent BECAUSE:
        Disk quota exceeded


                                    NOTE

           For additional information on  these  error  messages,
           refer to Section 2.4, MAIL Messages.

   You can use a recovery procedure to resend mail after  receiving  some
   of  the  MAIL  error  messages.  This recovery is particularly helpful
   when your message is long and you do  not  want  to  retype  it.   The
   procedure is as follows:

        1.  Undelete the MAIL.CPY file in your logged-in directory.  This
            file contains the message that could not be sent.




                                    2-3
                              THE MAIL PROGRAM


        2.  Rename the  MAIL.CPY  file;  for  example,  ERROR.TXT.   This
            prevents  MAIL  from  deleting  the file a second time during
            message processing.

        3.  After the TOPS-20 prompt @, type:

                 @GET SYS:MAIL<RET>

        4.  The system gives the TOPS-20 prompt once again, and you type:

                 @REENTER<RET>

        5.  After you press RETURN, the system prompts:

            File name of message file:

            Now type the new file spec of the renamed MAIL.CPY file,  and
            press RETURN:

            File name of message file:  (file spec)<RET>

            The MAIL program now proceeds as though you  had  just  typed
            ESC or CTRL/Z after the message.



   2.3  OPTIONS TO THE MAIL PROCEDURE

   The procedure in Section 2.2 describes the most common  use  of  MAIL.
   Options to this basic procedure are as follows:

        1.  You can use the TALK command as an alternative  to  the  MAIL
            program  to  communicate  with a user who is logged in.  (For
            more information on the TALK command, refer  to  the  TOPS-20
            Commands Reference Manual.)

        2.  You can use the INFORMATION MAIL  command  to  check  on  the
            status  of  new mail, either your own or that of other users.
            (For more  information  on  this  command,  see  the  TOPS-20
            Commands Reference Manual.)

        3.  If you send mail often to a group of users, you can create  a
            file containing these names.  Then, instead of typing all the
            names each  time  you  send  a  message,  you  can  type  the
            filename,  preceded by an @, after the To:  prompt or the CC:
            prompt.  For example, if the  file  NAME.FIL.1  contains  the
            user names ADLEY, CRUGNOLA, LYONS, type:

            To: @NAME.FIL.1<RET>

            The filename can also  be  combined  with  other  user  names
            following the prompt.  However, the file must follow the list
            of additional user names.  For example:

                                    2-4
                              THE MAIL PROGRAM


            To: Sartini,McElmoyle,@NAME.FIL.1<RET>

        4.  You can use the contents of an indirect file as your  message
            or  Subject:   line  text.   The indirect file you use in the
            Subject:  line can contain only one line.   You  cannot  type
            any  additional text on this line with the indirect file.  To
            send the contents of an indirect file  as  mail,  type  an  @
            followed  by  the  name  of  the file, and press RETURN.  You
            cannot type any additional text before or after the  indirect
            file.  For example:

            @MAIL<RET>
            To: Crugnola<RET>
            CC:<RET>
            Subject: Macro files<RET>
            Message (Terminate with ESC or CTRL/Z):

            @MACRO.CMD.1<RET>

            Processing mail...

            No errors.
            -DONE-
            @

            In this case, you do not terminate the message  with  ESC  or
            CTRL/Z,  because  you  are  using  an  indirect  file as your
            message.  However, you terminate the file  spec  by  pressing
            RETURN.   If  you  terminate  your  message with CTRL/Z, MAIL
            responds with:

            @MACRO.CMD.1 (CTRL/Z)
            ?Not confirmed

            To recover, type CTRL/H immediately to retrieve the  indirect
            file spec.  Then, press RETURN.

        5.  Normally, you send mail to other  users.   However,  you  can
            also  send  mail to any non-files-only directory on PS:.  The
            most common non-files-only directories are  PS:<REMARKS>  and
            PS:<SYSTEM>.

            PS:<REMARKS>  can  be  used  for  recording  information  and
            problems  that  the  system  staff  should  be aware of.  For
            example, use PS:<REMARKS> to record any system  difficulties,
            hardware/software  problems, or other related items.  To send
            a message to this  directory,  type  REMARKS  after  the  To:
            prompt.  For example:






                                    2-5
                              THE MAIL PROGRAM


            @MAIL<RET>
            To: REMARKS<RET>
            CC:<RET>
            Subject: Supplies<RET>
            Message (Terminate with ESC or CTRL/Z):

            Terminals in Room 216 need additional boxes  of  paper,  size
            9 7/8 x 11.  <ESC>

            Processing mail...


            No errors.
            -DONE-
            @

            Generally, to send messages to all users of the  system,  you
            enable  your  WHEEL  or  OPERATOR  capabilities and run MAIL.
            These messages are called Messages-of-the-Day.  You can  also
            send  Messages-of-the-Day  by  connecting  to  the  directory
            PS:<SYSTEM>.  However, most systems are not set up  to  allow
            users  to  connect  to this directory.  The following example
            shows   an   enabled   user   running   MAIL   to   send    a
            Message-of-the-Day.

            $MAIL<RET>
            To: SYSTEM<RET>
            CC:<RET>
            Subject: System shut-down<RET>
            Message (Terminate with ESC or CTRL/Z):

            The system  will  be  shut  down  tomorrow  at  5  p.m.   for
            preventive maintenance.  <ESC>

            Processing mail...


            No errors.
            -DONE-
            $

            If you attempt to send mail to PS:<SYSTEM> and do not  enable
            WHEEL  or  OPERATOR  capabilities,  MAIL prints the following
            error message:

            Processing mail...SYSTEM not sent BECAUSE:
            WHEEL or OPERATOR capability required

            To resend the mail, you can  follow  the  recovery  procedure
            described  in  Section 2.2 after you enable WHEEL or OPERATOR
            capabilities.



                                    2-6
                              THE MAIL PROGRAM


            When you send a message to PS:<SYSTEM>, the following message
            appears on all terminals that are receiving system messages:

            [New Message-of-the-Day available]

            Users not logged in to the system at the time  you  send  the
            message  automatically  receive  new  Messages-of-the-Day the
            next time they log in.

        6.  You can use MAIL to inform yourself that your  batch  job  is
            completed.   Place  commands  to MAIL in your control file as
            shown in the following example.  Note that a period  is  used
            as  the  reply to the To:  prompt.  This character replaces a
            user name and informs MAIL that the message is to be sent  to
            you.  For example:

            @CREATE (FILE) TEST.CTL<RET>
            INPUT: TEST.CTL<RET>
            00100  @FILCOM<RET>
            00200  *TEST.FOR=DIFFER.FOR,ADDEM.FOR/A<RET>
            00300  @PRINT TEST.FOR<RET>
            00400  @MAIL<RET>
            00500  *.<RET>
            00600  *<RET>
            00700  *BATCH JOB IS DONE<RET>
            00800  *^Z
            00900  <ESC>
            *E
            @


                                    NOTE

           Use of a period in place of your user  name  when  you
           run  MAIL  is  not a feature unique to batch.  You can
           use it any time in the MAIL program when you  wish  to
           specify yourself as a recipient of mail.



   2.4  MAIL MESSAGES

   The most common MAIL messages, their descriptions, and suggested  user
   responses  follow.   Fatal errors are preceded by a question mark (?).
   Warning messages are preceded by a percent sign (%).

   %Duplicate name purged - [USER NAME]

        Description:  You attempted to send a user more than one copy  of
        a mail message.

        Suggested User Response:  None.   MAIL  continues  automatically,
        and eliminates the duplicate name.

                                    2-7
                              THE MAIL PROGRAM


   ?Invalid user name

        Description:  You typed an invalid (nonexistent) user name  as  a
        recipient of your message.

        Suggested User  Response:   Type  CTRL/H  after  either  the  To:
        prompt  or  the  CC:  prompt to retrieve only the names up to the
        error.  Type any additional valid names.

   ?MAIL.CPY Failure
   Entire file structure full

        Description:  The public structure (PS:) is full,  and  therefore
        MAIL  cannot operate.  You receive this message immediately after
        invoking the program.

        Suggested User Response:  Delete and expunge some files from your
        logged-in directory, or wait until some space is freed.

   ?MAILER is not running.  Messages not sent.

        Description:  Your  message  was  not  sent  because  the  MAILER
        program is not functioning.

        Suggested User Response:  Send a message to the operator with the
        PLEASE  program (refer to Chapter 8) to report that MAILER is not
        functioning.  Then, once MAILER is functioning, use the  recovery
        procedure described in Section 2.2 to resend your message.

   ?Not confirmed

        Description:  You did not press RETURN immediately  after  typing
        an indirect file spec.

        Suggested User Response:  TYPE CTRL/H immediately after the error
        message  to  retrieve the indirect file spec.  Then, press RETURN
        to confirm the indirect file spec.

   ?Processing errors occurred.  No mail sent.

        Description:  There is a problem with you MAIL.CPY  file;  either
        MAILER cannot find it, or the file is not in correct format.

        Suggested User  Response:  Check  to  see  if  there  is  another
        program   updating  MAIL.CPY.   If  not,  contact  your  Software
        Specialist  or  send  a  Software  Performance  Report  (SPR)  to
        DIGITAL.

   SYSTEM not sent BECAUSE:
   WHEEL or OPERATOR capability required

        Description:  You attempted to send mail to PS:<SYSTEM>  and  did
        not enable WHEEL or OPERATOR capabilities.

                                    2-8
                              THE MAIL PROGRAM


        Suggested User Response:   You  must  enable  WHEEL  or  OPERATOR
        capabilities  before  sending mail to PS:<SYSTEM>.  To resend the
        mail, you can follow the recovery procedure described in  Section
        2.2 after you enable WHEEL or OPERATOR capabilities.

   %Too many user names.  100 is maximum.

        Description:  You specified too many users as recipients of  your
        message.   MAIL only allows up to 100 user names as recipients of
        a message; it sends your message  to  the  first  100  names  but
        ignores all that exceed the first 100.

        Suggested User Response:  Send your  message  to  the  first  100
        names.   Next,  edit  your  MAIL.CPY file to retrieve the message
        text.  Then, run MAIL to  send  the  message  to  the  additional
        names,  using "@" to send the edited MAIL.CPY file as the message
        text.

   [USER NAME] not sent BECAUSE:
   Invalid directory number

        Description:  You attempted to send mail to  a  nonexistent  user
        directory.

        Suggested User Response:  You cannot send mail to a user who does
        not have a directory.

   [USER NAME] not sent BECAUSE:
   Invalid simultaneous access

        Description:  Another user has the receiver's MAIL.TXT file  open
        for writing.

        Suggested User Response:  Follow the recovery procedure described
        in Section 2.2 to resend the message.

   [USER NAME] not sent BECAUSE:
   No such file type (or some other related reason)

        Description:  The  intended  receiver  of  your  message  has  no
        MAIL.TXT file.

        Suggested User Response:  Ask the user to create a MAIL.TXT  file
        to receive mail messages.










                                    2-9
                              THE MAIL PROGRAM


   [USER NAME] not sent BECAUSE:
   Disk quota exceeded

        Description:  The receiver's directory exceeds its working quota.

        Suggested User Response:  Some files must  be  deleted  from  the
        directory before mail can be received.  You can also enable WHEEL
        or OPERATOR capabilities to ignore the user's quota.  If the user
        is logged in, you can use the TALK command as an alternative.



   2.5  TECHNICAL NOTES

   MAIL  works  with  another  program  called  MAILER  when  it  handles
   messages.   When  you  type  a  mail  message,  MAIL  creates  a file,
   MAIL.CPY, in your logged-in directory.  This file is closed  when  you
   complete  your  message  input.   At  this  point,  MAIL sends an IPCF
   (Inter-Process Communication Facility) packet to the MAILER program to
   inform  it  that you want to send a message.  (For more information on
   IPCF, refer to the TOPS-20 Monitor  Calls  Reference  Manual.)  MAILER
   processes  the  message  by appending the contents of MAIL.CPY in your
   logged-in directory to the file MAIL.TXT in the recipient's  logged-in
   directory.   Then it sends an IPCF packet back to MAIL, which notifies
   you of the status of your message (sent or not sent).  At this  point,
   the MAIL.CPY file is deleted from your logged-in directory.




























                                    2-10











                                 CHAPTER 3

                             THE RDMAIL PROGRAM



   3.1  INTRODUCTION

   The RDMAIL program prints messages that have been sent to you by other
   users  of  the system through the MAIL program.  Your MAIL.TXT file in
   your logged-in directory on PS:  contains these messages.

                                    NOTE

           If your MAIL.TXT file contains mail sent by Version  4
           of  the MAIL program, you must use Version 4 of RDMAIL
           to read it.

   There are various ways that the system notifies you whenever there  is
   mail that you have not read.  If another user sends you mail while you
   are not logged in, you receive the following message the next time you
   log in:


        @LOGIN (USER) DBELL (PASSWORD) (ACCOUNT) 341<RET>
         Job 35 on TTY42 29-Aug-79 16:14:12
         You have a message
        @


   Another user may send you a message while you are logged in.  In  this
   case, the system types

        [You have a message from SENDER]

   on your terminal.

   Messages-of-the-Day sent to you when you are not logged in are printed
   on  your  terminal  automatically  after you log in.  However, if your
   directory  is  set  to  REPEAT   LOGIN-MESSAGES,   you   receive   all
   Messages-of-the-Day  every  time  you log in.  For more information on
   the REPEAT LOGIN-MESSAGES  subcommand,  refer  to  the  BUILD  command
   description  in  the  TOPS-20  Commands Reference Manual.  If a system


                                    3-1
                             THE RDMAIL PROGRAM


   message is sent while you are logged in and you are  receiving  system
   messages, you are notified immediately:

        [New Message-of-the-Day available]

   You can give the SET MAIL-WATCH command to keep informed  of  any  new
   mail   you   receive,   especially   if  you  have  given  the  REFUSE
   SYSTEM-MESSAGES command.  (For more information on these two commands,
   refer  to  the TOPS-20 Commands Reference Manual.) You can add the SET
   MAIL-WATCH command to your COMND.CMD file, if you have one, or type it
   each time you log in.  When you give this command, it tells the system
   to notify you when you have new mail.  You receive  this  notification
   only  when  you  are  at  TOPS-20  command  level.   At  intervals  of
   approximately five minutes, the TOPS-20 Command Processor informs  you
   that  you  have  new  mail  whenever it prompts you for a new command.
   This message appears on your terminal:

        [You have new mail]

   You may give the INFORMATION MAIL command, even if you are not  logged
   in,  to  check  on the status of new mail for yourself or other users.
   To do this, type the following:

        @INFORMATION (ABOUT) MAIL (FOR USER) name<RET>

   The system returns with one of the following responses:

        New mail exists

        or

        No new mail exists

        or

        Mailbox protected



   3.2  RUNNING RDMAIL

   To start RDMAIL, type RDMAIL after the TOPS-20 prompt @ and press  the
   RETURN  key.   The  program  responds with the date and time prompt as
   follows:

        @RDMAIL<RET>
        Date and time (/HELP for help)

   If you have enabled WHEEL or OPERATOR capabilities, RDMAIL first  asks
   you  whether  you  want to read your own mail or that of another user.
   For example:



                                    3-2
                             THE RDMAIL PROGRAM


        $RDMAIL<RET>
        Special user (y or n)?

   If you type y, you are indicating that you wish to read another user's
   mail.   Type  y and press RETURN.  RDMAIL then prompts you to type the
   name of the user whose mail you wish to read.  Type the user name  and
   press  RETURN.   RDMAIL then prompts you for date and time input.  For
   example:

        $RDMAIL<RET>
        Special user (y or n)?  y<RET>
        User name:  DNeff<RET>
        Date and time (/HELP for help)

   If you type n, you are indicating that you wish to read your own mail.
   Type  n  and  press RETURN.  RDMAIL then prompts you for date and time
   input.  For example:

        $RDMAIL<RET>
        Special user (y or n)?  n<RET>
        Date and time (/HELP for help)

   RDMAIL allows you to read your messages several ways:

         o  By giving a date and/or time

         o  By giving a program switch or combination of switches

         o  By giving a date  and/or  time  combined  with  one  or  more
            program switches.

   To read any new messages, simply press RETURN.

   You can define a time period of mail you wish to read.   To  do  this,
   type a date and/or a time.  A common TOPS-20 format is:

        MMM DD,YYYY HH:MM:SS

   For example, a valid date and time is May 22,1979  17:00:00.   If  you
   type  only a date, RDMAIL assumes the time 00:01:00.  If you type only
   a time, the program assumes the  present  date.   RDMAIL  responds  by
   displaying all messages you received on and after the date and/or time
   you typed.

   If you type an invalid date or time, you  receive  an  error  message.
   Three of the most common ones are:

        ?Invalid date format

        or

        ?Invalid time format


                                    3-3
                             THE RDMAIL PROGRAM


        or

        ?Day of month too large

   After the error message RDMAIL returns with the prompt for you to type
   a valid date and/or time.

   Table 3-1 describes the RDMAIL switches you can use after the  prompt,
   either alone or combined with date/time input.


   Table 3-1:  RDMAIL Switches

   ______________________________________________________________________

     Switch                                  Function
   ______________________________________________________________________

     /ALL                   Types all messages, regardless of date.

     /HELP                  Types the program help text, outlining  the
                            time/date  format  and program switches and
                            their functions.

     /LIST                  Outputs  messages  to  the  line   printer,
                            rather than to your terminal.

     /MESSAGE-OF-THE-DAY    Types    messages    from    the     system
                            Message-of-the-Day  file,  rather than from
                            your own message file.

     /PERUSE                Allows you to peruse  messages,  and  gives
                            only  the  following  information  for each
                            message:
                            Date:  From:  To:  CC:  and Subject.

     /STOP                  Instructs RDMAIL to stop after each message
                            it  types.  At the end of each message, the
                            system prompts you to type RETURN for  more
                            output.
   ______________________________________________________________________



   3.2.1  Reading Mail Using RDMAIL Switches

   You type RDMAIL switches immediately following the prompt, and may  or
   may not combine them with a date and/or time.  You have the options of
   combining switches and preceding each switch with  a  space.   To  use
   RDMAIL switches, type a slash (/) followed by the switch name.




                                    3-4
                             THE RDMAIL PROGRAM


   /HELP - HELP Switch

        Type /HELP to get information on running RDMAIL.  For example:

        @RDMAIL<RET>
        Date and time (/HELP for help) /HELP<RET>

   After the help text prints on your terminal, the system  returns  with
   the  prompt  for  you  to  type  date/time  information and/or another
   switch.

                                    NOTE

           HELP overrides all other switches that you may combine
           with  it.   The  system  ignores  all  other specified
           switches in  the  combination,  and  prints  the  full
           RDMAIL help text.

   /ALL - ALL Switch

        Type /ALL when you wish to read all messages in  the  mail  file,
        regardless of date.

        /ALL may be combined  with  all  other  program  switches  except
        /HELP.  If you type /ALL after the prompt,

        @RDMAIL<RET>
        Date and time   (/HELP for help) /ALLRET>

        RDMAIL accesses all messages in your file.

   /LIST - LIST Switch

        Type /LIST when you want messages  output  to  the  line  printer
        rather  than  to  your  terminal.   /LIST  can  be  combined with
        date/time input, and/or with /ALL.  For example,

        @RDMAIL<RET>
        Date and time  (/HELP for help) May 13, 1979 12:00:00 /LIST<RET>

        Prints all messages in your file on and  after  12:00:00  of  May
        13, 1979 on the line printer.

        If you type only /ALL /LIST after the prompt, RDMAIL  prints  all
        messages in your file on the line printer.

   /MESSAGE-OF-THE-DAY - System Message Switch

        Type  /MESSAGE-OF-THE-DAY  to  print   mail   from   the   system
        Message-of-the-Day  file  (PS:<SYSTEM>MAIL.TXT), rather than from
        your   own   message   file.    Since   new   entries   in    the
        Message-of-the-Day  file  are typed on your terminal when you log
        in, you normally use this switch when  a  new  Message-of-the-Day
        becomes  available  while you are logged in.  /MESSAGE-OF-THE-DAY
                                    3-5
                             THE RDMAIL PROGRAM


        may be combined with date/time input.  It may  also  be  combined
        with all other program switches except /HELP.  For example:

        [New Message-of-the-Day available]

        @RDMAIL<RET>
        Date and time  (/HELP for help) /MESSAGE-OF-THE-DAY<RET>

          --------
        Date:  25 Jun 79 0853-EDT
        From:  OPERATOR
        To:  SYSTEM
        Subject:  STAND-ALONE AT NOON

        SYSTEM IS GOING DOWN AT NOON FOR NEW MONITOR TO BE LOADED.

          ========
        @

        In this case, the system  prints  the  Messages-of-the-Day  since
        June 25, 1979 on your terminal.

        When  you  type  /MESSAGE-OF-THE-DAY  after  the  prompt,  RDMAIL
        outputs  all  new  Messages-of-the-Day  since you last logged in,
        whether or not you have read them.

   /PERUSE - PERUSE Switch

        Type /PERUSE when you want to peruse messages in your file.  Only
        the  following lines for each message are printed:  Date:, From:,
        To:, CC:, and Subject:  /PERUSE can be  combined  with  date/time
        input  and  all  other  program  switches except /HELP.  A sample
        output of /PERUSE is as follows:

        @RDMAIL<RET>
        Date and time   (/HELP for help) Apr 12,1979 /PERUSE<RET>
          --------
        Date:  12 Apr 79 0900-EDT
        From:  OSMAN
        To:  ADLEY
          --------
        Subject:  your files

          --------
        Date:  12 Apr 79 1452-EDT
        From:  HARAMUNDANIS
        To:  PORADA
        CC:  ADLEY,HARAMUNDANIS
          --------
        Subject:  DUMPER




                                    3-6
                             THE RDMAIL PROGRAM


          --------
        Date:  17 Apr 79 1451-EDT
        From:  LYONS
        To:  ADLEY
          --------
        Subject:  Re:  TEST OF MAIL PROGRAM

        The system continues to output messages from April  12,  1979  to
        the present date.

   /STOP - STOP Switch

        Type /STOP to cause RDMAIL to stop after  each  message  that  it
        types.   Following each message, the program prompts you to press
        RETURN for more output.  /STOP can  be  combined  with  date/time
        input  and  all other program switches except /HELP and /LIST.  A
        sample output of /STOP and /PERUSE is as follows:

        @RDMAIL<RET>
        Date and time   (/HELP for help) May 1,1979 /STOP /PERUSE<RET>
          --------
        Date:  1 May 79 1335-EDT
        From:  OSMAN
        To:  ADLEY
          --------
        Subject:  MAILER

        [Type <CR> for more]<RET>
          --------
        Date:  1 May 79 1844-EDT
        From:  LYONS
        To:  ADLEY
          --------
        Subject:  Your account on System 2116

        [Type <CR> for more]<RET>

        The system continues to output messages from May 1, 1979  to  the
        present  date,  allows  you  to peruse them, and stops after each
        message.

   If you type an invalid switch in RDMAIL,  you  receive  the  following
   message:

        ?Does not match switch or keyword

   The system returns with the prompt for you to type a valid switch.







                                    3-7
                             THE RDMAIL PROGRAM


   3.3  RDMAIL MESSAGES

   The most common RDMAIL messages,  their  descriptions,  and  suggested
   user  responses  follow.  Fatal errors are preceded by a question mark
   (?).  A warning message is preceded by a percent sign (%).

   ?Day of month too large

        Description:  You typed an invalid day of  the  month  after  the
        program prompt, Date and time   (/HELP for help).

        Suggested User Response:  Enter a valid day  of  month  when  the
        program returns with the prompt following the error message.

   ?Does not match switch or keyword

        Description:  You typed  an  invalid  switch  after  the  program
        prompt, Date and time   (/HELP for help).

        Suggested User Response:  Type one or more valid RDMAIL switches.

   %MAIL.TXT File contains updated entries or improper format

        Description:  Your MAIL.TXT file is in the wrong format, possibly
        from being edited with a text editor.

        Suggested User Response:  Copy the file so you have a  record  of
        any current messages.  Then, delete the file.

   ?Invalid date format

        Description:  You made an error in the date format following  the
        program  prompt,  Date  and  time   (/HELP for help).  This error
        differs from an invalid day of the month; the error might be, for
        example, misspelling of the month or an incorrect year.

        Suggested User Response:  Type  a  valid  date  format  when  the
        program returns with the prompt after the error message.

   ?Invalid time format

        Description:  You typed an invalid time after the program prompt,
        Date  and time   (/HELP for help).  For example, a possible error
        is a nonexistent time such as 26:00:00.

        Suggested User Response:  Type a  valid  time  when  the  program
        returns with the prompt after the error message.







                                    3-8
                             THE RDMAIL PROGRAM


   ?LPT: not available for output

        Description:  This message appears in response to /LIST.   Either
        you   defined  a  logical  name  for  LPT:   that  points  to  an
        unavailable device.  RDMAIL ignores /LIST, and prints the mail on
        your terminal.

        Suggested User Response:  Wait for the  line  printer  to  become
        available,  or redefine the logical name to point to an available
        device (such as DSK:).












































                                    3-9
























































                                    4-1











                                 CHAPTER 4

                             THE FILCOM PROGRAM



   4.1  INTRODUCTION

   The FILCOM program compares  two  files  and  prints  any  differences
   between  them.   With FILCOM, you can compare either ASCII files (text
   files and source programs) or binary files (relocatable  binary  files
   and  save files).  The comparison is line by line for ASCII files, and
   word by word for binary files.



   4.2  RUNNING FILCOM

   To run FILCOM, type FILCOM, and press the  RETURN  key.   The  program
   prompts you for input with an asterisk:

        @FILCOM<RET>

        *

   After the prompt, enter a  FILCOM  command  string  in  the  following
   format:

        Destination file spec=Source file spec1,Source file spec2/Switches

   where:

        Destination file spec  is  the  output  file  that  contains  the
        differences between the two Source files.

   If you do not specify a Destination filename, FILCOM uses the name  of
   the  file  in  Source file spec2.  If you omit the name in Source file
   spec2, the program uses the filename from  Source  file  spec  1.   If
   there  is  no filename in Source file spec 1, then the filename FILCOM
   is used.  The default for the Destination file type is .SCM for  ASCII
   files  and  .BCM  for  binary  files.   If  you  completely  omit  the
   Destination file spec, FILCOM writes the output to the device TTY:.



                                    4-1
                             THE FILCOM PROGRAM


        Source file spec1 is the first input file you wish to compare.

   You must completely specify this file spec in the command string.

        Source file spec2 is the second input file you wish to compare.

   If you omit the  filename  in  Source  file  spec2,  FILCOM  uses  the
   filename  in  Source  file spec1.  If you omit the file type in Source
   file spec2, FILCOM uses the  file  type  in  Source  file  spec1.   To
   indicate  a null file type, simply type a period (.) at the end of the
   filename in either Source file spec1 or Source file spec2.

                                    NOTE

           FILCOM does not accept file generation  numbers.   You
           can  compare two files with the same name and type but
           different generation numbers (for  example,  FOO.BAR.1
           and  FOO.BAR.2)  by  defining  logical names for these
           files.   For  more  information  on  defining  logical
           names, refer to the TOPS-20 User's Guide.

           FILCOM accepts six characters for  a  name  and  three
           characters for type.  If more than nine characters are
           used, FILCOM truncates to nine characters.

   You can enter switches after the two input file specs.  These switches
   tell  FILCOM  how  to compare the specified files.  However, you don't
   always need to give switches, because FILCOM often determines the type
   of comparison by the file types.  If either of the input files is of a
   type listed in Table 4-1, the  files  are  compared  in  binary  mode;
   otherwise they are compared in ASCII mode.


   Table 4-1:  Special File Types Recognized by FILCOM

   ______________________________________________________________________

   File type                          Extension
   ______________________________________________________________________

                                      .APL         .DMP         .RIM
                                      .ATR         .MSB         .RMT
                                      .BAC         .OVL         .RTB
                                      .BIN         .OVR         .SCH
     Binary Files:                    .BUG         .QUC         .SFD
                                      .CAL         .QUD         .SYM
                                      .CHN         .QUE         .SYS
                                      .DAE         .QUF         .UFD
                                      .DBS         .REL         .UNV
                                      .DCR                      .XPN

     Sharable Save Files:             .EXE


                                    4-2
                             THE FILCOM PROGRAM


     Nonsharable Save Files:          .LOW         .SAV         .SVE

     Offset Address Files;
     word 0 of the file
     treated as if it was
     word 400000.                     .HGH         .SHR
   ______________________________________________________________________


                                    NOTE

           If FILCOM cannot determine  the  mode  for  comparison
           from  the input file type or switches, it compares the
           files in ASCII mode.

   For more information on sharable and nonsharable save  files  and  the
   control  words  used  in  them,  refer  to  the  TOPS-20 Monitor Calls
   Reference Manual.

   After you enter the command string specifying the mode for comparison,
   the  two  input files, and any necessary switches, press RETURN.  When
   FILCOM has finished the comparison, it notifies you of the status:

             %files are different
        or
             No differences encountered

   The program then prints a second asterisk for  you  to  enter  another
   command string.  For example:

        @FILCOM<RET>

        *COMPAR.FIL=EXFILE.1,EXFILE.2<RET>
        %files are different


        *

   If you wish to stop the program, type  CTRL/C  to  return  to  TOPS-20
   command level.



   4.2.1  Comparing ASCII Files

   In ASCII mode, FILCOM compares the characters in each line of the  two
   files, always ignoring nulls.  Comments and spacing can be selectively
   ignored, based on the switches you type.

   FILCOM contains the following switches that you  use  in  the  command
   string to compare ASCII files.



                                    4-3
                             THE FILCOM PROGRAM


   /A        Instructs FILCOM to compare the two  input  files  in  ASCII
             mode.   It  treats  both  files  as  if  they  contain ASCII
             characters, searches the files  for  text  differences,  and
             ignores  similar lines.  /A is useful if the input files are
             ASCII files but have one of the file types listed  in  Table
             4-1.

   /B        Considers blank lines in the  comparison.   If  you  do  not
             specify  /B  in  the command string, FILCOM normally ignores
             blank lines in the two files.

   /C        Instructs FILCOM to  ignore  comments  and  spacing  in  the
             files.   Comments  are defined as text on a line following a
             semicolon.  Spacing is defined as spaces and  tabs.   FILCOM
             normally  considers  comments  and spaces in the comparison.
             This switch is useful when  you  compare  assembly  language
             source files (MACRO Assembler source files).

   /H        Prints a FILCOM help text, which contains a  description  of
             the  program  and  all  switches, on your terminal.  You can
             type /H by itself immediately after the FILCOM prompt, or in
             a command string.

                                         NOTE

                 /H overrides all other switches that you may combine
                 with  it.   The  system  ignores all other specified
                 switches in the combination,  and  prints  the  full
                 FILCOM help text.

   /nL       Defines the number of lines that end a match.   When  FILCOM
             finds  that  number of successive lines that are the same in
             both input files, it prints all differences found up to  the
             time  of  the  match.   The FILCOM output includes the first
             line of the match for easy reference.  FILCOM normally  uses
             the value "3" for the number of lines (the value of n).

   /O        Instructs FILCOM to  include  a  label  and  offset  in  the
             differences  listing for ASCII files.  There are three types
             of messages:

             [;At top of  file  +  nL]  where  nL  is  a  decimal  number
             representing the number of lines between the top of the file
             and the line where the difference occurs.  If  a  difference
             occurs at the top of the file, nL is not listed.

             [;At  Label + nL]  where  Label  is  the  MACRO-style  label
             immediately  preceding  the difference and nL represents the
             decimal number  of  lines  away  from  the  label  that  the
             difference  occurs.   If the difference occurs at the label,
             nL is not listed.



                                    4-4
                             THE FILCOM PROGRAM


             [;At Label + nL following  label  name]  for  PDP-11  files,
             where  label  is  the  local  label name in the form nn$, nL
             represents the decimal number of lines from the local  label
             that the difference occurs and label name is the name of the
             last preceding block label.  The block label name is  listed
             as  further  help  in  locating  the difference, since local
             label names are not always unique.  If the difference occurs
             at  the  label,  nL is not listed.  If the difference occurs
             before FILCOM sees a label, the difference is listed as [;At
             label  + nL] where label is the block label.  The label name
             for all labels must be in the first ten  characters  of  the
             line.  Labels refer to file 1, not file 2.

   /Q        Instructs FILCOM to print only the status of the  comparison
             (either ?files are different or No differences encountered).
             FILCOM does not enumerate the differences between the files.
             It  stops  reading  the  files  after it discovers the first
             difference.

   /S        Ignores spaces and tabs  in  the  comparison  of  two  ASCII
             files.   FILCOM  normally  considers  spaces and tabs in the
             comparison.

   /T        Instructs FILCOM to generate  an  output  file  even  if  no
             differences  are  found.   If  the  /T switch is omitted and
             there are no differences in the files,  no  output  file  is
             generated.

   /U        Compares your two input files in update  mode.   This  means
             that  FILCOM  creates  an  output  file, which is the second
             input file, with change bars in the left margin next to  the
             lines  that  differ  from  those  in  the  first input file.
             Deleted lines are indicated by a  change  bar  on  the  next
             common  line.   /U  is  helpful  when  you are comparing two
             versions of text.  To obtain a meaningful  comparison,  type
             the  latest  version of the file as the second input file in
             the command string.  It is recommended that /nL be used with
             the /U switch.

   The output file in ASCII mode comparison includes a  header  for  each
   input file that contains the following information:

         o  the file number

         o  the file spec

         o  the date and time the input file was created.

   The following is an example of a header that would appear in an  ASCII
   output file:

        File 1) DSK:FORLIB.TXT[4,244]   created: 1052 26-JUL-1979


                                    4-5
                             THE FILCOM PROGRAM


        File 2) DSK:FORTEX.TXT[4,244]   created: 1155 26-JUL-1979

                                    NOTE

           If you use /U in the FILCOM command string (compare in
           update mode), this header does not appear.

   Each time FILCOM finds differences between two ASCII input  files,  it
   outputs a number corresponding to a page number in the first file, and
   the differences.  At the end of the list of differences,  the  program
   prints  a  common line between the two files.  The program then prints
   four asterisks, a number corresponding to the second input  file,  and
   the differences.  Then FILCOM repeats the set of differences until all
   the differences between  the  two  files  are  found.   A  row  of  14
   asterisks (*) marks the end of a difference.

   For example, you have two text files named FIL1.TXT and FIL2.TXT.  Use
   the TYPE command to examine the contents of both files:

        @TYPE FIL1.TXT<RET>
        this is line 1
        this is line 2
        this is line 3
        this is line 4
        this is line 5
        this is line 5.5
        this is line 6
        this is line 7
        this is line 8
        this is line 9  ;this is a comment
        this is line 10
        @TYPE FIL2.TXT<RET>
        this is line 1
        this is line 2
        this is line 3
        this is line 4
        this is line 5.5
        this is line 6
        this is line 7


        this is line 8
        this is line 9
        this is line 10
        this is line 11
        this is line 12
        this is line 13
        this is line 14, which is the end.
        @

   Run FILCOM to compare these files and name the output file DIFFER.SCM.
   Type the following:


                                    4-6
                             THE FILCOM PROGRAM


        @FILCOM<RET>

        *DIFFER.SCM=FIL1.TXT,FIL2.TXT<RET>

        %files are different

        *

   The program informs you that the files are different, and  then  gives
   you  the  asterisk prompt for more input.  To see the differences that
   FILCOM found between the two files, return to  TOPS-20  command  level
   (type CTRL/C) and use the TYPE command.

        %files are different
        *CTRL/C
        @TYPE DIFFER.SCM<RET>
        FILE 1) DSK:FIL1.TXT[4,67]      created:  1212      25-Jul-1979
        File 2) DSK:FIL2.TXT[4,67]      created:  1616      25-Jul-1979

        1)1     this is line 5
        1)      this is line 5.5
        ****
        2)1     this is line 5.5
        **************
        1)1     this is line 9  ;this is a comment
        1)      this is line 10
        ****
        2)1     this is line 9
        2)      this is line 10
        2)      this is line 11
        2)      this is line 12
        2)      this is line 13
        2)      this is line 14, which is the end.
        **************
        @

   The output shows the differences between the two files.   Line  5  was
   deleted,  line  9 was changed, and lines 11-14 were inserted.  The two
   blank lines in FIL2.TXT are ignored, because /B was not  specified  in
   the  command  string.  The number "1" that appears beside 1) and 2) in
   the output is the page number of the file where the  differences  were
   found.  Text pages are delimited by formfeeds.

   Now, compare FIL1.TXT and FIL2.TXT using /C in the command string.

        @FILCOM<RET>

        *TTY:=FIL1.TXT,FIL2.TXT/C
        File 1) DSK:FIL1.TXT[4,67]      created: 1212 25-Jul-1979
        File 2) DSK:FIL2.TXT[4,67]      created: 1616 25-Jul-1979

        1)1     this is line 5


                                    4-7
                             THE FILCOM PROGRAM


        1)      this is line 5.5
        ****
        2)1     this is line 5.5
        **************
        2)1     this is line 11
        2)1     this is line 12
        2)1     this is line 13
        2)1     this is line 14, which is the end.

        %files are different
        *

   The output is different because /C causes FILCOM  to  ignore  comments
   and spacing in the files.

   Using the same two text files, now compare them in  update  mode,  and
   write  the  output  to  the  device  TTY:   (your  terminal).  Because
   FIL2.TXT is the latest version of the two text files, type it  as  the
   second input file in the command string.  The command string is:

        @FILCOM<RET>

        *TTY:=FIL1.TXT,FIL2.TXT/U<RET>
                this is line 1
                this is line 2
                this is line 3
                this is line 4
        |       this is line 5.5
                this is line 6
                this is line 7
        | 
        | 
        |       this is line 8
        |       this is line 9
        |       this is line 10
        |       this is line 11
        |       this is line 12
        |       this is line 13
        |       this is line 14, which is the end.
        %files are different

        *

   As mentioned previously, in update mode comparisons, the  output  file
   is  the  second  input file (latest version) with change bars inserted
   next to the differences found between  the  two  files.   The  example
   above shows such an output file.  Note that the program also types the
   "%files are different"  status  on  your  terminal.   Following  this,
   FILCOM gives another prompt for another command string.





                                    4-8
                             THE FILCOM PROGRAM


   4.2.2  Comparing Binary Files

   FILCOM automatically determines that a file is binary if it has one of
   the file types listed in Table 4-1.

   Sharable and nonsharable save files represent the location of data  in
   memory.  In FILCOM, expanding the files before comparing them means to
   compare the data as it would appear if  the  files  were  loaded  into
   memory.   Comparing  the files without expanding them means to compare
   each word in the files regardless of the usual meaning of  the  files'
   control words.

   You can list a binary file with FILCOM.  To do this, simply  omit  the
   comma and the second input file spec in the command string.

   FILCOM contains the following switches that you  use  in  the  command
   string  to  compare  binary  files.  Switches control what part of the
   binary file you see.

   /E        Forces FILCOM to consider both input files as sharable  save
             files  regardless of the file types given.  Normally, FILCOM
             selects its comparison according to the file  types  of  the
             files.

   /H        Prints the FILCOM help text.  Refer to the description of /H
             in Section 4.2.1.

   /nL       Compares a binary file starting at word "n".  The number "n"
             is an octal number.  Refer to /nU, below.

   /Q        Instructs FILCOM to print only the status of the comparison.
             It  does  not list the actual differences, and causes FILCOM
             to stop reading the  files  after  it  discovers  the  first
             difference.   Refer  to  the  description  of this switch in
             Section 4.2.1.

   /nU       Compares a binary file up through word "n".  The  value  "n"
             is  an  octal number as in /nL.  If you combine /nU with /nL
             in the command string, the input  files  are  compared  only
             within these limits.

   /T        Instructs FILCOM to generate  an  output  file  even  if  no
             differences are found.  If the /T switch is not used, FILCOM
             produce no differences listing if there are  no  differences
             in the files.

   /W        Compares two binary files that have nonstandard file  types.
             (Standard file types are listed in Table 4-1.) The files are
             not expanded before FILCOM compares them.  /W  compares  the
             files'  internal  control words in addition to data, reading
             the files one word at a time.



                                    4-9
                             THE FILCOM PROGRAM


   /X        Instructs FILCOM to expand  nonsharable  save  files  before
             comparing  them in binary mode.  The program ignores control
             words and compares only the code in the files.

   All FILCOM binary switches apply when you dump a  file.   Expanding  a
   file  shows  how  it  would  appear in memory.  Dumping a file without
   expanding it shows the file's internal format.

   The output file of a binary mode comparison contains the  same  header
   as  output  files  for  ASCII  comparisons.  (Refer to Section 4.2.1.)
   However, the comparison differs because it is done word by  word.   If
   the  left  halves of the two words being compared are the same, FILCOM
   prints the absolute difference  between  the  two  words.   Otherwise,
   FILCOM prints the logical exclusive OR (XOR).

   For example, you want to compare two binary files.  They are  FIL3.BIN
   and  FIL4.BIN.   First  you  use FILCOM to dump them and examine their
   contents.  The output is written to your terminal:

        @FILCOM<RET>

        *TTY:=FIL3.BIN<RET>
        000000  201400 000000
        000001  202400 000000
        000002  202600 000000
        000003  203400 000000
        000004  203500 000000
        000005  203600 000000
        000006  203700 000000
        000007  204400 000000
        000010  204440 000000
        000011  204500 000000

        %files are different

        *TTY:=FIL4.BIN<RET>
        000000  201400 000000
        000001  202400 000000
        000002  202600 000000
        000003  203400 000000
        000004  203540 000000
        000005  203600 000000
        000006  203700 000000
        000007  204420 000000
        000010  204440 000000
        000011  204500 000000

        %files are different

        *




                                    4-10
                             THE FILCOM PROGRAM


   Now compare the files.  Note that since both file types are .BIN,  the
   program  automatically  compares  them  in  binary  mode  without  you
   specifying any  switches.   Again,  the  output  is  written  to  your
   terminal:

        @FILCOM<RET>

        *TTY:=FIL3.BIN,FIL4.BIN<RET>
        File 1) DSK:FIL3.BIN[4,67]      created: 1419 10-Sep-1979
        File 2) DSK:FIL4.BIN[4,67]      created: 1419 10-Sep-1979

        000004  203500 000000   203540 000000   000040 000000
        000007  204400 000000   204420 000000   000020 000000

        %files are different

        *

   Compare  the files once more,  but specify a quick comparison  (/Q) in
   the command string.  This causes FILCOM to merely report the status of
   the comparison.  If there  are differences,  the status message prints
   with  a  question  mark,  ?,  instead  of a percent sign, %, for error
   detection in batch jobs.  (Refer to Section  4.4,  FILCOM  Messages.) 
   The command string for this comparison is as follows:

        @FILCOM<RET>

        *TTY:=FIL3.BIN,FIL4.BIN/Q<RET>
        File 1) DSK:FIL3.BIN[4,67]      created: 1419 10-Sep-1979
        File 2) DSK:FIL4.BIN[4,67]      created: 1419 10-Sep-1979

        ?files are different

        *

   Do a third comparison of these two files, but now restrict  the  range
   with /nU and /nL:

        @FILCOM<RET>

        *TTY:=FIL3.BIN,FIL4.BIN/5L/6U<RET>

        No differences encountered

   In the following example, you  are  comparing  two  executable  files.
   FILCOM automatically expands them because of the .EXE file type:








                                    4-11
                             THE FILCOM PROGRAM


        @FILCOM<RET>

        *TTY:=FIL1.EXE,FIL2.EXE<RET>
        File 1) DSK:FIL1.EXE[4,67]      created: 1426 10-Sep-1979
        File 2) DSK:FIL2.EXE[4,67]      created: 1427 10-Sep-1979

        000141  600000 000000   255000 000000   455000 000000
        002112  000004 015062   000004 015063          000001

        %files are different

        *

   In this last example, you compare both .EXE  files  without  expanding
   them  first.   Any  differences  that  exist  in  the  files' internal
   directory pages appear in the output.  The  command  string  for  this
   comparison is as follows:

        @FILCOM<RET>

        *TTY:=FIL1.EXE,FIL2.EXE/W<RET>
        File 1) DSK:FIL1.EXE[4,67]      created: 1426 10-Sep-1979
        File 2) DSK:FIL2.EXE[4,67]      created: 1427 10-Sep-1979

        000000  001776 000003   001776 000007          000004
        000002  002000 000000   000000 000000   002000 000000
        000003  001775 000003   000000 000002   001775 000001
        000004  000000 254000   000000 000001          253777
        000005  000000 000140   300000 000003   300000 000143
        000006  001777 000001   000000 000002   001777 000003
        000007  000000 000000   001775 000003   001775 000003
        000010  000000 000000   000000 254000          254000
        000011  000000 000000   000000 000140          000140
        000012  000000 000000   001777 000001   001777 000001
        001141  600000 000000   255000 000000   455000 000000
        003112  000004 015062   000004 015063          000001

        %files are different

        *



   4.3  FILCOM SWITCHES

   Table 4-2 contains all the FILCOM switches in alphabetical order.   It
   also lists the mode of comparison and description for each switch.







                                    4-12
                             THE FILCOM PROGRAM


   Table 4-2:  FILCOM Switches

   ______________________________________________________________________

     Switch    Comparison    Description
   ______________________________________________________________________

     /A        ASCII         Compares files in ASCII mode

     /B        ASCII         Considers blank lines in the comparison

     /C        ASCII         Ignores  comments  and  spacing  in  MACRO
                             source files

     /E        Binary        Considers  both  files  as  sharable  save
                             files

     /H        ASCII&        Prints the FILCOM help text
               Binary

     /nL       ASCII&        Defines  the  number  of lines
               Binary        that end a  match  in  ASCII  comparisons;
                             determines the lower limit where a partial
                             comparison begins in binary comparisons

     /nU       Binary        Determines the upper limit where a partial
                             binary comparison stops

     /O        ASCII         Includes a label name and  offset  in  the
                             differences listing

     /Q        ASCII&        Prints  only the status of the
               Binary        comparison;   does   not   enumerate   the
                             differences

     /S        ASCII         Ignores spacing and tabs in the comparison

     /T        ASCII&        Produces an output  file  even
               Binary        if no differences are found

     /U        ASCII         Compares the  files  in  update  mode  and
                             inserts    change   bars   next   to   the
                             differences

     /W        Binary        Compares  binary  files  with  nonstandard
                             file  types,  ignoring  control  words (if
                             any)

     /X        Binary        Expands  nonsharable  save  files   before
                             comparing them
   ______________________________________________________________________



                                    4-13
                             THE FILCOM PROGRAM


   4.4  FILCOM MESSAGES

   Some of the messages printed by FILCOM  contain  information  that  is
   dependent  on the exact command string, switch, or file you specified.
   The key to these message variables follows:

         [device]   A device name.

         [file]     A file spec.

         [n]        A designator for the first or second input file.

         [reason]   The reason for a  file  access  failure.   These  are
                    listed in Table 4-3 at the end of this section.

   The most common FILCOM messages are listed below alphabetically.  They
   are all fatal errors that are preceded by a question mark (?).

   ?Buffer capacity exceeded and no core available

        Description:  You attempted to compare  two  text  files  with  a
        difference  so  large  that FILCOM cannot obtain enough memory to
        store the differences.

        Suggested User Response:  Check that you are comparing two  files
        that  are  reasonably similar; or, use /nL with n larger than the
        value 3.

   ?Command error

        Description:  You typed an invalid command.   You  may  not  have
        typed  a  second  file  specification.   You may have included an
        invalid line terminator or a nonalphanumeric character in a  file
        specification.

        Suggested User Response:  Retype the correct command syntax.

   ?Command error -- Unknown switch X

        Description:  You typed an invalid switch.  The invalid switch is
        specified by the X character in the message.

        Suggested User Response:  Retype the correct switch  and  reissue
        the command.

   ?Command error -- Double filename illegal

        Description:  You typed a double filename in your command string.

        Suggested User Response:  Retype the correct command  syntax  and
        reissue the command.



                                    4-14
                             THE FILCOM PROGRAM


   ?Command error -- Double file type illegal

        Description:  You typed  a  double  file  type  in  your  command
        string.

        Suggested User Response:  Retype the correct command  syntax  and
        reissue the command.
   ?Device [device] Not available

        Description:  The device you  specified  is  not  available.   In
        other  words,  someone  may  be using it, or there may be no such
        device on your system.

        Suggested User Response:  Specify a device available to you.

   ?FILE [n] NOT IN CORRECT EXE FORMAT

        Description:  The first or  second  input  file  in  the  command
        string is not a correctly formatted sharable save file (.EXE file
        type).  You may have specified a file that is in nonsharable save
        file  format  (a result of the TOPS-20 CSAVE command, rather than
        the SAVE command).

        Suggested User Response:  Do  not  use  nonsharable  save  files.
        They  are less efficient than regular sharable save files.  Bring
        the program into memory with the TOPS-20  GET  command,  save  it
        again  with the SAVE command, and then reissue the commands.  You
        can also look at the files as  nonsharable  save  files  or  pure
        binary files.

   ?File [n] not in SAV format

        Description:  Your first or second input file is  not  in  proper
        nonsharable save file format.

        Suggested User Response:  Specify the correct file or look at the
        files as sharable save files or pure binary files.

   ?File [n] read error

        Description:  Your first or second input file contains an error.

        Suggested User Response:  Try the operation again.  If  it  still
        fails, ask the operator to check the device for errors.

   ?Input error for input file [n]- [file] [reason]

        Description:  FILCOM could not access your first or second  input
        file for the reason specified.  (Refer to Table 4-3 for the exact
        reason.)

        Suggested User Response:  The  particular  reason  in  Table  4-3
        gives corrective action.

                                    4-15
                             THE FILCOM PROGRAM


   ?NOT ENOUGH CORE AVAILABLE TO HOLD DIRECTORY

        Description:  FILCOM is attempting to compare your sharable  save
        files,  but  cannot get enough memory to hold the file's internal
        directory.

        Suggested User Response:  Re-create the .EXE file.  If the  error
        persists,  contact  your  Software Specialist, or send a Software
        Performance Report (SPR) to DIGITAL.

   ? Output device error

        Description:  FILCOM received an error while writing your file.

        Suggested User Response:  The  device  may  be  faulty.   If  the
        problem persists, contact your operator to fix the problem.
   ?Output device error- [device] cannot do output

        Description:  You specified a device that is unable to do output,
        such as a card reader.

        Suggested User Response:  Specify a device  that  is  capable  of
        producing output.

   ?Output ENTER error for [file] [reason]

        Description:  FILCOM is unable to write the file for  the  reason
        specified.

        Suggested User  Response:  Refer  to  Table  4-3  for  corrective
        action that applies to the reason for the error.

   Table 4-3 contains the various reasons for file access errors that can
   appear in FILCOM messages.




















                                    4-16
                             THE FILCOM PROGRAM


   Table 4-3:  Reasons for File Access Errors

   ______________________________________________________________________

     Error                             Reason
   ______________________________________________________________________

     (0)  File not found               You specified a file  that  does
                                       not  exist.  Specify an existing
                                       file.

     (1)  Nonexistent UFD              You specified a  directory  that
                                       does   not  exist.   Specify  an
                                       existing directory.

     (2)  Protection failure           You  do  not   have   sufficient
                                       privileges  to  access the named
                                       file.   Negotiate   the   needed
                                       privileges   with   the   system
                                       operator or  the  owner  of  the
                                       file.

     (3)  File being modified          Another   job    is    currently
                                       modifying  the  named file.  Try
                                       to access the  file  at  another
                                       time    or   use   a   different
                                       filename.

     (14) No room or quota exceeded    You exceeded the  quota  of  the
                                       named  directory  or  the entire
                                       capacity  of  the   named   file
                                       structure.   Delete  and expunge
                                       some of your files, or specify a
                                       directory   or   structure  with
                                       sufficient space.

     (15) Write-lock error             You requested an output file  on
                                       a write-locked device, such as a
                                       magnetic      tape.       Either
                                       write-enable  the device and try
                                       again,   or   specify    another
                                       device.
   ______________________________________________________________________











                                    4-17
























































                                    5-1











                                 CHAPTER 5

                              THE CREF PROGRAM



   5.1  INTRODUCTION

   The CREF program generates cross-reference listings from  .CRF  files.
   You  produce  .CRF  files  with  LOAD-class  commands.   (Refer to the
   TOPS-20 Commands Reference Manual.) A cross-reference listing  is  one
   that  contains  your  source program (from either the ALGOL or FORTRAN
   compilers, or the MACRO assembler) plus a list of all the symbols used
   and  the  line  numbers  on  which  they  are used.  As such, the CREF
   program is a helpful tool for debugging and modifying programs written
   in these languages.

                                    NOTE

           You do not need to run CREF for COBOL  programs.   The
           COBOL compiler automatically generates CREF listings.




   5.2  RUNNING CREF

   Because CREF reads only .CRF format files, you must first create these
   files  before you run CREF.  These files are created when your program
   is compiled.  Section 5.2.1 describes how to create .CRF files.

   Once  you  create  .CRF  files,  you   can   run   CREF   to   produce
   cross-reference listings.  Section 5.2.2 describes how to run CREF.



   5.2.1  Creating .CRF Files with COMPILE

   To create a .CRF file, you must compile your  program.   To  do  this,
   type  COMPILE  after  the  TOPS-20 prompt @, followed by /CREF and the
   name of the program you want to compile; then press  the  RETURN  key.
   After  you  press  RETURN,  the  system compiles your program and then
   returns you to TOPS-20 command level.  For example:


                                    5-1
                              THE CREF PROGRAM


        @COMPILE/CREF BE.MAC<RET>
        MACRO:  BE

        EXIT
        @

   Compiling a program does not automatically create a .CRF  file.   This
   is  why you specify /CREF in the command string.  For more information
   on the COMPILE  command,  refer  to  the  TOPS-20  Commands  Reference
   Manual.

   You can create .CRF files of two programs in the same command  string.
   For example:

        @COMPILE/CREF BE.MAC,CREFA.MAC<RET>
        MACRO:  BE
        MACRO:  CREFA

        EXIT
        @

   Note that this one command string is equivalent to creating .CRF files
   of both programs separately, as in the example below:

        @COMPILE/CREF BE.MAC<RET>
        MACRO:  BE

        EXIT
        @COMPILE/CREF CREFA.MAC<RET>
        MACRO:  CREFA

        EXIT
        @

   If your program has already been compiled, the  above  procedure  will
   not  work.  You will immediately return to TOPS-20 command level after
   typing the command string.  To  create  a  .CRF  file  of  an  already
   compiled  program,  you  must recompile the program.  Type the COMPILE
   command followed by /COMPILE,  /CREF,  the  program  name,  and  press
   RETURN.  For example:

        @COMPILE/COMPILE/CREF  BE.MAC<RET>
        MACRO:  BE

        EXIT
        @



   5.2.2  Producing Cross-Reference Listings

   Once you create a .CRF file, you can run CREF to generate  the  actual


                                    5-2
                              THE CREF PROGRAM


   cross-reference  listing.  There are four types of tables that you can
   get in these listings.  The four types of tables are:

         o  Regular Symbols - This table contains  user-defined  symbols,
            labels, address tags, and assignments.

         o  OPDEF and Macro Names  -  This  table  contains  user-defined
            operators such as macro calls and OPDEFs.

         o  Op Codes - This table contains hardware machine mnemonics and
            assembler pseudo-ops, such as MOVE and XALL.

         o  Procedure Nesting Levels - This table contains the  names  of
            procedures  and  numbers  of  blocks,  indented to show their
            nesting in the program.  Only the  ALGOL  compiler  generates
            this table in a CREF listing.

   You produce cross-reference listings by  running  CREF  and  giving  a
   command  string  with  switches  to  specify  the  type of listing you
   desire.  The general command string format is:

        Destination  file  spec=Source  file  spec1/Switches,Source  file
        spec2/Switches...

   where:

        Destination file spec  is  the  output  file  that  contains  the
        cross-reference listing.

   If you omit the device and the filename in the Destination file  spec,
   CREF  uses  the  device LPT:.  If you omit the device but do specify a
   filename, CREF uses the device DSK:.  If you do not specify a filename
   in  the  Destination  file spec, CREF uses the filename in Source file
   spec1.  If you do not specify a file  type  in  the  Destination  file
   spec,  CREF uses the type .LST.  If you omit the equal sign (=) in the
   command string, CREF uses all defaults for the Destination  file  spec
   (you only specify the Source file specs).

        Source file spec1,Source file spec2...are the input files.  These
        are the .CRF files you produced from compiling your programs.

   If you omit the device in any of the Source file specs, CREF uses  the
   device  DSK:.   If  you  omit a filename in any Source file spec, CREF
   uses the filename CREF.  If you omit a file type in  any  Source  file
   spec, CREF uses the file type .CRF, then .LST, .TMP, and null.

   If you omit a  PPN  or  a  logical  name  for  a  PPN  in  either  the
   Destination  file  spec  or any of the Source file specs, CREF assumes
   that you mean your connected directory.

   As mentioned, you can type CREF program switches in the command string
   after  each  input  file spec.  These switches and their functions are


                                    5-3
                              THE CREF PROGRAM


   described in Table 5-1.


   Table 5-1:  CREF Switch Options

   ______________________________________________________________________

     Switch  Function
   ______________________________________________________________________

     /A      Advances magnetic tape reel by one  file.   You  can  type
             this switch more than once in the command string.

     /B      Backspaces magnetic tape reel by one file.  You  can  type
             this switch more than once in the command string.

     /C      Cancels the processing of any switches in your  SWITCH.INI
             file.

     /D      Restores the processing of any default  switches  in  your
             SWITCH.INI file.

     /H      Types the CREF help file.  /H is illegal in  a  SWITCH.INI
             file.

     /K      Suppresses Regular Symbol Table in the CREF listing.

     /M      Suppresses OPDEF/Macro Table in the CREF listing.

     /O      Includes the Op Code Table in the CREF listing.

     /P      Preserves an input file with the file type .CRF  or  .LST.
             These types of input files are normally deleted.

     /R      Requests the line number at which the CREF listing  is  to
             start.   CREF  types out "RESTART LISTING AT LINE:", after
             which you type the line number and press RETURN.   If  you
             use  an  indirect  file,  CREF looks for the number in the
             indirect  file.   /R   is   most   useful   for   physical
             (non-spooled)   line   printers,   and  is  illegal  in  a
             SWITCH.INI file.

     /S      Suppresses the program listing and lists only  the  tables
             you select.

     /T      Skips to the logical end of the magnetic tape.

     /W      Rewinds the magnetic tape.

     /Z      Zeros the DECtape directory.  This is a historical switch,
             and is illegal.
   ______________________________________________________________________


                                    5-4
                              THE CREF PROGRAM


   If you always want to use specific switches when you run CREF, you can
   put  these  switches  in  a  SWITCH.INI file.  Then, each time you run
   CREF, it automatically reads these switches from the SWITCH.INI  file.
   You  can  use  all CREF switches in your SWITCH.INI file except /H and
   /R.  For more information on creating a SWITCH.INI file, refer to  the
   TOPS-20 User's Guide.

   You can use an indirect file in CREF to  reference  a  file  within  a
   command  string.   The indirect file can contain a complete or partial
   CREF command string (filenames and switches).  For more information on
   using indirect files, refer to the TOPS-20 User's Guide.

   You can produce cross-reference listings by typing CREF as  a  command
   or  as  a  program  name after the TOPS-20 prompt @.  To run CREF as a
   command, type CREF after the TOPS-20 prompt @ and press RETURN.   This
   causes CREF to produce a cross-reference listing of any .CRF files you
   created in that particular terminal  session.   For  example,  if  you
   create .CRF files for BE.MAC and CREFA.MAC and then run CREF, type the
   following:

        @CREF<RET>
        CREF:   BE
        CREF:   CREFA
        @

   Because you did not specify a switch, the default is for CREF to  give
   you  a  cross-reference  listing that contains a Regular Symbols Table
   and an OPDEF/Macro Table for each of the two .CRF files.  If you  only
   specify  switches  with this format, these switches apply to all files
   CREF processes.  If one of your CRF files is  an  ALGOL  program,  the
   listing also includes the Procedure Nesting Level Table.

   If  you  create  .CRF  files  for  several  programs,   but   want   a
   cross-reference  listing of just one file, type CREF after the TOPS-20
   prompt @ followed by a CREF command string.   For  example,  you  have
   .CRF   files   for   BE.MAC   and  CREFA.MAC,  but  you  only  want  a
   cross-reference listing for BE.MAC.  Type the following:

        @CREF BE.LST=BE.CRF/Switch<RET>
        CREF:   BE
        @

   This command string causes CREF to produce a  cross-reference  listing
   for BE.MAC that includes any tables you specify with the switch.

   To run CREF as a program, type R CREF after the TOPS-20 prompt  @  and
   press  RETURN.   The program prompts you with an asterisk.  Now type a
   CREF command string.  For example, you create a .CRF file  for  BE.MAC
   and  then  run CREF as a program, specifying /O in the command string.
   Type the following:

        @R CREF<RET>


                                    5-5
                              THE CREF PROGRAM


        *BE.LST=BE/O<RET>
        [CRFXKC 5K CORE]
        *

   This command string causes CREF to produce an cross-reference  listing
   for  BE.MAC  that  contains  a  Regular  Symbols Table, an OPDEF/Macro
   Table, and the Op Code Table (/O appears in the command string).


                                    NOTE

                  For  an  explanation  of   the   program
                  message  in square brackets that appears
                  in the last example,  refer  to  Section
                  5.5, CREF Messages.


   You can also run other programs from CREF.  To do this,  type  R  CREF
   after  the  TOPS-20  prompt  @  and  press RETURN.  After the asterisk
   prompt, type the filespec for the second program you wish to run, then
   type an exclamation point (!) and press RETURN.



   5.3  CREF EXAMPLES

   First, type your SWITCH.INI file to see that /O is included for  CREF.
   Then define the logical name LPT:  so that the CREF output goes to the
   disk, where you can type it.  Without the logical name, the output  is
   spooled to the line printer.

        @TYPE SWITCH.INI<RET>
        CREF/O
        RUNOFF/CRETURN/MESSAGE:(NOPREFIX,FIRST)
        MAKLIB/MESSAGE:(NOPREFIX,FIRST)
        @DEFINE LPT: DSK:<RET>
        @

   Now, compile a MACRO assembler program and  request  a  CREF  listing.
   Process MACRO's listing file with CREF to get the final listing.  Note
   that  because  of  the  /O  on  the  CREF  line  in  SWITCH.INI,  CREF
   automatically includes the Opcode Table.

   @COMPILE/COMPILE/CREF CREFA<RET>
    MACRO: CREFA

   EXIT
   @CREF<RET>
   CREF: CREFA
   @TYPE CREFA.LST<RET>
   LCREFA CREF Example MACRO %53A(1152) 10:39 10-Sep-79 Page 1
   CREFA MAC 11-Jul-79 11:54  Show What CREF Does


                                    5-6
                              THE CREF PROGRAM


        1      TITLE CREFA CREF Example
        2      SUBTTL Show What CREF Does
        3
        4      SEARCH MACSYM, MONSYM
        5      SALL
        6      NOSYM
        7
        8   000000   T0=0
        9   000016   L=16
       10   000017   P=17
       11
       12   000017   CONST=17
       13      ENTRY TIMES.
       14
       15 000000' 201 00 0 00 000017  TIMES.: MOVX T0,CONST
       16 000001' 220 00 1 16 000000   IMUL T0,@(L)
       17 000002' 263 17 0 00 000000   RET
       18
       19      END

   NO ERRORS DETECTED

   PROGRAM BREAK IS 000003
   CPU TIME USED 00:00.872

   67P CORE USED

   ^LCONST     12#     15
   L      9#     16
   P     10#
   T0      8#     15     16
   TIMES.     13     15#
   ..MX1     15#     15     16
   ..MX2     15#     16
   .PSECT     15     16

   ^LMOVX     15
   RET     17

   ^LEND     19
   ENTRY     13
   IFDEF     15
   IFE     15     16
   IFNDEF     16
   IMUL     16
   MOVEI     15
   NOSYM      6
   PURGE     16
   SALL      5
   SEARCH      4
   SUBTTL      2
   TITLE      1


                                    5-7
                              THE CREF PROGRAM


   .IF     15
   .IFN     15
   .PSECT     15     16
   @
   Now, compile a FORTRAN program. Generate the CREF listing and type the
   result.

   @COMPILE/COMPILE/CREF CREFB<RET>
    FORTRAN: CREFB
   TIMES  
   @CREF<RET>
   CREF: CREFB
   @TYPE CREFB.LST<RET>
   ^LTIMES  CREFB.FOR FORTRAN V.5A(621) /KI/C 10-SEP-79 10:39 PAGE 1


   00001       FUNCTION TIMES(ARG)
   00002 
   00003       PARAMETER CONST = 17
   00004       INTEGER TIMES, ARG
   00005 
   00006 10    TIMES = CONST*ARG
   00007       RETURN
   00008 
   00009       END


   SUBPROGRAMS CALLED



   SCALARS AND ARRAYS [ "*" NO EXPLICIT DEFINITION - "%" NOT REFERENCED ]

    TIMES 1  ARG 2 

   TEMPORARIES



   ^LARG      1#      4#      6
   CONST      3#      6
   TIMES      1#      4#      6#
   10P      6#

   TIMES  [ NO ERRORS DETECTED ]
   @



   Finally, compile an ALGOL  program.   Generate  the  CREF  listing  as
   before and type the result.  Note the Procedure Nesting Table.



                                    5-8
                              THE CREF PROGRAM


   @COMPILE/COMPILE/CREF CREFC<RET>
    ALGOL: CREFC 

    EXIT
   @CREF<RET>
   CREF: CREFC
   @TYPE CREFC.LST<RET>
   DECsystem 10 ALGOL-60, Version 6A(654)   10-SEP-79    10:39:35
   Command string: CREFC,CREFC/C=MISC:CREFC.ALG




        1 000005   B1           1 BEGIN REAL X, Y;
        2 000005                2 
        3 000012                3     REAL PROCEDURE SQUAREROOT(X,L);
        4 000012                4   
        5 000016                5         VALUE X;  REAL X;  LABEL L;
        6 000016                6   
        7 000021   B2           7         BEGIN REAL Y, Z;
        8 000025                8             IF X < 0 THEN GOTO L;
        9 000027                9             Y := (1 + X)/2;
       10 000043               10         IT:     Z := (X/Y + Y)/2;
       11 000060               11                 IF ABS(Z - Y) < 1&-6 THEN GOTO OK;
       12 000063               12                 Y := Z; GOTO IT;
       13 000074               13         OK: SQUAREROOT := Z;
       14 000076        E2     14         END;
       15 000076               15 
       16 000115               16 NG: WRITE("Number please: "); BREAK.OUTPUT;
       17 000117               17     READ(X);
       18 000122               18     Y := SQUAREROOT(X,NG);
       19 000127               19     WRITE("The square root of ");
       20 000132               20     PRINT(X);
       21 000135               21     WRITE(" is ");
       22 000140               22     PRINT(Y);
       23 000143               23     BREAK.OUTPUT;
       24 000145        E1     24 END;

    NO ERRORS



   ^LE----1 PROGRAM
       B----1          1
    B----2          7
     E----2        14
        E----1        24
   ^LABS     11
   BREAKOUTPUT  
        16     23
   IT     10#     12
   L      3#      5#      8


                                    5-9
                              THE CREF PROGRAM


   NG     16#     18
   OK     11     13#
   PRINT     20     22
   READ     17
   SQUAREROOT  
         3#     13     18
   WRITE     16     19     21
   X      1#      3#      5#      8      9     10     17     18     20
   Y      1#      7#      9     10     11     12     18     22
   Z      7#     10     11     12     13
   @



   5.4  CREF MESSAGES

   The messages printed by  CREF  fall  into  three  general  categories:
   informational   messages,   warning   messages,   and   fatal  errors.
   Informational messages are enclosed in  square  brackets  [    ],  and
   merely inform you of CREF's progress in processing your file.  Warning
   messages are  preceded  by  a  percent  sign  (%)  and  indicate  that
   something  unexpected occurred, but that CREF was able to recover.  In
   this case, verify that your  output  is  correct.   Fatal  errors  are
   preceded  by a question mark (?), and indicate an occurrence that CREF
   could not handle.  In this case, CREF aborts its operation.  You  must
   fix the problem before reissuing your command string.  The % and the ?
   preceding the message are easily detected in Batch jobs.

   Some of the messages contain variable information that is dependent on
   the  exact  command  string,  switch,  or  file  you specified.  These
   variables are as follows:

             [access]       An octal code associated with a  file  access
                            failure.  For possible access failures, refer
                            to Table 5-2 at the end of this section.

             [device]       A device name.

             [file]         A file spec.

             [memory]       A memory size, such as 30K.

             [status]       An octal code associated with a read or write
                            error  while  processing a file.  The meaning
                            of this code is described in Table 5-3 at the
                            end of this section.

             [switch]       A switch name.

   The most common CREF messages are listed below alphabetically.

   ?CRFCDN Can't get command file device [device]


                                    5-10
                              THE CREF PROGRAM


        Description:  CREF  cannot  access  the  named  device  in   your
        indirect file command.

        Suggested  User  Response:  Specify  an  existing  or   available
        device.

   ?CRFCEF Cannot ENTER file, [access] [file]

        Description:  CREF could not create the specified  file  for  the
        reason  associated with the printed access code.  (Refer to Table
        5-2.)

        Suggested User  Response:  Refer  to  Table  5-2  for  corrective
        action that applies to the reason for the error.

   ?CRFCFE Command file INPUT error, [status] [file]

        Description:  An input error occurred reading the  named  command
        file.   For  the  meaning  of the specified status code, refer to
        Table 5-3.

        Suggested User  Response:  Refer  to  Table  5-3  for  corrective
        action that applies to the reason for the error.
   ?CRFCFF Cannot find file, [access] [file]

        Description:  CREF cannot find the specified file for the  reason
        associated with the printed access code.  (Refer to Table 5-2.)

        Suggested User  Response:  Refer  to  Table  5-2  for  corrective
        action that applies to the reason for the error.

   ?CRFCFI Cannot find input file, [file]

        Description:  CREF cannot find the specified  file.   The  reason
        can be any of those listed in Table 5-2.

        Suggested User  Response:  Refer  to  Table  5-2  for  corrective
        action that applies to the reason for the error.

   ?CRFCLC Can't LOOKUP command file [access] [file]

        Description:  CREF cannot find the specified command file for the
        reason  associated with the printed access code.  (Refer to Table
        5-2.)

        Suggested User  Response:  Refer  to  Table  5-2  for  corrective
        action that applies to the reason for the error.

   ?CRFCME Command error - type /H for help

        Description:  You typed an invalid command.



                                    5-11
                              THE CREF PROGRAM


        Suggested User Response:  Retype the correct command or  type  /H
        for help.

   ?CRFDNA Device not available, [file]

        Description:  You specified a device in  the  file  specification
        that  is  not available to your job.  It may be in use by another
        job.

        Suggested User Response:  Specify a device that is  available  to
        your job.

   ?CRFIBP Input buffer size phase error - 0 [file]

        Description:  The size of the buffer area set up by the system is
        larger than the size expected by CREF.

        Suggested User Response:  This is  an  internal  error,  and  not
        expected to happen.  If it does, contact your Software Specialist
        or send a Software Performance Report (SPR) to DIGITAL.

   %CRFIDC Improper input data at line [decimal], continuing

        Description:  CREF detected incorrect data in  your  input  file.
        This  is  most  likely a problem with the compiler that generated
        the CREF input file.

        Suggested User Response:  First, be sure that you are  processing
        a  valid  CREF input file.  If so, this is an internal error, and
        not expected to happen.  Try to re-create the  .CRF  file,  since
        the  data  in  the  original one may have been corrupted.  If the
        problem persists, contact your  Software  Specialist  or  send  a
        Software Performance Report (SPR) to DIGITAL.
   ?CRFIMA Insufficient memory available

        Description:  Your input file is too large for CREF to handle.

        Suggested User Response:  Divide your program into smaller  files
        and try again.

   ?CRFINE INPUT error, [status] [file]

        Description:  An input error occurred  reading  the  named  file.
        For the meaning of the specified status code, refer to Table 5-3.

        Suggested User  Response:  Refer  to  Table  5-3  for  corrective
        action that applies to the reason for the error.

   ?CRFOUE OUTPUT error, [status] [file]

        Description:  An output error occurred writing  the  named  file.
        For the meaning of the specified status code, refer to Table 5-3.


                                    5-12
                              THE CREF PROGRAM


        Suggested User  Response:  Refer  to  Table  5-3  for  corrective
        action that applies to the reason for the error.

   %CRFPUE Please use "=" rather than "_"

        Description:  Older versions of CREF allowed only the use  of  an
        underbar  ("_") to separate the input files from the output file.
        CREF currently allows either "=" or "_", but it is preferable for
        you to use "=".  CREF acts as if you typed "=".

        Suggested User Response:  Use "=" in the future.

   %CRFRLL Restart listing at line:

        Description:  You specified /R to continue a  listing.   CREF  is
        requesting the line number of the line to resume printing.

        Suggested User Response:  Type the desired line number.

   %CRFSIH "/H" or "/R" switch illegal in SWITCH.INI defaulting

        Description:  You specified /H or /R illegally in the  CREF  line
        in your SWITCH.INI file.  CREF ignores these switches.

        Suggested User Response:  Remove /H or /R  from  your  SWITCH.INI
        file.

   %CRFSII Syntax error in SWITCH.INI defaults

        Description:  The CREF  commands  in  your  SWITCH.INI  file  are
        invalid.  CREF ignores them.

        Suggested User Response:  Correct the invalid  switches  in  your
        SWITCH.INI file.

   ?CRFSIO I/O error while reading SWITCH.INI

        Description:  An input error occurred reading  SWITCH.INI  switch
        defaults.   The reason for the failure can be any of those listed
        in Table 5-3.

        Suggested User  Response:  Refer  to  Table  5-3  for  corrective
        action that applies to the reason for the error.
   ?CRFUKS Unknown switch "[switch]" {in DSK:SWITCH.INI}

        Description:  You specified a nonexistent switch.

        Suggested User Response:  Respecify the  command  string  with  a
        valid switch, or fix your SWITCH.INI file.

   [CRFXKC [memory] [core]



                                    5-13
                              THE CREF PROGRAM


        Description:  CREF finished its processing, and is informing  you
        how much memory it used to process your CREF file.

   The octal codes listed in Table  5-2  appear  in  various  CREF  error
   messages,  wherever  [access]  is  used.   The explanation beside each
   octal  code  describes  the  reason  for  the  failure.    Appropriate
   corrective action for each failure follows the explanation.


   Table 5-2:  Reasons for File Access Errors

   ______________________________________________________________________

     Octal Code                         Explanation/Action
   ______________________________________________________________________


              0             File not found.  The  named  file  was  not
                            found by CREF.  Specify an existing file.

              1             You specified a  directory  that  does  not
                            exist.  Specify an existing directory.

              2             Protection  failure.   You  do   not   have
                            sufficient  privileges  to access the named
                            file.  Negotiate the needed privileges with
                            the  system  operator  or  the owner of the
                            file.

              3             File  being  modified.   Another   job   is
                            currently modifying the named file.  Try to
                            access the file at another time  or  use  a
                            different filename.

              14            No room or quota  exceeded.   You  exceeded
                            the  quota  of  the named directory, or the
                            entire  capacity  of  the  file  structure.
                            Delete  and  expunge some of your files, or
                            specify  a  directory  or  structure   with
                            sufficient space.

              15            Write-lock error.  You requested an  output
                            file  on  a  write-locked device, such as a
                            magnetic  tape.   Either  write-enable  the
                            device  and  try  again, or specify another
                            device.
   ______________________________________________________________________

   The status code in various CREF error messages is an octal number that
   is  best  interpreted  as bits.  For example, if a CREF message prints
   the status code 40001, this means that you  have  exceeded  your  disk
   quota.   The  status  code  printed by CREF is the logical "OR" of all


                                    5-14
                              THE CREF PROGRAM


   applicable bit values.  Table 5-3 contains these status  codes,  their
   meanings, and the corresponding remedial action.


   Table 5-3:  Error Status Codes

   ______________________________________________________________________

     Status Code            Meaning/Action
   ______________________________________________________________________

               400000       The device is write-locked.  Either specify
                            a  write-enabled  device  or ask the system
                            operator to write-enable your device.

               200000       A hardware error occurred.  The hardware is
                            in error and should be fixed if the problem
                            persists.

               100000       A parity error occurred.  The data  on  the
                            device  is incorrect.  Correct the data and
                            try again.

               40000        Quota  exceeded  or  structure  full.   You
                            either  exceeded  your directory's quota or
                            the  entire  capacity  of  the   structure.
                            Delete  and expunge some files or specify a
                            structure  or  directory  with   sufficient
                            space.
   ______________________________________________________________________


                                    NOTE

           All other bit values (such as 20000 or 10) are  simply
           status  bits and do not indicate an error.  Only those
           listed above indicate an error.  Any other code simply
           indicates the status.




   5.5  TECHNICAL NOTES

   The information in this section is primarily for users who write their
   own  compilers (such as MACRO, ALGOL, or FORTRAN) and users who create
   .CRF files.  It describes the .CRF input file format and  the  various
   control characters that you use.

   The control characters in Tables 5-4 and 5-5 appear in the CREF  input
   file  produced  by MACRO, FORTRAN and ALGOL.  At the beginning of each
   line of the listing, CREF input data  is  enclosed  by  DELETE  B  and


                                    5-15
                              THE CREF PROGRAM


   DELETE  C.   The  symbol  or instruction types and the number of their
   component characters are defined by control characters.   The  set  of
   control  characters  defining  symbols and instructions is the same as
   the set defining the number of symbol or  instruction  characters.   A
   control character's position determines its function.  For example, in
   the input CREF data <DELETE>B^C^CEND<DELETE>c, the <DELETE>B indicates
   the  beginning  of  the  data.   The  first  CTRL/C  (^C)  defines the
   instruction END as a pseudo-op code.  The second CTRL/C  (^C)  defines
   the  number  of  characters  in  the  instruction  END  as  3, and the
   <DELETE>C terminates the CREF data.

   Symbols referenced in a block-structured language such as ALGOL should
   assign a unique number to each symbol name.  This ensures that symbols
   with the same name but defined  in  different  blocks  have  different
   numbers.   Then,  the  number  for each symbol should be referenced in
   CREF data rather than the name.   After  the  last  use  of  a  symbol
   (usually  at  the  end  of  its  block),  use  CTRL/I to associate the
   symbol's name with the unique number assigned to it.

   Control characters that require two symbols (such  as  CTRL/I)  should
   have two adjacent length character and symbol name pairs.

   The control characters that begin and end  the  CREF  input  data  are
   described in


   Table 5-4:  Beginning and Ending Control Characters

   ______________________________________________________________________

     Character         ASCII Codes       Meaning
   ______________________________________________________________________


     <DEL> A           177, 101          Terminates the  CREF  data  on
      (prints as A)    (Octal)           each   line   and    adds    a
                                         horizontal  tab to the line of
                                         the listing.

     <DEL> B           177, 102          Signals  beginning of the CREF
      (prints as B)                      data on each line.

     <DEL> C           177, 103          Terminates  the  CREF data  on
      (prints as C)                      each line.  A line  number  is
                                         incremented and printed.  This
                                         is the line number  referenced
                                         in the CREF tables.

     <DEL> D           177, 104          Identical to DELETE A,  except
      (prints as D)                      that   DELETE   D   does   not
                                         increment    or   print   line
                                         numbers.


                                    5-16
                              THE CREF PROGRAM


     <DEL> E           177, 105          Causes   CREF   to  print  its
      (prints as E)                      tables    immediately,     and
                                         reinitializes  the  tables for
                                         another program.  FORTRAN uses
                                         this      function     between
                                         subroutines.

     <DEL> F           177, 106          Identical to  DELETE C, except
      (prints as F)                      that   DELETE   F   does   not
                                         increment    or   print   line
                                         numbers.
   ______________________________________________________________________

   Table  5-5  contains  the  control  characters  that  define  symbols,
   instruction  types, and macros.  Except for CTRL/B and CTRL/G, each of
   these characters precedes the symbol name being referenced.


   Table 5-5:  Symbol-Definition Control Characters

   ______________________________________________________________________

     Character            ASCII Code     Meaning
   ______________________________________________________________________

     CTRL/A (^A)          001            Declares  a  reference  to   a
                                         user-defined symbol (such as a
                                         regular  MACRO  symbol  or   a
                                         FORTRAN variable).

     CTRL/B (^B)          002            Declares a defining occurrence
                                         of   a   user-defined  symbol.
                                         This   character   immediately
                                         follows the symbol name.

     CTRL/C (^C)          003            Declares  a  reference  to   a
                                         MACRO     pseudo-op    or    a
                                         hardware-defined op code.

     CTRL/D (^D)          004            Declares a defining occurrence
                                         of  a  MACRO  pseudo-op  or  a
                                         hardware-defined op code.

     CTRL/E (^E)          005            Declares  a  reference  to   a
                                         MACRO or OPDEF.

     CTRL/F (^F)          006            Declares a defining occurrence
                                         of a MACRO or OPDEF.

     CTRL/G (^G)          007            Causes CREF to delete the last
                                         symbol that it read.



                                    5-17
                              THE CREF PROGRAM


     CTRL/H (^H)          010            Combines two symbols that  are
                                         defined   at  different  block
                                         levels and are then  found  to
                                         be   the   same.   The  second
                                         symbol specified  becomes  the
                                         name  for  both.  For example,
                                         in a one-pass block-structured
                                         compiler  that  allows  symbol
                                         references    before     their
                                         definition,      a      symbol
                                         referenced in an  inner  block
                                         must  be  treated  as a unique
                                         symbol until the  end  of  the
                                         block.  If no local definition
                                         is   found,   this    symbol's
                                         references    must   then   be
                                         combined with an outer block's
                                         references.

     CTRL/I (^I)          011            Declares   the    user-defined
                                         symbol  by giving it a name in
                                         place of the  unique  numeric.
                                         The   numeric   is  the  first
                                         argument, and its name is  the
                                         second argument.


     CTRL/J (^J)          012            Illegal in CREF  as  a  symbol
                                         definition control character.

     CTRL/K (^K)          013            Identical  to  CTRL/I,  except
                                         that  it  operates  on  macros
                                         rather than on symbols.

     CTRL/L (^L)          014            Illegal in CREF.

     CTRL/M (^M)          015            Declares the  beginning  of  a
                                         symbol block.  The argument is
                                         the block name.

     CTRL/N (^N)          016            Declares the end of  a  symbol
                                         block.   The  argument  is the
                                         block name.

     CTRL/O (^O)          017            Declares a line number to  use
                                         in  place of the line's actual
                                         position  in  the  file.   The
                                         line number is specified after
                                         the CTRL/O in the same  format
                                         as other symbols.
   ______________________________________________________________________



                                    5-18
                              THE CREF PROGRAM


   The octal value of each character described in Table 5-6  is  used  by
   CREF to determine the number of characters in a symbol name.  The same
   set of characters  defines  the  symbol  as  well  as  its  number  of
   characters.   The  character's  position determines its function.  The
   character-count character immediately  precedes  the  symbol  with  no
   intervening  spaces  or  characters  (^CEND,  for example).  Table 5-6
   contains the characters and their meanings.


   Table 5-6:  Character-Count-Definition Characters

   ______________________________________________________________________

     Character               ASCII Code         Meaning
   ______________________________________________________________________

     CTRL/A (^A)             001 (octal)        The  symbol  contains   1
                                                character.

     CTRL/B (^B)             002                The  symbol  contains   2
                                                characters.

     CTRL/C (^C)             003                The  symbol  contains   3
                                                characters.
         :                    :                       :
         :                    :                       :
         :                    :                       :
         ?                   077                The  symbol  contains  63
                                                characters.
   ______________________________________________________________________

   The  following  example  illustrates  the   symbols   and   references
   recognized  by CREF that you can make in an Assembly Language Program.
   The control characters show the references that are made to particular
   symbols.

   Source File CREFD.MAC:

    TITLE CREFD CREF Example
    SUBTTL Show Internal CREF Information

    SEARCH MACSYM, MONSYM ;Pseudo-op reference

    CONST=17  ;Symbol definition

    DEFINE MACRO(X)< ;;Pseudo-op reference, macro definition (in-line)
    OPCODE X  ;OPDEF and symbol reference (when expanded)
   >

    OPDEF OPCODE[MOVEI] ;Pseudo-op reference, OPDEF definition and
       ;  opcode reference



                                    5-19
                              THE CREF PROGRAM


   START: MACRO CONST  ;Symbol and macro reference

    END START  ;Pseudo-op and symbol reference
   .CRF File CREFD.CRF:

                                    NOTE

           In this printout of a .CRF File, DELETE characters are
           designated as follows:

                               DELETE B = ^?B

   ^LCREFD CREF Example MACRO %53A(1152) 13:44 10-Sep-79 Page 1
   CREFD MAC 10-Sep-79 13:44  Show Internal CREF Information

   ^?B^C^ETITLE^?C      TITLE CREFD CREF Example
   ^?B^C^FSUBTTL^?C     SUBTTL Show Internal CREF Information
   ^?B^?C
   ^?B^C^FSEARCH^?C     SEARCH MACSYM, MONSYM ;Pseudo-op reference
   ^?B^?C
   ^?B^A^ECONST^B^?C   000017  CONST=17  ;Symbol definition
   ^?B^?C
   ^?B^C^FDEFINE^F^EMACRO^?C      DEFINE MACRO(X)< ;;Pseudo-op reference, macro definition (in-line)
   ^?B^?C      OPCODE X  ;OPDEF and symbol reference (when expanded)
   ^?B^?C     >
   ^?B^?C
   ^?B^C^EOPDEF^C^EMOVEI^F^FOPCODE^?C  201000 000000   OPDEF OPCODE[MOVEI] ;Pseudo-op reference, OPDEF definition and
   ^?B^?C         ;  opcode reference
   ^?B^?C
   ^?B^A^ESTART^B^E^EMACRO^?C 000000'    START: MACRO CONST  ^;Symbol and macro reference
   ^?B^E^FOPCODE^A^ECONST^?C 000000' 201 00 0 00 000017   OPCODE CONST  ;OPDEF and symbol reference (when expanded)
   ^?B^?C
   ^?B^C^CEND^A^ESTART^?C   000000'   END START  ;Pseudo-op and symbol reference

   NO ERRORS DETECTED

   PROGRAM BREAK IS 000001
   CPU TIME USED 00:00.904

   67P CORE USED
   ^LCREFD CREF Example MACRO %53A(1152) 13:44 10-Sep-79 Page S-1
   CREFD MAC 10-Sep-79 13:44  SYMBOL TABLE

   CONST  000017  
   OPCODE 201000 000000  
   START  000000'  
   The following is an example of a listing  you  receive  after  running
   CREF with the preceding .CRF file:

   ^LCREFD CREF Example MACRO %53A(1152) 13:58 10-Sep-79 Page 1
   CREFD MAC 10-Sep-79 13:44  Show Internal CREF Information



                                    5-20
                              THE CREF PROGRAM


        1      TITLE CREFD CREF Example
        2      SUBTTL Show Internal CREF Information
        3
        4      SEARCH MACSYM, MONSYM ;Pseudo-op reference
        5
        6   000017   CONST=17  ;Symbol definition
        7
        8      DEFINE MACRO(X)< ;;Pseudo-op reference, macro definition (in-line)
        9      OPCODE X  ;OPDEF and symbol reference (when expanded)
       10     >
       11
       12  201000 000000   OPDEF OPCODE[MOVEI] ;Pseudo-op reference, OPDEF definition and
       13         ;  opcode reference
       14
       15 000000'    START: MACRO CONST  ^;Symbol and macro reference
       16 000000' 201 00 0 00 000017   OPCODE CONST  ;OPDEF and symbol reference (when expanded)
       17
       18   000000'   END START  ;Pseudo-op and symbol reference

   NO ERRORS DETECTED

   PROGRAM BREAK IS 000001
   CPU TIME USED 00:00.873

   67P CORE USED
   ^LCREFD CREF Example MACRO %53A(1152) 13:58 10-Sep-79 Page S-1
   CREFD MAC 10-Sep-79 13:44  SYMBOL TABLE

   CONST  000017  
   OPCODE 201000 000000  
   START  000000'  


   ^LCONST      6#     16
   START     15#     18

   ^LMACRO      8#     15
   OPCODE     12#     16

   ^LDEFINE      8
   END     18
   MOVEI     12
   OPDEF     12
   SEARCH      4
   SUBTTL      2
   TITLE      1








                                    5-21
























































                                    6-1











                                 CHAPTER 6

                             THE MAKLIB PROGRAM



   6.1  INTRODUCTION

   The MAKLIB program organizes  and  manipulates  files  of  relocatable
   object  (REL) modules.  These REL modules are the output from a source
   language translator,  such  as  the  FORTRAN  compiler  or  the  MACRO
   assembler.

   At load time, the modules are linked together to build  an  executable
   program.   As  shown  in Figure 6-1, the MACRO assembler processes two
   source files, X.MAC and Y.MAC, and  produces  two  corresponding  .REL
   files,  X.REL  and  Y.REL.   The LINK program then loads the resulting
   object modules from  these  .REL  files  and  produces  an  executable
   program, Z.EXE.


   Figure 6-1:  Figure Generation of an .EXE File


                     ..........
                     :        :
        X.MAC ------>:        :------>X.REL        Loader
                     :........:            \       (LINK)
                      Compiler              \   .........
        Source          or                   \  :       : 
        Files        Assembler               /  :       :------>Z.EXE 
                     ..........             /   :.......:
                     :        :            /      
        Y.MAC ------>:        :------>Y.REL         
                     :........:


   Multiple modules can be concatenated  into  a  single  file  called  a
   library.   A  file  containing  a  single  module can also be called a
   library.  (See Figure 6-2.)





                                    6-1
                             THE MAKLIB PROGRAM


   Figure 6-2:  Generation of a Library


             ..........
             : X.REL  :
             :  ( )   :
             :........:\                        ............
                        \ ............          : LIB.REL  :
                         \:  MAKLIB  : -------->: ( ) ( )  :
                         /:..........:          :..........:
                        /
                       /
             ..........
             : Y.REL  :
             :  ( )   :
             :........:


   MAKLIB performs four functions on library files.   Each  function  has
   switches  that  cause  the  MAKLIB program to do a specific task.  The
   four functions are:

   Obtaining Information about Libraries

        These switches cause MAKLIB to give information about the  status
        and contents of the library.

   Manipulating Libraries

        These switches cause MAKLIB to create new libraries by  combining
        modules.  Other switches cause MAKLIB to add, delete, extract, or
        replace modules.

   Modifying Libraries

        These switches cause MAKLIB to create new libraries from existing
        libraries,  either  by adding an index or removing local symbols.
        By modifying libraries you can reduce the  amount  of  processing
        time required by the LINK program.

   Editing Libraries

        These switches cause MAKLIB to edit (or patch) modules within the
        library.   You  selectively change the object code in a module by
        supplying MAKLIB with the required MACRO assembly  language  code
        changes.

   For more information on the contents  of  .REL  files  and  REL  Block
   types,   refer  to  the  TOPS-20  LINK  Reference  Manual.   For  more
   information on MACRO assembly language, refer  to  the  TOPS-20  MACRO
   ASSEMBLER Reference Manual.



                                    6-2
                             THE MAKLIB PROGRAM


   6.2  RUNNING MAKLIB

   To run MAKLIB, type MAKLIB after the TOPS-20 prompt @  and  press  the
   RETURN key.  The program prompts you with an asterisk:

        @MAKLIB<RET>
        *

   After this prompt, enter a command string.  MAKLIB takes  commands  in
   the following format:

        Destination file spec=Source file spec1/Switches,Source file
        spec2/Switches... Source file specn/Switches

   where:

        Destination file spec is the output file  that  MAKLIB  produces.
        It  can  be  either  a text file or a library, depending upon the
        function you perform.

   If you do not specify a Destination filename, MAKLIB uses the name  of
   the file in Source file spec1.  If you omit the Destination file type,
   the default depends on the function you perform.

        Source file spec1 is  the  master  library.   This  file spec  is
        always required in a MAKLIB command string.

   You must specify a filename in Source file spec1.   The  default  file
   type is always .REL.

        Source file spec2 ...Source file specn are the transaction files.
        These  are additional input files required to perform some MAKLIB
        functions.  A function  usually  requires  only  one  transaction
        file.

   You include switches in the  command  string  to  instruct  MAKLIB  to
   perform  a  specific  function.   You  specify  switches in one of the
   following formats:

        /Switch
        /Switch:argument
        /Switch:(arg1,arg2...argn)

   You can perform only one action with a  switch  in  a  single  command
   string,  but MAKLIB allows up to 100 switch arguments for each command
   string.

   You can use MAKLIB switches in abbreviated form as long as they remain
   unique.   However,  arguments to switches are usually module names and
   hence cannot  be  abbreviated.   Parentheses  are  optional  when  you
   specify  only  one  argument,  but are required to enclose two or more
   switch arguments.


                                    6-3
                             THE MAKLIB PROGRAM


   Table 6-1 is an alphabetical list of the  MAKLIB  switches;  they  are
   discussed in detail in Sections 6.2.1 through 6.2.4.

   You can use an indirect file in a MAKLIB command string  to  reference
   another  file.   The  indirect  file can contain a complete or partial
   MAKLIB command string (filenames and switches).  For more  information
   on using indirect files, refer to the TOPS-20 User's Guide.

   If you always want to use specific switches when you run  MAKLIB,  you
   can  put these switches in a SWITCH.INI file.  For more information on
   creating a SWITCH.INI file, refer to the TOPS-20 User's Guide.

   MAKLIB allows you to type a string of commands on one or  more  lines.
   If  the  command string takes more than one line, type a hyphen (-) at
   the end of the first  line,  and  press  RETURN.   Then,  when  MAKLIB
   prompts  with a pound sign (#), continue to type the command string on
   the next line.  You can also use multi-line commands  in  an  indirect
   file.

   To exit from MAKLIB and return to TOPS-20 command level,  type  either
   /EXIT or CTRL/Z after the asterisk prompt.



   6.2.1  Running MAKLIB to Obtain Information About Libraries

   MAKLIB contains four switches that allow you to obtain information  on
   the status and contents of the master library (first input file).  The
   four switches are:  /LIST, /POINTS, /TRACE, and /LOAD.

        Command String Requirements -

        Files:              A master  library  and  an  output  file  are
                            required  in  the  command string for each of
                            the  four  switches.   None  of  the  command
                            strings require a transaction file.

        Default file type:  Output file type - .LST
                            Master library type - .REL

        Arguments:          (Modules affected by the switch) - None

   The output file (.LST) is a text file  that  can  be  written  to  any
   output  device  that  supports  text files, such as TTY: or LPT:.  The
   discussion of /POINTS in this section  illustrates  the  use  of  this
   option.

   /LIST - LIST Switch

        This switch lists the names of the modules that are contained  in
        the  master library.  In addition to the names, MAKLIB also lists
        the two data values from the END block (REL Block type 5) of  the


                                    6-4
                             THE MAKLIB PROGRAM


        module.   If the module is a two-segment program, the first value
        is  the  high-segment  break,  and  the  second  value   is   the
        low-segment  break.   If the module is a one-segment program, the
        first value is the program break, and the  second  value  is  the
        absolute break.  If the second value is zero, it is not printed.

        For example, if you want to create a file, REAP.LST, showing  the
        names  of all modules in the library IAGO.REL, give the following
        command string:

             @MAKLIB<RET>
             *REAP.LST=IAGO.REL/LIST<RET>
             *

        When MAKLIB finishes the task you request, it  prompts  you  with
        another asterisk.  You can now enter another command string.

        You get the following when you type the new file:

             @TYPE (FILE) REAP.LST<RET>
                     Listing of Modules
             Produced by MAKLIB Version 2B (  ) on 12-Dec-81 at 14:02:41

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

             DSK:IAGO.REL[4,244] created on 8-Dec-81 at 14:32:00

             IAGO   401725   023746
             @

        The output file REAP.LST shows that the  file  IAGO.REL  contains
        one  module  named  IAGO.   This module is a two-segment program.
        The first value listed, 401725, is the high-segment  break.   The
        second value listed, 023746, is the low-segment break.

   /POINTS - POINTS Switch

        This switch lists all entry  points  in  the  specified  library.
        Entry points are usually subroutine starting addresses.  They are
        used by the LINK program to determine if a global request can  be
        satisfied by loading a module from a library.

        For example, if you want to know all  the  entry  points  in  the
        library  NICE.REL  and have the output written to the device TTY:
        (your terminal), do the following:

             @MAKLIB<RET>
             *TTY:=NICE.REL/POINTS<RET>
                     Listing of Modules and Entry Points
             Produced by MAKLIB Version 2B (  ) on 12-Dec-81 at 16:33:45

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


                                    6-5
                             THE MAKLIB PROGRAM


             DSK:NICE.REL[4,244] created on 12-Dec-81 at 16:11:00

             NICE    BEGIN   LOOP    NICE
             *

        In this example, the  output  shows  that  the  library  NICE.REL
        contains  one module, NICE, which has three entry points:  BEGIN,
        LOOP, and NICE.   After  the  output,  MAKLIB  returns  with  the
        asterisk prompt and waits for another command string.

   /TRACE - TRACE Switch

        This switch lists all the edits you have made to a library.  This
        information  is  contained  in  the TRACE blocks in the specified
        library.  MAKLIB creates these TRACE blocks (REL Block type 1060)
        when  you  use  /FIX  to edit a module in the library.  The TRACE
        blocks contain information about the edits  you  insert  and  the
        changes  you  make to the library.  For more information on TRACE
        blocks, refer to Section 6.5.  /TRACE allows you to determine the
        exact binary patching status of the library.

        For example, if you want to see all  the  edits  in  the  library
        OLDLIB.REL,  and  have  the output written to the device TTY:, do
        the following:

             @MAKLIB<RET>

             *TTY:=OLDLIB.REL/TRACE<RET>
                     Listing of TRACE blocks
             Produced by MAKLIB Version 2B(  ) on 10-Dec-81 at 9:33:59

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

             DSK:OLDLIB.REL[4,601] created on 1-Dec-81 at 9:31:00

             Module: SORT  Edit: 341
               Status is Active
               Last affected by DRB
               Created by HAS On  2-Dec-81
               Installed by DRB On 10-Dec-81
               Program changes:
                 Inserts 4 instruction(s) at location 001046

        This example shows that the module SORT in the library OLDLIB.REL
        has  one  edit  inserted.  The status of the edit is active.  You
        can change the status of a particular edit with  the  .REMOVE  or
        .REINSERT  pseudo-ops.   The example also shows that the edit was
        last affected by DRB.  This information comes from /WHO when  you
        install  or  change  an  edit.   The  edit  was created by HAS on
        2-Jun-79.  This  information  comes  from  the  .NAME  and  .DATE
        pseudo-ops,  respectively.   The  edit  was  installed  by DRB on
        10-Jul-79.  This information comes from /WHO and  the  date  that


                                    6-6
                             THE MAKLIB PROGRAM


        the   system  supplies  when  you  install  an  edit.   For  more
        information on these pseudo-ops and /WHO, refer to Section 6.2.4.

   /LOAD - LOAD Switch

        This  switch  shows  additional  loading  instructions  that  are
        embedded  within  the  library  in either REQUEST (REL Block type
        17), REQUIRE (REL Block type 16), or ASCII text blocks.

        The  library  QUICK.REL  was  produced  from  a   MACRO   program
        containing the following statements:

             TITLE     QUICK
             .TEXT     "/VERSION:2(111)"
             .REQUEST  SYS:FORLIB
             .REQUIRE  SYS:MACREL

        To  see  the  additional  loading  instructions  embedded  within
        QUICK.REL in the blocks, do the following:

             @MAKLIB<RET>
             *TTY:=QUICK.REL/LOAD<RET>
                     Listing of Internal loading instructions
             Produced by MAKLIB Version 2B(  ) on 10-Dec-81 at 9:06:23

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

             DSK:QUICK.REL[4,601] created on 6-Dec-81 at 13:28:00

             Module: QUICK
               Text string: /VERSION:2(111)
               Requests SYS:FORLIB
               Requires SYS:MACREL



   6.2.2  Running MAKLIB to Manipulate Libraries

   For handling and creating libraries, MAKLIB includes six switches that
   allow  you  to work with individual modules within libraries.  The six
   switches are:   /MASTER,  /APPEND,  /DELETE,  /EXTRACT,  /INSERT,  and
   /REPLACE.

        Command String Requirements -

        Files:              A master library (first input  file)  and  an
                            output  file  are  required  in  the  command
                            string for  each  of  the  six  switches.   A
                            transaction   file   is  required  with  some
                            switches.

        Default file type:  .REL for all files


                                    6-7
                             THE MAKLIB PROGRAM


        Arguments:          All switches accept arguments.   /APPEND  and
                            /INSERT  are  two switches that do not always
                            require  arguments.   For  more  information,
                            refer   to   the  discussions  of  these  two
                            switches in this section.

   /MASTER - MASTER Switch

        This switch identifies modules within  the  master  library  that
        correspond  to those in the transaction file being used to effect
        the update.  /MASTER takes at least one  argument,  and  requires
        that  another  switch be given in the same command string.  It is
        the  only  switch  within  this  function  that  causes  no  real
        manipulation  of a library.  It is mentioned here because some of
        the switches used to  manipulate  libraries  require  /MASTER  in
        their respective command strings.

        You include /MASTER in the command strings for only two switches,
        /INSERT and /REPLACE.  These switches are discussed later in this
        section.

   /APPEND - APPEND Switch

        This switch adds new modules to the end of an  existing  library.
        The  output file is the master library plus the appended modules.
        MAKLIB reads these appended modules from  the  transaction  file.
        You  specify  them  as arguments to the switch.  You must specify
        modules as arguments in the same physical order as they occur  in
        the  transaction  file.   Figure  6-3 illustrates the function of
        /APPEND.  Note that, in the figure, modules  D  and  E  from  the
        transaction file are appended to the master library.


        Figure 6-3:  Function of /APPEND




















                                    6-8
                             THE MAKLIB PROGRAM


                        ............          ............
                        : Module A :          : Module D :
                        : Module B :          : Module E :
                        : Module C :          :..........:
                        :..........:          / Transaction
                          Master    \        /  File
                          Library    \      /
                                      \    /
                                       \  /
                                        \/
                                 .................
                                 :    MAKLIB     :
                                 : /APPEND:(D,E) :
                                 :...............:
                                         |
                                         |
                                   ............
                                   : Module A :
                                   : Module B :
                                   : Module C : Output
                                   : Module D : File
                                   : Module E :
                                   :..........:


                                      NOTE

                When you do not specify an argument  to  /APPEND,
                the  entire  transaction  file is appended to the
                master library.

        For example, you want to append the module IAGO  in  the  library
        IAGO.REL  to  the  library  GRAF.REL.   You  name the output file
        EXEN.REL.  The command string is:

             @MAKLIB<RET>
             *EXEN.REL=GRAF.REL,IAGO.REL/APPEND:IAGO<RET>
             *

        MAKLIB returns with the asterisk prompt for you to enter  another
        command  string.   To  check the new file, use /LIST and have the
        output written to the device TTY:.

             *TTY:=EXEN.REL/LIST<RET>
                     Listing of Modules
             Produced by MAKLIB Version 2B(  ) on 14-Dec-81 at 10:45:13

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

             DSK:EXEN.REL[4,244] created on 14-Dec-81 at 10:43:00

             CRIG    004582


                                    6-9
                             THE MAKLIB PROGRAM


             PASZ    003217
             TENP    036651
             IAGO    402420   023746
             *

        The example shows that the  new  file,  EXEN.REL,  contains  four
        modules:   the  three  modules  from  the library GRAF.REL (CRIG,
        PASZ, TENP), and the appended module IAGO.

        /APPEND also allows you  to  initially  create  a  library.   For
        example, you wish to combine the following four .REL files into a
        single library:

             GLOBAL.REL
             DTABLE.REL
             INOUT.REL
             IO.REL

        Type the following MAKLIB command  string  to  produce  the  file
        LIB.REL,  which  contains  all  modules  from  the four specified
        files:

             @MAKLIB<RET>
             *LIB=GLOBAL,DTABLE/APPEND,INOUT/APPEND,IO/APPEND<RET>
             *

        In this example, MAKLIB copies the file GLOBAL to  a  file  named
        LIB,  and  then appends all modules from the files DTABLE, INOUT,
        and IO to LIB.  This also illustrates the use of  more  than  one
        transaction file.

   /DELETE - DELETE Switch

        This switch removes one or more modules from an existing library.
        The   output  file  is  the  master  library  minus  the  deleted
        module(s).  All modules, except those specified as  arguments  to
        /DELETE,  are  read  from  the  master  library and copied to the
        output file.  No transaction file is required.

                                    NOTE

           You must specify modules  as  arguments  in  the  same
           physical order as they occur in the master library.

   Figure 6-4 illustrates the function of /DELETE.   Note  that,  in  the
   figure, module B is deleted from the master library.


   Figure 6-4:  Function of /DELETE





                                    6-10
                             THE MAKLIB PROGRAM


                     ............
                     : Module A :
                     : Module B : Master
                     : Module C : Library
                     :..........:
                                 \
                                  \
                             ......\.......
                             :   MAKLIB   :
                             :  /DELETE:B :
                             :............:
                                   /
                                  /
                                 /
                        ............
                Output  : Module A :
                File    : Module C :
                        :..........:


        Type the following command string to delete the module TENP  from
        the library EXEN.REL.  The output filename is DIPEP.REL.

             @MAKLIB<RET>
             *DIPEP.REL=EXEN.REL/DELETE:(TENP)<RET>
             *

        The program returns with the asterisk prompt  for  you  to  enter
        another  command  string.   To  check the new file, use /LIST and
        have the output written to the device TTY:.

             *TTY:=DIPEP.REL/LIST<RET>
                     Listing of Modules
             Produced by MAKLIB Version 2B(  ) on 14-Dec-81 at 14:10:41

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

             DSK:DIPEP.REL[4,244] created on 14-Dec-81 at 14:10:00

             CRIG      004582
             PASZ      003217
             IAGO      402420   023746
             *

   /EXTRACT - EXTRACT Switch

        This switch produces an output file that is a subset  of  modules
        in  the  master library.  You specify the modules as arguments to
        the switch.  No transaction file is required.





                                    6-11
                             THE MAKLIB PROGRAM


                                    NOTE

           You must specify the modules as arguments in the  same
           physical order as they occur in the master library.

        Figure 6-5 illustrates the function of /EXTRACT.  Note  that,  in
        the figure, module A is extracted from the master library.


        Figure 6-5:  Function of /EXTRACT


                                    ............
                                    : Module A : Master
                                    : Module B : Library
                                    : Module C :
                                    :..........:
                                          |
                                          |
                                   ..............
                                   :   MAKLIB   :
                                   : /EXTRACT:A :
                                   :............:
                                          |
                                          |
                                    ............
                                    : Module A : Output 
                                    :..........: File


        The following example illustrates /EXTRACT.  The library  FOO.REL
        contains four modules.  To get a listing of the module names, use
        /LIST and have the output written to the device TTY:.

             @MAKLIB<RET>
             *TTY:=FOO.REL/LIST<RET>
                     Listing of Modules
             Produced by MAKLIB Version 2B(  ) on 18-Dec-81 at 14:37:45

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

             DSK:FOO.REL[4,244] created on 18-Dec-81 at 13:54:00

             SQUARE  000023
             BOX     000014
             MAIN    000433
             DRAW    000505
             *

        You want to extract two of these modules, SQUARE  and  BOX,  from
        the  library  FOO.REL,  and  put them in a new library, 2FOO.REL.
        After using /EXTRACT, check on the new file with /LIST, and  have


                                    6-12
                             THE MAKLIB PROGRAM


        the  output  written to the device TTY:.  Type the MAKLIB command
        string after the asterisk prompt:

             *2FOO.REL=FOO.REL/EXTRACT:(SQUARE,BOX)<RET>
             *TTY:=2FOO.REL/LIST<RET>
                     Listing of Modules
             Produced by MAKLIB Version 2B(  ) on 18-Dec-81 at 14:57:17

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

             DSK:2FOO.REL[4,244] created on 18-Dec-81 at 14:56:00

             SQUARE  000023
             BOX     000014
             *

        The example shows that the new library,  2FOO.REL,  contains  the
        two modules that you extracted from the master library, FOO.REL.

   /INSERT - INSERT Switch

        This switch inserts new modules into a master  library.   /MASTER
        is  required in the command string.  The output file is formed as
        follows:  MAKLIB copies the master library to the output file  up
        to  but  not  including the module named as the first argument to
        /MASTER.  Next, MAKLIB copies  the  module  named  as  the  first
        argument to /INSERT from the transaction file to the output file.
        The process repeats until the argument list specified to  /MASTER
        and  /INSERT  is  exhausted.   At  this  point, MAKLIB copies the
        remaining modules in the  master  library  to  the  output  file.
        There  must  be  one  argument  to  /MASTER for every argument to
        /INSERT.

                                    NOTE

           You must specify the  module  names  in  the  argument
           lists  for  /MASTER  and  /INSERT in the same physical
           order as they occur in  the  master  library  and  the
           transaction  file,  respectively.   When  you  do  not
           specify an argument to /INSERT, the entire transaction
           file  is  inserted  before  the  module you specify to
           /MASTER.  You  must  always  specify  an  argument  to
           /MASTER.

        Figure 6-6 illustrates this function of /INSERT.  Note  that,  in
        the  figure,  module X in the transaction file is inserted before
        module B in the master library.







                                    6-13
                             THE MAKLIB PROGRAM


        Figure 6-6:  One Function of /INSERT


                       ............
                       : Module A :            
                       : Module B :             ............
                       : Module C :             : Module X :
                       :..........:             :...........
                          Master   \           / Transaction
                          Library   \         /  File
                                     \       /
                                      \     /
                                   ....\.../....
                                   :   MAKLIB  :
                                   : /INSERT:X :
                                   :...........:
                                         |
                                         |
                                   ............
                                   : Module A :
                                   : Module X : Output 
                                   : Module B : File
                                   : Module C :
                                   :..........:



        For example, the library FOO.REL contains four modules:   SQUARE,
        BOX,  MAIN,  and DRAW.  The library NICE.REL contains one module,
        NICE.  You want to insert the module NICE before the  module  BOX
        in  FOO.REL.   The  name  of  the output file containing the five
        modules is CLAR.REL.  The command string to insert this module is
        as follows:

             @MAKLIB<RET>
             *CLAR.REL=FOO.REL/MASTER:BOX,NICE.REL/INSERT:NICE<RET>
             *

        MAKLIB returns with the asterisk prompt.  You can  now  check  on
        the  new library, CLAR.REL, with /LIST.  The output from /LIST is
        written to the device TTY:

             *TTY:=CLAR.REL/LIST<RET>
                     Listing of Modules
             Produced by MAKLIB Version 2B(  ) on 27-Dec-81 at 15:40:28

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

             DSK:CLAR.REL[4,244] created on 27-Dec-81 at 15:40:00

             SQUARE   000023
             NICE     005557


                                    6-14
                             THE MAKLIB PROGRAM


             BOX      000014
             MAIN     000433
             DRAW     000505
             *

        You may also insert more than one module in front of a module  in
        a  master  library.  However, the master library module name must
        appear repeatedly in the argument list to /MASTER.  This produces
        a  one-to-one  correspondence  between  the  module in the master
        library and the modules you wish to insert.  In  this  case,  you
        must  list the argument names for both /MASTER and /INSERT in the
        same physical order that they appear as  modules  in  the  master
        library and transaction file, respectively.


        Figure 6-7 illustrates this function of /INSERT.  Note  that,  in
        the  figure, modules X and Y in the transaction file are inserted
        before module B in the master library.


        Figure 6-7:  One Function of /INSERT


                       ............
                       : Module A :              ............
                       : Module B :              : Module Y :
                       : Module C :              : Module X :
                       :..........:              :...........
                          Master   \            / Transaction
                          Library   \          /  File
                                     \        /
                                      \      /
                                   ....\..../.....
                                   :    MAKLIB   :
                                   : /INSERT:X,Y :
                                   :.............:
                                          |
                                          |
                                    ............
                                    : Module A :
                                    : Module X : Output 
                                    : Module Y : File
                                    : Module B : 
                                    : Module C :
                                    :..........:


        For example, the library SFJA.REL contains  two  modules:   ILJA,
        and  HLBET.   The library FOO.REL contains four modules:  SQUARE,
        BOX, MAIN, DRAW.  You want to insert both modules in SFJA.REL  in
        the library FOO.REL, before the module DRAW.  The name of the new
        library is SFOO.REL.  The command string is:


                                    6-15
                             THE MAKLIB PROGRAM


             @MAKLIB<RET>
             *SFOO.REL=FOO.REL/MASTER:(DRAW,DRAW),SFJA.REL/INSERT:(ILJA,HLBET)<RET>

             *

        After the asterisk prompt, check  on  the  contents  of  the  new
        library,  SFOO.REL, with /LIST and have the output written to the
        device TTY:.

             *TTY:=SFOO.REL/LIST<RET>
                     Listing of Modules
             Produced by MAKLIB Version 2B(  ) on 28-Dec-81 at 16:30:22

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

             DSK:SFOO.REL[4,244] created on 28-Dec-81 at 16:30:00

             SQUARE   000023
             NICE     005557
             BOX      000014
             MAIN     000433
             ILJA     001047
             HLBET    000433
             DRAW     000505
             *

   /REPLACE - REPLACE Switch

        This switch replaces modules in the  master  library  with  those
        specified  in  the  transaction file.  /MASTER is required in the
        command string so that the program can identify  the  modules  in
        the  master  library  that  are  to be replaced by those named as
        arguments to /REPLACE.  There must be a one-to-one correspondence
        between the number of arguments to /MASTER and /REPLACE.

        The output file  is  the  entire  master  library,  with  modules
        replaced  by  those  read from the transaction file (and named as
        arguments to the switch).

                                    NOTE

           You must specify the  names  in  both  argument  lists
           (/MASTER  and  /REPLACE) in the same physical order as
           they appear as  modules  in  the  master  library  and
           transaction file, respectively.

        Figure 6-8 illustrates  the  function  of  /REPLACE.   Note  that
        module  X in the transaction file replaces module B in the master
        library.





                                    6-16
                             THE MAKLIB PROGRAM


        Figure 6-8:  Function of /REPLACE


                       ............
                       : Module A :            
                       : Module B :             ............
                       : Module C :             : Module X :
                       :..........:             :...........
                          Master   \           / Transaction
                          Library   \         /  File
                                     \       /
                                      \     /
                                   ....\.../.....
                                   :   MAKLIB   :
                                   : /REPLACE:X :
                                   :............:
                                         |
                                         |
                                   ............
                                   : Module A :
                                   : Module X : Output 
                                   : Module C : File
                                   :..........:


        For example, the library FOO.REL contains four modules:   SQUARE,
        BOX,  MAIN,  and DRAW.  The library NICE.REL contains one module,
        NICE.  You want to replace the module MAIN in  FOO.REL  with  the
        module  NICE in NICE.REL.  The output file name is WELW.REL.  The
        command string is the following:

             @MAKLIB<RET>
             *WELW.REL=FOO.REL/MASTER:MAIN,NICE.REL/REPLACE:NICE<RET>
             *

        After MAKLIB completes the action you requested, it  prompts  you
        with  an asterisk.  Now check on the contents of the new library,
        WELW.REL, with /LIST and have the output written  to  the  device
        TTY:.

             *TTY:=WELW.REL/LIST<RET>
                     Listing of Modules
             Produced by MAKLIB Version 2B(  ) on 6-Dec-81 at 14:49:22

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

             DSK:WELW.REL[4,244] created on 6-Dec-81 at 14:48:00

             SQUARE  000023
             BOX     000014
             NICE    005557
             DRAW    000505


                                    6-17
                             THE MAKLIB PROGRAM


             *

        NICE replaced MAIN  in  the  master  library  FOO.REL.   The  new
        library, WELW.REL, contains the four modules:  SQUARE, BOX, NICE,
        and DRAW.



   6.2.3  Running MAKLIB to Modify Libraries

   The two switches within this function  facilitate  the  processing  of
   requests  by  the  LINK  program when it loads modules from libraries.
   The two switches are:  /INDEX and /NOLOCALS.

        Command String Requirements -

        Files:              A master library (first input  file)  and  an
                            output  file  are  required  in  the  command
                            string for both switches.  Transaction  files
                            are  not  allowed.  Both switches appear with
                            the master library in the command string.

        Default file type:  .REL for both  the  master  library  and  the
                            output file for both switch command strings.

        Arguments:          None

   /INDEX - INDEX Switch

        This switch produces an output file, which is  identical  to  the
        master  library,  except  with  INDEX  blocks (REL Block type 14)
        inserted in the file.  Normally, programs make external  requests
        to library subroutines they need, and LINK must search completely
        through the library to decide which modules to  load  to  satisfy
        the  requests.   INDEX  blocks  list  the  entry  point names and
        corresponding modules, allowing LINK to quickly  determine  which
        modules  to  load.   LINK  searches more efficiently, and loading
        time is shorter because the amount of I/O is reduced.

   /NOLOCALS - NOLOCALS Switch

        This switch produces an output file which is the  master  library
        with  all  local symbols deleted from the file SYMBOL blocks (REL
        Block type 2).  Local symbols are useful for debugging  purposes,
        and  also  when  modules  are  edited with MAKLIB.  (Refer to FIX
        files,  Section  6.2.4.)  In  a  production-mode  library,  local
        symbols are usually deleted, because they serve no purpose.  This
        reduces the amount of mass storage space  the  library  occupies.
        In  addition, loading time is faster because the amount of I/O is
        reduced.  Global symbols are not deleted because they are used in
        the linking of modules.



                                    6-18
                             THE MAKLIB PROGRAM


        In the following example you create a new library, L2,  from  L1.
        The  new  library has an index but no local symbols.  You can use
        /INDEX and /NOLOCALS together in the command string.

             @MAKLIB<RET>
             *L2=L1/NOLOCALS/INDEX<RET>
             *



   6.2.4  Running MAKLIB to Edit Libraries

   MAKLIB provides a mechanism for you to patch (or edit) the code  of  a
   relocatable  object module.  This patching facility allows you to make
   program changes directly to a library.  Although MAKLIB  provides  the
   facility  for  editing  a  program without having to change the source
   code, good programming practice requires that the same edits  also  be
   made at the source level.

   To edit a library in this way, you  must  first  create  a  text  file
   called  a  .FIX  file.  This .FIX file contains one or more edits that
   you want to insert in the library.  Each edit has a unique  identifier
   and  consists  of  a sequence of control pseudo-ops and MACRO assembly
   language code.  The control pseudo-ops tell MAKLIB where  and  how  to
   make  the  changes.   Any  new code is supplied as a sequence of MACRO
   assembly  language  statements.   Each  edit  begins  with  an   .EDIT
   pseudo-op  and  ends  with  an  .ENDE pseudo-op.  Figure 6-9 shows the
   order that pseudo-ops must appear within an edit.

   When MAKLIB processes the .FIX file, it creates a new library with any
   new edits inserted.  Although each edit is now a permanent part of the
   library, you can use MAKLIB to deactivate  an  edit.   This  operation
   effectively removes any code changes inserted by the edit.  Therefore,
   edits in the library can be either active or inactive.

   MAKLIB maintains edit history information on the library by generating
   TRACE  blocks  (REL  Block type 1060) for each edit you insert.  TRACE
   blocks are part of the module.   Therefore,  when  you  use  /REPLACE,
   /EXTRACT,  or /DELETE, the TRACE blocks move with the module.  Section
   6.2.1 describes how you can determine the edit status of  the  library
   using /TRACE.

                                    NOTE

           MAKLIB does not handle PSECTS.



   Pseudo-ops for .FIX files

        .EDIT xxxxxx - This pseudo-op is an identifying name for the edit
        you  insert  in the specified module.  The edit name (xxxxxx) can


                                    6-19
                             THE MAKLIB PROGRAM


        be up to six (6) SIXBIT characters and is  stored  in  the  TRACE
        block  for  any  module affected by the edit.  .EDIT is the first
        pseudo-op for each edit.

        .DATE dd-mmm-yy - This pseudo-op gives the date that the edit was
        made.  The day (dd) and year (yy) entries are numeric.  The month
        entry (mmm) is alphabetic.  .DATE is an optional  pseudo-op.   If
        you  supply  this  information,  it  is  stored in the edit TRACE
        block.

        .NAME xxx - This pseudo-op gives the three initials (xxx) of  the
        person  who  wrote the edit.  .NAME is an optional pseudo-op.  If
        you supply these initials, they are stored in the TRACE block for
        the edit.

        .MODULE xxxxxx - This pseudo-op gives the name  (xxxxxx)  of  the
        module  that  you  wish  to  edit.   It  is the module name as it
        appears in the library, up to six Radix-50 characters.  Once  you
        give  a name, that module is loaded.  Editing continues with this
        module unless a new .MODULE pseudo-op is given.  You do not  have
        to  edit modules in the same order that they reside in the master
        library (first input file).  However, each module  may  be  named
        only once within an edit.

        .ASSOCIATED   +edit1,-edit2,+edit3,+edit4..... - This   pseudo-op
        gives information on which other related edits must be present in
        the specified module.  The edit names here are the same as  those
        designated under the .EDIT pseudo-op.  The "+" indicates that the
        edit is required.  The "-" indicates an edit that conflicts  with
        the   current   edit;   you   cannot   have   both  edits  active
        simultaneously.  You receive notification if the specified module
        does  not  contain  the  correct combination of associated edits.
        The  default  is  "+"  if  no  sign  precedes  the   edit   name.
        Information  you  supply  with  the  .ASSOCIATED  pseudo-op  must
        precede any information supplied in the .FIX file by the .INSERT,
        .REMOVE, or .REINSERT pseudo-ops.

        .VERSION nnnxx(nnnnnn)-g - This pseudo-op allows you  to  specify
        the  version  number  of  the  edit.   The version is in standard
        TOPS-20 version format.  The nnn  designates  the  major  version
        number,  which  consists  of  three octal digits maximum.  The xx
        designates the minor  version,  which  consists  of  two  letters
        maximum.   The (nnnnnn) designates the edit number, and can be up
        to six octal digits.  The g designates the  code  for  the  group
        that  last  edited the module, and it is one octal digit maximum.
        All fields are optional.

        .ALTER location,<new value>,<original  value>  -  This  pseudo-op
        changes the contents of a specific location.  All code is written
        in angle brackets, <   >.  The original value  at  the  specified
        location  is  replaced  by  a  new  value.   The  first argument,
        location, is where you wish to place the  new  value.   Once  you


                                    6-20
                             THE MAKLIB PROGRAM


        enter  the  new  value,  it  is  evaluated  and  placed  into the
        specified location.  You can specify a third argument,  <original
        value>,  to  check whether the actual original value differs from
        the expected original value.  If it does,  MAKLIB  gives  you  an
        error message and the location is not altered.

        .INSERT  location,keyword:n,<original  value>  -  This  pseudo-op
        allows  you  to  add  code to a module.  You precede the new code
        with a .INSERT pseudo-op and terminate the sequence with a  .ENDI
        pseudo-op.   MAKLIB  assembles the code and adds it to the module
        in the output file.

        The .INSERT pseudo-op takes three arguments.  The first gives the
        location  at which you want the new code executed.  This argument
        can be a  numeric  or  symbolic  expression.   This  location  is
        assumed  to  be  relocatable, and may be in either the low or the
        high segment.  The second argument is a  keyword  that  specifies
        how  the  code  is  to  be located with respect to this location.
        This keyword is one of the following:

        BEFORE       -  Insert the new  instructions  so  that  they  are
                        executed  before the instruction at the specified
                        location.

        AFTER        -  Insert the new  instructions  so  that  they  are
                        executed  after  the instruction at the specified
                        location.

        REPLACE      -  Delete one instruction from the existing code for
                        each one included in the edit, beginning with the
                        instruction at the location of the  edit.   Then,
                        insert  the  new  instructions  so  that they are
                        executed in place of the deleted code.

        REPLACE:n    -  Delete n instructions  from  the  existing  code,
                        starting   with   the  instruction  at  the  edit
                        address.  Then, insert the  new  instructions  so
                        that  they  are  executed in place of the deleted
                        code.   This   applies   no   matter   how   many
                        instructions  you insert.  The argument may be an
                        expression,  and  is  evaluated  in  the  current
                        radix.

        You can specify a third  argument,  <original  value>,  to  check
        whether  an  actual  original  value  differs  from  the expected
        original value.  If it does, MAKLIB gives you  an  error  message
        and  the  editing  does  not take place.  This argument gives the
        line of code at the location specified  by  the  first  argument.
        The code is written in angle brackets, and is evaluated.  It must
        exactly match the code at the specified location.  If the code at
        the location is a literal, you must give only the first word.



                                    6-21
                             THE MAKLIB PROGRAM


        MAKLIB always inserts the new code at  the  end  of  the  current
        segment.    It   replaces  the  referenced  instruction  with  an
        unconditional jump to the new code.  The format of code insertion
        appears in Section 6.5, Technical Notes.

        Because MAKLIB  does  not  physically  insert  the  code  at  the
        location you specify, you need to consider a restriction when you
        use this facility.

        MAKLIB constructs a patch that  has  the  effect  of  a  skipping
        instruction,  and assumes that it follows an instruction that can
        potentially skip, at most, one instruction.  If the intent of the
        patch  does not fit these assumptions, it may not work correctly.
        Further, for  REPLACE  functions,  MAKLIB  assumes  that  program
        control  can  only  pass  to the first instruction of the deleted
        code.

        For example consider the following code segment,

                     JRST    FOO
             BAR:    JFCL
                     JFCL
             FOO:    JFCL
                     JFCL
                     JFCL

        and a MAKLIB patch to it:

             .INSERT BAR,REPLACE:4<JFCL>
                     JFCL
             .ENDI

        Note that the JRST FOO instruction at BAR-1 still causes the  old
        code to be executed in spite of the patch.

        As another example, consider the following:

             LABEL:  OPENF%        ;A JSYS MONITOR CALL
                       ERJMP ERROR
                     JFCL

        A patch using .INSERT cannot specify any combination of BEFORE or
        AFTER  with  location  LABEL or LABEL+1.  To do so would separate
        the JSYS and the ERJMP instructions, which must be consecutive to
        operate properly.

        .REMOVE edit1,edit2,edit3.... - This  pseudo-op  deactivates  the
        specified   edits   from   the  selected  module.   The  original
        instructions displaced by the jumps to the  edit  area  for  each
        .INSERT  are  returned  to that location.  No changes are made to
        the symbol table.  The  arguments  are  the  edits  you  wish  to
        remove.


                                    6-22
                             THE MAKLIB PROGRAM


        .REINSERT  edit1,edit2,edit3... - This  pseudo-op  activates  any
        edits you previously removed with the .REMOVE pseudo-op.

        .ENDI - This  pseudo-op  marks  the  ending  point  of  the  code
        following the last .INSERT pseudo-op.

        .ENDE - This pseudo-op marks the ending  point  of  the  complete
        edit.   It also instructs MAKLIB to check for undefined labels or
        other invalid entries within the edit.   Figure  6-9  illustrates
        the order that pseudo-ops appear in a .FIX file:



   Figure 6-9:  Order of Pseudo-ops in a .FIX File


                     ---
                     | EDIT                /-----
                     |                     | DATE
                     |     <-------------- <
                     |                     | NAME
                     |                     \-----
                     | 
                     | ----                /------------
                     | | MODULE            |  ASSOCIATED
                     | |                   |  REMOVE
                     | |                   |  REINSERT
                     | |                   |  VERSION
                     | |      <----------- <  ALTER
                     | |                   |   ---
                     | |                   |   | INSERT
                     | |                   |   | END I
                     | |                   |   ---
                     | |                   \------------
                     | ----
                     |
                     | ----
                     | | MODULE
                     | |
                     | ---- 
                     |      .
                     |      .
                     |      .
                     |      
                     |  END E
                     ----


   The MAKLIB program has a one-pass assembler.  Because of this, forward
   references to labels and expressions are restricted to simple addition
   and subtraction on the halfword  boundary.   References  to  undefined
   labels or symbols are valid where references to external symbols would


                                    6-23
                             THE MAKLIB PROGRAM


   be valid in MACRO (with no polish fix-ups).  Literals are  treated  as
   forward  references, because the actual location of the literal is not
   known until the .INSERT pseudo-op ends.  Defining a label inside of  a
   literal  is not valid.  Finally, the value you place in the right-hand
   side of an assignment must not be forward or external.

   It is not required that assignments be  inside  .INSERT  in  the  .FIX
   file.   It is required, however, that the .EDIT and .MODULE pseudo-ops
   precede any assignments, because  these  define  new  symbols  in  the
   symbol  table.   MAKLIB  does  not  allow  redefinitions  of  existing
   symbols, because it is impossible to backtrack references to a  symbol
   in  the  relocatable  binary file.  So, any label or symbol you create
   with /FIX must be new to the program.

   To simplify editing and to keep the  appearance  of  binary  edits  as
   close  as  possible  to the source level, the following pseudo-ops are
   implemented in the MAKLIB .FIX file assembler and operate as  they  do
   in MACRO:

             ASCII            ASCIZ           BLOCK
             BYTE             COMMENT         DEC
             EXP              IOWD            OCT
             POINT            PURGE           RADIX
             RADIX50          REMARK          SIXBIT
             SQUOZE           SUBTTL          TITLE
             XWD

                                    NOTE

           The pseudo-ops BYTE, DEC, OCT, and EXP are limited  to
           a maximum generation of one word of data.

   All MACRO operators and qualifiers are available  except  ^F.   MAKLIB
   also  supports  the following MACRO pseudo-ops for writing conditional
   code:

             IFN              IFG             IFDEF
             IFE              IFLE            IFNDEF
             IFL              IFGE

   You may follow symbols with ## (double pound sign)  to  indicate  that
   they  are  EXTERNAL  quantities.  However, if the symbol is defined as
   EXTERNAL (already in the symbol table), you do not have to use ##.  It
   is not necessary to follow undefined symbol names with # (single pound
   sign), since it is assumed that any  undefined  symbol  is  a  forward
   reference.   If  a symbol name is already assigned and followed by the
   #, you receive an error message (see Section  6.5,  MAKLIB  Messages).
   You  may  define  labels  as internal (available to other programs) if
   they are followed by ::  (double colon).   Entry  points  may  not  be
   defined.   The  full facilities available in MACRO for combinations of
   DDT suppression and internal declaration are available for both labels
   and assignments.


                                    6-24
                             THE MAKLIB PROGRAM


   Command String Requirements -

        Files:              A master library (first input  file)  and  an
                            output  file  are  required  in  the  command
                            string.   The  .FIX  file  is  the   required
                            transaction file.

        Default file type:  .REL for both the output file and the  master
                            library.   The  default  for  the transaction
                            file is .FIX.

        Arguments:          None.

   The editing command string accepts two switches.  They  are  /FIX  and
   /WHO.

   /FIX - FIX Switch

        This switch makes changes to the actual code and symbol table  of
        a module.  It appears with the transaction (.FIX) file spec.

   /WHO:xxx - WHO Switch

        This switch is optional and you use it only with /FIX.   You  can
        enter  it  in either the master library or the transaction (.FIX)
        file spec.  The argument to /WHO can be up  to  three  characters
        (xxx).  These are usually the initials of the person using MAKLIB
        at  the  time  the  edit  is  installed.   If  you  include  this
        information,  it  appears in the TRACE block of all new edits (in
        the last affected field and in the last installed field).  If any
        of  these  edits  change  the status of an existing edit (such as
        .REMOVE or .REINSERT), this information is entered  in  the  last
        affected  field  of the TRACE block of the affected edit.  If you
        use /WHO without /FIX, MAKLIB ignores it in the command string.

   In order to edit a library with a .FIX file, you can use the following
   command  string.   In  this example, you use the .FIX file FIX1.FIX to
   edit the library OLDLIB.REL, and create an updated library NEWLIB.REL.

        @MAKLIB<RET>
        *NEWLIB=OLDLIB,FIX1/FIX/WHO:SFA<RET>
        *

   The following are sample .FIX files.  This first  example  illustrates
   the  use  of  the  .INSERT and .VERSION pseudo-ops.  One module in the
   library is modified.


        .EDIT 341
        .NAME HAS
        .MODULE GLOB..
        .VERSION 4C(341)


                                    6-25
                             THE MAKLIB PROGRAM


        .INSERT START,AFTER,<RESET>
        MOVE       P,[IOWD PDLEN,PDLIST]
        .ENDI
        .INSERT    LOOP+3,BEFORE,<JRST LOOP>
                PUSHJ      P,NEXTCR
        .ENDI
        .ENDE


   The following edit illustrates the use of .ALTER pseudo-op  to  change
   the  value  of a table entry.  Location RAD50+46 is changed from a "."
   to a "$".  In addition, this edit uses the  .ASSOCIATED  pseudo-op  to
   specify that this edit also requires edit 343 to the module TABLES.


        .EDIT 344
        .NAME HAS
        .MODULE TABLES
        .ASSOCIATED 343
        .ALTER RAD50+46,<"$">,<".">
        .ENDE


   This edit uses the .REMOVE pseudo-op to deactivate  edit  345  in  the
   module  FSORT.   As  a  result  of  this  operation, any code that was
   changed by edit 345 will be restored to its previous state.


        .EDIT 346
        .NAME HAS
        .MODULE FSORT
        .REMOVE 345
        .ENDE



   6.3  MAKLIB SWITCH OPTIONS

   Table 6-1 is a reference table of all MAKLIB program switches.   These
   switches  are  listed  alphabetically.   The function that each switch
   performs appears beside it in the table.


   Table 6-1:  MAKLIB Switches

   ______________________________________________________________________

     Switch            Function
   ______________________________________________________________________

     /APPEND           Adds new modules  to  the  end  of  an  existing
                       library.


                                    6-26
                             THE MAKLIB PROGRAM


     /DELETE           Removes one or modules from an existing library.

     /EXIT             Terminates MAKLIB and  returns  you  to  TOPS-20
                       command level.

     /EXTRACT          Produces an output file  that  is  a  subset  of
                       modules in the master library.

     /FIX              Makes changes to  the  actual  code  and  symbol
                       table of a module.

     /INDEX            Produces an output file identical to the  master
                       library except with INDEX blocks inserted in the
                       file.

     /INSERT           Inserts new modules into the master library.

     /LIST             Lists  the  names  of  the  modules   that   are
                       contained in the master library.

     /LOAD             Shows additional loading instructions  that  are
                       embedded  within  the library in either REQUEST,
                       REQUIRE, or ASCII text blocks.

     /MASTER           Identifies files within the master library  that
                       correspond  to  those  in  the  transaction file
                       being used to effect the update.

     /NOLOCALS         Produces an output  file  which  is  the  master
                       library  with all local symbols deleted from the
                       file symbol blocks.

     /POINTS           Lists all entry points in the specified library.

     /REPLACE          Replaces modules  in  the  master  library  with
                       those specified in the transaction file.

     /TRACE            Lists all the edits made to a library.

     /WHO              Specifies  the  initials  of  the  person  using
                       MAKLIB when an edit is installed.
   ______________________________________________________________________



   6.4  MAKLIB MESSAGES

   The MAKLIB program issues two types of  messages:   fatal  errors  and
   warning  messages.   Fatal  errors are preceded by a question mark (?)
   and cause the current command to be  aborted.   Warning  messages  are
   preceded  by  a percent sign (%) and indicate that the command will be
   completed, but the operation  may  not  have  been  performed  as  you


                                    6-27
                             THE MAKLIB PROGRAM


   intended.

   All messages are typed on  your  terminal.   They  begin  with  a  six
   character code that identifies the error.  This is followed by a short
   description of the problem.

   MAKLIB uses the command scanner routines SCAN and WILD.  The following
   list of messages contains the most common messages that these routines
   produce.  These messages begin with SCN or WLD.

   Some of the messages contain information  that  is  dependent  on  the
   exact command string, switch, or file you wish to process.  The key to
   these message variables follows:

             [edit]         The name of a specific edit.

             [file]         A file spec.

             [label]        The name of the label which caused the error.

             [location]     The location where the  error  was  detected.
                            This   is  expressed  as  either  a  symbolic
                            address or as a line number in the .FIX file.

             [module]       The name of a specific module.

             [pseudo-op]    A specific pseudo-op.

             [statement]    A specific statement related  to  or  causing
                            the error.

             [status]       A specific numeric file status code.

             [switch]       A specific MAKLIB command switch.

             [symbol]       A  symbol.   (Refer  to  the  TOPS-20   MACRO
                            ASSEMBLER   Reference  Manual  for  an  exact
                            definition.)

             [type]         A REL Block type.

             [value]        A specific value.

   All  MAKLIB  messages  are   listed   here   alphabetically   by   the
   six-character  code.   A  suggested user response is provided for each
   fatal error and those warning messages that require correction.


   ?MKLAAC .ASSOCIATED seen after .INSERT,.REMOVE or  .REINSERT  in  edit
        [edit]

        Description:  In the indicated .EDIT, the  .ASSOCIATED  pseudo-op


                                    6-28
                             THE MAKLIB PROGRAM


        is out of order.

        Suggested User Response:  Move the .ASSOCIATED pseudo-op so  that
        it appears before any .INSERTs, .REMOVEs, or .REINSERTs.

   ?MKLAAL .ALTER address is not in current module in edit [edit]

        Description:  In your edit, you used a .ALTER pseudo-op to change
        the  contents  of  an address.  However, you gave an address that
        does not exist in the specified module.

        Suggested User Response:  Change the .ALTER pseudo-op so that  it
        specifies a legal address.

   %MKLAFI Arguments to /FIX switch are ignored

        Description:  In the command string, you gave arguments on  /FIX.
        There  are  no  defined arguments for /FIX, so MAKLIB ignores any
        that you specify.

   %MKLAMI Assignment to [symbol] with no module selected was ignored:
           [statement]

        Description:  In a .FIX file you assigned a value  to  a  symbol,
        but you did not specify a module.

        Suggested User  Response:  Change  the  .FIX  file  so  that  the
        assignment  statement  occurs  after the .MODULE pseudo-op.  This
        specifies which symbol belongs with a particular module.

   ?MKLANA Asterisk not allowed as output file spec

        Description:  In the command string you gave an output file  name
        that included a wildcard character.

        Suggested User Response:  Since wildcard characters  are  illegal
        for  the  output  file name, reissue the command with an explicit
        output file name.

   ?MKLASG FORWARD/EXTERNAL assignment to [symbol]  at  [location]  (Edit
   [edit])
           [statement]

        Description:  In the specified edit, you assigned  a  forward  or
        external reference.

        Suggested User Response:  MAKLIB  does  not  support  forward  or
        external references.  Change the assignment statement.

   ?MKLBAM BEFORE, AFTER or REPLACE missing from .INSERT in edit [edit]

        Description:  You typed an incomplete .INSERT pseudo-op in a .FIX


                                    6-29
                             THE MAKLIB PROGRAM


        file.

        Suggested User Response:  Include the  required  second  argument
        for .INSERT indicating how the code should be inserted.

   ?MKLBDA Bad .DATE argument for edit [edit]

        Description:  In a .FIX file you specified a date that was not in
        a recognizable format for the .DATE pseudo-op.

        Suggested User Response:  Specify the date in the form dd-mon-yy,
        such as 7-JUL-77.

   ?MKLBNI Binary patching tool not included in MAKLIB

        Description:  You attempted to use a .FIX file with a version  of
        MAKLIB that does not support .FIX files.

        Suggested User Response:  Rebuild MAKLIB from  the  MACRO  source
        files and set feature switch FTBPT non-zero.

   ?MKLCDM Existing code does not match original code

        Description:  The original value you specified  with  either  the
        .ALTER or .INSERT pseudo-op does not match the actual code at the
        location you were attempting to change.

        Suggested User Response:  First, determine if this is an error in
        the  original  value field of the pseudo-op.  If this is actually
        the value  you  expected  at  that  location,  this  error  could
        indicate  that  you are trying to edit a different version of the
        library file.

   %MKLCII Code generated outside of range of .INSERT was ignored:
           [statement]

        Description:  You entered a .FIX file with  a  sequence  of  code
        that was not included between .INSERT and .ENDI pseudo-ops.

        Suggested User  Response:  Change  the  .FIX  file  so  that  the
        instructions  are  within the range of an .INSERT.  They can then
        be inserted in the module.

   %MKLCNF Insertion of edit [edit1] by edit [edit2] conflicts with  edit
        [edit3]

        Description:  Edit2 contains a  .REINSERT  pseudo-op  for  edit1.
        This  conflicts  with  the  .ASSOCIATED  list  in  edit3 which is
        currently an active edit for this module.  This is only a warning
        message,  and  the  actual  .REINSERT  does  take place.  You can
        verify the current status of any edits with /TRACE.



                                    6-30
                             THE MAKLIB PROGRAM


   %MKLCNF Removal of edit [edit1] by edit [edit2]  conflicts  with  edit
        [edit3]

        Description:  Edit2 contains a .REMOVE pseudo-op for edit1.  This
        conflicts  with  the .ASSOCIATED list of edit3 which is currently
        an active edit for this module.  This is only a warning  message,
        and  the actual .REMOVE does take place.  To verify the status of
        any edits, use /TRACE.

   ?MKLCSR Command switch is required

        Description:  You typed an  incomplete  command  string.   Supply
        additional information with file switches.

        Suggested User Response:  Reissue the  command  string  including
        the   necessary   switches   on  either  the  master  library  or
        transaction files.

   ?MKLEEI .ENDE seen before .ENDI in edit

        Description:  Your .FIX file is missing an  .ENDI  pseudo-op,  or
        the .ENDI pseudo-op is out of order.

        Suggested User Response:  Make sure that each  .INSERT  pseudo-op
        is  matched  with  an  .ENDI pseudo-op to identify the code to be
        inserted.  The .ENDE pseudo-op indicates  the  end  of  an  edit.
        Therefore, it is always the last statement of an edit.

   ?MKLEFF End of file found before END block in module

        Description:  The input master file is bad.  Although part of the
        file is readable, the END block (REL Block type 5) is missing for
        the particular module.  This indicates that the file is damaged.

        Suggested User Response:  Re-create the file or restore it from a
        backup copy.

   %MKLEMA Entire MASTER file will be appended

        Description:  For the current command string, the  entire  MASTER
        file  is  being  appended  to  the  output  file  even though you
        specified an individual module.

   ?MKLEPM .EDIT pseudo-op is missing from FIX file

        Description:  The .FIX file is incorrect.

        Suggested User Response:  Change the .FIX file so that each  edit
        begins with the .EDIT pseudo-op and ends with an .ENDE pseudo-op.

   ?MKLERI Edit [edit] tried to .REMOVE or .REINSERT itself



                                    6-31
                             THE MAKLIB PROGRAM


        Description:  The .FIX file contains an edit that has  a  .REMOVE
        or .REINSERT pseudo-op referencing itself.  These pseudo-ops must
        reference edits that have previously been applied to the module.

        Suggested User  Response:  Change  the  .FIX  file  so  that  the
        .REMOVE  or  .REINSERT  pseudo-op  does not reference the current
        edit.

   ?MKLETC MACRO code expression too complex at [location] (Edit [edit])

        Description:  The expression at the  indicated  location  is  too
        complex for MAKLIB to evaluate.

        Suggested  User  Response:  Try  to  break  the  expression  into
        several simpler expressions.

   ?MKLETL ENTRY block is too large to read in for module [module]

        Description:  MAKLIB does not  have  enough  space  allocated  to
        process all the entry points for the specified module.

        Suggested User Response:  Try  to  reduce  the  number  of  entry
        points in the module.

   ?MKLFF4 Cannot apply FIX to F40 produced REL file

        Description:  You attempted to apply a .FIX file to a  .REL  file
        produced  by  the  F40  FORTRAN  compiler.  This operation is not
        supported by MAKLIB.  F40 generates .REL files that MAKLIB cannot
        edit from .FIX files.

   ?MKLFNI Qualifier ^F not implemented

        Description:  MAKLIB  does  not  support  ^F   for   entering   a
        fixed-point decimal number.

        Suggested User Response:  Enter the value in an alternate form.

   ?MKLFSI File status error on input [status] for file [file]

        Description:  An error occurred  while  MAKLIB  was  reading  the
        specified  file.   The  status value that appears is described in
        this manual in Table 5-3.

        Suggested User  Response:  This  could  indicate  a  more  global
        problem  with  the  system.  Refer to Table 5-3 in this manual to
        determine the specific problem with the named file.

   ?MKLFSO File status error on output [status] for file [file]

        Description:  An error occurred  while  MAKLIB  was  writing  the
        specified  file.   The  status value that appears is described in


                                    6-32
                             THE MAKLIB PROGRAM


        this manual in Table 5-3.

        Suggested User  Response:  This  could  indicate  a  more  global
        problem  with  the  system.  Refer to Table 5-3 in this manual to
        determine the specific problem with the named file.

   ?MKLIAA Illegal address in .ALTER in edit [edit]

        Description:  In the specified edit, you used a .ALTER  pseudo-op
        to  change  the  contents  of  an  address.  However, you gave an
        illegal value for an address.

        Suggested User Response:  Change the .ALTER pseudo-op so that  is
        specifies a legal address.

   ?MKLIAI Illegal address in .INSERT in edit [edit]

        Description:  You specified an illegal address  in  the  location
        field for a .INSERT pseudo-op.

        Suggested User Response:  See if the address you specified is the
        address  of a literal, external, or undefined address.  These are
        not allowed.

   ?MKLIAL .INSERT address is not in current module in edit [edit]

        Description:  You specified an address in the location field  for
        a .INSERT pseudo-op that is not in the specified module.

        Suggested User Response:  First  determine  if  the  address  you
        specified  is  the one you intended.  Then check the .FIX file to
        verify that you placed the .INSERT sequences  after  the  correct
        .MODULE pseudo-ops.

   ?MKLIBT Illegal block type ([type]) was seen in file [file]

        Description:  MAKLIB  encountered  an  illegal  REL  Block  while
        reading the indicated file.

        Suggested  User  Response:  The  .REL  file  being  read  may  be
        damaged.  Re-create the .REL file and try again.

   ?MKLIED Internal error detected at [location] in MAKLIB

        Description:  This  indicates  that  MAKLIB  cannot  perform  the
        operation you were attempting.

        Suggested User Response:  Contact  your  Software  Specialist  or
        send a Software Performance Report (SPR) to DIGITAL.

   ?MKLIIA .INSERT pseudo-op illegal inside range of .INSERT [edit]



                                    6-33
                             THE MAKLIB PROGRAM


        Description:  In  the  specified   edit,   you   nested   .INSERT
        psuedo-ops.

        Suggested User Response:  These pseudo-ops cannot be nested.  Use
        the  .ENDI pseudo-op to end the first .INSERT sequence before you
        begin another.

   ?MKLIII Illegal pseudo-op in range of .INSERT: [value]  at  [location]
        (edit[edit])

        Description:  In your .FIX file you used a MACRO pseudo-op  which
        is illegal in a .INSERT sequence.

        Suggested User Response:  Verify that this is the  correct  MACRO
        pseudo-op for the operation you wish to perform.

   ?MKLILS Illegal use of long string or BLOCK  in .ALTER  at  [location]
        (edit[edit])

        Description:  You tried to use a multi-word value with the .ALTER
        pseudo-op.

        Suggested User Response:  The .ALTER pseudo-op  is  for  changing
        single  word  values only.  This applies to the original value as
        well as the new value.  Use a separate .ALTER pseudo-op for  each
        word to be altered.

   ?MKLIPM .ENDI seen without .INSERT in edit [edit]

        Description:  The .FIX file is incorrect.

        Suggested User Response:  Change the .FIX file so that  each  set
        of  instructions  you  wish  to  insert  begins  with  an .INSERT
        pseudo-op and ends with a .ENDI pseudo-op.

   ?MKLIRF Illegal relocation in FORWARD  reference  to [symbol] in  edit
        [edit]

        Description:  MAKLIB could  not  process  the  reference  to  the
        specified relocatable symbol.

   ?MKLIRM /INSERT requires at least one /MASTER specification

        Description:  The command string is incomplete.

        Suggested  User  Response:  When  you  specify   /INSERT   on   a
        transaction  file, you must include /MASTER with the master file.
        You must supply a specification on /MASTER for every  module  you
        wish to insert.

   ?MKLISM /INSERT,/REPLACE and /FIX are illegal switches on MASTER



                                    6-34
                             THE MAKLIB PROGRAM


        Description:  The command string is incorrect.

        Suggested User  Response:  Reissue  the  command  string  putting
        /INSERT, /REPLACE, or /FIX on the transaction file.  When you use
        /INSERT or /REPLACE, you must include /MASTER on the master file.

   ?MKLIST interim symbol table overflowed,  Code  too  complex  in  edit
        [edit]

        Description:  Your specified edit contains code that has too many
        symbols for MAKLIB to process.

        Suggested User Response:  Try  to  break  the  single  edit  into
        several edits, each having a fewer number of symbols.

   ?MKLITS Insufficient TRACE block storage in edit [edit]

        Description:  The specified edit exhausted all allocated  storage
        for TRACE block information.

        Suggested User Response:  Try to  break  the  edit  into  several
        edits, thus reducing the amount of storage MAKLIB needs for TRACE
        blocks at any one time.  For each edit, MAKLIB  creates  a  TRACE
        block for each module that is changed.

   ?MKLIUN Illegal to have null address in .INSERT in edit [edit]

        Description:  In the specified edit,  the  location  field  of  a
        .INSERT pseudo-op is null.

        Suggested User Response:  The location field cannot be null.   It
        specifies the location where you want to insert the patch code.

   %MKLLII Label outside of .INSERT was ignored: [label]

        Description:  In a .FIX file you specified a  label  outside  the
        range of a .INSERT.

        Suggested User Response:  Change the .FIX file so that the  label
        occurs  within the range of a .INSERT-.ENDI pair.  This specifies
        where you insert the new label in the program.

   ?MKLLTL MACRO code line is too long at [location] (Edit[edit])

        Description:  In the specified edit, a line of code in  the  .FIX
        file is too long for MAKLIB to process.

        Suggested User Response:  Try to reduce the length of the line by
        breaking it into several shorter lines.

   ?MKLMCA Pseudo-operator argument error at [location] (Edit[edit])



                                    6-35
                             THE MAKLIB PROGRAM


        Description:  You gave an illegal pseudo-op argument.  The values
        you can use depend on the particular pseudo-op.

        Suggested  User  Response:  Supply  a  legal   value   for   that
        pseudo-op.

   ?MKLMCB MASTER device must be capable of binary IO

        Description:  The input master file in your command string is not
        on  a  device  that  is  capable  of binary input/output.  MAKLIB
        performs binary input/output on the master file.

        Suggested User Response:  Keep the  files  you  plan  to  use  as
        MAKLIB master files on devices capable of binary input/output.

   ?MKLMCE Command error

        Description:  MAKLIB was not able to recognize  a  valid  command
        from  the  command string that you typed.  This error could occur
        if you improperly formatted the command string or if you  used  a
        non-unique abbreviation to specify a switch.

        Suggested User Response:  Retype the command string in the
        correct format: Destination File Spec=Source File
        Spec1/Switches,Source File Spec2/Switches,...Source File
        Specn/Switches

   ?MKLMCF Illegal forward or  external  reference  at  [location]  (Edit
        [edit])

        Description:  At the specified location you made a  reference  to
        an  undefined  symbol  in  this  module.   It  could be a forward
        reference to a new symbol or it could be an  external  reference.
        MAKLIB  cannot  process  forward references to new symbols.  This
        error could also occur if you attempted to reference an  existing
        symbol and supplied the wrong symbol name.

        Suggested  User  Response:  Change  your  forward   or   external
        references to legal ones.

   ?MKLMCM Attempt to  redefine  value  of  symbol [symbol] at [location]
        (Edit [edit])

        Description:  You tried to redefine  the  value  of  an  existing
        symbol.  MAKLIB does not support this.

        Suggested User Response:  You cannot use  MAKLIB  to  change  the
        value of an existing symbol.  If this is not what you intended to
        do, you may be using a symbol  that  was  already  defined.   Try
        another symbol.

   ?MKLMCN MACRO code numeric error at [location] (Edit [edit])


                                    6-36
                             THE MAKLIB PROGRAM


        Description:  You supplied a numeric argument  at  the  specified
        location that is illegal in that context.

        Suggested User Response:  Supply a legal numeric value.

   ?MKLMCQ MACRO code is questionable at [location] (Edit [edit])

        Description:  MAKLIB cannot process the  code  at  the  specified
        location.

        Suggested User Response:  Check the code for legal MACRO syntax.

   ?MKLMCR MACRO code relocation error at [location] (Edit [edit])

        Description:  The value at  the  specified  location  contains  a
        half-word  that  is  neither  absolute  nor  simply  relocatable.
        Expressions that would require polish, such as A + A where  A  is
        relocatable, cannot be handled in MAKLIB.

        Suggested User Response:  Give  absolute  or  simple  relocatable
        values only.

   ?MKLMCU Undefined symbol:  [symbol] at [location] (Edit [edit])

        Description:  The symbol shown is not defined.

        Suggested User Response:  Define the symbol.  If you  are  trying
        to  use a symbol that you think is already defined, check for the
        correct symbol name.

   ?MKLMCW BYTE,EXP,DEC,or OCT more  than  one  word  at [location] (Edit
        [edit])

        Description:  You used an expression that generates a  multi-word
        value.   In  this  context,  MAKLIB  supports  only a single word
        value.

        Suggested  User  Response:  Try  to  break  the  expression  into
        simpler expressions, each generating a single word value.

   ?MKLMEP Missing .ENDE for edit [edit]

        Description:  The specified edit in your .FIX file is incorrect.

        Suggested User Response:  Change the .FIX file so that each  edit
        begins with the .EDIT pseudo-op and ends with an .ENDE pseudo-op.

   ?MKLMFR Master file rejected by condition

        Description:  The master file did  not  meet  the  condition  you
        specified; hence processing cannot continue.



                                    6-37
                             THE MAKLIB PROGRAM


   ?MKLMHE Module already has an edit [edit]

        Description:  You attempted to apply an edit  to  a  module  that
        already has an edit with a similar identifier.

        Suggested User Response:  Each edit  to  a  module  must  have  a
        unique identifier.  You may have already applied this edit to the
        module.

   ?MKLMKM [Pseudo-op] pseudo-op in edit [edit] without preceding .MODULE

        Description:  In the specified edit, you gave a pseudo-op out  of
        order.   It  applies  to  a specific module that you must specify
        with a preceding .MODULE pseudo-op.

        Suggested User Response:  Make certain that a  .MODULE  pseudo-op
        precedes those pseudo-ops that refer to a specific module.

   ?MKLMNF Module [module] was not found in file [file]

        Description:  MAKLIB cannot find the  specified  module  in  this
        file.  If you are trying to apply a .FIX to a master library, you
        may have specified  a  non-existent  module  name  on  a  /MODULE
        pseudo-op.   You  can also receive this error when you perform an
        operation that  does  not  involve  .FIX  files.   You  may  have
        specified  several  module  names and supplied them out of order.
        The module in question may be in  the  file.   But  since  MAKLIB
        processes  files  in  a  sequential  manner, it will not find all
        modules.

        Suggested User Response:  Use  /LIST  to  see  if  the  specified
        module is really in the library.  If not, you cannot perform this
        function.

   %MKLMNI /MASTER module names are ignored when patching

        Description:  For editing, the  correct  way  to  specify  module
        names is with the .MODULE pseudo-op in the .FIX file.  /MASTER is
        not required for this type of command.  MAKLIB ignores it.

   ?MKLMTF /MASTER switch cannot be used on transaction file

        Description:  The command string is incorrect.

        Suggested User Response:  Retype  the  command  string  with  the
        switch  in the correct place.  Include only /MASTER on the master
        file.

   ?MKLNEA Not enough arguments specified

        Description:  The  command  string  is  incomplete.   This  error
        usually means that you omitted a required file spec.


                                    6-38
                             THE MAKLIB PROGRAM


        Suggested User Response:  Retype the command string in the
        correct format: Destination File Spec=Source File
        Spec1/Switches,Source File Spec2/Switches...Source File
        Specn/Switches

   ?MKLNEC Not enough core is available

        Description:  MAKLIB cannot obtain enough core  to  process  this
        command.

        Suggested User  Response:  Break  the  .REL  files  into  smaller
        numbers of modules, or break large modules into smaller modules.

   ?MKLNEI Null argument to .EDIT is illegal

        Description:  You did not specify an edit identifier on the .EDIT
        pseudo-op.

        Suggested  User  Response:  Each  .EDIT  pseudo-op  requires   an
        argument (up to 6 characters) that identifies the edit.

   %MKLNIO Output file [file] will not be indexed

        Description:  The output file will not include an index.  To  add
        an  index  to  the  file,  issue  a  separate MAKLIB command with
        /INDEX.

   ?MKLNMS Null specification to .MODULE [edit]

        Description:  In your edit,  you  included  a  .MODULE  pseudo-op
        without the module name.

        Suggested User Response:  Correct the .FIX file  by  supplying  a
        module name on each .MODULE pseudo-op.

   ?MKLNPC No program code was found for module in edit [edit]

        Description:  You have specified a  non-existent  module  in  the
        master file.

   ?MKLNPS No program names were specified for file [file]

        Description:  You tried to manipulate some of the modules in  the
        specified file, but you did not supply any module names.

        Suggested User Response:  In order to /EXTRACT or /DELETE modules
        from a file, supply the module name on the file switch.

   ?MKLNRP Not a recognized position switch: [value]

        Description:  You  gave  an  illegal  position  indicator  on  an
        .INSERT pseudo-op.


                                    6-39
                             THE MAKLIB PROGRAM


        Suggested User Response:  Use one of  the  three  legal  position
        indicators:  BEFORE, AFTER, or REPLACE.

   ?MKLNTM Not enough TRANSACTION modules were specified

        Description:  You did not supply enough replacement module  names
        to perform the /REPLACE operation.

        Suggested  User  Response:  When  you  give  the  MAKLIB  command
        string,  make  certain  that there is a corresponding replacement
        module for each module  you  intend  to  replace  in  the  master
        library.

   ?MKLODD Output device must be DISK or DECTAPE

        Description:  In your MAKLIB command, you  specified  an  illegal
        output library device.

        Suggested User Response:  Retype the command string and use  disk
        for the output device of the library file.

   ?MKLPEF Premature end-of-file during edit [edit] in file [file]

        Description:  While  processing  the   indicated   edit,   MAKLIB
        encountered  an  unexpected  end  of file in the .FIX file.  This
        error usually occurs when you omit the .ENDE pseudo-op.

        Suggested User Response:  Check the .FIX  file  for  errors,  and
        look especially for .ENDI and .ENDE pseudo-ops.

   %MKLPEP Precluded edit [edit] is present in module

        Description:  The module you are editing contains an active  edit
        that  your current edit precludes with the .ASSOCIATED pseudo-op.
        MAKLIB still applies your edit.

   %MKLPES Purging EXTERNAL symbol [symbol] may give bad REL file

        Description:  One of the symbols that this edit PURGEd  from  the
        symbol  table  was an EXTERNAL symbol.  With this symbol removed,
        it may not be possible to LINK the file correctly.

   ?MKLRBF REQUEST or REQUIRE block is badly formatted

        Description:  In  the  master  library  being  processed,  MAKLIB
        encountered  a REQUEST block (REL Block type 17) or REQUIRE block
        (REL Block type 16) that was not in the expected format.

        Suggested User Response:  The library file may be  damaged.   Try
        to rebuild it.

   %MKLREM Required edit [edit] is missing from module


                                    6-40
                             THE MAKLIB PROGRAM


        Description:  The module you are editing  is  missing  an  active
        edit  that  your  current  edit  requires  with  the  .ASSOCIATED
        pseudo-op.  MAKLIB still applies your current edit.

   %MKLRER Required edit [edit] is inactive in module

        Description:  The module you are  editing  contains  an  inactive
        edit  that  your  current  edit  requires  with  the  .ASSOCIATED
        pseudo-op.  MAKLIB still applies your current edit.

   %MKLRIA Edit [edit] tried to .REINSERT already active edit

        Description:  Your current edit contains  a  .REINSERT  pseudo-op
        that attempts to activate an edit that is already active.

   %MKLRIE Edit [edit] tried to .REMOVE already inactive edit

        Description:  Your current edit contains a .REMOVE pseudo-op that
        attempts to deactivate an edit that was previously deactivated.

   %MKLRIN Edit [edit] tried to .REINSERT non-existent edit

        Description:  Your current edit contains  a  .REINSERT  pseudo-op
        that attempts to activate a non-existent edit.

   %MKLRNE Edit [edit] tried to .REMOVE non-existent edit

        Description:  Your current edit contains a .REMOVE pseudo-op that
        attempts to deactivate a non-existent edit.

   ?MKLRTL .INSERT's REPLACE argument of [value]  too  large  for  module
        [module]

        Description:  On a .INSERT pseudo-op you specified  a  number  of
        instructions  to  be replaced.  This number exceeds the number of
        instructions  in  the  module  beyond  the  starting  replacement
        address.

        Suggested User Response:  Correct the  argument  to  the  REPLACE
        keyword on the .INSERT pseudo-op.

   ?MKLSCE Storage for patch code was exhausted in edit [edit]

        Description:  MAKLIB  allocates  a  fixed  amount  of  space  for
        processing  the  new  code  inserted from a .FIX file.  Your .FIX
        file contains more code than MAKLIB can process in the  allocated
        space.

        Suggested User  Response:  Try  to  break  your  .FIX  file  into
        several .FIX files with fewer lines of new code.

   ?MKLSIO Switches are illegal on output


                                    6-41
                             THE MAKLIB PROGRAM


        Description:  The command string is incorrect.  Switches are  not
        recognized on the output file.

        Suggested User Response:  Retype the command string including any
        necessary switches with the appropriate input files.

   %MKLSNF Symbols not found for module

        Description:  There are no symbols in the  master  file  for  the
        module that you wish to edit.

   ?MKLSSE Storage for patch symbols was exhausted during edit [edit]

        Description:  MAKLIB allocates a  fixed  amount  of  storage  for
        processing  the  new  symbols  from  .FIX  files.  Your .FIX file
        contains more symbols than MAKLIB can process  in  the  allocated
        space.

        Suggested User  Response:  Try  to  break  your  .FIX  file  into
        several .FIX files with fewer symbols.

   %MKLTBF TRACE block is badly formatted in module

        Description:  One of the TRACE blocks (REL Block type  1060)  for
        this  module is not in the expected format.  The .REL file may be
        damaged.  Since the loader ignores trace blocks  when  reading  a
        file, you may still be able to load from this .REL file.

   %MKLTFI Transaction file ignored

        Description:  You included a  transaction  file  in  the  command
        string to create an indexed library.

        Suggested User Response:  You must create the indexed library  as
        a  single  operation.   If  there are several operations you must
        perform on the library, the command to index the  library  should
        be the last command that you issue.

   ?MKLTFR All transaction files rejected by condition.

        Description:  Processing cannot continue because the  transaction
        files did not meet the condition you specified (as size, creation
        date, etc.).

   ?MKLTMN Too many module names . . . stopped at [module]

        Description:  The command string is too long.

        Suggested User Response:  Retype the command  string  as  several
        shorter  commands.  It is unlikely that this message will appear,
        since MAKLIB now allows up  to  100  switch  arguments  for  each
        command string.


                                    6-42
                             THE MAKLIB PROGRAM


   ?MKLTMS Too many switches

        Description:  You included too many switches on a file spec.  You
        specified some of the switches in an illegal combination.

        Suggested User Response:  Retype the command string in a  correct
        format.

   ?MKLUDF Module [module] in edit [edit] contains undefined symbol(s)

        Description:  Your current edit contains undefined symbols in the
        indicated module.

        Suggested User  Response:  Make  certain  that  all  new  symbols
        introduced in your .FIX file have values associated with them.

   ?MKLWIO Wild cards illegal for output file specification

        Description:  You gave an output file name in the command  string
        that included wildcard characters (either * or ?).

        Suggested User Response:  Since wildcard characters  are  illegal
        for  the  output  file  name,  retype  the command string with an
        explicit output file name.

   ?SCNSVR Switch value required on [switch]

        Description:  The specified switch requires a value.

        Suggested User Response:  Retype the command string and supply  a
        value  for  the  switch.   The  format  for  providing a value is
        /switch:value or /switch:(value1,value2).

   ?WLDLKE Protection failure file [file]

        Description:  The specified file is protected.  You do  not  have
        the privileges to access it.

        Suggested User Response:  If this is the output  file,  you  need
        privileges  to  create a file in the directory you specified.  If
        it is an input file, you need privileges to read that  file  from
        that particular directory.

   ?WLDLKE Non-existent file [file]

        Description:  The specified file does not exist.

        Suggested User Response:  This error usually occurs when the name
        of  an  input  file is incorrect.  Retype the command string with
        the correct input file name.




                                    6-43
                             THE MAKLIB PROGRAM


   6.5  TECHNICAL NOTES

   The  following  is  supplementary  information  related   to   editing
   libraries  with  MAKLIB.   Section  6.5.1  describes TRACE blocks (REL
   Block  type  1060).   Section  6.5.2  contains  the  format  for  code
   insertion in .FIX files.



   6.5.1  Format of TRACE Block Data (REL Block Type 1060)

   MAKLIB uses the TRACE block to include, in the .REL file,  information
   for  verifying and changing the patch status of a program.  The format
   of the TRACE block follows.

   The first part of the TRACE block  is  the  static  area.   This  area
   appears  in  each  module affected by the particular edit.  The static
   areas give information common to all modules affected by an  edit  and
   the variable gives the changing data on the particular edit as it goes
   from module to module.


   TB$HED                      REL Block Type       Length of Block

   TB$EDT                       SIXBIT Edit Name   (Up to 6 chars.)

   TB$STA                        -1 If Active      Who  Last Affected

   TB$MAK       Who Created         Date (15 BIT)

   TB$INS                        Who Installed       Date (15 BIT)

   TB$FUT            Reserved for Future Use

   TB$LEN     # of Assoc. Edits   # of PCO Groups


   The static area, which repeats  in  each  module,  is  followed  by  a
   variable  area.   The  variable area consists of two parts.  The first
   gives data on the associated edit status  for  this  module,  and  the
   second  gives the actual program change orders (PCO's).  The length of
   each of these areas appears in the static area of the TRACE block.

   For each associated edit, the following group appears:


   TB$AEN        SIXBIT Edit  Name of Assoc. Edit

   TB$AES     X     Reserved for Future Use       0B0 If can't be present
                                                  1B0 If must be present

   After the associated edit groups appear (if there are  any),  the  PCO


                                    6-44
                             THE MAKLIB PROGRAM


   groups  for  that  module  appear.  There are currently three types of
   program change groups:  INSERT, REMOVE, and REINSERT.  They can appear
   in any order and the total number is variable.


                          INSERT PCO:

   TB$PCO     PCO Type Code (1)            Length of Group

   TB$DAT      Instrs. INSERTed            Addr. of INSERT

   TB$PAT     New Addr. of Original Code   Addr. of Patch Code


                          REMOVE PCO:

   TB$PCO     PCO Type Code (2)   Length of Group

   TB$REN               SIXBIT Edit Name


                          RE-INSERT PCO:

   TB$PCO     PCO Type Code (3)   Length of Group

   TB$RIN               SIXBIT Edit Name


                          ALTER PCO:

   TB$PCO     PCO Type Code (4)            Length of Group

   TB$DAT          Unused                  Addr. of ALTER

   TB$PAT      New Addr. of Original Code      Unused



   6.5.2  Format of Code Insertion

   The four formats of code insertion in a  .FIX  file  are  shown  here.
   Notice  that,  in  all  cases,  the  patch ends with exactly two JUMPA
   instructions.  Thus, the last instruction of the  patch  can  at  most
   skip  a  single  instruction  and still return control to the original
   code.

   To INSERT any instruction or series of instructions  (code)  BEFORE  a
   location, use this format:

        .INSERT location, BEFORE, <original instruction>

   LOCATION:       JUMPA   %PATCH


                                    6-45
                             THE MAKLIB PROGRAM


   %PATCH:                First Patch Instruction

                         Second Patch Instruction

                                    .
                                    .
                                    .

                           Last Patch Instruction

                        Original Patch Instruction

                            JUMPA 1, LOCATION+1

                            JUMPA 2, LOCATION +2

                              Any "Literals"


   The actual label created at the  location of the patched-in code is of
   the form:

           "%"<edit-name><edit-part>

   where  the edit-part is from  "A" to "Z", incremented for each .INSERT
   in the edit.


   To INSERT any instruction or series of  instructions  (code)  AFTER  a
   location, use this format:

        .INSERT location, AFTER, <original instruction>

   LOCATION:       JUMPA   %PATCH

   %PATCH:                Original Instruction

                        First Patch Instruction

                       Second Patch Instruction

                                  .
                                  .
                                  .

                        Last Patch Instruction

                         JUMPA 1, LOCATION+1

                         JUMPA 2, LOCATION+2

                           Any "Literals"


                                    6-46
                             THE MAKLIB PROGRAM


   To REPLACE a single instruction, use the format:

        .INSERT location, REPLACE, <original instruction>

   LOCATION:       JUMPA   %PATCH

                          Original Instruction

   %PATCH:              First Patch Instruction

                       Second Patch Instruction

                                  .
                                  .
                                  .

                     nTH (Last) Patch Instruction

                         JUMPA 1, LOCATION+n

                        JUMPA 2, LOCATION+n+1

                           Any "Literals"

   If you  do not  insert  instructions (n=0),  then  the  return  is to 
   LOCATION+1 and LOCATION+2.

   To REPLACE more than one instruction at a location, use the format:

        .INSERT location REPLACE:m <original instruction>

   LOCATION:       JUMPA   %PATCH

                          Original Instruction

   %PATCH:               First Patch Instruction

                        Second Patch Instruction

                                   .
                                   .
                                   .

                        Last Instruction of Patch

                          JUMPA 1, LOCATION+m

                         JUMPA 2, LOCATION+m+1

                             Any "Literals"

   If you do not specify m, or it is zero, the effect is the same as  the


                                    6-47
                             THE MAKLIB PROGRAM


   REPLACE  keyword  without  an  argument.   In other words, one word is
   skipped over on return for every one inserted.




















































                                    6-48











                                 CHAPTER 7

                             THE DUMPER PROGRAM



   7.1  INTRODUCTION

   DUMPER is a TOPS-20 utility program used to  save  files  on  magnetic
   tape,  and  later  to restore any or all of these files to a specified
   directory on disk.  DUMPER is  available  to  both  nonprivileged  and
   privileged  users.   (Throughout  this chapter, the term "operator" is
   occasionally used instead of  privileged  user.)  As  a  nonprivileged
   user,  you can use DUMPER to save your own files or any files to which
   you have access, by transferring them  from  the  disk  to  a  9-track
   magnetic  tape  (DUMPER  does  not function on a 7-track magnetic tape
   drive), and later restoring them to disk.  As a privileged  user,  you
   can use DUMPER to:

         o  save other users' files and directory information on tape

         o  back up the system files (copy all files  onto  tape  for  an
            indefinite period of time)

         o  archive users' files (copy files marked for storage onto tape
            and delete them from disk)

         o  migrate users' files (copy files onto tape  and  delete  them
            from the disk) to create added disk space

         o  restore other users' files

         o  retrieve previously archived or migrated files.

   If your installation is  using  a  Version  6-based  TOPS-20  monitor,
   DUMPER  supports  encrypted  passwords  and project-programmer numbers
   (PPN).  Earlier versions  of  DUMPER,  however,  do  not  support  the
   password  encryption and PPN features.  Therefore, use extreme caution
   when changing versions of DUMPER and the TOPS-20 monitor.  See Section
   7.6 for information on these features.

   The length of  time  files  remain  on  tape  is  determined  by  each
   installation.   In  general,  however,  archived files are kept longer


                                    7-1
                             THE DUMPER PROGRAM


   than backup  files.   Archiving  is  voluntary  on  the  part  of  the
   nonprivileged user; migrating is not.

   Sections 7.2 through 7.4 describe the functions of DUMPER, the use  of
   tapes, and the procedure to run DUMPER.  Sections 7.5 and 7.6 describe
   the commands available to both the nonprivileged and privileged  user.
   Examples  are provided to illustrate the use of each command.  Section
   7.7 contains an  alphabetical  list  of  all  commands.   Section  7.8
   contains   an   alphabetical  list  of  all  error  messages.   Before
   continuing, you should know the following terms:

        JFN                      Indicates a job file  number,  an  octal
                                 number   that  represents  a  particular
                                 file.

        saveset                  Indicates  a  group  of  files  on  tape
                                 stored as the result of one SAVE command
                                 to DUMPER.

        saveset name             Indicates  a  string  of   up   to   200
                                 alphanumeric characters used as the name
                                 for a saveset.  The  specified  name  is
                                 written  in  the  saveset  header on the
                                 tape.

        tape set                 Indicates a set of one or  more  volumes
                                 (reels)  of tapes grouped under a single
                                 name.  Each tape is distinguished  by  a
                                 unique   identification  of  up  to  six
                                 alphanumeric characters.

                                    NOTE

           As mentioned at the beginning of this  manual,  it  is
           assumed  that  you  are  familiar  with TOPS-20 log-in
           procedures and  the  basic  commands.   To  understand
           DUMPER,  you  should be particularly familiar with the
           following  commands:   MOUNT  TAPE,   DISMOUNT   TAPE,
           DEFINE,   ASSIGN,  and  INFORMATION.   (Refer  to  the
           TOPS-20 Commands Reference Manual.)




   7.2  FEATURES

   The following is a list of DUMPER's most useful features.

         o  With  DUMPER,  you  can  specify  particular  files   to   be
            transferred  between  disk  and  tape.   For example, you can
            specify files using the standard TOPS-20  file  specification
            format  of  dev:<dir>name.typ.gen and/or you can select files


                                    7-2
                             THE DUMPER PROGRAM


            based on the dates and times that  the  files  were  created,
            modified,  or accessed.  Other conditions can also be set; if
            the file meets all conditions, it is transferred.  (Refer  to
            Section 7.5.1.)

         o  You can save a set of files that exceeds one reel of magnetic
            tape.   If all files specified cannot fit on one tape, DUMPER
            continues  the  operation  on  subsequent  tapes  (except  in
            INTERCHANGE mode, which allows only one tape).

         o  As a privileged user,  you  can  transfer  files  marked  for
            archival  by another user.  This ensures that those files are
            saved for a period of time (determined by each  installation)
            for future use or reference.

         o  As a privileged user, you can migrate files from disk to tape
            that  have  not  been referenced within a specified period of
            time (as defined by each installation).

         o  As a means of verification, you can request that file  names,
            directory names, and saveset names be printed during save and
            restore operations.

         o  DUMPER can read and write tapes written under older  versions
            of  DUMPER.   Section  7.3  describes  the  use of tapes with
            previous versions of TOPS-20 DUMPER.



   7.3  USING TAPES WITH AND WITHOUT TAPE DRIVE ALLOCATION

   Before running DUMPER, you must  have  a  tape  mounted.   Tape  drive
   allocation  allows  you  to  request  a  tape  to  be mounted; TOPS-20
   fulfills that request with any free drive.  The absence of tape  drive
   allocation  requires  that  you assign a specific tape drive yourself.
   If you are using unlabeled tapes, tape drive allocation has no  effect
   on  the  content  of  the  tapes that DUMPER writes.  If you are using
   labeled  tapes,  tape  drive  allocation  is  required.    The   label
   information  on  the  tape  then  helps  to  identify the tape without
   operator intervention.  Tape drive allocation also allows you to  read
   tapes  written  under  versions  of  DUMPER  previous  to Version 4 of
   TOPS-20.  The difference between the presence or absence of tape drive
   allocation is in the method of mounting and dismounting tapes, and the
   fact that you cannot read or write labeled tapes  without  tape  drive
   allocation.  A description of each method follows.

                                    NOTE

           You can determine whether your installation  is  using
           tape  drive  allocation  by typing the TOPS-20 command
           INFORMATION SYSTEM-STATUS.



                                    7-3
                             THE DUMPER PROGRAM


           @INFORMATION (ABOUT) SYSTEM-STATUS<RET>
            Operator is in attendance
            Remote logins allowed
            Local logins allowed
            Pseudo-terminal logins allowed
            ARPANET terminal logins are not allowed
            Console terminal login allowed
            Accounting is being done
            Account validation is enabled
            Tape-drive allocation is enabled
            Automatic file-retrieval-waits allowed
            Scheduler bias-control setting is 11
            Class scheduling by accounts enabled, 
             windfall allocated, batch class 1
           @

   If your installation does not have tape drive allocation, use  a  tape
   as follows:

         o  Select a tape drive (for example MTA1:) and type the  TOPS-20
            command ASSIGN MTA1:.

         o  The system responds with MTA1:  ASSIGNED.

         o  Mount the tape on the assigned drive.

         o  Run the DUMPER  program  to  perform  your  tape  operations.
            First identify the assigned tape by typing the DUMPER command
            TAPE MTA1:  in response to the prompt, DUMPER>.  If you  omit
            the  command, DUMPER looks for a device that has been defined
            as MTA-DUMPER:.  To define the logical name  MTA-DUMPER:   as
            your  assigned  tape  drive  (and  thereby  save a step after
            entering DUMPER), perform the following steps:

              o  Assign a tape drive.

                      @ASSIGN MTA1:<RET>

              o  Define that drive as MTA-DUMPER:

                      @DEFINE MTA-DUMPER:  MTA1:<RET>

              o  Upon completion of tape operations, exit from DUMPER.

              o  Type  the  TOPS-20  commands  UNLOAD  MTA1:   and   then
                 DEASSIGN MTA1:.  Remove the tape from the drive.

   If your installation is using tape drive allocation, mount a  tape  as
   follows:

         o  Type the TOPS-20 command MOUNT TAPE  name:.   The  name  (for
            example,  TAPE1:)  is a logical name.  (In the simplest case,


                                    7-4
                             THE DUMPER PROGRAM


            the logical name is identical to the volume name.) The system
            responds  with  a  message indicating that your request is in
            queue.  For example:

                 @MOUNT TAPE TAPE1:  /WRITE-ENABLED<RET>
                 [Mount Request TAPE1 Queued, Request-ID 174]

                                        NOTE

                    By typing /WRITE-ENABLED as part of the MOUNT
                    TAPE  command,  you  can write onto the tape.
                    If you do not specify this switch, you can do
                    only  read  operations (i.e., print a list of
                    file names or restore files to disk).

            If your installation requires that the tape be mounted by  an
            operator,  the tape reel must have an external identification
            label  with  the  specified  name  clearly  visible  to   the
            operator.

                                        NOTE

                    If your tape has never been  initialized,  be
                    sure  to tell the operator.  The tape must be
                    initialized before you can use it.


         o  Either you or the operator (depending upon the  procedure  at
            your  installation)  mounts  the tape on any available drive.
            If the tape is an unlabeled tape, it must  be  identified  to
            the system.  (Refer to the TOPS-20 Operator's Guide.)

         o  The tape is then known to the system, and the system  assigns
            a tape device number.  You receive a message such as:

                 [Mount Request TAPE1 Queued, Request-ID 114]
                 [Tape set TAPE1, volume TAPE1 mounted]
                 [TAPE1: defined as MT0:]

         o  Run DUMPER to perform your tape operations.

         o  Upon completion of tape operations, exit from DUMPER.

         o  Type the TOPS-20 command DISMOUNT TAPE name:  where the  name
            is the same logical name used with the MOUNT TAPE command.

         o  The system responds with:

                 [TAPE dismounted, logical name TAPE1: deleted]

   To assign the logical name MTA-DUMPER:  before entering DUMPER, define
   the  logical  name  using  your tape name or the tape drive number you


                                    7-5
                             THE DUMPER PROGRAM


   were assigned:

        @DEFINE MTA-DUMPER:  TAPE1:<RET>
   or
        @DEFINE MTA-DUMPER:  MTn:<RET>

   DUMPER supports both unlabeled and TOPS-20 and ANSI labeled tapes.  It
   is  not necessary to specify which you are mounting.  However, in case
   there is a duplication of set name or identification  between  labeled
   and unlabeled tapes, it is wise to be specific.  This avoids confusion
   for the operator mounting your tapes.  For example, you can  append  a
   label-type switch to the MOUNT TAPE command:

        @MOUNT TAPE TAPE1:  /LABEL-TYPE:UNLABELED /WRITE-ENABLED<RET>
   or
        @MOUNT TAPE TAPE1:  /LABEL-TYPE:TOPS-20 /WRITE-ENABLED<RET>

   If you think you need more than one tape, you  can  identify  all  the
   tapes in advance by adding another switch to the MOUNT TAPE command:

        /VOLIDS:volid1,volid2,...,volidn

   If you use /VOLIDS:, the logical name in the MOUNT  TAPE  command  now
   refers  to  the  entire  tape  set.  The specifications volid1 through
   volidn (for example, DH33, DH44, DH55) identify each  volume  of  tape
   within  the  set.   Each  volume  identifier (volid) can be one to six
   alphanumeric characters.

   When you type the MOUNT TAPE command, the  system  requests  that  the
   first  volume of the set be mounted.  When the operator has done this,
   you receive a message, such as:

        [Tape set, TAPE1, volume DH33 mounted]
        [TAPE1:  defined as MT0:]

   If you wish to read the tape set, you must specify the volumes in  the
   order  in  which  they were written.  You can begin with any volume in
   the set, but you cannot then specify a tape with a volid  previous  to
   the  one with which you began.  For example, if you wrote the tapes in
   the order DH33, DH44, DH55, you can request:

        /VOLIDS:DH44,DH55

   You cannot, however, request volumes DH44, DH33 nor omit  a  volid  by
   requesting volumes DH33, DH55.

   When the first volume is mounted, you are ready to run DUMPER.

                                    NOTE

           If  your  write  operations  require  more  than   the
           specified   number   of  tapes,  DUMPER  automatically


                                    7-6
                             THE DUMPER PROGRAM


           requests the operator to  mount  an  additional  tape.
           When  the  operation  is  complete, you can verify the
           additional tape in your  set  by  typing  the  TOPS-20
           command  INFORMATION (ABOUT) VOLUMES name:  before you
           type the DISMOUNT command (where name:  is the name of
           the  tape set).  The system responds with the volid of
           each volume.

   @INFORMATION (ABOUT) VOLUMES (OF TAPE) TAPE1:<RET>
   Volumes of tape set TAPE1: DH33,DH44,DH55,DH56
   @



   7.4  RUNNING DUMPER

   To run DUMPER, type DUMPER and press RETURN in response to the TOPS-20
   prompt @.  DUMPER prompts with its name and a right angle bracket (>):

        @DUMPER<RET>
        DUMPER>

                                    NOTE

           The examples in this chapter assume use  of  unlabeled
           tapes and tape drive allocation enabled.

   As with TOPS-20 commands,  you  can  type  DUMPER  commands  in  full,
   abbreviated, or recognition mode.  Also, you must terminate all DUMPER
   commands by pressing RETURN.

   To leave DUMPER and return to TOPS-20 command level, type either  QUIT
   or EXIT:

        DUMPER>EXIT<RET>
        @



   7.5  THE NONPRIVILEGED USER

   As a nonprivileged user, you can use DUMPER to save and  restore  your
   own files, or any other files to which you have access.

   The DUMPER commands to which you have access can  be  classified  into
   three categories:

        1.  Status-setting  commands,  which  set  parameters   affecting
            future operation of action commands.

        2.  Tape-positioning commands, which control the position of  the
            tape.


                                    7-7
                             THE DUMPER PROGRAM


        3.  Action commands, which start, stop, interrupt, or continue  a
            file transfer or file check.

   Sections 7.5.1 through 7.5.3 describe the commands in  each  category.
   Each section includes command formats and examples.  Where applicable,
   command complements are included in the description.   The  complement
   of  a  command  negates  the  command,  and is formed by preceding the
   command with NO.



   7.5.1  Setting the Status of Operation

   The Status-setting commands set parameters that affect  the  operation
   of  the  action  commands CHECK, RESTORE, RETRIEVE, and SAVE (refer to
   Section 7.5.3).  Once you have set a parameter, it remains  in  effect
   until  you  change  it  or  restart  DUMPER.   If you specify multiple
   conditions, the file you wish to transfer must satisfy all  conditions
   to be transferred.

   Two parameters generally associated with these commands are  date  and
   time.   The  date can be specified in any standard TOPS-20 format such
   as:  16-May-79, 5/16/79, etc.  The time can  be  specified  either  in
   24-hour  format  or  in AM/PM format.  For example 7:23 in the evening
   can be specified as 19:23 or as 7:23pm.

   For a printed explanation of all DUMPER commands, run DUMPER and  type
   HELP, followed by RETURN.  This lists and briefly describes all DUMPER
   commands, and lists required arguments.

   Table  7-1  lists  all  Status-setting  commands  according  to  their
   functions.  A detailed description of each command follows the table.


   Table 7-1:  Status-Setting Commands

   ______________________________________________________________________

     Function                                  Commands
   ______________________________________________________________________

     Specifying the selection of               BEFORE, ABEFORE 
     specific files                            MBEFORE, SINCE,
                                               ASINCE, MSINCE,
                                               NO DATES, SUPERSEDE,
                                               INITIAL 

     Specifying the printing                   DIRECTORIES, FILES
     (or suppressing) or storing               LIST, SILENCE
     of file or directory names

     Specifying disk file                      ACCOUNT, PROTECTION


                                    7-8
                             THE DUMPER PROGRAM


     characteristics

     Specifying the tape                       DENSITY, FORMAT,
     characteristics                           INTERCHANGE, PARITY,
                                               TAPE,
                                               SET BLOCKING-FACTOR,
                                               SSNAME, SET TAPE-NUMBER

     Specifying checksums to be included       CHECKSUM
     when a list of saved files
     is printed
   ______________________________________________________________________

   The descriptions and examples below are divided into sets according to
   the  functions  described  in  Table 7-1.  The first set describes the
   selection of files to be transferred on the basis of  date  and  time,
   and according to name, type and generation.

                                    NOTE

           The parameters that transfer files  on  the  basis  of
           date  and  time  cannot  be  used  with  the  CHECKSUM
           command.

   The format is the same for all BEFORE and SINCE commands.  Below is  a
   description of each, followed by examples of the commands.


   BEFORE (DATE AND TIME) date time

        The BEFORE command specifies that  only  files  whose  last  user
        written  date  is  before  the  date and time specified are to be
        transferred.  The last user written date is the most recent  time
        the  user  changed  the  actual  data  of the file.  This date is
        recorded in the .FBWRT entry of the FDB, and  is  preserved  when
        the file is copied.

                                    NOTE

           If time is omitted, the default is 00:00:01.

   ABEFORE (DATE AND TIME) date time

        The ABEFORE command specifies that only  files  whose  last  user
        access   is  before  the  date  and  time  specified  are  to  be
        transferred.  The last access date is the most  recent  time  the
        file was typed, printed, or read, but not modified.  This date is
        recorded in the .FBREF entry of the FDB.
   MBEFORE (DATE AND TIME) date time

        The MBEFORE command specifies that only files whose  last  system
        write  date  is  before  the  date  and  time specified are to be


                                    7-9
                             THE DUMPER PROGRAM


        transferred.  The last system write date is the most recent  time
        the  file  was  physically changed on disk.  This change includes
        copying the file.  The date is recorded in the  .FBCRE  entry  of
        the FDB, and is not settable by a nonprivileged user.

                                    NOTE

           Refer to Table 7-4 for a description  of  FDB  entries
           that affect DUMPER.


   SINCE (DATE AND TIME) date time

        The SINCE command specifies  that  only  files  whose  last  user
        written  date is later than the date and time specified are to be
        transferred.  The last user written date is the most recent  time
        the  user  changed  the  actual  data  of the file.  This date is
        recorded in the .FBWRT entry of the FDB, and  is  preserved  when
        the file is copied.

                                    NOTE

           If time is omitted, the default is 00:00:01.

   ASINCE (DATE AND TIME) date time

        The ASINCE command specifies that  only  files  whose  last  user
        access  is  later  than  the  date  and  time specified are to be
        transferred.  The last access date is the most  recent  time  the
        file was typed, printed, or read, but not modified.  This date is
        recorded in the .FBREF entry of the FDB.


   MSINCE (DATE AND TIME) date time

        The MSINCE command specifies that only files  whose  last  system
        write  date  is  later  than  the  date  and  time  specified are
        transferred.  The last system write date is the most recent  time
        the  file  was  physically changed on disk.  This change includes
        copying the file.  The date is recorded in the  .FBCRE  entry  of
        the FDB, and is not settable by a nonprivileged user.


   NO DATES

        The NO DATES command disables all date and time commands at once.
        There is no DATES command.


   Examples:




                                    7-10
                             THE DUMPER PROGRAM


        1.  DUMPER>BEFORE (DATE AND TIME) 5/18/84 8:00AM<RET>

            only files created, or whose contents were  modified,  before
            8:00 A.M.  on May 18, 1984 are transferred.

        2.  DUMPER>ABEFORE (DATE AND TIME) 18-MAY-84 17:00<RET>

            only files accessed by a  non-write  operation  (i.e.,  those
            that  were  typed, printed, or read) before 5:00 P.M.  on May
            18, 1984 are transferred.

        3.  DUMPER>MSINCE (DATE AND TIME) MAY-1-84 8:30<RET>

            only files that  have  been  system  modified  (for  example,
            copied) since 8:30 A.M.  on May 1, 1984 are transferred.

        4.  DUMPER>SINCE (DATE AND TIME) 4-29-84<RET>

            only files that have been created or changed since the  first
            minute  of  April 29, 1984 are transferred.  (Because no time
            was specified, the default is midnight.)

            DUMPER>REWIND<RET>
            DUMPER>FILES<RET>
            DUMPER>SINCE 1-JAN-84<RET>
            DUMPER>SAVE (DISK FILES) PS:<MATO><RET>

             DUMPER tape #1, Fri 27-Jul-84 1326.  , volid TAPE2

             PS:<MATO>
               PS:<MATO>DUMPER.EXAMPLE.1
               PS:<MATO>DUMPER.EXE.6
               PS:<MATO>INIT.CMD.4
               PS:<MATO>INIT.MAC.1
               PS:<MATO>LOGIN.CMD.139
               PS:<MATO>MATO.LST.1
               PS:<MATO>MS.INIT.41
               PS:<MATO>NFT.INIT.10
               PS:<MATO>QE5.TEC.5
               PS:<MATO>TV.EXE.2


             Total files dumped:    10
             Total pages dumped:    77
             CPU time, seconds:     1.03
            DUMPER>

   The SUPERSEDE command sets the condition under which DUMPER overwrites
   a  disk file with a magnetic tape file of the same name and type.  You
   must specify one of the following conditions:




                                    7-11
                             THE DUMPER PROGRAM


        1.  ALWAYS - when you want the tape file to  overwrite  the  disk
            file  of  the  same  name  and type regardless of the date or
            generation number of the disk file.  If the disk file  has  a
            higher  generation number, DUMPER restores the file from tape
            to disk deleting existing disk files with  higher  generation
            numbers.   If  the  disk  file has a lower generation number,
            DUMPER overwrites the disk file using the  generation  number
            of the file on tape.  (Refer to the example below.)

        2.  NEVER - when you do not want the tape file to  overwrite  the
            disk  file  under any circumstances.  In this case, a file is
            transferred to disk only if there is no file on disk with the
            same name and type.

        3.  OLDER - when the date that the tape file  was  last  modified
            (created,  read, written) is more recent than the date of the
            existing disk file with the same  name  and  type.   In  that
            case, the tape file replaces the disk file.  If the SUPERSEDE
            command is not specified, DUMPER assumes SUPERSEDE OLDER.

   Example:


   @VDIRECTORY (OF FILES) TV.INI<RET>

     PS:<MATO>
   TV.INI.5;P777700        1 45(7)         7-Apr-83 14:12:56
   @DUMPER<RET>
   DUMPER>REWIND<RET>
   DUMPER>SUPERSEDE ALWAYS<RET>
   DUMPER>RESTORE (TAPE FILES) PS:<MATO>TV.INI<RET>
   Saveset "Save of PS:<MATO>"
    Loading files into PS:<MATO>

   End of Tape.

   Total files restored:     1
   Total pages restored:     1

   The commands to activate or  deactivate  printing  are  similar.   The
   defaults, however, are different, as described below.


   DIRECTORIES

        Normally, DUMPER prints directory names on your  terminal  as  it
        saves or restores them.  For example,


        @DUMPER<RET>
        [Using MTA-DUMPER:]
        DUMPER>REWIND<RET>


                                    7-12
                             THE DUMPER PROGRAM


        DUMPER>SAVE (DISK FILES) LINK:<*>*.*.* (AS) LINK:<*>*.*.*<RET>

         DUMPER tape #1, Fri 27-Jul-84 1300.  , volid MTA-DU

         LINK:<HADY>
         LINK:<HADY.LINK6>
         LINK:<HDAVI>
         LINK:<HDAVI.TESTS.TST>
         LINK:<LINK.ALU>
         LINK:<LINK.ALU.V5M>
           .
           .
           .

        To suppress printing, type NO  DIRECTORIES  before  the  SAVE  or
        RESTORE  command.   This  is  useful if you are a privileged user
        performing backup of files on many directories.  For example,

        DUMPER>NO DIRECTORIES<RET>
        DUMPER>SAVE (DISK FILES) LINK:<*>*.*.* (AS) LINK:<*>*.*.*<RET>

         DUMPER tape #1,  Fri  27-Jul-84  1300.  ,  volid MTA-DU  


        Total files dumped: 1413
        Total pages dumped: 4923
        CPU time, seconds:  15.04
        DUMPER>

        In the  example  above  all  files  in  all  directories  on  the
        structure  LINK:  are saved on tape but DUMPER does not print the
        directory names on the terminal.

        To reactivate printing before the next transfer  operation,  type
        DIRECTORIES in response to the DUMPER prompt.


   FILES

        Normally, DUMPER does not print a list of file  specs  as  it  is
        saving or restoring them.  You see only the name of the structure
        and  directory,  and  the  number  of  total  files   and   pages
        transferred.   For the file specs to print on your terminal, type
        FILES before the SAVE or RESTORE command.


   Example:

        @DUMPER<RET>
        [Using MTA-DUMPER:]
        DUMPER>REWIND<RET>
        DUMPER>DIRECTORIES<RET>


                                    7-13
                             THE DUMPER PROGRAM


        DUMPER>FILES<RET>
        DUMPER>SAVE (DISK FILES) PS:<MATO>*.*.*<RET>
         DUMPER tape #2,  Fri  27-Jul-84 1309.  ,  volid TAPE2

         PS:<MATO>
           PS:<MATO>COMAND.CMD.32
           PS:<MATO>DUMPER.EXAMPLE.1
           PS:<MATO>DUMPER.EXE.6
           PS:<MATO>FTS.INIT.2
           PS:<MATO>INIT.CMD.4
           PS:<MATO>INT.MAC.1
           PS:<MATO>LOGIN.CMD.139
           PS:<MATO>MS.INIT.41
           PS:<MATO>NFT.INIT.10
           PS:<MATO>QE5.LIB.1
           PS:<MATO>QE5.TEC.5
           PS:<MATO>SED.INIT.10
           PS:<MATO>TV.EXE.2
           PS:<MATO>TV.INI.4
           PS:<MATO>TV2.INI.4
           PS:<MATO>TVSM.INI.1


        Total files dumped:     16 
        Total pages dumped:     76
        CPU time, seconds:      2.04

        To deactivate printing before the next transfer  operation,  type
        NO FILES in response to the DUMPER prompt.


   LIST (LOG INFORMATION ON FILE) file spec

        Normally, DUMPER does not produce a file containing a list of all
        files  as it saves them on tape.  If you wish to have such a list
        but know it is too long to be printed at your terminal,  use  the
        LIST  command,  including  the name of the file in which you want
        the list printed.  For example,

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                ction code or the protection
        code of the file  on  tape.   The  arguments  are  SYSTEM-DEFAULT
        (usually  777700)  or TAPE.  Without the command, DUMPER defaults
        to TAPE.

   Of the commands that set tape characteristics,  the  TAPE  command  is
   used most often.  The others, described below, either change the basic
   attributes of the tape, prepare it for reading or writing with another
   format, or supply an identifying name for a saveset.


   TAPE (DEVICE) name:


                                    7-15
                             THE DUMPER PROGRAM


        The TAPE command identifies the mounted magnetic tape to  DUMPER.
        The  name can be either the physical device assigned to you (such
        as MTA3:  or MT0:) or logical name (such as TAPE1:).  If you omit
        the name:, DUMPER prints the reminder:

             Tape specification needed:

        and waits for you to supply the device name.

        As mentioned in Section 7.3, if you define  your  tape  with  the
        logical  name MTA-DUMPER:, you need not type the TAPE command for
        DUMPER to access the tape.


   DENSITY (OF MAGTAPE) n

        The DENSITY command sets the density of the tape to the specified
        number  of bits per inch (bits/in).  The density can be 200, 556,
        800, 1600, 6250 or JOB-DEFAULT (set by the  TOPS-20  command  SET
        TAPE DENSITY).  If you do not specify the DENSITY command, DUMPER
        uses the  density  listed  when  you  type  the  TOPS-20  command
        INFORMATION (ABOUT) TAPE-PARAMETERS.  If the tape is labeled, the
        density is predetermined by the label information on the tape.


   PARITY (OF MAGTAPE) type

        The PARITY command sets the parity of the mounted  magnetic  tape
        to  EVEN or ODD.  DUMPER normally uses the parity listed when you
        type the TOPS-20 command INFORMATION (ABOUT) TAPE-PARAMETERS (the
        system default is ODD).


   SET BLOCKING-FACTOR (TO) n (RECORDS)

        The SET  BLOCKING-FACTOR  command  sets  the  number  of  logical
        records  per  physical  record  that  DUMPER writes on tape.  The
        default value is 1.  The number must be in the range of 1 to  15.
        The maximum depends on the density of the tape as follows:

           Density  Maximum Blocking Factor

              200           1
              556           3
              800           4
             1600          10
             6250          15

                                    NOTE

           INTERCHANGE mode uses a blocking factor of 1.  If  the
           blocking factor is changed and you specify INTERCHANGE


                                    7-16
                             THE DUMPER PROGRAM


           mode, DUMPER resets the blocking factor to 1.  If  you
           specify  NO INTERCHANGE, DUMPER uses whatever blocking
           factor you previously used.

        Blocking is defined as writing physical records that contain more
        than one logical record.  (Versions of DUMPER previous to Release
        4 write only one logical record per physical  record.)  The  term
        "blocking  factor"  refers  to  the number of logical records per
        physical record.  The advantage of blocking is to  permit  DUMPER
        to fit more information on a tape than it could without blocking,
        because  DUMPER  reduces  the  number  of  gaps  between  logical
        records.  This reduces the number of tapes and the amount of time
        it takes to save and restore files.  However, a tape written with
        a  blocking  factor other than 1, and any labeled tape, cannot be
        restored by DUMPER previous to Version 4 of TOPS-20.  It  is  not
        necessary  to  give  this command when restoring files from tape;
        DUMPER automatically determines the blocking  factor  by  reading
        the  tape, and then processes the tape accordingly.  There can be
        only one blocking factor for each tape.


   FORMAT (VERSION NUMBER IS) n

        The FORMAT command tells DUMPER the tape format that was used  to
        write  the tape.  DUMPER accepts versions 4, 5, and 6.  Version 6
        is the current tape format version.  If you position  a  tape  so
        that  you  are  not  reading  from  the beginning, use the FORMAT
        command to tell DUMPER what version to expect.


   INTERCHANGE (FORMAT)

        The INTERCHANGE command allows DUMPER to  read  and  write  tapes
        written  or  to be read by the TOPS-10 BACKUP program.  (Normally
        DUMPER uses its own format.) You  should  never  use  INTERCHANGE
        when  writing tapes to be read by another TOPS-20 system.  DUMPER
        uses NO INTERCHANGE for its  default.   When  restoring  from  an
        INTERCHANGE tape, <CTRL/E> and the date commands are ignored.

        The following example shows a tape written by the TOPS-10  BACKUP
        program  followed  by  an  example  of  reading  a tape using the
        TOPS-20 DUMPER program in INTERCHANGE mode.


        .MOUNT BACKUP:/WRITE:YES/REELID:MACS<RET>
        [Mount Request BACKUP Queued, Request-ID 109]
        [Volume MACS Mounted on MTB263 as Logical Name BACKUP]
        BACKUP mounted, MTB263 used

        .R BACKUP<RET>

        /TAPE BACKUP<RET>


                                    7-17
                             THE DUMPER PROGRAM


        /FILES<RET>
        /INTERCHANGE<RET>
        /REWIND<RET>
        /SAVE *.MAC[30,5153]<RET>
        !30,5153           DSKC
         DECPNT MAC
         LOCAL  MAC
         READ   MAC
         TRMTYP MAC
         NDBDEF MAC
         NETDPY MAC
         PRVCK  MAC
         DET    MAC

        "Done

        /EXIT

        .DISMOUNT BACKUP:<RET>
        MTB263 Dismounted

        .

        @
        @MOUNT TAPE (NAME) MACS: /READ-ONLY /LABEL-TYPE:UNLABELED<RET>
        [Mount Request MACS Queued, Request-ID 127]
        [Tape set MACS, volume MACS mounted]
        [MACS: defined as MT2:]
        @DUMPER<RET>
        DUMPER>TAPE (DEVICE) MACS:<RET>
        DUMPER>INTERCHANGE (FORMAT)<RET>
        DUMPER>REWIND<RET>
        DUMPER>FILES<RET>
        DUMPER>RESTORE (TAPE FILES) *.*.* (TO) DSK*:<*>*.*.*<RET>

        DUMPER tape # 1  , Tuesday, 18-Sep-79 1131   Volid MACS.
         Loading file(s) into MISC:<HUTCHINS>
        DECPNT.MAC (TO) DECPNT.MAC.1   [OK]
        LOCAL.MAC (TO) LOCAL.MAC.1     [OK]
        READ.MAC (TO) READ.MAC.1       [OK]
        TRMTYP.MAC (TO) TRMTYP.MAC.1   [OK]
        NDBDEF.MAC (TO) NDBDEF.MAC.1   [OK]
        NETDPY.MAC (TO) NETDPY.MAC.1   [OK]
        PRVCK.MAC (TO) PRVCK.MAC.1     [OK]
        DET.MAC (TO) DET.MAC.1 [OK]

        End of saveset
        DUMPER>EXIT<RET>
        @


   SSNAME name


                                    7-18
                             THE DUMPER PROGRAM


        The SSNAME command specifies  the  name  to  be  written  in  the
        saveset  header on the tape or to appear when you type a RESTORE,
        SAVE, SKIP, EOT, or PRINT command.  The name may  contain  up  to
        200 alphanumeric characters, including spaces.  Whenever you save
        or restore files, the saveset name prints on your terminal.

        When you do not specify a saveset name (SSNAME), DUMPER prints  a
        period  and  a  comma.  The saveset name normally appears between
        the period and the comma.

   The CHECKSUM command is used in conjunction with the DUMPER  SAVE  and
   PRINT commands.  (Refer to Section 7.5.3.)


   CHECKSUM (FILES) type

        While files are being saved, a checksum is  computed.   When  you
        type  PRINT,  each  filename  is  listed  with  a six-digit octal
        checksum number.

        One of two types can be specified:  SEQUENTIAL or  BY-PAGES.   If
        you specify SEQUENTIAL, DUMPER computes a checksum for the entire
        file.  (In INTERCHANGE  mode,  you  should  use  only  sequential
        checksums.)  If  you specify BY-PAGES, the checksum includes each
        word of existing pages up to the End-Of-File (EOF) pointer.  When
        you type PRINT after requesting a checksum by pages, the checksum
        number is followed by the letter  P,  as  shown  in  the  example
        below.


        @DUMPER<RET>
        [Using MTA-DUMPER:]
        DUMPER>REWIND<RET>
        DUMPER>CHECKSUM (FILES) BY-PAGES<RET>
        DUMPER>PRINT (DIRECTORY OF TAPE ONTO FILE)<RET>

         DUMPER tape #2  Fri 27-Jul-84 1311.  saveset "Save of PS:<MATO>",  volid TAPE2
             
             Filename                    Last write date        Pages        Checksum      Page #1

             PS:<MATO>COMAND.CMD.32      8-Sep-83 1041           1            536370 P
             PS:<MATO>DUMPER.EXAMPLE.1   27-Jul-84 1307          1            223135 P
             PS:<MATO>DUMPER.EXE.6       27-Jul-84 1245          31           144736 P
             PS:<MATO>FTS.INIT.2         30-Jun-83 1842          1            664252 P
             PS:<MATO>INIT.CMD.4         25-Jul-84 1848          1            332727 P
             PS:<MATO>INT.MAC.1          9-Jul-84 2143           3            632501 P
             PS:<MATO>LOGIN.CMD.139      17-Apr-84 2035          1            172204 P
             PS:<MATO>MATO.LST.1         27-Jul-84 1311          1            642240 P
             PS:<MATO>MS.INIT.41         25-Jan-84 1155          1            610300 P
             PS:<MATO>NFT.INIT.10        25-Jul-84 1851          1            247324 P
             PS:<MATO>QE5.LIB.1          27-Jan-83 1351          1            042624 P
             PS:<MATO>QE5.TEC.5          9-Jul-84 2214           3            136673 P


                                    7-19
                             THE DUMPER PROGRAM


             PS:<MATO>SED.INIT.10        18-Oct-82 0913          1            332725 P
             PS:<MATO>TV.EXE.2           20-Jan-84 1303          27           713471 P
             PS:<MATO>TV.INI.4           7-Apr-83 1412           1            632303 P
             PS:<MATO>TV2.INI.4          30-Jun-82 1512          1            103641 P
             PS:<MATO>TVSM.INI.1         6-Jan-82 1240           1            756311 P

         End of Tape.


        When the checksum of the disk file disagrees with the checksum of
        the tape file, there is an error in the file transfer.


   Two other Status-Setting commands allow you  to  begin  a  save  at  a
   specific file, or to continue a save onto a second reel of tape.


   INITIAL (FILESPEC) file spec

        The INITIAL command allows you to  save  files  starting  with  a
        specific  file  specification.   If  you specify a file, the save
        operation begins when DUMPER encounters a matching file.   DUMPER
        ignores  all  files  until  a match is seen.  For example, if you
        want to begin a save starting with FILE3, type

        DUMPER>INITIAL (FILESPEC) FILE3<RET>


   SET TAPE-NUMBER (DECIMAL NUMBER) n

        The SET TAPE-NUMBER command is used for  multi-reel  savesets  in
        either  of  two  cases:  when continuing a restore after a system
        crash, or when restoring files nonsequentially from a  multi-reel
        saveset.



   7.5.2  Positioning the Tape

   Tape-Positioning commands control the position  of  the  tape  without
   transferring  information  between  the tape and disk.  These commands
   affect the tape you specified with your last TAPE command  to  DUMPER.
   If you did not use a TAPE command, DUMPER issues a request for one, or
   uses a tape assigned to the logical  name  MTA-DUMPER:.   If  you  are
   working  on  a  system  without tape drive allocation, before entering
   DUMPER, you must assign the tape drive to your job, using the  TOPS-20
   command ASSIGN.

   Table  7-2  lists  the  four  Tape-Positioning  commands   and   their
   functions.   Following  the table is a detailed description, including
   examples, of each command.



                                    7-20
                             THE DUMPER PROGRAM


   Table 7-2:  Tape-Positioning Commands

   ______________________________________________________________________

     Command      Function
   ______________________________________________________________________

     EOT          Positioning to the end of the  last  saveset  on  the
                  tape

     REWIND       Positioning to the beginning of the currently mounted
                  tape

     SKIP n       Positioning to the end of the nth  from  the  current
                  saveset

     UNLOAD       Rewinding the tape entirely onto the source reel
   ______________________________________________________________________

   The three commands below position the tape at specific points.


   EOT

        The EOT (End-Of-Tape) command positions the tape at  the  end  of
        the last saveset on the tape and DUMPER prints the message:

             End of Tape.

        As DUMPER encounters each saveset between  its  current  position
        and EOT, it prints the saveset name (but not its contents).

   Example:


        DUMPER>EOT<RET>
        Saveset "Save of PS:<MATO>"
        Saveset "Saveset #2, PS:<MATO>"
         End of Tape.


   REWIND

        The REWIND command rewinds the currently mounted  volume  to  the
        beginning of the tape.

        If you are using a multi-reel tape  set  mounted  by  typing  the
        TOPS-20 command MOUNT TAPE, you can switch to a different reel by
        typing:

             REWIND SWITCHING (TO VOLUME NUMBER) n<RET>



                                    7-21
                             THE DUMPER PROGRAM


        With this command, n specifies the number of the reel within  the
        set,  not  the  volume  id.   When  you type the REWIND SWITCHING
        command, DUMPER releases the currently mounted tape and  requests
        the  nth  volume to be mounted.  (If you are using labeled tapes,
        DUMPER allows you to switch to  volume  1  only.)  The  following
        example  shows  a  switch  to  the  volume identified as TWO from
        volume ONE:


        @MOUNT TAPE TAPE1: /WRITE-ENABLED /VOLIDS:ONE,TWO,THREE<RET>
        [Mount Request TAPE1 Queued, Request-ID 174]
        [Tape set TAPE1, volume ONE mounted]
        [TAPE1: defined as MT0:]
        @DUMPER<RET>
        DUMPER>TAPE (DEVICE) TAPE1:<RET>
        DUMPER>REWIND SWITCHING (TO VOLUME NUMBER) 2<RET>
        DUMPER>

                                    NOTE

           If you plan to switch back and forth  between  volumes
           of  a  set,  specify  the  /NOUNLOAD  switch  with the
           TOPS-20 command MOUNT TAPE.  This is a request to  the
           operator  not  to  unload  any of the tapes within the
           set, but to use additional tape drives  so  that  more
           than one tape can be mounted at a time.


   SKIP (NUMBER OF SAVESETS) n

        The SKIP command moves the tape  over  the  specified  number  of
        savesets.   This  ensures  that those savesets are not deleted by
        another  save.   DUMPER  prints  the   name   of   each   saveset
        encountered,  and  positions  the  tape  at  the  end  of the nth
        saveset.

        If n is 0, the tape is positioned at the beginning of the current
        saveset.   If  n  is  a negative number, the tape backspaces by n
        savesets and is positioned at the beginning of that saveset.  You
        cannot use zero or negative numbers with labeled tapes.


   Examples:


        @DUMPER<RET>
        [Using MTA-DUMPER:]
        DUMPER>REWIND<RET>
        DUMPER>SKIP (NUMBER OF SAVESETS) 0<RET>
        Saveset "Saveset #2, PS:<MATO>"
        DUMPER>



                                    7-22
                             THE DUMPER PROGRAM


        DUMPER>SKIP (NUMBER OF SAVESETS) -4<RET>
        Saveset "Save of PS:<MATO>"
         Beginning of tape.
        DUMPER>

   The following command releases your mounted tape from the drive.

   UNLOAD

        If your installation is not using tape drive allocation, you  can
        remove your tape with UNLOAD to DUMPER.

   Example:

        DUMPER>UNLOAD<RET>

   This command, however, does not deassign the tape drive.



   7.5.3  Interacting with Tape Files

   The action commands affect the files on the tape specified by the last
   TAPE  command.  These commands allow you to start, stop, interrupt, or
   continue a file transfer or file check.

   The transfer commands take, as an optional argument, one or more  file
   specifications.    The   file   specifications  can  contain  wildcard
   characters.  With  transfer  commands  (SAVE  and  RESTORE),  you  can
   indicate   both   input  and  output  (source  and  destination)  file
   specifications for each file specified.  This allows the files  to  be
   renamed   as   they   are   saved  or  restored.   If  no  destination
   specification is given, the specified files  are  transferred  without
   being  renamed.   If  no argument is given with the transfer commands,
   all files on your connected directory are  saved  onto  tape,  or  all
   files  that were saved from your connected directory, and exist in the
   current saveset, are restored to your connected directory.

   Both the SAVE and RESTORE commands can take the source and destination
   arguments.   In the case of SAVE, the source is the file specification
   identifying the name and  location  of  the  file  to  be  saved;  the
   destination  identifies the file name under which you want the file to
   be stored on tape.  In the case of  RESTORE,  the  source  is  a  file
   specification  identifying the file you want copied from the tape; the
   destination is a file specification identifying the name of  the  file
   into which you want the file copied on disk.

   With both commands, if you omit the source, DUMPER restores all  files
   in the saveset corresponding to your connected directory, or saves all
   files as your connected directory.  If you omit the  destination  with
   SAVE, DUMPER transfers the file(s) with the same file specification(s)
   as the one(s) on disk.  If you  omit  the  destination  with  RESTORE,


                                    7-23
                             THE DUMPER PROGRAM


   DUMPER  transfers  the  file(s) with the same file specification(s) as
   the one(s) on tape.

   Table 7-3 lists all action commands according to their  functions.   A
   detailed description of each command follows the table.


   Table 7-3:  Action Commands

   ______________________________________________________________________

     Command Function
   ______________________________________________________________________

     ABORT                   Cancelling  an  interrupted  command   and
                             starting a new action command

     RESTORE, SAVE, CHECK, TRANSFER
                             Transferring and comparing disk  and  tape
                             files

     PRINT                   Printing a list of file names on tape

     <CTRL/A>                Printing  status  information  about   the
                             command

     <CTRL/E>, CONTINUE      Halting and continuing command operation

     TAKE                    Executing commands from a command file

     EXIT, QUIT              Exiting to TOPS-20

     EXACT                   Saving   or    restoring    files    using
                             system-wide logical names
   ______________________________________________________________________

   SAVE (DISK FILES) source (AS) destination, source (AS) destination

        The SAVE command creates a saveset on tape,  containing  all  the
        source  files  specified.   To rename the files as you save them,
        you must specify source files followed by a  space,  followed  by
        destination  files.   With either source or destination files you
        can use * and %  wildcard  characters.   To  transfer  additional
        source  and  destination  file  specifications, you must separate
        each pair with a comma.   If  you  do  not  specify  destination,
        DUMPER  saves all source file specifications under their original
        specifications.  If you specify neither source  nor  destination,
        DUMPER  saves  all  files  on  your  connected directory into the
        saveset on tape (i.e.,  DUMPER  assumes  the  file  specification
        *.*.*).

   Examples:


                                    7-24
                             THE DUMPER PROGRAM


   Note that in these examples, three savesets are created, one for  each
   SAVE command.


             @DUMPER<RET>
             [Using MTA-DUMPER:]
             DUMPER>REWIND<RET>
             DUMPER>FILES<RET>
             DUMPER>SAVE (DISK FILES) PS:<MATO>TV.INI.* (AS)
             PS:<MATO>TV.OLD.*<RET>

              DUMPER tape #2, Fri 27-Jul-84 1319.  Saveset "Saveset #2, PS:<MATO>", Volid TAPE2

              PS:<MATO>
                PS:<MATO>TV.INI.5 (as) PS:<MATO>TV.OLD.5


              Total files dumped:      1
              Total pages dumped:      1
              CPU time, seconds:       0.03
             DUMPER>SAVE (DISK FILES) <MOSE>*.*.* (AS) *.*.*<RET>

              DUMPER tape #2, Fri 27-Jul-84 1319.  Saveset "Saveset #2, PS:<MATO>", Volid TAPE2

              PS:<MOSE>
                PS:<MOSE>2946-CDRSRV-MAC.RED.1
                PS:<MOSE>2946-PROLOG-MAC.RED.1
                PS:<MOSE>ACCESS.CMD.11
                PS:<MOSE>ALERT.CMD.16
                PS:<MOSE>BACCESS.CMD.5
                PS:<MOSE>BATCH.CMD.7
                PS:<MOSE>BMOUNT.CMD.9
                PS:<MOSE>CF.CTL.1
                PS:<MOSE>CFSINT.DOC.1
                PS:<MOSE>CH2EX.MAC.3
                       .
                       .
                       .

             Total files dumped:     55
             Total pages dumped:     172
             CPU time, seconds:      7

             DUMPER>NO FILES<RET>
             DUMPER>SAVE (DISK FILES) PS:<PERLMA>*.*.* (AS) *.*.*<RET>

              DUMPER tape #2, Fri 27-Jul-84 1321.  , volid TAPE2

              PS:<PERLMA>

             Total files dumped:      37
             Total pages dumped:      208


                                    7-25
                             THE DUMPER PROGRAM


             CPU time, seconds:       5.04

                                    NOTE

           Remember that if the NO FILES command is typed, as  in
           the  last  SAVE example above, the file specifications
           are not listed as they are saved.

   If all files cannot fit on one tape, DUMPER requests that you mount  a
   second tape.  This tape is the next volume of the tape set if you type
   /VOLIDS:  with the MOUNT TAPE command.  If  you  do  not  specify  the
   switch, the operator mounts a tape and it becomes the second volume of
   the set.  When the additional tape is mounted, DUMPER resumes the save
   operation.

   It is important to note that savesets are stored on tape according  to
   the  position  of  the  tape  when  the SAVE command is typed.  If you
   position the tape at the beginning (refer to the REWIND command),  the
   specified  files  are  written  there regardless of any previous files
   saved.  If more than one saveset exists on  the  tape,  they  are  all
   deleted  when  a  new  one  is saved at the beginning of the tape.  To
   avoid deleting existing savesets, position the tape at the end of  the
   last saveset (EOT) or skip the number of savesets (SKIP n) you want to
   be sure to preserve.


   RESTORE (TAPE FILES) source (TO) destination, source (TO) destination

        The RESTORE command transfers the  specified  source  files  from
        magnetic  tape to disk.  To rename the files as you restore them,
        you must specify destination file  specifications.   With  source
        files  you  may  use  the  *  and  %  wildcard  characters;  with
        destination files, you can use only the * wildcard.

        If you do  not  specify  destination,  all  specified  files  are
        restored with the same name, type, and generation.  If you do not
        specify either source or destination  specifications,  all  files
        saved  from  your connected structure and connected directory are
        restored to your connected structure and directory with the  same
        name, type and generation number.

        When DUMPER begins restoring files to a directory, it prints  the
        message:

             Loading File(s) into <directory>

                                      NOTE

                If you do not see this  message,  DUMPER  is  not
                transferring the files.

        In that case, the files may already exist on disk, they may  have


                                    7-26
                             THE DUMPER PROGRAM


        been  saved  from  a  structure  or  directory  other  than  your
        currently connected directory, they do not exist in  the  current
        saveset,  or  you  used a wildcard expression that does not match
        the files on tape.

        If you are restoring files that were saved from a directory other
        than your own, you must specify that directory in the source file
        specification.  If files exist on that directory  with  the  same
        name  and type as those on tape, DUMPER overwrites the disk files
        according to the condition specified with the SUPERSEDE  command:
        ALWAYS,  NEVER,  or OLDER.  If the SUPERSEDE command has not been
        typed, DUMPER assumes SUPERSEDE OLDER  and  overwrites  the  disk
        file  only if the tape file is newer.  All date commands and time
        commands are ignored when you restore from an INTERCHANGE tape.

        As is true with the SAVE command, files  are  restored  from  the
        current  position  on  tape.   If  you  want  to omit one or more
        savesets, position the tape to the end of the last saveset to  be
        omitted (SKIP n).

   Example:
        @DUMPER<RET>
        [Using MTA-DUMPER:]
        DUMPER>REWIND<RET>
        DUMPER>SKIP (NUMBER OF SAVESETS) 2<RET>

        Saveset "Saveset #2, PS:<MATO>"
        Saveset "Saveset #3, PS:<MATO>"
        Saveset, unnamed
        DUMPER>FILES<RET>
        Saveset, unnamed
         Loading files into EXODUS:<PERLMA>
          PS:<MATO>DUMPER.EXAMPLE.1 to EXODUS:<PERLMA>DUMPER.EXAMPLE.1;P777777;AMONITOR [OK]
          PS:<MATO>DUMPER.EXE.6 to EXODUS:<PERLMA>DUMPER.EXE.6;P777777;AMONITOR [OK]
          PS:<MATO>INIT.CMD.4 to EXODUS:<PERLMA>INIT.CMD.4;P777777;AMONITOR [OK]
          PS:<MATO>INT.MAC.1 to EXODUS:<PERLMA>INT.MAC.1;P777777;AMONITOR [OK  
          PS:<MATO>LOGIN.CMD.139 to EXODUS:<PERLMA>LOGIN.CMD.139;P777700;AMONITOR [OK]
          PS:<MATO>MATO.LST.1 to EXODUS:<PERLMA>MATO.LST.1;P777777;AMONITOR [OK]
          PS:<MATO>MS.INIT.41 to EXODUS:<PERLMA>MS.INIT.41;P777700;AMONITOR [OK]
          PS:<MATO>NFT.INIT.10 to EXODUS:<PERLMA>NFT.INIT.10;P777700;AMONITOR [OK]
          PS:<MATO>QE5.TEC.5 to EXODUS:<PERLMA>QE5.TEC.5;P777777;AMONITOR [OK]
          PS:<MATO>TV.EXE.2 to EXODUS:<PERLMA>TV.EXE.2;P777777;AMONITOR [OK]
        End of Tape.

         Total files restored:     10
         Total pages restored:     77
        DUMPER>

   Once the files have been saved or restored, you can check the disk and
   tape versions to verify that the transfer was accurate.




                                    7-27
                             THE DUMPER PROGRAM


   TRANSFER (TAPE FILES)

        The TRANSFER command is another way to restore files to disk.  If
        you type,

             DUMPER>TRANSFER<RET>

        all files from all structures and directories  on  the  tape  are
        restored to your connected directory with the same name and type.
        The TRANSFER command always  defaults  to  DSK*:<*>*.*.*  for  an
        input  file  specification  and to your connected directory for a
        destination specification.  If you specify both input and  output
        specifications,  the  TRANSFER  command acts as a RESTORE command
        with different default actions.


   EXACT (MODE FOR SAVE COMMAND)

        The EXACT command saves or  restores  files  without  translating
        logical  names  into actual structure names.  The files are saved
        or restored using the logical name as it is specified.

        For example, if the system uses logical name PS:  to refer to the
        structure  SYSDSK:   and  you use the EXACT command before a SAVE
        command, the files are saved as PS:<dir>file spec.  If  you  want
        to  restore  files  that  are saved using the EXACT command, type
        EXACT before  typing  RESTORE  and  the  files  are  restored  as
        PS:<dir>file spec.

        Files that are saved using the EXACT command cannot  be  restored
        using the NO EXACT command since DUMPER cannot match the files.

        To use the EXACT command, type

             DUMPER>EXACT<RET>
             DUMPER>SAVE (DISK FILES) LOGICAL NAME:<DIR> FILE SPEC<RET>

        If you want to have logical names translated, use  the  NO  EXACT
        command.  NO EXACT is the default.


   CHECK (ALL TAPE FILES)

        The CHECK command checks the File Descriptor Blocks (FDB) in  the
        current saveset to make sure they agree with the FDB of the files
        on disk.  If any files do not agree, DUMPER prints  one  or  more
        error  messages.  Table 7-4 is a list of the possible differences
        in the FDBs that DUMPER checks.






                                    7-28
                             THE DUMPER PROGRAM


                                      NOTE

                Be sure to position the tape at the beginning  of
                the saveset before typing CHECK.



        Table 7-4:  File Descriptor Block (FDB) Entries Checked by DUMPER

   ______________________________________________________________________

     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.
     .FBPRT              -File access code.
     .FBCRE              -Date and time of last write to the file.   It
                          is  modified  when  any program writes to the
                          file.  This word is changeable by a user with
                          privileged capabilities.
     .FBAUT              -Pointer to the string containing the name  of
                          the author.
     .FBGEN              -Generation and directory numbers of the file.
     .FBACT              -Account information.
     .FBBYV              -Number of generations to retain,  byte  size,
                          mode  of  the  last  write,  or the number of
                          pages.
     .FBSIZ              -Number of bytes in the file.   This  word  is
                          changeable by a user with write access.
     .FBCRV              -Date and time of creation of the file.   This
                          word  is  changeable  by  a  user  with write
                          access.
     .FBWRT              -Date and time of the last user write  to  the
                          file.  This word is changeable by a user with
                          write access.
     .FBREF              -Date and time of the last non-write access to
                          the  file.  This word is changeable by a user
                          with write access.
     .FBCNT              -Count of writes or references.
     .FBUSW              -Contents of the user-settable data area.
     .FBLWR              -Pointer to the string containing the name  of
                          the user who last wrote to the file.
   ______________________________________________________________________

   Example:


        DUMPER>REWIND<RET>
        DUMPER>CHECK (ALL TAPES FILES)<RET>



                                    7-29
                             THE DUMPER PROGRAM


        Saveset "The check-files-for-changes"
        %Difference in .FBCRE of file SNARK:<SANTI>ET.HLP.1
        %Difference in .FBCRV of file SNARK:<SANTI>ET.HLP.1
        %Difference in .FBWRT of file SNARK:<SANTI>ET.HLP.1
        %Difference in .FBCRE of file SNARK:<SANTI>EXEDMP.HLP.1
        %Difference in .FBSIZ of file SNARK:<SANTI>EXEDMP.HLP.1
        %Difference in .FBCRV of file SNARK:<SANTI>EXEDMP.HLP.1
        %Difference in .FBWRT of file SNARK:<SANTI>EXEDMP.HLP.1
         End of Saveset.
        DUMPER>


        If a disk file is renamed before you do a  check,  the  tape  and
        disk file will not agree in either name, type, or generation.  In
        this case, DUMPER prints an error message (see Section 7.8).

        You cannot use the CHECK command in combination with the date and
        time commands.


   If you want a printed list of all files saved on  tape,  position  the
   tape  to  the  beginning  and  type  the  PRINT command.  This command
   differs from LIST in that it creates a file of file names  already  on
   tape.   LIST  creates  a  file  of  file names as DUMPER is saving the
   files.


   <CTRL/A>

        The <CTRL/A> command prints one or  more  lines  of  information.
        With all DUMPER commands, <CTRL/A> prints the name of the command
        DUMPER is processing.  With SAVE commands,  in  addition  to  the
        name  of  the command in process, <CTRL/A> prints the name of the
        file and  the  number  of  the  disk  page  DUMPER  is  currently
        processing.  The <CTRL/A> will not echo on your terminal.

        @DUMPER<RET>
        [Using MTA-DUMPER:]
        DUMPER>REWIND<RET>
        DUMPER>SAVE (DISK FILES) LINK:<*>*.*.* (AS) LINK:<*>*.*.*<RET>
         DUMPER tape #1, Fri 27-Jul-84 1300.  , volid MTA-DU

         LINK:<HARY>
         LINK:<HARY.LINK6>
         LINK:<HDAVI>
         LINK:<HDAVI.TESTS.TST>
         LINK:<LINK.ALU>
         LINK:<LINK.ALU.V5M>
         <CTRL/A>
         SAVE in progress. File: LINK:<LINK.ALU.V5M>LNKHST-41.RED.1 (1)
          .
          .


                                    7-30
                             THE DUMPER PROGRAM


          .


   PRINT (DIRECTORY OF TAPE ONTO FILE) file spec

        The PRINT command records the file specifications of  the  entire
        tape (beginning with the current saveset) in the specified output
        file.  You can subsequently use the TOPS-20 TYPE or PRINT command
        to examine this file.

        @DUMPER<RET>
        [Using MTA-DUMPER:]
        DUMPER>REWIND<RET>
        DUMPER>PRINT (DIRECTORY OF TAPE ONTO FILE) FILES.LST.1<RET>
         DUMPER tape #2, Fri 27-Jul-84 1311.  Saveset "Save of PS:<MATO>", volid TAPE2
        End of tape.
        DUMPER>EXIT<RET>
        @TYPE (FILE) FILES.LST<RET>

        If you omit the destination file specification, the  contents  of
        the  current  saveset  are  printed  on  your  terminal.   Typing
        PRINT/FAST  also  defaults  to   printing   on   your   terminal.
        PRINT/FAST tries to limit output to 80 columns.


   TAKE (COMMANDS FROM FILE) file specification

        The TAKE  command  causes  DUMPER  to  execute  commands  in  the
        specified  command  file (file specification).  Commands from the
        command file are executed until either the  end  of  the  command
        file  or  until DUMPER encounters an error.  DUMPER does not echo
        commands as they are processed unless more information is  needed
        or DUMPER encounters an error.

        @DUMPER<RET>
        DUMPER>TAKE (COMMANDS FROM FILE) D.CMD<RET>

        [End work:<MATO>D.CMD.1]
        DUMPER>EXIT<RET>
        @

   If you end a command file with a TAKE command that is not followed  by
   a  file  specification,  you do not receive the [End] message shown in
   the example above.

   If necessary,  you  may  interrupt  the  operation  of  an  action  or
   tape-positioning  command.   You  may  then continue the operation, or
   cancel it by typing another command.


   <CTRL/E>



                                    7-31
                             THE DUMPER PROGRAM


        You type the <CTRL/E> command by pressing the  CTRL  and  E  keys
        simultaneously.   The  <CTRL/E>  is  not echoed on your terminal.
        This command halts the action of a SAVE, RESTORE, CHECK, RETRIEVE
        or  any  tape-positioning  command.   When  DUMPER  processes the
        <CTRL/E> command, it interrupts the current operation and prints:

             Interrupting...
             DUMPER>>

        You can type any status-setting  command  except  INTERCHANGE  in
        response  to  the  prompt, and then type CONTINUE to continue the
        operation at the point at which it was interrupted.

        To start a new command, type ABORT  to  discard  the  interrupted
        command.  Then type the new action command.


   CONTINUE

        The CONTINUE command allows you to continue the operation  of  an
        interrupted action or tape-positioning command.

        You cannot use the CONTINUE command if you have  not  interrupted
        DUMPER with <CTRL/E>.

   Example:

        DUMPER>REWIND<RET>
        DUMPER>SAVE (DISK FILES) LINK:<*>*.*.*<RET>
         DUMPER tape #1, Fri 27-Jul-84 1300.  , volid MTA-DU

         LINK:<HARD>
         LINK:<HARD.LINK.6>
        <CTRL/E>
        Interrupting...
        DUMPER>>NO DIRECTORIES<RET>
        DUMPER>>CONTINUE (SAVE)<RET>
         Continuing SAVE command...
        <CTRL/E>
        Interrupting...
        DUMPER>>ABORT<RET>
         Aborting SAVE command...


   There are two commands to exit from the DUMPER program and  return  to
   TOPS-20  command  level.   The  EXIT  and QUIT commands have identical
   functions.

   Example:

        DUMPER>EXIT<RET>
        @


                                    7-32
                             THE DUMPER PROGRAM


             or

        DUMPER>QUIT<RET>
        @



   7.5.4  Marking Files to be Archived

   If you wish to save any of your files on  the  installation's  archive
   tape,  you  can  mark  the  files  for  archival.  To do this, use the
   TOPS-20  ARCHIVE  command.   Once  the  operator  has  processed  your
   request,  only  the  File  Descriptor Blocks (FDB's) remain.  The file
   names become invisible (i.e., if you take a  directory  of  your  disk
   area,  the  files appear to be gone).  This is to assure you that your
   files have been archived and that you can no longer access  or  modify
   them.

                                    NOTE

           To see your files listed in the archive request queue,
           type the TOPS-20 command INFORMATION ARCHIVE-STATUS.



   7.6  THE PRIVILEGED USER

   As  a  privileged  user,  you  can  perform  operations   beyond   the
   capabilities of a nonprivileged user.  These operations include backup
   and restoration of all system files, archiving, and migrating.   Below
   is a list of switches, commands, and defaults to which only privileged
   users may have access.

         o  As part of the SAVE command, you  may  append  the  following
            switches:

                 /FULL-INCREMENTAL  to  request  that  DUMPER  save   all
                 specified  files  and  reset the file save count to one.
                 All information is preserved  regarding  the  number  of
                 times  the file has been saved.  This is the command for
                 a weekly system backup of all files.

                 /INCREMENTAL:n to request that  DUMPER  save  all  files
                 that  have  either  not  been saved at least n times, or
                 have  been  modified  since  the  last  INCREMENTAL   or
                 FULL-INCREMENTAL  run.   This is the command for a daily
                 backup of all files.

                                           NOTE

                   If a save has not  previously  been  done  with  the
                   FULL-INCREMENTAL  switch, specifying the INCREMENTAL


                                    7-33
                             THE DUMPER PROGRAM


                   switch will have  the  same  results  as  specifying
                   /FULL-INCREMENTAL (i.e., DUMPER saves all files).

                 /NOINCREMENTAL to request that  DUMPER  not  perform  an
                 incremental save.  In this case, DUMPER saves all files,
                 but does not  preserve  any  information  regarding  the
                 number    of    times   the   file   has   been   saved.
                 (/NOINCREMENTAL is the default.)

                                           NOTE

                   In using any of these switches, you do not have  the
                   option  of renaming files from disk to tape.  A file
                   transferred to tape has the same name as the file on
                   disk.   Unless  one  of these switches or the CREATE
                   command is used, directory information is not  saved
                   on the tape

                 /UNLOAD to request that DUMPER  unload  a  mounted  tape
                 after a save.

         o  You  can  RESTORE  or  RETRIEVE  files  from  an  archive  or
            migration tape.

         o  You  can  use  the  CREATE  command  to  recreate  an  entire
            directory that has been deleted.

         o  When you type SAVE or RESTORE with  no  specified  directory,
            the  default  is  <*>  on  the  connected  structure.  (For a
            nonprivileged user, the default is  the  connected  directory
            and structure.)

         o  When you restore files, the last writer string of the file on
            disk is set to the name of the last writer at the time of the
            save.  (For a nonprivileged user, the last writer  string  is
            set to the name of the user doing the RESTORE.)

   If your installation is running a TOPS-20  Version  6  based  monitor,
   DUMPER  supports  encrypted  passwords  and project-programmer numbers
   (PPN).  Earlier versions  of  DUMPER,  however,  do  not  support  the
   password  and  PPN  features.   Therefore,  use  extreme  caution when
   changing versions of DUMPER and the TOPS-20 monitor.

   At user level, password encryption and PPNs are not visible in DUMPER.
   These  two  features  affect  the  process  of  creating,  saving  and
   restoring directories.  They do not affect files.

   If, for example, you save a directory using a 4.1  version  of  DUMPER
   and  then restore that tape using TOPS-20 Version 6, passwords are not
   handled correctly.  They are not useable and you have to respecify the
   passwords using the BUILD command.  See the TOPS-20 Commands Reference
   Manual for an explanation of the BUILD command.  PPNs are not restored


                                    7-34
                             THE DUMPER PROGRAM


   at  all.   For  a  detailed  explanation  of the compatibility between
   DUMPER versions and TOPS-20 versions, see the TOPS-20 System Manager's
   Guide.

   Sections 7.6.1 through 7.6.6 describe  the  use  of  these  privileged
   commands  and  switches.   This  manual  does not include step-by-step
   procedures for performing a system backup, restore, archival  run,  or
   migration run.  For details, refer to the TOPS-20 Operator's Guide.



   7.6.1  Backing Up System Files and/or Other Users' Files

   To minimize loss of disk files, you should put backup  copies  of  all
   files on magnetic tape.  In many installations, this should be done on
   a daily basis.  (For details, refer to the  TOPS-20  System  Manager's
   Guide.)

   Backup is done with the CREATE and SAVE  commands.   As  a  privileged
   user you have the option of doing one of three types of saves by using
   SAVE plus either /FULL-INCREMENTAL, /INCREMENTAL, or /NOINCREMENTAL.

                                    NOTE

           It is recommended that you specify the CREATE  command
           before you perform a SAVE that is intended as a backup
           copy.  With the SAVE /FULL command, the CREATE command
           writes  directory  information  on  the tape.  This is
           useful if you have to restore  a  damaged  or  deleted
           directory.

   A sample backup routine for an installation might be:

        Friday  night:  Run  DUMPER  to  save  all   system   files   and
        directories using /FULL-INCREMENTAL.

        All other nights:  Using  /INCREMENTAL:2,  save  all  files  with
        changes  made  since the save of the previous night.  This allows
        you a  margin  of  error  in  recovering  files  that  have  been
        inadvertently deleted and expunged.

   The incremental runs can be made either more or less frequently at the
   discretion  of  the installation.  In the event of a total file system
   loss, the installation can restore the disk to the state of  the  most
   recent  incremental by first restoring the full-incremental tapes to a
   fresh set of packs, and then restoring any incremental tapes that were
   made since the full-incremental.

   If the installation desires two sets of backup tapes (to gain an extra
   measure of safety), the above procedure can be modified as follows:

        Friday night:  Run a /FULL-INCREMENTAL, followed  immediately  by


                                    7-35
                             THE DUMPER PROGRAM


        another  /FULL-INCREMENTAL.   This  creates two sets of full-save
        tapes.

        All other nights:  Make two consecutive runs with /INCREMENTAL:2.
        This  creates two sets of incremental save tapes, unless any file
        has been changed between saves.

   If your installation has structures other than the  public  structure,
   it  is  important to back up files on all structures.  It is advisable
   to use a different  tape  for  each  structure.   Furthermore,  it  is
   important  to  use  a  different  tape  for  every  function:  backup,
   migrate, and archive.

   Example:

        The following example  shows  a  FULL  INCREMENTAL  SAVE  of  one
        directory.

        DUMPER><RET>
        [Using MTA-DUMPER:]
        DUMPER>SSNAME Full Incremental of one directory<RET>
        DUMPER>SAVE (DISK FILES) /FULL-INCREMENTAL PS:<MATO>*.*.*<RET>

         DUMPER tape #1, Fri 27-Jul-84 1339.  Saveset "Full Incremental of one directory", volid TAPE2


         PS:<MATO>

         Pass 2, for Incremental Save, Starting.
         End of Pass 2.

         Total files dumped:            18
         Total pages dumped:            88
         Total directories dumped:      1

         Approx. CPU time, seconds:     2.34
        DUMPER>

   To notify users that you have SAVED, ARCHIVED, MIGRATED, or  RETRIEVED
   files,  use the /MAIL option to the LIST command and the MAIL command.
   Before you type your SAVE or RETRIEVE command, type

        DUMPER>LIST /MAIL filespec<RET>

   If  you  do  not  specify  a  filespec,  DUMPER   creates   the   file
   DUMPER-MAIL.TXT.

   After you have completed your SAVE or RETRIEVE, type

        DUMPER>MAIL (from list file) filespec<RET>

   This sends mail to the users specified in  the  DUMPER-MAIL.TXT  file.


                                    7-36
                             THE DUMPER PROGRAM


   If  you  do  not  specify  a  filespec  with  the MAIL command, DUMPER
   defaults to the file specified in the last LIST command.

   You cannot interrupt a MAIL command with <CTRL/A> or <CTRL/E>.



   7.6.2  Restoring Files and Directories from System Backup Tapes

   If a user accidentally deletes files from the disk, he  will  want  to
   restore  them  from  backup  tapes.   In  many installations, you as a
   privileged user or operator must restore these files.

   To fill his request, mount the full save tape (of  files  saved  on  a
   weekly  basis)  and  restore the requested files.  Then, if necessary,
   mount the incremental save tape (of new or changed files  saved  on  a
   daily basis) and restore the remainder of files in the user's request.
   The RESTORE command is the same as for a nonprivileged user.  You must
   specify the source in order to transfer the files of the user who made
   the request.

   Example:
        @DUMPER<RET>
        [Using MTA-DUMPER:]
        DUMPER>REWIND<RET>
        DUMPER>SKIP (NUMBER OF SAVESETS) 2<RET>

        Saveset "Saveset #2, PS:<MATO>"
        Saveset "Saveset #3, PS:<MATO>"
        Saveset, unnamed
        DUMPER>FILES<RET>
        DUMPER>RESTORE (TAPE FILES) PS:<MATO>*.*.* (TO)
        EXODUS:<PERLMA>*.*.*<RET>
        Saveset, unnamed
         Loading files into EXODUS:<PERLMA>
          PS:<MATO>DUMPER.EXAMPLE.1 to EXODUS:<PERLMA>DUMPER.EXAMPLE.1;P777777;AMONITOR [OK]
          PS:<MATO>DUMPER.EXE.6 to EXODUS:<PERLMA>DUMPER.EXE.6;P777777;AMONITOR [OK]
          PS:<MATO>INIT.CMD.4 1 to EXODUS:<PERLMA>INIT.CMD.4 1;P777777;AMONITOR [OK]
          PS:<MATO>INT.MAC.1 to EXODUS:<PERLMA>INT.MAC.1;P777777;AMONITOR [OK  
          PS:<MATO>LOGIN.CMD.139 to EXODUS:<PERLMA>LOGIN.CMD.139;P777700;AMONITOR [OK]
          PS:<MATO>MATO.LST.1 to EXODUS:<PERLMA>MATO.LST.1;P777777;AMONITOR [OK]
          PS:<MATO>MS.INIT.41 to EXODUS:<PERLMA>MS.INIT.41;P777700;AMONITOR [OK]
          PS:<MATO>NFT.INIT.10 to EXODUS:<PERLMA>NFT.INIT.10;P777700;AMONITOR [OK]
          PS:<MATO>QE5.TEC.5 to EXODUS:<PERLMA>QE5.TEC.5;P777777;AMONITOR [OK]
          PS:<MATO>TV.EXE.2 to EXODUS:<PERLMA>TV.EXE.2;P777777;AMONITOR [OK]
        End of Tape.

         Total files restored:     10
         Total pages restored:     77
        DUMPER>

   If a user's entire directory is accidentally deleted and you saved the


                                    7-37
                             THE DUMPER PROGRAM


   directory  with  the CREATE option, you can restore it with the DUMPER
   command CREATE.  Having entered DUMPER, type  CREATE  before  RESTORE.
   As  DUMPER  restores  all files and directories, it restores (creates)
   the deleted directory exactly as the directory was saved.

   The TRANSFER command is another way to restore files to disk.  If  you
   type:

        DUMPER>TRANSFER<RET>

   all files from all structures and directories on the tape are restored
   to your connected directory with the same name and type.  The TRANSFER
   command  always  defaults  to  DSK*:<*>*.*.*   for   an   input   file
   specification   and   your   connected  directory  for  a  destination
   specification.



   7.6.3  Archiving Marked Files

   If your installation is using  the  archive/virtual  disk  system  for
   off-line  storage  of  files,  the installation establishes a schedule
   under which it runs the  DUMPER  program  to  copy  files  marked  for
   archiving onto tape.

   Mount a tape used only for archiving and run DUMPER using the  ARCHIVE
   command.

        DUMPER>ARCHIVE STR:<*>*.*.*<RET>


   If no file specification is given with the command, all  files  marked
   for archiving on the connected structure are transferred to tape.  You
   can use wildcards to  specify  entire  fields,  as  in  A.*,  but  not
   portions of a field, as in A*.mem.

   At the beginning of the archive run, DUMPER asks:


        Is this a new tape?


   If you answer YES, DUMPER asks:


        Are you sure?

   If you answer YES again, DUMPER writes at the beginning of  the  tape,
   erasing  anything that is currently written on it.  If you answer that
   this is not a new tape, DUMPER  positions  the  tape  after  the  last
   saveset and appends new files to the existing files.



                                    7-38
                             THE DUMPER PROGRAM


   When the marked files have been transferred,  or  the  end-of-tape  is
   reached,  DUMPER indicates that the operation is complete and notifies
   you that Pass 2 has begun.  Pass 2 is a check to determine  if  DUMPER
   should delete the file contents and update the archive status.  Remove
   the first tape and mount a second tape.  Type another ARCHIVE command.
   The  purpose  of this tape is to write the files again, verify them as
   on the first tape, and then delete the  contents  of  the  files  from
   disk,  unless  the  user  has requested that the contents be retained.
   The files are then marked ;OFFLINE and set  invisible  in  the  user's
   directory.

   To notify users that you have ARCHIVED files,  use  the  /MAIL  switch
   with  the  LIST  command and the MAIL command.  Refer to Section 7.6.1
   for information on these commands.

   Example:

      $DUMPER<RET>
      DUMPER>TAPE (DEVICE) T2:<RET>
      DUMPER>REWIND<RET>
      DUMPER>FILES<RET>
      DUMPER>ARCHIVE (DISK FILES) PS:<TODAY>*.*.*<RET>
       Is this a new tape? YES<RET>
       Are you sure? YES<RET>

       DUMPER tape #1, Fri 2-Jul-84 1354.  ARCHIVE , volid T2

       PS:<TODAY>
         PS:<TODAY>QE5.LIB.1
         PS:<TODAY>QE5.TEC.1

       Pass 2 started.
       Pass 2 completed.


      Total files dumped:       2
      Total pages dumped:       4
      CPU time, seconds:        0.35
      DUMPER>EXIT
      @



   7.6.4  Migrating Files

   According to the procedures of your installation, you can periodically
   migrate  files  (i.e., copy them onto tape and delete them from disk).
   This is not done at the user's request.  It is  a  means  of  clearing
   disk  space  of files that have not been referenced within a specified
   period of time.  It is also a technique for returning  directory  disk
   usage to within its quota.



                                    7-39
                             THE DUMPER PROGRAM


   You must specify a time period with the MIGRATE command to the  REAPER
   program.  When REAPER is run, it marks, for involuntary migration, all
   files that have not been used during that time period.

   After you run REAPER, run DUMPER and use the  MIGRATE  command.   This
   dumps all files marked for migration onto the mounted tape.

   As with archiving, you use  two  tapes  when  migrating  files.   This
   provides a backup system in case one tape is bad or misplaced.  DUMPER
   then follows the same routine as with archiving.   It  first  asks  if
   this is a new tape.  When the files have been successfully migrated to
   the second tape, their contents are deleted from disk.  The files then
   have an ;OFFLINE status in the user's directory.

   To notify users that you have MIGRATED files,  use  the  /MAIL  switch
   with  the  LIST  command and the MAIL command.  Refer to Section 7.6.1
   for information on these commands.



   7.6.5  Retrieving or Restoring Archived and Migrated Files

   Once a file has been archived or migrated, the user cannot access  the
   file  because  its  contents  have  been  deleted from disk (unless he
   specified the subcommand RETAIN with the archive request).   Only  the
   FDB  remains.  The user can, however, request a retrieval of a file by
   using the TOPS-20 RETRIEVE command.  This  creates  an  entry  in  the
   system  retrieval  queue.   (The  queue can be displayed by typing the
   INFORMATION RETRIEVAL-REQUESTS command.) All  retrieval  requests  are
   kept  in order according to the archived or migrated tape information.
   This information consists  of  the  volume  identification,  the  tape
   saveset  number,  and  the  tape  file  number.  When you are ready to
   process the retrieval request  queue,  run  DUMPER  and  use  DUMPER's
   RETRIEVE command:


        DUMPER>RETRIEVE (FILES) file spec<RET>


   If the file specification is omitted, DUMPER processes all requests in
   the queue.  If a file specification is included, only those files that
   match the file specification are processed.  (The  file  specification
   may include wildcards.) For example:

        DUMPER>RETRIEVE (FILES) PS:<TODAY>QE5.LIB<RET>

   When DUMPER selects a file or files for retrieval, it submits a  mount
   request  for  the  tape  containing  the  file(s).   After  you or the
   operator have mounted that tape, DUMPER begins the retrieval process.





                                    7-40
                             THE DUMPER PROGRAM


                                    NOTE

           When processing retrieval requests, you do not need to
           type  the  TOPS-20  command  MOUNT  TAPE or the DUMPER
           command TAPE.  DUMPER automatically requests the tapes
           it needs.

   If you cannot find the appropriate tape, type the OPR  command  CANCEL
   MOUNT-REQUEST.   If  the operator has to refuse the mount request, you
   receive the following message:

        Mount refused by Operator
        [Additional information-opr reason optional]
        Try again?

   If you answer YES, the same tape request is tried again,  even  if  it
   was not available the first time.

   If you answer NO, the following question appears:

        Should I ask about this tape anymore during the run?

   Answering NO means that any other requests for the tape are ignored.

   Answering YES means that additional requests for  the  same  tape  are
   allowed.

   Assuming all  files  can  be  found,  only  one  RETRIEVE  command  is
   necessary  to  process  the  retrieval  queue.   If  the  files  to be
   retrieved are on different tapes,  DUMPER  automatically  unloads  the
   mounted tape and submits a mount request for the next tape it needs.

                                    NOTE

           If you type  RETRIEVE  when  there  are  no  retrieval
           requests  in the queue, DUMPER waits for approximately
           5 minutes.  DUMPER then stops the retrieval and  sends
           the message

                ?Assuming no requests in the retrieval queue.

           Whenever possible, check the queue (with  the  TOPS-20
           command  INFORMATION RETRIEVAL-REQUESTS) before typing
           RETRIEVE.

   Example:

        $RETRIEVE (FILES) PS:<TODAY>QE5.LIB<RET>
         QE5.LIB.1 [OK]
        $DUMPER<RET>
        DUMPER>RETRIEVE (FILES)<RET>
        [Mounting tape volume T2]


                                    7-41
                             THE DUMPER PROGRAM


        [Volume T2 mounted]
          PS:<TODAY>QE5.LIB.1

        Total files restored:     1
        Total pages restored:     1

   If a user deletes the file name from his directory, and therefore  the
   file descriptor block (FDB), and then wishes to retrieve the file, you
   must use the RESTORE command.  When  you  locate  the  file,  you  can
   restore  it  with  or  without the tape information.  This information
   indicates whether the file is archived or migrated, and  if  so,  onto
   which  tapes.  If you do not wish to restore this information with the
   file, type the command RESTORE/NOTAPE-INFORMATION.  To  reinstate  the
   transfer   of  this  information  with  the  file,  type  the  command
   RESTORE/TAPE-INFORMATION.   RESTORE/TAPE-INFORMATION  is  the   DUMPER
   default.

   To notify users that you have RETRIEVED files, use  the  /MAIL  switch
   with  the  LIST  command and the MAIL command.  Refer to Section 7.6.1
   for information on the commands.



   7.7  DUMPER COMMANDS

   This section contains an alphabetical list  of  all  DUMPER  commands.
   Each  listed  command  includes  a  brief  description,  command  type
   (status-setting, action,  or  tape-positioning),  and  description  of
   optional arguments.  Where applicable, there is an indication that the
   command is for privileged users only.



   [NO] ABEFORE (DATE AND TIME) date time                  Status-Setting

        Saves or restores only files that were typed,  printed,  or  read
        (as maintained by .FBREF) before the specified date and time.
        Default:  Date - none; Time - 00:00:01


   ABORT                                                   Action

        Cancels  an  interrupted  CHECK,  RESTORE,  SAVE,   RETRIEVE   or
        tape-positioning  command  and  allows  you to issue a new action
        command.  ABORT can  be  used  only  after  you  have  typed  the
        <CTRL/E>  command.   The  ABORT  command  does not reposition the
        tape.


   ACCOUNT (OF RESTORED FILES FROM) argument               Status-Setting

        Restores files with either the system (SYSTEM-DEFAULT) account or


                                    7-42
                             THE DUMPER PROGRAM


        the account stored with the file (TAPE).
        Default:  TAPE


   ARCHIVE (DISK FILES)                                    Action

        Saves files that have been marked for offline storage.  Archiving
        is voluntary on the part of the user.

        (Privileged User Only)


   [NO] ASINCE (DATE AND TIME) date time                   Status-Setting

        Saves or restores only files that were typed,  printed,  or  read
        (as maintained by .FBREF) since the specified date and time.
        Default:  Date - none; Time - 00:00:01


   [NO] BEFORE (DATE AND TIME) date time                   Status-Setting

        Saves or restores only files that were created  or  modified  (as
        maintained  by  .FBCRV  and .FBWRT) before the specified date and
        time.
        Default:  Date - none; Time - 00:00:01


   CHECK (ALL TAPE FILES)                                  Action

        Checks every File Descriptor Block (FDB) in the  current  saveset
        against   the   FDBs   of   the   corresponding  files  on  disk.
        Corresponding  files  must  have  the   same   name,   structure,
        directory,  type, and generation number for the check to be made.
        The CHECK command cannot be used with the date and time commands.
        (Refer to Table 7-3 for a list of possible differences.)


   [NO] CHECKSUM (FILES) type                              Status-Setting

        Activates or suppresses checksumming during  the  PRINT  command.
        Two types may be specified:  SEQUENTIAL (for INTERCHANGE mode) or
        BY-PAGES (that checks every word of every page).
        Default:  NO CHECKSUM


   CONTINUE                                                Action

        Continues a CHECK, RESTORE, RETRIEVE, or  SAVE,  after  you  have
        interrupted the command with <CTRL/E>.


   [NO] CREATE (DIRECTORIES FROM TAPE DATA)                Status-Setting


                                    7-43
                             THE DUMPER PROGRAM


        Creates or  does  not  create  user  directories  from  directory
        information on the tape.
        Default:  NO CREATE.

        (Privileged User Only)


   <CTRL/A>                                                Action

        Prints one line of status information.  The information  includes
        the command in process, and, for certain operations, the file and
        disk pages DUMPER is currently processing.


   <CTRL/E>                                                Action

        Halts  the  action  of  a  CHECK,  RESTORE,  RETRIEVE,  SAVE,  or
        tape-positioning  command.   DUMPER responds with INTERRUPTING...
        and its prompt.  You then  issue  the  ABORT,  CONTINUE,  or  any
        status-setting command.


   DENSITY (OF MAGTAPE) n                                  Status-Setting

        Sets the tape density to  the  given  number  of  bits  per  inch
        (bits/in):  200, 556, 800, 1600, 6250, or JOB-DEFAULT (set by the
        system command SET TAPE  DENSITY).   If  no  DENSITY  command  is
        given,  DUMPER  uses  the  job default density on the first tape.
        This command has no effect on Labeled tapes.
        Default:  The density listed in the TOPS-20  command  INFORMATION
        (ABOUT) TAPE-PARAMETERS.


   [NO] DIRECTORIES                                        Status-Setting

        Reactivates or suppresses printing, on your  terminal,  directory
        names as DUMPER saves or restores each directory.
        Default:  DIRECTORIES


   EOT                                                   Tape-positioning

        Positions the mounted tape at the end of the last saveset written
        on  the  tape.   DUMPER prints all existing saveset names and the
        message:

             End of Tape


   [NO] EXACT                                              Action

        Saves or restores files without translating  logical  names  into


                                    7-44
                             THE DUMPER PROGRAM


        actual structure names.
        Default:  NO EXACT


   EXIT                                                    Action

        Exits to TOPS-20 command level.  (Same as the QUIT command.)
   [NO] FILES                                              Status-Setting

        Reactivates or suppresses printing file specs on  your  terminal,
        as DUMPER saves or restores each file.
        Default:  NO FILES


   FORMAT (VERSION NUMBER IS) n                            Status-Setting

        Allows DUMPER to read tapes written  with  previous  versions  of
        DUMPER.
        Default:  Version 6


   HELP                                                    Action

        Prints a list of all valid DUMPER commands on your terminal.


   INITIAL (FILESPEC) file spec                            Status-Setting

        Begins a SAVE with the specified file.


   [NO] INTERCHANGE (FORMAT)                               Status-Setting

        Allows or does not allow DUMPER to read tapes  written  with  the
        TOPS-10  BACKUP  program  or  to  write  tapes  to be read by the
        TOPS-10 BACKUP program.  (INTERCHANGE should  not  be  used  when
        writing tapes to be read by another TOPS-20 system.)
        Default:  DUMPER format


   [NO] LIST (LOG INFORMATION ON FILE) file spec           Status-Setting

        Prints or does not print a list, in the specified  file,  of  all
        files as DUMPER saves them.
        Default:  NO LIST
        Default file spec:  LPT:DUMPER.LOG

        The LIST/MAIL command creates a DUMPER-MAIL.TXT file that is used
        with the MAIL command to notify users that you have completed the
        SAVE or RESTORE operation.

        (Privileged User Only)


                                    7-45
                             THE DUMPER PROGRAM


        Default:  /NOMAIL


   MAIL file spec                                          Action

        Sends mail notifying a user that  a  SAVE,  ARCHIVE,  MIGRATE  or
        RETRIEVE has been completed.

        Default:  Last file name used in the LIST/MAIL command.

        (Privileged User Only)


   [NO] MBEFORE (DATE AND TIME) date time                  Status-Setting

        Transfers only files modified  (changed,  created,  appended,  or
        renamed  as  maintained  by .FBCRE) before the specified date and
        time.
        Default:  Time=00:00:01


   MIGRATE                                                 Action

        Saves files that have been marked for involuntary offline storage
        by the REAPER program.

        (Privileged User Only)


   [NO] MSINCE (DATE AND TIME) date time                   Status-Setting

        Transfers only files modified (as maintained by .FBCRE) since the
        specified date and time.
        Default:  Time=00:00:01


   NO DATES                                                Status-Setting

        Disables all the date and time commands at once.   The  date  and
        time  commands  are ABEFORE, ASINCE, BEFORE, MBEFORE, MSINCE, and
        SINCE.


   PARITY (OF MAGNETIC TAPE) parity                        Status-Setting

        Sets the parity of the mounted tape to EVEN or ODD.
        Default:  The parity listed in the  TOPS-20  command  INFORMATION
        (ABOUT) TAPE-PARAMETERS


   PRINT (DIRECTORY OF TAPE ONTO FILE) destination         Action



                                    7-46
                             THE DUMPER PROGRAM


        Records a printed list of file names in the specified file.   The
        list  contains  file  specifications of all existing files on the
        entire tape beginning at the current saveset.
        Default:  Prints on your terminal


   PROTECTION (OF RESTORED FILES FROM) argument            Status-Setting

        Restores files with SYSTEM-DEFAULT protection or protection taken
        from TAPE.
        Default:  TAPE (if the PROTECTION command is omitted).
        Argument Default:  None; you must specify one or the other.


   QUIT                                                    Action

        Exits to TOPS-20 command level.  (Same as the EXIT command.)


   RESTORE (TAPE FILES) source (TO) destination            Action

        Restores the magnetic tape source file(s) to disk with the  given
        destination file specifications.  If you are restoring files from
        a directory other than your connected directory, you must specify
        that  directory in the source file specification.  If files exist
        in the destination directory with the same names and types as the
        files  on  tape,  DUMPER  restores  the  files  according  to the
        specification of the SUPERSEDE command:  ALWAYS, NEVER, OLDER
        Default:  Source file spec = all files  in  the  current  saveset
        that  were  saved under the connected structure and directory; if
        you  are  privileged,  all  files  in  all  directories  on  your
        connected structure.
        Destination file spec = same names and  types  as  the  files  on
        tape.

        (Privileged User Only):

        The FDB of each file contains information that reflects whether a
        file  is archived or migrated, and, if so, the volume identifiers
        of the DUMPER tapes that contain the file.  The /TAPE-INFORMATION
        switch  instructs  DUMPER to restore this information to the FDBs
        of  the  files  that  are  being  restored.   /NOTAPE-INFORMATION
        requests that this information not be restored.
        Default:  /TAPE-INFORMATION


   RETRIEVE (FILES) file spec                              Action

        Instructs DUMPER to process the requests  in  the  system's  file
        retrieval queue.
        Default:  Process all files in the queue



                                    7-47
                             THE DUMPER PROGRAM


        (Privileged User Only)


   REWIND argument                                       Tape-Positioning

        Positions the specified tape at the beginning of  the  tape.   If
        the  argument  is  CURRENT-VOLUME,  DUMPER  rewinds the currently
        mounted tape to the beginning.  If the argument is SWITCHING  (TO
        VOLUME  NUMBER)  n,  DUMPER  releases the currently mounted tape,
        requests volume n of the multi-reel tape set, and rewinds  it  to
        the beginning.
        Default:  CURRENT-VOLUME


   SAVE (DISK FILES) source (AS) destination               Action

        Saves the disk source file(s) onto magnetic tape.  If  all  files
        cannot  fit  on one tape, DUMPER requests that the next volume in
        the set be mounted.
        Default:   Source  file  spec  =  all  files  in  your  connected
        directory; if you are privileged, all files in all directories on
        your connected structure.
        Destination file spec = same names and  types  as  the  files  on
        disk.  (Privileged User Only):

        The following switches can be appended to the SAVE command:

             /FULL-INCREMENTAL for a system backup of all  files.   (This
             also marks all files as having been saved.)

             /INCREMENTAL:n for a daily backup of files that either  have
             not  been  saved  on at least n tapes, or have been modified
             since the last INCREMENTAL or FULL-INCREMENTAL run.
             Default:  /INCREMENTAL:1

             /NOINCREMENTAL for a backup of  all  files.   /NOINCREMENTAL
             overrides the CREATE command.

             /UNLOAD to request that DUMPER unload  the  tape  after  the
             SAVE is complete.

        Default:  /NOINCREMENTAL

                                      NOTE

                Unless one of these switches is  used,  directory
                information is not saved on the tape.



   SET BLOCKING-FACTOR (TO) n (RECORDS)                    Status-Setting



                                    7-48
                             THE DUMPER PROGRAM


        Sets the number of logical records per physical record written on
        tape by DUMPER.  The range must be between 1 and 15.
        Default:  1 record


   SET TAPE-NUMBER (DECIMAL NUMBER) n                      Status-Setting

        Assigns a number to a new tape when you continue a restore  after
        a  crash,  or  when  you  restore  a  file nonsequentially from a
        multi-reel saveset.


   [NO] SILENCE                                            Status-Setting

        Activates or suppresses the printing of directory names and  file
        specifications  on your terminal, as files are saved or restored.
        NO SILENCE is equivalent to FILES and DIRECTORIES.
        Default:  NO FILES, DIRECTORIES


   [NO] SINCE (DATE AND TIME) date time                    Status-Setting

        Transfers only files created or whose contents were changed since
        the specified date and time.
        Default:  Time = 00:00:01


   SKIP (NUMBER OF SAVESETS) n                           Tape-Positioning

        Skips over n savesets.  The skip can  be  directed  forward  (n),
        backwards  (-n),  or to the beginning of the current saveset (0).
        Labeled tapes do not support zero or backward (-n) skips.


   SSNAME name                                             Status-Setting

        Specifies the name to be written in the  saveset  header  on  the
        tape.  The name can be any string of up to 200 characters.  It is
        printed on your terminal whenever you save or restore files.
        Default:  Existing saveset name, if any.


   SUPERSEDE condition                                     Status-Setting

        Sets the condition under which DUMPER rewrites a disk file with a
        magnetic  tape  file  of  the  same name and file type.  You must
        specify one of three conditions:

        1.  ALWAYS - to supersede the file on disk regardless of the last
            write date or generation number of that file.




                                    7-49
                             THE DUMPER PROGRAM


        2.  NEVER - to never supersede the disk file; the specified  file
            is  written  to  disk  only if there is no existing disk file
            with the same name and file type.

        3.  OLDER - to supersede the disk file only when the file on tape
            is  newer  (i.e.,  has  a  later  write  date and/or a higher
            generation number than the file on disk).

        Default:  SUPERSEDE OLDER (if the SUPERSEDE command is omitted)


   TAKE (COMMANDS FROM FILE) file spec                     Action

        Instructs DUMPER to execute commands from the  specified  command
        file.  Commands are executed until the end of the command file is
        reached or until DUMPER encounters an error.   Commands  are  not
        echoed on the terminal as they are processed.


   TAPE (DEVICE) name:                                     Status-Setting

        Specifies the tape device to be used  for  file  transfers.   The
        name  can  be  either  a physical device (MT1:) or a logical name
        (TAPE1:).

                                    NOTE

           If you define the mounted tape as MTA-DUMPER:, you can
           omit the DUMPER command TAPE.  If you use the RETRIEVE
           command you do not need to use the TAPE command.


   TRANSFER                                                Action

        Restores files from tape to disk.  The TRANSFER command  defaults
        to  DSK*:<*>*.*.*  for  an  input  file  specification  and  your
        connected directory for a destination specification.


   UNLOAD

        Used to rewind a tape onto the source reel if  your  installation
        does not have tape drive allocation enabled.



   7.8  DUMPER MESSAGES

   This  section  contains  an  alphabetical  listing  of  all   messages
   generated  by  DUMPER.   Included with most messages are a description
   and a suggested user response.  The messages printed  by  DUMPER  fall
   into  three  general  categories:  warning messages, fatal errors, and


                                    7-50
                             THE DUMPER PROGRAM


   those requiring some action.   Warning  messages  are  preceded  by  a
   percent  sign (%) and indicate that something unexpected occurred, but
   that DUMPER was able to  recover.   In  this  case,  verify  that  the
   process  in  progress  at  the  time of the warning is correct.  Fatal
   errors are preceded by a question mark (?), and indicate an occurrence
   that  DUMPER  could  not  handle.   In  this  case,  DUMPER aborts the
   operation, and you must fix the problem before reissuing your  command
   string.

   In cases where an internal or  system  problem  results  in  an  error
   message,  the  best  (and  usually only) way to deal with the internal
   problem is to contact your Software Specialist or  submit  a  Software
   Performance Report (SPR) to DIGITAL.

   Some of the messages contain information  that  is  dependent  on  the
   exact  command  string or file you specified.  These message variables
   are as follows:

        <action>    A suggested course of action.

        <cmd>       A DUMPER command.

        <dev>       A device name.

        <dir>       The name of a directory.

        <file>      A file specification.

        <n> or <m>  The number of a page or record, or other integer.

        <reason>    The reason for the error.



   [Additional information - <reason>]

        Description:  The Operator gave a reason for  a  tape  not  being
        available.

        Suggested User Response:  Read the reason given  and  follow  the
        action suggested.

   ?Assuming no requests in the retrieval queue

        Description:  A RETRIEVE request was started but QUASAR, a GALAXY
        component,  never sent and retrieval requests.  DUMPER sends this
        message after waiting approximately 5 seconds.

        Suggested   User   Response:    Use   the   INFORMATION   (ABOUT)
        RETRIEVAL-REQUESTS  at  TOPS-20  level  to  see  if there are any
        requests  to  be  processed  before  issuing  a  DUMPER  RETRIEVE
        command.


                                    7-51
                             THE DUMPER PROGRAM


   [At end of tape]

        Description:  DUMPER wrote or read to the end of the  tape.   The
        next message DUMPER types indicates what should be done.

        Suggested User Response:  Do what the DUMPER  message  indicates.
        Most often, you will have to mount a tape.

   %Bad checksum, record <n>

        Description:  A record was read with a bad checksum.

        Suggested User Response:  Make a note of the  record  number  and
        file  being  restored.  If the file is not restored properly, try
        restoring again, possibly from  another  tape  or  on  a  cleaner
        drive.

   %Bad definition for MTA-DUMPER:, ignored

        Description:  DUMPER found MTA-DUMPER defined, but the definition
        did not refer to a tape drive.

        Suggested  User  Response:   Exit  DUMPER  and  either   redefine
        MTA-DUMPER or undefine it.

   %Bad physical record length, record <n>

        Description:  The record DUMPER just read does not appear to be a
        DUMPER record.

        Suggested User Response:  You may  be  encountering  one  of  the
        following  conditions:   reading  past  the  end of an incomplete
        saveset; you have a damaged tape; you have a dirty or  misaligned
        tape  drive  or,  the  tape  was not written by DUMPER or BACKUP.
        Check these conditions before attempting the command again.

   [Before and since commands are still in effect]

        Description:  This is an informational message telling  you  that
        date  and  time  commands you used during other DUMPER operations
        are still in effect.

        Suggested User Response:  If  you  want  to  keep  the  commands,
        ignore this message.  Otherwise, disable or change the commands.

   ?Can't change tape settings mid-tape, please rewind first

        Description:  You tried to change  the  tape  density  or  parity
        after you started to read or write the tape.

        Suggested User Response:  REWIND the tape before you change  tape
        density or parity.


                                    7-52
                             THE DUMPER PROGRAM


   ?Can't open magtape - <reason>

        Description:  DUMPER is unable to access the drive in the mode it
        needs to process your command.

        Suggested User Response:  The reason for this message is  usually
        one  of  the  following:   the  drive  is  offline,  the drive is
        write-protected, or the device is assigned to another  job.   Fix
        the condition and try again.

   %Can't read <file> - <reason>

        Description:  DUMPER tried to dump a file to tape  but  found  it
        could  not  open  it for read access.  DUMPER has tried both read
        and read unrestricted.

        Suggested User Response:  You may not have read  access  for  the
        file  or the file may be corrupted.  It is also possible that you
        have not enabled your privileges.  If this is  the  case,  enable
        your privileges and try again.

   ?Can't step to next file - <reason>

        Description:  DUMPER cannot save any more files because there  is
        damage to the disk.  The command is aborted.

        Suggested User Response:  Contact Digital Field Service.

   ?Can't switch to next tape volume - <reason>

        Description:  The next tape in the tape set is not available.

        Suggested User Response:  The command is aborted when you receive
        this  message.   If  you  were  performing a write operation, the
        saveset will have to be rewritten after the problem is fixed.

   %Data write error, record <n>

        Description:  DUMPER wasn't able to write a record properly.

        Suggested User Response:  You do not have to take any action when
        you receive this error.  DUMPER leaves the bad record on tape and
        tries to write a duplicate record as the next record.

   %Deleting <file> while superseding

        Description:  DUMPER is warning you that files had to be  deleted
        to perform a SUPERSEDE ALWAYS during a RESTORE.

        Suggested User Response:  This is an informational message.   You
        do  not  have  to  take  any  action.  If you want to recover the
        deleted file, try the  UNDELETE  command  after  the  restore  is


                                    7-53
                             THE DUMPER PROGRAM


        finished  and  see if the file can be undeleted.  If it cannot be
        undeleted, the file is lost.

   ?Device must be DISK

        Description:  For a RESTORE or  SAVE  command,  you  specified  a
        device other than DISK.

        Suggested User Response:  Specify a device as the device and  try
        again.  DUMPER only saves and restores disk files.

   ?Directory <dir> not created - <reason>

        Description:  DUMPER could not create the directory specified  in
        <dir>.

        Suggested User Response:  Read the reason to determine what to do
        to correct the problem.

   %Directory specifications differ  -  not  saving  directory  info  on:
        <dir>

        Description:  You are using the  CREATE  command  with  the  SAVE
        command  and  your  destination directory file specification does
        not include your source directory.

        Suggested User Response:  If you use the CREATE command with  the
        SAVE  command,  make  sure  that  your destination directory file
        specification includes your source  directory.   You  may  use  a
        wildcard  for  your destination directory.  The CREATE command is
        used for tapes that will be used to recreate directories.

   ?DUMPER doesn't support that tape format

        Description:  You set a tape format to a value less than 4

        Suggested User Response:  If you have a tape  with  a  format  of
        less  than  4,  the  tape  was not written by a Digital supported
        version of DUMPER.  Either do not use the FORMAT command or  else
        use the FORMAT 4 command.

   [Ending <file>]

        Description:  DUMPER  is  informing  you  that  it  has  finished
        reading a TAKE command file.

        Suggested User Response:  You do not have to take any action.  If
        you  do  not want to see this message, end your command file with
        TAKE followed by a carriage return <RET>.

   ?EOT on first record, try a rewind



                                    7-54
                             THE DUMPER PROGRAM


        Description:  DUMPER encountered an end of tape  record  or  mark
        when it first started reading.

        Suggested User  Response:   First  try  REWIND.   If  the  REWIND
        doesn't  succeed,  it  is  likely that the tape you are using has
        just been initialized and has never been written to.

   %<error> - <file>

        Description:  DUMPER is not saving a file.  The  error  is  given
        before the name of the file.

        Suggested User Response:  Correct your file command according  to
        the reason given and reissue the command.

   ?Error writing LIST file, list file ended

        Description:  DUMPER encountered problems while writing the  LIST
        file  and has aborted the file.  The command continues to process
        but the list file ends.

        Suggested User Response:  Try another list  file  or  check  your
        directory  quotas to make sure you have enough space for the LIST
        file.

   %Excessive retries in writing record, continuing...

        Description:  DUMPER encountered problems in  writing  a  record.
        DUMPER  wrote  the record multiple times and is now moving to the
        next record.

        Suggested User Response:   Note  the  record  that  did  not  get
        written  properly.  Previous error messages tell you which record
        it is.  Since the problem may be due to a bad spot on  the  tape,
        you may want to perform another save on a new tape.

   %Failed to create <dir> - <reason> - RETRYING

        Description:   DUMPER  encountered  the  problem   described   in
        <reason>  while  trying  to  create a directory.  DUMPER tries to
        correct the error and create the directory again.

        Suggested User Response:  You do not have  to  take  any  action.
        DUMPER  will  try  to correct the problem.  The directory created
        may be missing some information.  The  <reason>  portion  of  the
        message indicates what did not work.

   %Failed to restore <file> because:  <reason>

        Description:  A RETRIEVE command did not work properly.

        Suggested  User  Response:   Read  the  reason  and  correct  the


                                    7-55
                             THE DUMPER PROGRAM


        problem.  Then try the command again.

   %File <file> needed to be opened unrestricted.

        Description:  DUMPER tried to dump a file to tape but  could  not
        open the file for READ.  UNRESTRICTED READ, however, worked.

        Suggested User Response:  Try to avoid dumping files to tape that
        might  be  opened  for  write.   The  error  message is caused by
        someone writing to the file while you were doing  a  SAVE.   This
        message has information only.  It indicates that a saved file may
        be different.

   %File <file>not found

        Description:  DUMPER, while performing a CHECK, found a  file  on
        tape but could not find the corresponding file on disk.

        Suggested User Response:  Check to see if the file  is  on  disk.
        It may have been deleted.

   ?Illegal data mode or density for this controller

        Description:  The tape drive does not  work  with  the  specified
        density or mode.

        Suggested User Response:  Use the system default for  density  or
        mode if you encounter this problem.

   ?Illegal file specification

        Description:  You typed an illegal file specification.

        Suggested User Response:  Retype the  command  with  the  correct
        file name.

   ?Illegal LIST file choice

        Description:  DUMPER encountered a problem with your LIST file

        Suggested User Response:  Be sure you are listing files to a disk
        file or terminal and not to the tape you are saving.

   ?Illegal PRINT file choice

        Description:  DUMPER encountered a problem with  the  PRINT  file
        you specified.

        Suggested User Response:  Be sure you have specified a PRINT file
        that  will be written to disk or terminal and not to the tape you
        are reading.



                                    7-56
                             THE DUMPER PROGRAM


   ?Illegal tape type

        Description:  TOPS-20 only supports TOPS-20 and ANSI  labeled  or
        unlabeled tapes.

        Suggested User Response:  Check to make sure  you  are  using  an
        unlabeled  tape,  a TOPS-20 or an ANSI tape and try the operation
        again.

   ?Illegal to read a labeled tape this way

        Description:  Tape labels are being sent directly to DUMPER

        Suggested User Response:  Either do  not  read  the  tape  on  an
        assigned  drive,  or  do not specify /LABEL:BYPASS when you mount
        the tape.

   %Illegal value for format, assuming 4

        Description:  DUMPER does not support the value  written  on  the
        tape  as the format value.  The tape may not have been written by
        DUMPER or the tape may be damaged.

        Suggested User Response:  This message needs no action.   If  you
        see  many  error  messages following this message, you may have a
        damaged tape or a misaligned tape drive.

   ?In command <cmd>

        Description:  DUMPER is reading a command from a  TAKE  file  and
        cannot  process the next command.  The information in brackets is
        the command that DUMPER could not process.

        Suggested User Response:  Correct the command  indicated  in  the
        <cmd> field of the error message and try the command again.

   ?In file <file>

        Description:  DUMPER is reading a TAKE file  and  cannot  process
        the  next  command.   The  information  in  brackets  is the file
        containing the command that DUMPER could not process.

        Suggested User Response:  Correct the command  indicated  in  the
        <file> field of the error message and try the command again.

   ?INTERCHANGE  tapes  of  BLOCKING-FACTOR  other  than  1  are  illegal
        Description:  DUMPER cannot read the tape.  The tape has not been
        written  properly  for  an  interchange  tape.   Suggested   User
        Response:   Rewrite  the tape using BACKUP with a BLOCKING-FACTOR
        of 1.

   [Interrupt ignored]


                                    7-57
                             THE DUMPER PROGRAM


        Description:  You typed a <CTRL/A> or a <CTRL/E>  as  DUMPER  was
        completing a command.

        Suggested User Response:  You do not need  to  take  any  action.
        DUMPER ignored the <CTRL/A> or <CTRL/E>.

   ?JFN LIST overflow
   ?<error> - No more JFNs available

        Description:  You  have  specified  too  many  filenames  in  one
        command.   DUMPER  allows approximately 30 filenames per command.
        A wildcard specification, however, is counted as one filename.

        Suggested User Response:  Correct your  command  file  by  either
        removing  some  of  the filenames or using a wildcard and try the
        command again.

   ?May not change INTERCHANGE state mid-tape, please REWIND first

        Description:  DUMPER cannot read or write tapes  that  have  both
        INTERCHANGE and NO INTERCHANGE savesets.

        Suggested User  Response:   Correct  your  command  and  try  the
        command again.

   ?May not read from this saveset without WHEEL or OPR

        Description:  Privileges are required to read this saveset.

        Suggested User Response:  Enable your privileges, reposition  the
        tape, and try the command again.

   [Mounting next tape volume]

        Description:  DUMPER is ready to read the next tape in the set.

        Suggested User Response:  Mount or have the  operator  mount  the
        next tape volume in the saveset.

   [Need to mount next retrieval tape]
   Provide the volid of the next retrieval tape in the set

        Description:  DUMPER is doing a RETRIEVE and needs  the  rest  of
        the file, which is on another tape.

        Suggested User Response:  Type the volid (volume id) of the  next
        tape  in  the set.  DUMPER then mounts this tape and finishes the
        RETRIEVE.

   %No files dumped

        Description:  The SAVE command did not dump any files to tape.


                                    7-58
                             THE DUMPER PROGRAM


        Suggested User Response:  Check your SAVE command  to  make  sure
        you have typed it correctly.

   ?No freespace

        Description:   This  message  indicates  a  problem  internal  to
        DUMPER.

        Suggested User Response:  Contact your Digital  Software  Service
        Representative.

   ?No such <cmd> option

        Description:  You typed an option to DUMPER command  that  DUMPER
        doesn't understand.

        Suggested User Response:  Check our command line for  the  error.
        You  can  type HELP to see the options that DUMPER accepts.  Then
        try the command again.

   ?Not a defined command

        Description:  You typed a command  incorrectly  or  you  typed  a
        command that is not a DUMPER command.

        Suggested User Response:  Correct your command and try it again.

   %Not loading <file> - <reason>

        Description:  This message means that DUMPER is not  restoring  a
        file that you specified in a RESTORE command.

        Suggested User Response:  Check to make sure that this  file  has
        not  been  ARCHIVED.   If the file has been ARCHIVED, the RESTORE
        command will not work.

   ?Only one file specification is allowed

        Description:   Some  DUMPER  commands  accept   only   one   file
        specification.   You have typed a multiple file specification and
        DUMPER cannot process it.

        Suggested User Response:   Correct  the  problem  and  issue  the
        command again.

   %Requeuing <file>

        Description:  DUMPER was not able to finish  a  RETRIEVE  from  a
        specific tape.

        Suggested User Response:  You do not need  to  take  any  action.
        DUMPER  requeues  the  request  and  tries  to  get the file from


                                    7-59
                             THE DUMPER PROGRAM


        another tape.

   [Restoring BLOCKING-FACTOR to <n>]

        Description:  You enabled INTERCHANGE  mode  at  some  point  and
        DUMPER   set   the   BLOCKING-FACTOR   to   1.    Your   previous
        BLOCKING-FACTOR was saved.  You have since  disabled  INTERCHANGE
        mode and DUMPER is reverting to your previous BLOCKING-FACTOR.

        Suggested User Response:  You do not  have  to  take  any  action
        unless you wish to change the BLOCKING-FACTOR to another value.

   %Retrieve aborted

        Description:  QUASAR, a  GALAXY  component,  aborted  a  RETRIEVE
        action.

        Suggested User Response:  A user probably canceled  his  request.
        No action is necessary.

   %Sequence error, <n> after <m>

        Description:  DUMPER encountered an error reading the tape.  This
        could  be caused by a damaged tape.  Data may be missing from the
        file being restored.  It is also possible that  you  are  reading
        from an incomplete saveset.

        Suggested User Response:  If you  are  sure  that  the  tape  was
        written  properly,  and  DUMPER  does  not  report any other tape
        errors, submit a Software Performance Report (SPR).

   [Starting from <file>]

        Description:  This message is generated by the SAVE command after
        an  INITIAL command was given.  The name specified in <file> will
        be the first file saved on the tape.

        Suggested User Response:  There is no action you  need  to  take.
        This is confirmation of your INITIAL command.

   %Structure not mounted, skipping file <file>

        Description:  DUMPER tried to retrieve a  file  that  was  on  an
        unmounted structure.

        Suggested User Response:  Mount the structure and try the command
        again.

   ?TAKES nested too deeply, aborting

        Description:  You had TAKE commands nested too deeply.



                                    7-60
                             THE DUMPER PROGRAM


        Suggested User Response:  Remove the last TAKE in the  series  of
        TAKES  in  your  command file and try your command file again, or
        you can continue manually from the point that your  command  file
        aborted.

   ?Tape blocking-factor is already set to <n>, please rewind first

        Description:  You tried to change the tape blocking-factor  after
        you began to read or write a tape.

        Suggested User Response:   Set  the  blocking-factor  before  you
        write a tape.  Do not try to change it in the middle of a tape.

   ?Tape is write-protected.  <action>

        Description:  The tape is write  locked  and  you  typed  a  SAVE
        command.

        Suggested User Response:  Place a write  ring  in  the  tape  and
        mount the tape /WRITE-ENABLED.

   ?Tape number incorrect (wrong tape mounted)

        Description:  DUMPER is telling you that the tape just mounted is
        not the next tape in the series.

        Suggested User Response:  Put the tapes in the proper  order  and
        try the command again.

   ?Tape number must be positive

        Description:  You have typed an invalid number, such as 0, for  a
        tape number.

        Suggested User  Response:   Specify  a  tape  number  that  is  a
        positive number.

   %Tape went offline, <action>

        Description:  The tape drive went offline while DUMPER was  using
        it.

        Suggested User Response:  Do what  is  indicated  in  the  action
        portion  of the message.  You may have to remount the tape or put
        the drive back online.  If a  question  mark  (?)  precedes  this
        message, you have to start your command over.

   ?That BLOCKING-FACTOR is illegal

        Description:  You specified a value that was not  between  1  and
        15.  DUMPER accepts values only between 1 and 15.



                                    7-61
                             THE DUMPER PROGRAM


        Suggested User Response:  Specify a value between 1  and  15  and
        try your command again.

   ?That requires WHEEL or OPR privs

        Description:  You tried to perform a privileged  command  without
        enabling your privileges.

        Suggested User  Response:   Enable  your  privileges  or  do  not
        attempt to issue the command.

   ?The <cmd> command will not be legal until ABORT <cmd> is typed.
                                a command is interrupted by CTRL/E.

        Description:  You typed a command that is  either  not  available
        until after a <CTRL/E> is issued, or the command is not available
        at the interrupt prompt.

        Suggested User Response:  Before you type a new action command to
        an interrupted command, be sure to type the ABORT command.

   %The date and time given have not yet occurred

        Description:  You entered a date and time in one of the date  and
        time commands that hasn't occurred yet.

        Suggested User Response:  Set the time to a time that has passed.
        If  you  leave  the  command  as  you have typed it, no files are
        transferred.

   %This appears to be a BACKUP tape, turning on INTERCHANGE mode

        Description:  To read this tape, INTERCHANGE mode must be  turned
        on.

        Suggested User Response:  You do not need  to  take  any  action.
        DUMPER turns on INTERCHANGE mode for you.

   %This appears to be a DUMPER tape, turning off INTERCHANGE mode

        Description:  To read this tape, INTERCHANGE mode must be  turned
        off.

        Suggested User Response:  You do not need  to  take  any  action.
        DUMPER turns off INTERCHANGE mode for you.

   ?This doesn't appear to be a DUMPER or BACKUP tape, <action>

        Description:  DUMPER could not read the tape.

        Suggested User Response:  Rewind the tape  and  try  to  read  it
        again.  If this does not work, check to make sure you are using a


                                    7-62
                             THE DUMPER PROGRAM


        DUMPER or BACKUP tape.

   %This is a labeled tape with labels passed

        Description:  Tape labels are being passed  directly  to  DUMPER.
        This is allowed only when privileges are enabled.

        Suggested User Response:  Only do this is GALAXY  is  unavailable
        and  files  must  be  restored.   This is not a Digital-supported
        procedure.

   ?This tape is full.  Please mark it.

        Description:  DUMPER found there was no more room on the tape.

        Suggested User Response:  Mark the tape full, and continue with a
        new tape.

   %Unrecovered data error, record <n>

        Description:  DUMPER encountered an error reading the tape.

        Suggested User Response:  Check the file being restored when  the
        RESTORE  is  complete.   If  there  are errors, try to restore it
        again from another tape or on a cleaner drive.

   %User directory is no longer valid, <file>

        Description:  DUMPER tried to retrieve a file and  did  not  find
        the directory.  The file is not restored.

        Suggested User Response:  If you need the file, do a RESTORE.






















                                    7-63
























































                                    8-1











                                 CHAPTER 8

                                   PLEASE



   8.1  INTRODUCTION

   The PLEASE program allows you to communicate either with  your  system
   operator  or  with  a remote-node operator.  For instance, you may ask
   the operator to perform a task or ask for information about  your  job
   or the system, or give the operator information about your job.

                                    NOTE

           The PLEASE command that you use in a  batch  job  does
           not function like the timesharing PLEASE program.  For
           information on using the PLEASE  command  in  a  batch
           job,  refer  to  the  TOPS-10/TOPS-20  Batch Reference
           Manual.



   8.2  SWITCHES USED WITH PLEASE

   The PLEASE program has two switches:

   /HELP                    prints information about this program on your
                            terminal

   /NODE:node-name::        specifies the  node  name  of  the  operator,
                            other  than  your  system  operator, that you
                            wish to communicate with.  You must terminate
                            the node name with two colons (::).



   8.3  MESSAGE TERMINATORS USED WITH PLEASE

   <RET>                    the only terminator  for  a  message  on  the
                            PLEASE  command  line.   (The message must be
                            limited to a single line.)



                                    8-1
                                   PLEASE


   <ESC>                    a valid terminator only for a  message  being
                            sent in dialogue mode.  It indicates that you
                            do not expect a reply,  and  returns  you  to
                            system level.

   <CTRL/Z>                 a valid terminator for a message  being  sent
                            in dialogue mode.  It indicates that you want
                            to wait for a reply from the operator.



   8.4  RUNNING PLEASE

   To send a message to your own system operator, you can use  PLEASE  in
   either the DIALOGUE or MESSAGE mode.

   The simplest way to enter DIALOGUE Mode is to type PLEASE, followed by
   a  one-line  message,  and  then  press  RETURN.   The  PLEASE program
   acknowledges the message and notes the time your operator received it.
   You then see your operator's reply.  That is followed by a prompt from
   PLEASE, which indicates that you are now  in  DIALOGUE  mode  and  can
   respond  with  one  or  more  additional messages, as in the following
   example:

        @PLEASE When is the system scheduled to go down?<RET>
        [PLSOPN Operator at KL2102 has been notified at 10:04:42]
        10:05:58  From Operator at terminal 3
               => At noon
        Enter text, terminate with CRTL/Z to wait for response
        Or ESC to send message and Exit 
        Thank you <ESC>
        @

   To terminate DIALOGUE mode, you press ESC after your  final  reply  to
   the  operator  in  order to return to the system level.  In this case,
   the user has chosen to end the interchange by  thanking  the  operator
   and typing <ESC> to return to the system level.

   The second way to communicate with your own operator in DIALOGUE  Mode
   is  to  type  PLEASE  and  then press RETURN.  You enter DIALOGUE mode
   immediately and receive the PLEASE prompt for your message, as

        @PLEASE<RET>
        Enter text, terminate with CTRL/Z to wait for response
        Or ESC to send message and exit<RET>

        When is the system scheduled to go down?<CTRL/Z>

   To communicate with a remote-node operator,  type  PLEASE,  the  /NODE
   switch,  and the node name of the remote operator, and press RETURN to
   enter dialogue mode and receive the PLEASE prompt for your message, as



                                    8-2
                                   PLEASE


   @PLEASE/NODE:node-name::<RET>
   Enter text, terminate with CTRL/Z to wait for response
   Or ESC to send message and exit<RET>

   From the point where you enter DIALOGUE mode and receive  the  message
   prompt,  messages  to  both  your  own  operator  and to a remote-node
   operator follow the same format.

   If you do not need a reply from the operator, use MESSAGE mode.  After
   you have accessed PLEASE and typed your message, type <ESC> to end the
   message.  PLEASE acknowledges that  the  message  has  been  sent  and
   records the time the operator received it, before returning you to the
   system level, as

   @PLEASE I am leaving here at 4 today<ESC>
   [PLSOPN Operator at KL2102 has been notified at 11:00:03]

   In this example, you have sent a message to the operator and have been
   immediately  returned  to the system level.  You are not requesting an
   immediate reply.



   8.5  PLEASE MESSAGES

   Following  is  an  alphabetized   list   of   the   PLEASE   messages.
   Informational   messages  are  enclosed  in  brackets  ([]).   Warning
   messages are preceded by a percent sign  (%);  for  these,  processing
   will  continue  but  perhaps not in the way you intended.  Fatal error
   messages are preceded by  a  question  mark  (?);  such  messages  may
   terminate the program.

   Each message is followed by a brief explanation of the problem you may
   encounter, which may in itself tell you what you need to do to correct
   it.  In most cases, simply trying the procedure again is sufficient to
   correct the problem.  In some cases, though, you may need to call your
   Software Specialist.


   ?PLSBHR - Bad help request, use PLEASE/HELP

   Reminder:  Use no other text after PLEASE/HELP.


   ?PLSCME - Command error

   Description:  You typed an invalid command.


   ?PLSEFO - Error from ORION

   Description:  ORION, which is the message dispatcher, has  received  a


                                    8-3
                                   PLEASE


   message from PLEASE which it cannot send on to the operator.  Possibly
   you typed a message containing format errors (size, text, etc.)


   ?PLSEPM - Error in parsing message

   Description:  You terminated a PLEASE command  line  improperly.   The
   only legal command-line terminator is carriage return <RET>.


   %PLSNHA - No help available

   Description:  The program cannot find the HLP:PLEASE.HLP file.  It may
   not be in the right place and hence not in the system search list.

   Suggested user response:  Check whether the file  was  properly  taken
   off the distribution tape, or whether it is incorrectly protected from
   you, or whether there may be a physical device error.


   ?PLSNIN - Node name user typed not in network,  or  specified  without
   trailing double colon

   Description:  You either specified a node name that does not exist  or
   you improperly terminated a node name.


   %PLSNOP - No operator in attendance

   Description:  The system is unattended.  However, your message will be
   sent  to  the  operator,  and  PLEASE will notify you at what time the
   operator received it.


   [PLSOPN - Operator at [node:name] has been notified at [time] ]

   Description:   PLEASE  simply  notifies  you  that  the  operator  has
   received your message.


   ?PLSSSE - Switch syntax error

   Description:  you gave a command that contains an illegal switch, or a
   switch delimiter (a slash) with no switch name following it.


   ?PLSSUT - Switch used twice

   Reminder:  You can use a switch only once in a given command.


   ?PLSUMO - Unrecognized message from ORION


                                    8-4
                                   PLEASE


   Description:  ORION has responded with an unknown message  instead  of
   the  response you expected from the operator.  Perhaps you are running
   an old version of PLEASE.  (Check the title page of  this  manual  for
   the current version number.)


















































                                    8-5
                                        
























































                                    8-6
                                        


                                   INDEX



               -A-                                 -C-
    
   /A switch                           /C switch
     CREF, 5-4                           CREF, 5-4
     FILCOM, 4-3                         FILCOM, 4-4
   ABEFORE command, 7-9, 7-42          CHECK command, 7-9, 7-28, 7-43
   ABORT command, 7-32, 7-42           CHECKSUM command, 7-19, 7-43
   ACCOUNT command, 7-15, 7-42         Command strings
   Action commands DUMPER, 7-7 to        CREF, 5-3
       7-13, 7-23 to 7-32                FILCOM, 4-1
   /ALL switch, 3-5                      MAKLIB, 6-4, 6-7, 6-13, 6-18,
   .ALTER pseudo-op, 6-20                    6-25
   /APPEND switch, 6-8                 Comparing ASCII and Binary files,
   ARCHIVE command, 7-33, 7-38, 7-43       4-1
   Archiving files, 7-1, 7-3, 7-33,    Computing checksums, 7-19
       7-38                            CONTINUE command, 7-32, 7-43
   ASCII comparisons, 4-4              CREATE command, 7-35, 7-37, 7-44
     Blank lines in, 4-4               CREF
     Ignoring comments, 4-4              Advancing tape, 5-4
     Ignoring spaces, 4-4, 4-5           Backspacing tape, 5-4
     Including labels and offsets,       Canceling switches, 5-4
         4-4                             Command strings, 5-3
     Output file, 4-5                    Error messages, 5-10
     Printing status only, 4-5           File specifications, 5-3
     /Update mode, 4-5                   HELP, 5-4
   ASINCE command, 7-10, 7-43            Including Op Code table, 5-4
   Assigning tape drives, 7-4            Indirect files, 5-5
   .ASSOCIATED pseudo-op, 6-20           Listing selected tables, 5-4
                                         Moving to end of tape, 5-4
                                         Octal codes in error messages,
               -B-                           5-14
                                         Preserving input files, 5-4
   /B switch                             Requesting starting line number,
     CREF, 5-4                               5-4
     FILCOM, 4-4                         Status codes in error messages,
   Backing up system files, 7-1,             5-14
       7-33, 7-35                        Suppressing OPDEF/Macro table,
   Batch jobs                                5-4
     MAIL, 2-7                           Suppressing symbol table, 5-4
     PLEASE command, 8-1                 SWITCH.INI file, 5-5
   BEFORE command, 7-9, 7-43             Used as a command, 5-5
   Binary comparisons, 4-9               Used as a program, 5-5
     Expanding save files, 4-10        CREF switches
     Nonstandard file types, 4-9         Alphabetical listing, 5-4
     Output files, 4-9                 .CRF files, 5-15
     Printing status, 4-9                COMPILE command, 5-1
     Sharable save files, 4-9            Control characters, 5-15, 5-16
   Binary file types, 4-2                Creating, 5-1


                                  Index-1
                                        


   .CRF files (Cont.)                  DUMPER commands (Cont.)
     Input file format, 5-15             EXIT, 7-7, 7-45
   Cross-reference listings, 5-1         FILES, 7-13, 7-45
     table types, 5-3                    FORMAT, 7-17, 7-45
   <CTRL/A> command, 7-30, 7-44          HELP, 7-45
   <CTRL/E> command, 7-31, 7-44          INITIAL, 7-20, 7-45
                                         INTERCHANGE, 7-3, 7-16, 7-17,
               -D-                           7-45
                                         LIST, 7-14, 7-45
   /D switch, 5-4                        MAIL, 7-36
   .DATE pseudo-op, 6-20                 MBEFORE, 7-10, 7-46
   Deassigning tape drives, 7-4          MIGRATE, 7-40, 7-46
   /DELETE switch, 6-10                  MSINCE, 7-10, 7-46
   DENSITY command, 7-16, 7-44           NO DATES, 7-10, 7-46
   Dialogue Mode in PLEASE, 8-2          PARITY, 7-16, 7-46
   DIRECTORIES command, 7-12, 7-44       PRINT, 7-30, 7-31, 7-47
   Dismounting tapes, 7-5                PROTECTION, 7-15, 7-47
   DUMPER                                QUIT, 7-7, 7-47
     Action commands, 7-7 to 7-13,       RESTORE, 7-23, 7-26, 7-47
         7-23 to 7-32                    RETRIEVE, 7-40, 7-47
     Command files, 7-31                 REWIND, 7-21, 7-48
     Date and time commands, 7-8 to      SAVE, 7-23, 7-24, 7-33, 7-35,
         7-13                                7-48
     Error messages, 7-50                SET BLOCKING-FACTOR, 7-16, 7-49
     File specifications, 7-23, 7-26,    SET TAPE-NUMBER, 7-20, 7-49
         7-28, 7-38                      SILENCE, 7-15, 7-49
     Interrupting commands, 7-31         SINCE, 7-10, 7-49
     Printing file specifications,       SKIP, 7-22, 7-49
         7-31                            SSNAME, 7-19, 7-49
     Status-setting commands, 7-7 to     SUPERSEDE, 7-11, 7-27, 7-49
         7-13                            TAKE, 7-31, 7-50
     Tape-positioning commands, 7-7      TAPE, 7-15, 7-50
         to 7-13, 7-20 to 7-23           TRANSFER, 7-28, 7-38, 7-50
   DUMPER command                        UNLOAD, 7-23, 7-50
     EXACT, 7-28, 7-45                 DUMPER switches
   DUMPER commands                       /FULL-INCREMENTAL, 7-33, 7-48
     ABEFORE, 7-9, 7-42                  /INCREMENTAL, 7-33, 7-48
     ABORT, 7-32, 7-42                   /LABEL-TYPE, 7-6
     ACCOUNT, 7-15, 7-42                 /MAIL, 7-36, 7-45
     Alphabetical listing, 7-42          /NOINCREMENTAL, 7-34, 7-48
     ARCHIVE, 7-33, 7-38, 7-43           /UNLOAD, 7-34, 7-48
     ASINCE, 7-10, 7-43                  /VOLIDS, 7-6
     BEFORE, 7-9, 7-43
     CHECK, 7-9, 7-28, 7-43
     CHECKSUM, 7-19, 7-43                          -E-
     CONTINUE, 7-32, 7-43
     CREATE, 7-35, 7-37, 7-44          /E switch, 4-9
     <CTRL/A>, 7-30, 7-44              .EDIT pseudo-op, 6-20
     <CTRL/E>, 7-31, 7-44              Edits
     DENSITY, 7-16, 7-44                 listing library file, 6-6
     DIRECTORIES, 7-12, 7-44           .ENDE pseudo-op, 6-23
     EOT, 7-21, 7-44                   .ENDI pseudo-op, 6-23


                                  Index-2
                                        


   Entry points in library files,      File specifications, 1-2
       6-5                               CREF, 5-3
   EOT command, 7-21, 7-44               DUMPER, 7-23, 7-26, 7-28, 7-38
   Error messages                        FILCOM, 4-1
     CREF, 5-10                          MAKLIB, 6-3, 6-4, 6-7, 6-18,
     DUMPER, 7-50                            6-25
     FILCOM, 4-14                      FILES command, 7-13, 7-45
     MAIL, 2-7                         .FIX files, 6-19
     MAKLIB, 6-27                        Code format, 6-45
     PLEASE, 8-3                         pseudo-ops, 6-20
     RDMAIL, 3-8                       /FIX switch, 6-6, 6-25
   EXACT command, 7-28, 7-45           FORMAT command, 7-17, 7-45
   Executable programs, 6-1            /FULL-INCREMENTAL switch, 7-33,
   EXIT command                            7-48
     DUMPER, 7-7, 7-45
   /EXTRACT switch, 6-11                           -H-
    
                                       /H switch
               -F-                       CREF, 5-4
                                         FILCOM, 4-4, 4-9
   FILCOM                              HELP
     Binary comparisons, 4-9             CREF, 5-4
     Binary file types, 4-2              DUMPER, 7-45
     Command strings, 4-1                FILCOM, 4-4
     Error messages, 4-14              /HELP switch
     File specifications, 4-1            PLEASE, 8-1
     Help, 4-4                           RDMAIL, 3-5
     Logical names, 4-2
   FILCOM ASCII switches
     /A, 4-3                                       -I-
     /B, 4-4
     /C, 4-4                           /INCREMENTAL switch, 7-33, 7-48
     /H, 4-4                           Index block, 6-18
     /nL, 4-4                          /INDEX switch, 6-18
     /O, 4-4                           Indirect files
     /Q, 4-5                             CREF, 5-5
     /S, 4-5                             MAIL, 2-5
     /T, 4-5                           INITIAL command, 7-20, 7-45
     /U, 4-5                           .INSERT pseudo-op, 6-21
   FILCOM Binary switches              /INSERT switch, 6-13
     /E, 4-9                           INTERCHANGE command, 7-3, 7-16,
     /H, 4-9                               7-17, 7-45
     /nL, 4-9
     /nU, 4-9
     /Q, 4-9                                       -J-
     /T, 4-9
     /W, 4-9                           Job file number (JFN), 7-2
     /X, 4-10
   FILCOM switches
     Alphabetical listing, 4-12                    -K-
   File Descriptor Block (FDB)
       entries, 7-28                   /K switch, 5-4


                                  Index-3
                                        


               -L-                     MAKLIB (Cont.)
                                         Command strings, 6-4, 6-7, 6-13,
   /LABEL-TYPE switch, 7-6                   6-18, 6-25
   Labeled tapes, 7-3, 7-6               Editing modules, 6-44
   Libraries                             Error messages, 6-27
     Changing, 6-2                       File specifications, 6-3, 6-4,
     Creating, 6-10                          6-7, 6-18, 6-25
     Deleting local symbols, 6-18        Inserting code, 6-21
     Deleting modules, 6-10            MAKLIB pseudo-ops
     Editing, 6-2, 6-6, 6-19, 6-44       .Fix file assembler, 6-23
     Entry points, 6-5                   .FIX files, 6-20
     Identify master modules, 6-8        .REINSERT, 6-6
     Information about, 6-2, 6-4         .REMOVE, 6-6
     Inserting new modules, 6-13       MAKLIB switches
     Modifying, 6-2, 6-18                Alphabetical listing, 6-26
     Producing subsets, 6-11             /APPEND, 6-8
     Replacing modules, 6-16             /DELETE, 6-10
   Library files, 6-2                    /EXTRACT, 6-11
   LIST command, 7-14, 7-45              /FIX, 6-6, 6-25
   /LIST switch, 3-5, 6-4                /Index, 6-18
   /LOAD switch, 6-7                     /INSERT, 6-13
   Loading instructions                  /LIST, 6-4
     listing, 6-7                        /LOAD, 6-7
   Log Files DUMPER, 7-14                /MASTER, 6-8
   Logical names, 1-3                    /NOLOCALS, 6-18
     DUMPER, 7-4, 7-6, 7-15              /POINTS, 6-5
     FILCOM, 4-2                         /REPLACE, 6-16
                                         specifying, 6-3
               -M-                       /TRACE, 6-6
                                         /WHO, 6-6, 6-25
   /M switch, 5-4                      MBEFORE command, 7-10, 7-46
   MAIL                                Message Mode in PLEASE, 8-3
     Checking new messages, 2-4        Message-of-the-Day, 2-6, 3-1
     Entering text, 2-2                /MESSAGE-OF-THE-DAY switch, 3-5
     Error messages, 2-7               MIGRATE command, 7-40, 7-46
     Error recovery, 2-3               Migrating files, 7-1, 7-3, 7-39
     From Batch jobs, 2-7              .MODULE pseudo-op, 6-20
     Indirect files, 2-5               Modules (see also, MAKLIB)
     Non-files-only directories, 2-5   Mounting tapes, 7-5, 7-6
     Sending to group, 2-4               Refusal, 7-27
     Specifying names, 2-1             MSINCE command, 7-10, 7-46
     Specifying subject, 2-2           Multiple reel tapes, 7-20, 7-21
     System messages, 2-6
   MAIL command, 7-36                              -N-
   Mail messages
     Notifying user of, 3-2            .NAME pseudo-op, 6-20
   /MAIL switch, 7-36, 7-45            Naming tapes, 7-15
   MAIL.CPY files, 2-10                /nL switch, 4-4, 4-9
   MAILER Program, 2-10                NO DATES command, 7-10, 7-46
   MAKLIB                              /NODE switch, 8-1, 8-3
     Adding modules, 6-8               /NOINCREMENTAL switch, 7-34, 7-48
     Assembler, 6-23                   /NOLOCAL switch, 6-18


                                  Index-4
                                        


   Non-files-only directories in       RDMAIL switches (Cont.)
       MAIL, 2-5                         Alphabetical listing, 3-4
   /nU switch, 4-9                       /HELP, 3-5
                                         /LIST, 3-5
               -O-                       /MESSAGE-OF-THE-DAY, 3-5
                                         /PERUSE, 3-6
   /O switch                             /STOP, 3-7
     CREF, 5-4                         Reading messages
     FILCOM, 4-4                         Using date and time, 3-3
   Octal codes in error messages,        Using switches, 3-3
       5-14                            Reading system messages, 3-5
   Organizing REL modules, 6-1         Receiving mail from RDMAIL, 3-1
   Overwriting disk files, 7-11        .REINSERT pseudo-op, 6-6, 6-23
                                       .REMOVE pseudo-op, 6-6, 6-22
               -P-                     REPEAT LOGIN-MESSAGES command,
                                           3-1
   /P switch, 5-4                      /REPLACE switch, 6-16
   PARITY command, 7-16, 7-46          RESTORE command, 7-23, 7-26, 7-47
   Password encryption, 7-1, 7-34      Restoring files to disk, 7-1,
   /PERUSE switch, 3-6                     7-26, 7-28, 7-37, 7-40
   PLEASE                              RETRIEVE command, 7-40, 7-47
     Batch jobs, 8-1                   Retrieving files from tape, 7-1,
     Dialogue Mode, 8-2                    7-40
     Error messages, 8-3               REWIND command, 7-21, 7-48
     Message Mode, 8-3                 Rewinding tape, 5-4
   PLEASE switches
     /HELP, 8-1                                    -S-
     /NODE, 8-1, 8-3
   /POINTS switch, 6-5                 /S switch
   PRINT command, 7-30, 7-31, 7-47       CREF, 5-4
   Printing DUMPER status                FILCOM, 4-5
       information, 7-30               SAVE command, 7-23, 7-24, 7-33,
   Printing messages, 3-5                  7-35, 7-48
   Project-programmer-numbers (PPN),   Savesets, 7-2, 7-19
       7-1, 7-34                         Skipping, 7-22
   PROTECTION command, 7-15, 7-47      Saving files on tape, 7-1, 7-2,
                                           7-24
               -Q-                       Specific files, 7-20
                                       Sending messages, 2-1
   /Q switch, 4-5, 4-9                   Checking new messages, 2-4
   QUIT command, 7-7, 7-47               Entering text, 2-2
                                         Error recovery, 2-3
               -R-                       Errors in, 2-3
                                         From Batch jobs, 2-7
   /R switch, 5-4                        Non-files-only directories, 2-5
   RDMAIL                                PLEASE, 8-1
     Error messages, 3-8                 Specifying names, 2-1
     Getting Help, 3-5                   Specifying subject, 2-2
     Printing messages, 3-5              TALK command, 2-4
     Reading messages, 3-2               To a group, 2-4
   RDMAIL switches                       To all users, 2-6
     /ALL, 3-5                           To remote-node operator, 8-1


                                  Index-5
                                        


   Sending messages (Cont.)            Tapes (Cont.)
     To system operator, 8-1             Mounting, 7-5, 7-6
     Using indirect files, 2-5           Multiple reels, 7-20, 7-21
   SET BLOCKING-FACTOR command, 7-16,    Naming, 7-15
       7-49                              Positioning, 7-7, 7-20 to 7-23,
   SET MAIL-WATCH command, 3-2               7-26
   SET TAPE-NUMBER command, 7-20,        Reading TOPS-10, 7-17
       7-49                              Setting number of records, 7-16
   SILENCE command, 7-15, 7-49           Unlabeled, 7-3, 7-5
   SINCE command, 7-10, 7-49             Version numbers, 7-17
   SKIP command, 7-22, 7-49              Writing TOPS-10, 7-17
   SSNAME command, 7-19, 7-49          TRACE blocks, 6-6, 6-19
   Status codes in error messages,       Format of, 6-44
       5-14                            /TRACE switch, 6-6
   Status-setting commands DUMPER,     TRANSFER command, 7-28, 7-38,
       7-7 to 7-13                         7-50
   /STOP switch, 3-7
   SUPERSEDE command, 7-11, 7-27,                  -U-
       7-49
   SWITCH.INI file, 5-5                /U switch, 4-5
   SYMBOL blocks, 6-18                 Unlabeled tapes, 7-3, 7-5
                                       UNLOAD command, 7-23, 7-50
                                       /UNLOAD switch, 7-34, 7-48
               -T-
                                                   -V-
   /T switch
     CREF, 5-4                         .VERSION pseudo-op, 6-20
     FILCOM, 4-5, 4-9                  /VOLIDS switch, 7-6
   TAKE command, 7-31, 7-50
   TAPE command, 7-15, 7-50                        -W-
   Tape drive allocation, 7-3
     Assigning tape drives, 7-4        /W switch
     Deassigning tape drive, 7-4         CREF, 5-4
     Dismounting tapes, 7-3              FILCOM, 4-9
     Labeled tapes, 7-3                /WHO switch, 6-6, 6-25
     Mounting tapes, 7-3
     Unlabeled tapes, 7-3                          -X-
   Tape sets, 7-2
     Reading, 7-6                      /X switch, 4-10
   Tape volume identification, 7-6
   Tapes                                           -Z-
     Dismounting, 7-5
     Labeled, 7-3, 7-6                 /Z switch, 5-4











                                  Index-6