DataMuseum.dk

Presents historical artifacts from the history of:

CP/M

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about CP/M

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - metrics - download

⟦727955478⟧ TextFile

    Length: 178560 (0x2b980)
    Types: TextFile
    Names: »D107«

Derivation

└─⟦2520239fd⟧ Bits:30005867/disk13.imd Dokumenter (RCSL m.m.)
    └─⟦this⟧ »D107« 

TextFile

                    
           \f

                   T_I_M_E_F_O_R_B_R_U_G_ 
           
          80.03.24 SB 3.5 timer skrivning 
                   80.03.25 SB 2.0 timer skrivning 
          80.04.17 SB 3.5 timer skrivning 
                   80.04.18 SB 7.5 timer skrivning 
                   80.04.22 SB 4.5 timer skrivning 
                   80.05.05 SB 6.5 timer rettelser og skrivning 
                   80.05.06 SB 3.0 timer rettelser og udskrivning 
                   80.05.08 SB 5,0 timer rettelser og udskrivning 
                   80.05.16 SB 875-, \f

                              
                     
                     
                     
                     
                     
                     
                     
                     
                     
                     
                     
                     
                     
                     
                     
                     
                     
                                ALGOL Begin 
                     
                     
                     
                     
                     
                     
                     
                     
                     
                     
                     
                     
                     
                     
                     
                     
                     
                     
                     
                     
                     
A/S Regnecentralen af 1979                                    January 1981 
Information Department                                    RCSL No 42-i1330 \f

          
 
 
AUTHOR:             Kjeld Christensen 
 
KEYWORDS:           Textbook for education, ALGOL, BOSS, FP, administrative
                    data processing. 
 
ABSTRACT:           The book is a part of a series of textbooks covering
                    fundamental education in computer science. This one is
                    an introduction to the programming language ALGOL. The
                    textbooks are used for teaching purposes at RC Com-
                    puter, but are also well suited for self-tuition. 
                     
                     
                     
                     
                     
                     
                     
                     
                     
                     
                     
                     
                     
                     
                     
                     
                     
                     
                     
                     
                     
                     
                     
                     
                     
                     
                     
                     \f

                                                 i 
           
          P_R_E_F_A_C_E_ 
           
          After publishing an RC8000 basic software textbook it is quite
          natural that the next publication in Regnecentralens textbook
          series should deal with ALGOL, - because Algol is the main pro-
          gramming language at Regnecentralen. The language is based on the
          ALGOL60 report but is much extended in relation to this. 
           
          This means, that where in general ALGOL has a reputation for
          being a programming language specially suited to arithmetical
          problems, and is also a language widely known in connection with
          articles in periodicals where it is generally used in the publi-
          cation of algorithms, the version of ALGOL used at Regnecentralen
          has reached the stage of development where it is a language very
          suitable for the solution of administrative problems also. 
           
          This book describes the basic use of ALGOL and it will be fol-
          lowed by another textbook dealing with input/output handling
          using ALGOL amongst other things. 
          Programmer Kjeld Christensen from Handelshøjskolens Datacenter in
          Århus is the author of the book. 
           
          The good and constructive co-coperation shown by Kjeld Christen-
          sen in the work on this manual is much appreciated, and thanks
          must be given to Handelshøjskolens Datacenter for the positive
          attitude to the project. 
           
          The book is meant to be used as part of a Regnecentralen course
          but at the same time is written with the aim that it can be used
          for self function. Thus suggested solutions are given to the
          examples in the textbook. 
           
          It must be emphasized that this book is a textbook and not a ma-
          mual. That is, the book does not describe all the possibilities
          of the ALGOL language but on the contrary only a limited and ma-
          nageable selection. It is thus recommended that the student, as
          soon as possible after this book is studied, uses the relevant\f

                                        ii 
           
          manuals in daily work so that one does not become too dependent
          on the textbook. If there are cases where one is in doubt the re-
          levant chapter in the textbook may be referred to. 
           
                   We hope that the users of this book will be as happy with it as
          we are at Regnecentralen. 
           
          April 1979 
          A/S Regnecentralen \f

                                                 iii 
           
          T_A_B_L_E_ _O_F_ _C_O_N_T_E_N_T_S_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _P_A_G_E_ 
           
          1.  INTRODUCTION ..........................................   1 
           
          2.  PROBLEM DESCRIPTION ...................................   4 
              2.1  A File ...........................................   7 
                   2.1.1  Construction ..............................   7 
                   2.1.2  File Organisation .........................   9 
              2.2  File Description .................................  10 
                   2.2.1  Record Description ........................  11 
                   2.2.2  Data List .................................  13 
              2.3  Form Description .................................  15 
                   2.3.1  Format Sheet ..............................  15 
                   2.3.2  Form Contents .............................  16 
              2.4  A Programming Problem ............................  17 
                   2.4.1  Problem Description .......................  17 
           
          3.  CONSTRUCTION OF THE COMPUTER ..........................  24 
              3.1  Hardware .........................................  24 
                   3.1.1  Components ................................  24 
                   3.1.2  Working Store .............................  26 
                   3.1.3  Backing Store .............................  29 
                   3.1.4  Terminal ..................................  30 
                   3.1.5  Reader ....................................  30 
                   3.1.6  Punch .....................................  30 
                   3.1.7  Line Printer ..............................  31 
              3.2  Software .........................................  31 
                   3.2.1  The Operating System BOSS .................  31 
           
          4.  PROGRAMMING ...........................................  35 
              4.1  Primary Store Usage ..............................  36 
              4.2  Description of the Course of Action ..............  43 
           
          5.  SOFTWARE ..............................................  52 
              5.1  LOGIN Routine ....................................  52 
              5.2  JOB ..............................................  53 
              5.3  Running a Job ....................................  55 \f

                                                 iv 
           
          T_A_B_L_E_ _O_F_ _C_O_N_T_E_N_T_S_ _(_c_o_n_t_i_n_u_e_d_)_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _P_A_G_E_ 
           
              5.4  Run Analysis .....................................  57 
              5.5  BOSS Commands ....................................  59 
                   5.5.1  JOB Interrupt .............................  59 
                   5.5.2  End Use of Terminal .......................  60 
                   5.5.3  Assignment of Line Numbers ................  61 
                   5.5.4  Editing ...................................  62 
                   5.5.5  Printing ..................................  65 
                   5.5.6  Job File Handling .........................  66 
                   5.5.7  Messages from BOSS ........................  68 
              5.6  FP Commands ......................................  69 
                   5.6.1  Message from FP ...........................  70 
              5.7  ALGOL ............................................  70 
                   5.7.1  Calling ALGOL .............................  73 
              5.8  Illustrative Run Examples ........................  74 
           
          6.  ALGOL .................................................  78 
              6.1  Character Set ....................................  79 
              6.2  Identifiers ......................................  80 
              6.3  Numbers ..........................................  82 
              6.4  Basic Symbols ....................................  83 
                   6.4.1  Compound Symbols ..........................  91 
              6.5  Program Structure ................................  92 
                   6.5.1  Declarations ..............................  93 
                   6.5.2  Statements ................................  93 
               
          7.  DECLARATIONS ..........................................  99 
              7.1  Simple Variable ..................................  99 
              7.2  Array ............................................ 101 
              7.3  Field Variable ................................... 104 
              7.4  Zone ............................................. 106 
              7.5  Procedure ........................................ 107 
              7.6  Uniqueness ....................................... 107 
           \f

                                                 v 
           
          T_A_B_L_E_ _O_F_ _C_O_N_T_E_N_T_S_ _(_c_o_n_t_i_n_u_e_d_)_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _P_A_G_E_ 
           
          8.  EXPRESSIONS ........................................... 110 
              8.1  Arithmetic Expression ............................ 110 
              8.2  Logical Expression ............................... 113 
              8.3  String Expression ................................ 116 
              8.4  Multiple Choice Expression ....................... 118 
              8.5  Two-Way Choice Expression ........................ 119 
           
          9.  STATEMENTS ............................................ 120 
              9.1  Unconditional Statement .......................... 122 
                   9.1.1  Simple Statement .......................... 122 
                   9.1.2  Compound Statement ........................ 125 
                   9.1.3  Block ..................................... 126 
              9.2  Selection Statement .............................. 127 
                   9.2.1  Conditional Statement ..................... 127 
                   9.2.2  CASE Statement ............................ 132 
              9.3  Loop Statement ................................... 139 
                   9.3.1  FOR STEP Statement ........................ 139 
                   9.3.2  WHILE Statement ........................... 143 
                   9.3.3  REPEAT Statement .......................... 144 
                   9.3.4  FOR Statements ............................ 145 
           
          10. CHARACTER INPUT AND OUTPUT ............................ 147 
              10.1 Integer Procedure READCHAR ....................... 147 
              10.2 Character String ................................. 148 
              10.3 Integer Procedure READ ........................... 149 
              10.4 Integer Procedure WRITE .......................... 151 
           
          11. USE OF BACKING STORE .................................. 155 
              11.1 The Procedure OPEN ............................... 155 
              11.2 The Procedure CLOSE .............................. 156 
              11.3 Record Input and Output .......................... 156 
                   11.3.1 Integer Procedure INVAR ................... 157 
                   11.3.2 Integer Procedure OUTVAR .................. 158 
           \f

                                                 vi 
           
          T_A_B_L_E_ _O_F_ _C_O_N_T_E_N_T_S_ _(_c_o_n_t_i_n_u_e_d_)_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _P_A_G_E_ 
           
          12. COMMENTS .............................................. 161 
              12.1 COMMENT .......................................... 161 
              12.2 END .............................................. 161 
              12.3 Comment Brackets ................................. 162 
           
          13. PROCEDURES ............................................ 163 
              13.1 Construction ..................................... 165 
              13.2 Procedure Declaration ............................ 166 
              13.3 Procedure Call ................................... 166 
              13.4 Use .............................................. 167 
           
          14. PROGRAM DESIGN ........................................ 172 
              14.1 Problem Definition ............................... 172 
              14.2 First Stage ...................................... 173 
              14.3 Second Stage ..................................... 174 
              14.4 Third Stage ...................................... 176 
              14.5 Fourth Stage ..................................... 177 
                   14.5.1 Calculate Groups .......................... 178 
                   14.5.2 Calculate pct ............................. 179 
                   14.5.3 Output Group .............................. 180 
                   14.5.4 Terminate Group ........................... 180 
                   14.5.5 Initialisation ............................ 181 
                   14.5.6 Processing ................................ 181 
                   14.5.7 Termination ............................... 183 
              14.6 The Last Stage ................................... 183 
           
          15. RECOMMENDED SOLUTIONS ................................. 187 
           
          A_P_P_E_N_D_I_C_E_S_: 
           
          A.  CHARACTER VALUES AND CHARACTER CLASSES ................ 201 
           
          B.  SELECTED MESSAGES FROM BOSS ........................... 205 
           
          C.  SELECTED MESSAGES FROM FP ............................. 209 
           \f

                                                 vii 
           
          T_A_B_L_E_ _O_F_ _C_O_N_T_E_N_T_S_ _(_c_o_n_t_i_n_u_e_d_)_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _P_A_G_E_ 
           
          D.  SELECTED MESSAGES FROM ALGOL .......................... 210 
           
          E.  SELECTED MESSAGES FROM THE RUNNING PROGRAM ............ 213 
           
          F.  INDEX ................................................. 215 
           
           \f

                                                 viii 
           \f

1_._ _ _ _ _ _ _ _ _I_N_T_R_O_D_U_C_T_I_O_N_ 1.
           
          The object of this book is to give a description of the program-
          ming language ALGOL, and to show its use particularly with the
          view of solving administrative problems. As the title ALGOL BEGIN
          infers the book is mainly for the use of readers without ALGOL
          programming experience. 
           
          In the book the necessary concepts are presented in such a way
          that readers without any EDP experience can understand them.
          Naturally this means that those with programming experience must
          be prepared for a little revision, as the basic terms and the
          fundamental description tools must necessarily be introduced be-
          fore the actual description and use of the language. 
           
          The book is based on a typical but somewhat simplified admini-
          strative problem and using this as a frame of reference various
          fundamental terms and some elementary definition methods are in-
          troduced. The concepts thus dealt with are closely related to the
          chosen example as it is not the intention to define a complete
          EDP terminology, but solely to introduce a few concepts which
          must be familiar before the work of programming can begin. 
           
          Knowledge of the main principles in the contruction and operation
          of the computer is also necessary before a start on programming
          can be made. This subject is dealt with in chapter 3, also very
          concisely, the basis for treating the subject of the book. 
           
          In chapter 4 the experience gained from chapters 2 and 3 is used
          to compose the first ALGOL program in the book. The basic
          structure of the language and of programs is thus introduced. 
           
          All programs have a running-in phase, where the completed program
          is debugged, the syntactical and logical errors are removed, and
          the program functions as designed. This requires the use of a
          computer, thus chapter 6 contains guidance in the operation of
          the computer, solely concerned with the running-in of examples
          given in the book. It is assumed that the computer is equipped
          with the BOSS operating system, as is usual for RC4000 & RC8000. 
           \f

                   The loose ends are gathered in the following chapters. Chapter 7
          contains a more rigorous description of the components of ALGOL.
          This description is not complete, dealing only with the most
          important elements of the language. 
           
          The principle of treating only the most important concepts holds
          for the following chapters. These chapters contain syntax des-
          criptions for permitted constructions together with semantic
          descriptions which explain their meaning. The chapters deal with
          declarations, expressions, statements, input, output, and serial
          use of the backing store. The accompanying examples give the op-
          portunity to become familiar with the new concepts. 
           
          Chapter 13 gives a very short introduction to procedures and the
          book is completed in chapter 14 by a short introduction to pro-
          gram design illustrated by an example. 
           
          NOTATION  The notation in the book is adopted from the ALGOL ma-
                    nual ref. 1. The following symbols should be known: 
                     
          ::=       the symbol is called a defining equality sign, and is
                    used in definitions. The concept to be defined is
                    placed on the left of the symbol, and the definition is
                    placed on the right 
                     
          E_x_.       <digit' ::= 0  1  2  3  4  5  6  7  8  9 
                     
                    A digit is defined as being a number in the range 0 to
                    9. 
                     
                    The symbol is used as a separating character between
                    several possibilities. See the previous example. 
                     \f

                   < '       The symbol surrounds an explanatory text. 
                     
          E_x_.
                    <number'  ::= <integer' <real' 
                      
                    The symbol contains a list of several possibilities. 
                     
M_m_m_           E_x_.                   <integer' 
                    <number'::=  
P_p_p_                                <real' 
                      
                    Brackets may be supplied with a number which relates the number
                    of times the element may occur 
                      
          E_x_.        
M_m_m_                                  +  1            14 
                    <integer'::=  -      <digit' 
P_p_p_                    01 
                     
                    An integer may be signed. There must follow at least one digit
                    and not more than 14 digits. 
                     \f

         2_._ _ _ _ _ _ _ _ _P_R_O_B_L_E_M_ _D_E_S_C_R_I_P_T_I_O_N_ 2.
           
          For all problem solving, the problem must be described in such a
          way as to give all the necessary information. If the true rate of
          interest on a mortgage is to be calculated, the basic rate of
          interest and the exchange rate must be known as these are used in
          the calculation: 
           
                    true rate = basic rate x 100/exchange rate. 
           
          The calculations may be carried out manually or on a computer as
          desired. If the latter, a program must be written which instructs
          the computer to execute the simple calculation. In this case the
          problem description must be more detailed as the program to solve
          the problem must naturally consist of the following three parts:
           
                    1. Reading in of the current and basic rates of interest.
                    2. Calculation of the true rate of interest. 
                    3. Output of the result. 
           
          To ensure the correct input of the rates of interest it must be
          previously defined in which order these numbers appear, how they
          are to be given - for example as reals or integers. 
          Such details are defined in an input description, so-called. The
          user of the program also requires the input description to define
          which numbers are valid for the calculation. The calculation
          gives no speciel problems as the formula is known. 
           
          To be of use the result of the calculation must be output in a
          readable form. The method to be used must also be defined as a
          number can be output in many ways. E.g. the number of decimal
          places should be given. 
           
          A detailed description of the problem concerning the calculation
          of the true rate of interest can be completed without the use of
          special description tools (programs). It is quite another matter
          with most administrative problems where normally the input data
          as well as the output data is very elaborate. 
           \f

                   Even such a simple problem as the printing of a list of all the
          items in an item file makes big demands on the input and output
          description. The amount of detail necessary is dependent on the
          solution of the problem being manual or run on a computer. 
           
          If the item file is kept on a card index, the list of records can
          be made manually and an experienced employee can solve the pro-
          blems despite the vague formulation of the problem. On the other
          hand if a less experienced employee is to carry out the work a
          more precise description of the problem is required, as problems
          will arise which an inexperienced employee cannot solve alone.
          Such as: 
                     
                    Which data is to be put on the list? 
                    Where is this data found? 
           
          A rough outline of the layout of the list answers the first
          question. 
          E.g. the outline may be thus given: 
           
          F_i_g_._ _2_._1_ 
          ITEM REPORT 
           
          I_T_E_M_N_O_N_A_M_E_I_T_E_M_N_O_N_A_M_E_ 

          1CPU7Core Store 
          17Line Printer1293Tape Punch 
          2047Tape Reader3011Terminal 
          3001Disc Store3500Print Board
           
           \f

                   A copy of a card index card with the relevant data solves the
          second problem: 
           
          F_i_g_._ _2_._2_ 
           
                    ITEMNO    = 2047 
                    NAME      = TAPEREADER 
                    STOCK     = 3000 ITEMS 
                    SALES 
                    JANUARY   200    MAY     375    SEPTEMBER 423 
                    FEBUARY    10    JUNE   3000    OCTOBER 
                    MARCH     119    JULY     25    NOVEMBER 
                    APRIL     517    AUGUST    7    DECEMBER 
                     
          The problem description is still not detailed enough for a new
          employee, and problems such as the following will arise: 
           
                             How many lines to be written on each page. 
                    How much space to be allowed for an item no. 
                    How much space does an item name use. 
                    Where is the item card index. 
                    How are the cards ordered in the card index. 
           
          These questions can be answered with an improved problem descrip-
          tion. An outline of the item report can be made which defines how
          much space the individual pieces of data may take, and the maxi-
          mum number of lines per page can be stated. A more detailed des-
          cription of the card index may be given stating position, con-
          tents and sequence. 
           
          If the item file is stored using a computer, a computer must also
          be used to print the item report, and thus more demands are made
          on the program description. The computer which is to do the work
          is totally without intelligence and all problems must be solved
          before the task is handed over to it. Only by instructing (pro-
          gramming) it on what to do in all possible situations can the
          computer carry out the work. 
           \f

                   The programming work is treated in chapter 4. The basis for the
          programming work is a detailed problem description in the form of
          an input and an output data description. The input data for the
          print problem is the item file, and the next section deals with
          the concept of files in general, and an appropriate mode of des-
          cription is shown. Output data on paper, as shown in section 2.3,
          can be described using a format sheet. 
           
           2.1
2_._1_ _ _ _ _ _ _ _A_ _F_i_l_e_ 
           
2_._1_._1_ _ _ _ _ _C_o_n_s_t_r_u_c_t_i_o_n_ 2.1.1
           
          The item file discussed contains information about different
          items and for it to be of any use it is necessary that the infor-
          mation is always up to date, so that the file gives a correct
          picture of the situation. Each time there is a movement in the
          stock, either outflow or inflow, it must be noted in the item
          file. Data in the file must thus be stored so that it is easy to
          make amendments. This holds true for card index files as well as
          files only accessible via the computer. \f

                   DATA      Information found in a state where it can be dealt with
                    is called data. 
           
          FIELD     Thus the item file is a collection of data concerning
                    items. Each piece of information on a card in a card
                    index has a fixed position. A position is usually cal-
                    led a field. It is quite common to use the words field
                    and information interchangeably so that there is no
                    difference between the concept of a field and the in-
                    formation it contains. 
           
          RECORD    A card index card exists for every item containing all
                    the relevant information about the item. The informa-
                    tion about the items is thus organised in such a way
                    that logically coherent data is collected. Such a
                    logical collection of data is called a record. 
           
          KEY       A special field exists to establish a unique correspo-
          FIELD     dence between a record and the object it describes.
                    This field is called key field or record number, as
                    liked. In the item file the item number connects the
                    record with the item. 
                     
                    Ex. 2.1. An identification number connects uniquely a
                    record in the identification file with a person. 
                     
                    The special meaning of the key field makes it senseless
                    to change just this field. 
                     
          FILE      The collection of card index cards which constitute the
                    item file can also be regarded as a collection of
                    similar records. A reasonable file definition, also
                    valid in connection with a file accessible via computer
                    can now be formulated. 
                     \f

                    A file is a collection of records. 
           
          The connection between the different terms is shown more clearly
          by fig. 2.3. 
           
          This shows that a file is made up of a collection of similar
          records. Each record contains a number of fields, and each field
          holds information. 
           
          F_i_g_._ _2_._3_ 
           
                         F_I_L_E_          R_E_C_O_R_D_          F_I_E_L_D_ 
           
                         RECORD        FIELD 1         INFORMATION 
                           1 
                                       FIELD 2 
                                        
                                       FIELD 3 
                         RECORD 
                           2 
           
           
           
           
                         RECORD 
                           3 
           
           
           
2_._1_._2_ _ _ _ _ _F_i_l_e_ _O_r_g_a_n_i_s_a_t_i_o_n_ 2.1.2
           
          The cards which make up the item file may be sorted in different
          order, and that chosen defines the organisation of the file. The
          following possibilities seem equally suitable: 
                     
                    Sorting after ascending item number order. 
                    Sorting in alphabetical order. 
           \f

                   In choosing the type of organisation it is important to take into
          account the most common use of the file, as the organisation de-
          fines the seeking methods which can be used when the file is to
          be utilised. Ex. 2.2 gives an illustration. 
           
          E_x_ _2_._2_ 
           
                    Assume that the cards in the item file are ordered
                    alphabetically using the item name, and the item report
                    is to be printed in ascending item number order.
                    Clearly the sorting order of the cards complicates the
                    job of printing the item report. 
           
          Many different storage methods, each catering for a different
          utilisation, have been developed for files accessible via a com-
          puter. It lies beyond the scope of this book to deal with these
          various methods, and in the book only serial files are used  
           
          SERIAL    In a serial file the records are stored according to
                    the record number, usually in ascending order.
                    Searching in the file can only be carried out by
                    reading the records, starting at the first record and
                    ending with the required record or the last record in
                    the file. 
                     
          END       It is difficult to determine when the last record in
          RECORD    a computer stored file is found, as the records are not
                    visible as in a card index file. Thus a special end
                    record is inserted which serves to relate that there
                    are no more records to be found. 
                       
 
2_._2_ _ _ _ _ _ _ _F_i_l_e_ _D_e_s_c_r_i_p_t_i_o_n_ 2.2
           
          To use a file it must be known how the file is organised and how
          the records are constructed. If one is building a new system the
          file structure must be described as one quickly forgets details
          and the users need to know the system also. Incomplete knowledge
          of a system always results in many expensive misunderstandings. \f

                   The necessity of a good description is made clear in the compre-
          hensive technical literature found on the subject. Instructions
          as to how a good file description is prepared may be found in the
          technical literature. To ensure that all relevant information is
          described a number of forms are designed. Thus a fairly good de-
          scription may be achieved by completing a number of forms. If it
          is a big system lots of forms have to be completed, and if it is
          a small system fewer forms are necessary. 
           
          For small systems an adequate file description can be made using
          two different forms. Records are described using a record de-
          scription form, and all the data is described by a so-called
          data list. Both of these forms begin with a heading which should
          be completed to give the user, date of completion and in what
          connection the form was used. 
           
           
2_._2_._1_ _ _ _ _ _R_e_c_o_r_d_ _D_e_s_c_r_i_p_t_i_o_n_ 2.2.1
           
          This form is used to describe records. The fields in a record are
          numbered, and for each field is stated 
           
                    . Field no. 
                    . Field address 
                    . Field name 
                    . Reference to the data list 
                    . Comment, if required 
           
          The fields in a record are numbered 1,2,3, etc. 
           
          The field address gives the position of the field in the record.
          In a computer stored file a field address can be uniquely defined
          by an integer. This is more fully explained in chapter 4. 
           
          A field is always named with a descriptive name so that it is
          immediately obvious what the field is used for. 
           \f

                   A reference to the data list is stated for each field,  here the
          field is described in detail. 
           
          If there is anything special to note a comment is made. 
           
          F_i_g_._ _2_._4_ 
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           \f

2_._2_._2_ _ _ _ _ _D_a_t_a_ _L_i_s_t_ 2.2.2
           
          All data found in the system is described on this form. 
          For each item of data is stated: 
           
                       . Data name 
                       . Abbreviated name 
                       . Data type 
                       . Range of values 
                       . Data definition 
           
          An item of data is given a name, and a description name should
          always be used, so that the data name makes it immediately
          obvious what the information is about. 
           
          A descriptive name can be quite long, so for those people
          acquainted with the system an abbreviated name which they can
          use, is stated. 
           
          There are two types of data, namely numerical information (num-
          bers) and alphanumerical information (letters and characters). It
          is important to distinquish between these two types of data as
          they are handled differently in the computer. 
           
          Information regarding the range of values is also important, as
          this defines the space needed for storage in the computer and
          when the data is output. 
           \f

          A complete description of the data is given in the data
          definition. 
           
          F_i_g_u_r_e_ _2_._5_ 
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           \f

         2_._3_ _ _ _ _ _ _ _F_o_r_m_ _D_e_s_c_r_i_p_t_i_o_n_ 2.3
           
          To describe the output data a graphic description and a descrip-
          tion of the contents of the form are required. 
           
 2.3.1
2_._3_._1_ _ _ _ _ _F_o_r_m_a_t_ _S_h_e_e_t_ 
           
          The form desired is entered on a format sheet, and thus it is
          possible to see where each item of information is to be written
          and how much space the information may use. 
           
          F_i_g_u_r_e_ _2_._6_ 
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           \f

         2_._3_._2_ _ _ _ _ _F_o_r_m_ _C_o_n_t_e_n_t_s_ 2.3.2
           
          This form is used to describe forms. Each item of information is
          numbered, named and a reference to the data list is given. An
          additional comment may be given, if required. 
           
          F_i_g_u_r_e_ _2_._7_ 
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           \f

         2_._4_ _ _ _ _ _ _ _A_ _P_r_o_g_a_m_m_i_n_g_ _P_r_o_b_l_e_m_ 2.4
           
          Assume that the item files previously referred to, exist on a
          RC8000 computer and an item report is required. To this end an
          ALGOL program is to be written. The remainder of this chapter
          contains a detailed problem description. 
           
          The solution of the problem demands knowledge of the construction
          and action of the computer. This is dealt with in chapter 3, be-
          fore the problem can be actually tackled in chapter 4. 
           
 
2_._4_._1_ _ _ _ _ _P_r_o_b_l_e_m_ _D_e_s_c_r_i_p_t_i_o_n_ 2.4.1
           
          On the following pages the problem is described in detail using
          the four forms previously named. The item file, a serially stored
          file, is described using a record description form and a data
          list. The item report is entered on a format sheet, and each
          field is described individually on the appropriate form. 
           \f

                   RECORD DESCRIPTION\f

                   DATA LIST\f

                   DATA LIST\f

                   DATA LIST\f

                   FORMAT SHEET\f

                   FORM CONTENTS\f

         3_._ _ _ _ _ _ _ _ _C_O_N_S_T_R_U_C_T_I_O_N_ _O_F_ _T_H_E_ _C_O_M_P_U_T_E_R_ 3.
           
          To obtain full use of the computer a little knowledge of its
          function and components in necessary, both for programming and
          implementation of programs. 
           
 
3_._1_ _ _ _ _ _ _ _H_a_r_d_w_a_r_e_ 3.1.
           
          The physical components such as wires and transistors are called
          hardware. 
           
 
3_._1_._1_ _ _ _ _ _C_o_m_p_o_n_e_n_t_s_ 3.1.1
           
          F_i_g_u_r_e_ _3_._1_ 
           
                              BACKING  STORE 
           
          HIGH 
                    
           
          READER              WORKING  STORE            PRINTER 
           
           
          MEDIUM          TERMINAL 
           
           
                                        TERMINAL        PUNCH 
           
          LOW 
           
           
          COLUMN 1               COLUMN 2               COLUMN 3 
           \f

          The gereral outline of a computer in figure 3.1 shows that the
          working store is connected to several units from which or to
          which data may be transferred. The arrows show the possible di-
          rection. Thus data may be transferred from the reader in Column 1
          to the working store whith data may be transferred in both
          directions between the working store and the units in Column 2.
          For the units in Column 3 data may only be transferred in one
          direction, namely from the working store. 
          Regarding the horizontal division of the diagram it is seen that
          the units are grouped corresponding to the speed of which the
          data may be transferred. Distinction is made between low, medium,
          and high speed. 
           
          CENTRAL   The control of the activity of the computer is carried
          PROCESSOR out by the C_entral P_rocessor U_nit. 
                    The CPU is not shown in figure 3.1. 
           
          CONFIGU-  The size of the following store and the number of
          RATION    peripheral units connected determine the configuration
                    of the computer. The configuration may be altered as
                    necessary, and figure 3.1 thus shows a possible confi-
                    guration. 
                     
                     \f

3_._1_._2_ _ _ _ _ _W_o_r_k_i_n_g_ _S_t_o_r_e_ 3.1.2
           
          In the working store, often called the primary store, data to be
          processed as well as programs which control the processing, are
          kept. By a program is understood the instructions which state how
          the processing is to be executed. Chapter 4 describes how a
          program may be written. A program must be present in the working
          store in order that it may be executed. Data being processed must
          also be present in working store. 
           
          SOFTWARE  When the computer is working, one machine instruction
                    at a time is read from the working store and the
                    instruction is executed. There may be several programs
                    with associated data in the primary storage simultane-
                    ously (figure 3.2). Then, it is said, the computer is
                    multiprogrammed. 
                     
          F_i_g_u_r_e_ _3_._2_ 
                     
                               PRIMARY STORE 
                     
                                 PROGRAM A 
                     
                                   DATA A 
                     
                                 PROGRAM B 
                     
                                   DATA B 
                     
          CONTROL   The CPU is not alone in controlling the program as a
          PROGRAM   control program exists and shares this function. Such a
                    control program is called an operating system. 
                     \f

                   F_i_g_u_r_e_ _3_._3_ 
           
                                   PRIMARY STORE 
           
                                  CONTROL PROGRAM 
           
                                     PROGRAM A 
           
                                       DATA A 
           
                                     PROGRAM B 
           
                                       DATA B 
           
          As the control function is a continous process, the operating
          system must be permanently active in the primary store, as ap-
          posed to other programs, which are only active in the primary
          store in the limited time taken to execute the individual
          program. 
           
          DATA      When data is to be transferred between primary store
          TRANSFER  and a peripheral unit a so-called zone buffer is used.
                    On transfer from a peripheral unit to primary store
                    data is placed in the zone buffer where it is available
                    for processing. A zone buffer is thus a part of the
                    primary store which contains data for a program. On
                    transfer from primary store to a peripheral unit the
                    data to be transferred is placed in a zone-buffer, from
                    which the transfer may be made. 
                     
          F_i_g_u_r_e_ _3_._4_ 
                          
                                   PRIMARY STORE 
                          
                                     PROGRAM 
                          
                                       DATA 
                          
                                       ZONE \f

                   All this activity is carried out partly because the primary store
          is usually very limited, allowing only room for the data being
          processed, and partly because all information existing in the
          primary store disappears when the computer is turned of, for
          example by an electricity cut. 
           
          WORD      The primary store is divided into a number of equally
                    large parts, called words. A word is
                    exactly the amount of primary store which can hold a
                    machine instruction. 
                          
          MACHINE   A machine instruction is an order which the computer
          INSTRUC-  can interpret and execute. Therefore a program consists
          TIONS     of a sequence of machine instructions and when the
                    program is run the individual instructions are executed
                    in order. 
           
          Data may also be placed in the primary store. All data does not
          take up the same amount of space, and depending on the type of
          data to be stored it may be held in a half word, a word, or a
          double word. 
           \f

                   The following table shows the space required: 
           
          WORD           USE            RANGE 
           
          Half           Integer        min -2048 
          max  2047 
           
          Whole          Integer        min -8388608 
          max  8388607 
           
          Machine 
                         Instruction 
           
          Double         Integer        min -140737488355328 
          max  140737488355327 
           
          Alpha numeric  6 characters 
           
M_m_m_          616 
P_p_p_          Real number    min -10 
M_m_m_                 616 
P_p_p_          max  10 
           
          A character may be a letter, a digit, or one of the other symbols
          found on a typewriter keyboard. 
           
 
3_._1_._3_ _ _ _ _ _B_a_c_k_i_n_g_ _S_t_o_r_e_ 3.1.3
           
          Data as well as programs are stored on backing store. There are
          different types of backing store. A common characteristic for all
          types is that the data is written on a magnetic material, so that
          information is kept even though the computer is switched off.
          Thus information is only deleted when it is overwritten by new
          data. As the processing of data is carried out in the primary
          store there are many data transfers between the primary and
          backing store. Connection is made by a high speed cable so that
          least time possible is used on data transfers. 
           \f

         3_._1_._4_ _ _ _ _ _T_e_r_m_i_n_a_l_3.1.4
            
          Terminals may be used for both input and output. Input is made
          using a normal typewriter keyboard. Output appears on paper or on
          a screen (display) depending on the terminal type. A terminal may
          be connected with a fixed cable or via the telephone network.
          Transfer speed is defined by terminal type and mode of connec-
          tion. 
           
           
3_._1_._5_ _ _ _ _ _R_e_a_d_e_r_3.1.5 
           
          The computer may be equipped with both a paper tape and a card
          reader. Input via one of these units is usually made where large
          amounts of data are concerned. For example it could be data
          amendments punched on normal registering apparatus. 
           
          F_i_g_u_r_e_ _3_._5_ 
           
           
           
           
           
           
           
           
          There are several punch codes for both cards and paper tape. The
          tape shown in figure 3.5, is punched in flexowriter code. 
           
           
3_._1_._6_ _ _ _ _ _P_u_n_c_h_3.1.6
           
          Data and programs stored in the computer may be produced on
          paper tape using a paper tape punch. One of the various punch
          codes is used as desired. 
           
            \f

3_._1_._7_ _ _ _ _ _L_i_n_e_ _P_r_i_n_t_e_r_ 3.1.7
           
          A large amount of administrative data processing consists of
          printing out file information in various ways. The material to be
          output is usually extensive thus output to a terminal would be
          too time-consuming.  
          A line at a time is output on a line printer and thus data is
          output at quite a good speed. 
                    
           
3_._2_ _ _ _ _ _ _ _S_o_f_t_w_a_r_e_ 3.2
           
          Programs are called software. Software consists of both control
          program and the other utility programs delivered with the com-
          puter. 
          Programs written by the user (application programs) are also
          called software. 
           
          Section 3.2.1 deals with the basic principles involved in using
          the control program and thus in using the computer. A more de-
          tailed description is given in chapter 5 with the sole aim of
          showing how to use the computer to run the demonstration pro-
          grams. 
           
           
3_._2_._1_ _ _ _ _ _T_h_e_ _O_p_e_r_a_t_i_n_g_ _S_y_s_t_e_m_ _B_O_S_S_3.2.1
           
          The computer to be used to run the demonstration problems, is
          expected to be supplied with the BOSS operating system. BOSS at-
          tends to tasks in the computer which may be compared to those
          tasks, attended to by a librarian in a library. 
           
          A librarian lends out books to borrowers with a library card. If
          there are several borrowers who wish to borrow the same book, the
          librarian decides in which order the book is to be lent out. When
          a loan has been made, and the book is not back on time, the li-
          brarian must take action and see that the book is returned. Apart
          from attending to these administrative functions, the librarian
          must also act in an advisory capacity where necessary. The led-
          ning of the computer resources is administered by the operating
          system, BOSS. 
           \f

          The resources which may be borrowed are the various units shown
          in figure 3.1. If a program is to be run the various units must
          be borrowed when output or such like is to be carried out. 
           
                   BOSS has at its disposal a little file containing the names of
          the legitimate users of the computer, as well as a list of code-
          words which must be declared before permission is granted. BOSS
          decides in which order the jobs at the computer are to be execu-
          ted. If a user exceeds his run time BOSS takes action and imme-
          diately recalls all the resources lent out, which means effecti-
          vely that the run is terminated. Queries may also be made to BOSS
          concerning the activity of the computer. 
           
          E_x_e_r_c_i_s_e_ _3_._1_ 
           
                    State some resources which are administered by the
                    operating system. 
           
          DATA      The operating system also carries out many service
          TRANSFER  functions. A very important function is handling all
                    the data transfers between the primary store and the
                    other units. As stated previously, the data to be
                    output to a peripheral unit should be put in a zone
                    buffer, thereafter the operating system deals with the
                    transfer to the correct position. The various positions
                    to which the data may be transferred are defined by
                    name. When the position is to be found on backing store
          AREA      the name refers to an area. 
           
          BACKING   A user may borrow part of the backing store. The users
          STORE     share may consist of one or more areas which are
                    individually named. 
           \f

          F_i_g_u_r_e_ _3_._6_ 
                                   USER A 
                         AREA 1AREA 2 
           
                         FREE AREA 
                             
                            AREA 3         AREA 4 
                         USER B 
                    
          Figure 3.6 illustrates the utilisation of the backing store by
          two separate users, and it can be seen that there is free area
          also. 
           
          AREA NAME      A name can have a maximum of 11 characters. The
                         characters may be letters or numbers. The first
                         character must always be a letter. 
           
          E_x_e_r_c_i_s_e_ _3_._2_ 
           
          Which of the following names are valid? 
           
              storagefile31 
              storagefile 
              itemfile 
              a2 
              7b 
              a162: 
              monkey face 
           
          SEGMENT   Areas can have different sizes. The size is given in
                    segments, a segment contains 128 double words. 
           
          BLOCK     Transfer between the primary store and the backing
                    store is made in blocks, these contain an integral
                    number of segments. Block size is determined by the
                    size of the zone buffer. 
                    \f

          As an integral number of whole words is transferred simultaneous-
          ly to an area, an area contains an interrupted string of double
          words. In certain cases the words are solely made up of charac-
          ters, thus the area contains a character string. 
           
          DOCUMENT  A string of double words is called a document. Documents
                    are supplied with names, the same rules must be followed
                    as for area names. 
           
                   E_x_a_m_p_l_e_ _3_._1_ 
           
                    A string of characters is output to the paper on the
                    printer, and this is called a document. 
                     
                    A paper tape consists of a character string, and this
                    is called a document. 
                     
                    Thus an area is also a document. 
           
          E_x_e_r_c_i_s_e_ _3_._3_ 
                     
                    Data is to be transferred to an area on backing store.
                    Which of the following block sizes may be used? 128,
                    256, 24, 368, 512, 917. 
                     
          PROGRAM   Areas may contain many different types of information. 
          NAME      Perhaps an area may contain an employee file or a pro-
                    gram. Area reference is always made with the help of
                    the area name. When a program is stored in the area,
                    the area name is called the program name. 
                     \f

         4_._ _ _ _ _ _ _ _ _P_R_O_G_R_A_M_M_I_N_G_ 4.
           
          The foundation is now laid for the solution of the printing pro-
          blem stated in chapter 2. It remains to state the problem solu-
          tion so that it may be executed by the computer. This can be done
          using the programming language ALGOL, and it would be natural at
          this point in the book to give a detailed description of the
          language. Such a language description is in the meantime rather
          complicated, and here the decision has been made to introduce
          those elements of the language as they occur in the solution of
          the problem. 
           
          Using this method the book is less formal and thus less detailed,
          but it is done in the hope that the subject matter may be more
          easily understood. 
           
          There are many details in the printout, shown in figure 2.1,
          which complicate the problem solving, so in the first case let us
          simplify the result required so that the item report should only
          give the item number and name as shown in fig. 4.1 
           
          F_i_g_u_r_e_ _4_._1_ 
           
                      1  CPU 
                      7  Core Store 
                     17  Line Printer 
                   1293  Paper tape Punch 
                   2047  Paper tape Reader 
                   3011  Terminal 
                   3101  Disc Store 
                   3300  Print Board 
                    
          PROGRAM   The problem is now to make a set of instructions which
                    can tell the computer how to act. Such a set of instruc-
                    tions is called a program and it must, down to the
                    smallest detail, describe the following: 
                     \f

                                  . The use of the primary store by the program 
                         . Course of action 
           
           
4_._1_ _ _ _ _ _ _ _P_r_i_m_a_r_y_ _S_t_o_r_e_ _U_s_a_g_e_ 4.1
           
          The data to be processed must be present in the primary store
          during the processing, thus the item file records must be read
          into the primary store. For this purpose a zonebuffer is required
          as stated in section 3.1.2. Space in the primary store must also
          be reserved for various working variables, such as field addres-
          ses (see section 2.2.1). 
           
          Halfwords, words, double words or a consecutive string of any of
          these may be reserved for data storage. A reserved entity is
          localised by the name, and this name must be stated on reserva-
          tion. Fig. 4.2 shows part of the primary store where a halfword,
          a word, and a double word are reserved under the names A, B and
          C. 
           
          F_i_g_u_r_e_ _4_._2_ 
           
                             A 
           
           
                  B 
           
           
                  C 
           
           
           
          Data may be held in a reserved element of the primary store. The
          word, B, for example, is used to hold the number seven. The num-
          ber is put in B using the ALGOL statement: 
           
               b:= 7; 
           
          DECLARATION    Reservation of primary store is stated in ALGOL by
                         means of a declaration. 
                          \f

                   E_x_._ _4_._1_ 
           
                    integer b; 
                     
                    The name B is declared to be of type INTEGER, which
                    means that a word is reserved under the name B. 
                     
          In a declaration it must be stated which element type is to be
          reserved, and under which name the element is to be identified. 
           
          E_x_._ _4_._2_ 
           
                    boolean a; 
                     
                    A half word is reserved under the name A. 
                     
          TYPE      The special word which defines the element type is cal-
          DECLARA-  led a type declarator. INTEGER and BOOLEAN are examples
          TOR       of this. 
           
          IDENTI-   The name which identifies the reserved element is cal-
          FIER      led an identifier. A and B are examples of valid names.
           
          VARIABLE  A reserved element is called a variable as it may be
                    assigned various values during the run of a program.
                    The name is called the variable name. 
                     
                    Several variables may be reserved in the same declara-
                    tion. 
                     
          E_x_._ _4_._3_ 
           
                    long a,b; 
                     
                    Two double words are reserved, and the two variables
                    are given the names A and B respectively. 
                     \f

                   It is worth noting that there is no assignment of values in con-
          nection with declarations, and before a variable is used it is
          normally necessary to give it an initial value, e.g. 0. This can
          be done for the variables declared in ex. 4.3 using the following
          ALGOL statement: 
           
                    a:= 0; 
                    b:= 0; 
                     
          SIMPLE    Variables which may be held by a half word, a word, or
          VARIABLE  a double word are called simple variables. BOOLEAN
                    variables may be assigned logical values (see section
                    8.2), INTEGER and LONG variables may be assigned
                    various integer values as shown in the following
                    table. 
                          
                    TYPE                     RANGE 
                          
                    BOOLEAN                  TRUE 
                                             FALSE 
                          
                    INTEGER                  Min. -8388608 
                                             Max.  8388607 
                          
                    LONG                     Min. -140737488355328 
                                             Max.  140737488355327 
                          
          FIELD     As stated when describing records, the individual
          VARIABLE  fields could only be addressed using a word address.
                    Addresses of this type are held in field variables. 
                     
          E_x_._ _4_._4_ 
                     
                    integer field nr; 
                     
                    A field variable with the name NR is declared. 
                     \f

                   A field variable declaration is similar to an ordinary declara-
          tion except that the word FIELD is inserted after the type de-
          clarator. The type declarator determines whether the field de-
          fined by the field variable consists of a halfword, a word, or a
          double word. The assignment of a value to a field variable is
          expressed in a way corresponding to that for a simple variable. 
           
          E_x_._ _4_._5_ 
           
                    integer field no; 
                    no:= b; 
                     
          ZONE           As previously mentioned a zone buffer is required
                         for the input of records from the item file. A
                         zone buffer is declared using the declarator ZONE.
                         It must naturally be named and various parameters
                         must be stated. 
                          
          E_x_._ _4_._6_ 
                                   zone       item        (128,1,stderror);
           
          Declarator 
           
          Name 
           
          Specification 
           
          Using the zone specification it is possible to tailor the zone
          buffer to its current use. In the specification, enclosed by
          brackets, 3 items of data, separated by commas, are given. The
          first parameter defines the size of the zone buffer given in
          double words. The second parameter states whether the zone buffer
          is to be devided into shares. The third parameter is the name of
          the error routine to be used if something unexpected happens. The
          error routine will then give an explanatory message. The zone
          declaration shown in ex. 4.6 will be the most suitable for use in
          connection with the problems in this book. 
           \f

                   FIELD     A field in a record read into a zone buffer, is acces-
                   REFERENCE sed by referring to both the zone and that field vari-
                    able which defines the required field. The two names
                    are separated by a full stop. 
                     
          E_x_._ _4_._7_ 
                    Item.no 
                     
          FIELD     A record fills an integral number of words in the zone
          ADDRESS   buffer. These words contain the record fields, and to
                    facilitate reference to the individual fields all the
                    half words in the record are numbered in ascending
                    order starting with 1. The field address is now defined
                    by the number of the last half word in the field. 
                     
          E_x_._ _4_._8_ 
                     
                    RECORD IN ZONE ITEM 
                     
                    1          2 
                    3          4 
                    5          6 
                    7          8 
                    9          10 
                    11         12 
                    13         14 
                     
                    zone item (128,1,stderror); 
                    integer field no; 
                     
                    no:= 6; 
           
                    ITEM.NO will then define the field consisting of half
                    word 5 and half word 6. 
           
          VARIABLE  The item name cannot be contained by one double word
                    thus several must be used. A consecutive set of double
                    words is called a variable set, and to state that the
                    field consists of several double words the word ARRAY
                    is added in the declaration of the field variable which
                    defines the field. \f

                   E_x_ _4_._9_ 
           
                    long array field name; 
           
          The individual elements in the variable set are numbered 1, 2, 3,
          etc. and reference may be made to the variable set as a whole or
          to a chosen element. 
           
          E_x_._ _4_._1_0_ 
           
                    zone item (128,1, stderror); 
                    long array field name; 
                     
                    ITEM.NAME refers to the array as a whole. 
                    ITEM.NAME (1) refers to the first element. 
                    ITEM.NAME (2) refers to the second element. 
                    ITEM.NAME (3) refers to the third element. 
                     
          The field address of an array is determined by the number of the
          half word which is placed before the first half word of the first
          element. 
           
          E_x_._ _4_._1_1_ 
           
               RECORD  IN  ZONE  ITEM 
           
               1       2 
               3       4 
               5       6 
               7       8 
               9       10 
               11      12 
               13      14 
               15      16 
               17      18 
           
                    zone item (128,1,stderror); 
                    long array field name; 
                    name:= 6; 
                     \f

                             The half words 7, 8, 9, and 10 make up the element
                    ITEM.NAME(1). 
                     
          In the printout program it is necessary to have a zone buffer for
          record input and a field variable as a pointer for the two fields
          to be printed out. The field types are described in the data list
          section 2.2.2, and the declarations necessary can be made as
          shown below; note that declarations are separated by a semicolon.
           
                    zone item (128,1,stderror); 
                    integer field no; 
                    long array field name; 
                     
          Three areas are thus reserved in the working store. A zone buf-
          fer, consisting of 128 double words, and two field variables each
          consisting of a word. Figure 4.3 illustrates this. 
                     
          F_i_g_u_r_e_ _4_._3_ 
                     
                    WORKING STORE 
                     
                            NO 
                     
                           NAME 
                     
                           ITEM 
                     
          STANDARD  The item report is to be output to a terminal, and a
          ZONE      zone buffer is to be used in this connection. Usually
                    both input and output are required, therefore a zone-
                    buffer for each of these functions is declared automa-
                    tically. A zone thus declared is called a standard
          IN        zone. The standard zone, IN, is used for input, and the
          OUT       standard zone, OUT, is for output. OUT is used for the
                    output of the item report. 
                     \f

                   STANDARD       Most programs need various working variables and
                         just as standard zones may be declared so may
                         standard variables, these may be used without
                         further difficulty. The working store now appears
                         as shown in fig. 4.4. 
                          
          F_i_g_u_r_e_ _4_._4_ 
           
                       WORKING STORE 
           
                          PROGRAM-
                          DECLARED 
                          VARIABLES 
           
                             NO 
                            NAME 
                            ITEM 
           
                          STANDARD 
                          VARIABLES 
           
                          STANDARD 
                          ZONES 
           
                             IN 
                            OUT 
           
           
4_._2_ _ _ _ _ _ _ _D_e_s_c_r_i_p_t_i_o_n_ _o_f_ _t_h_e_ _C_o_u_r_s_e_ _o_f_ _A_c_t_i_o_n_ 4.2
           
          An initial analysis of the problem clarifies the course of action.
          The following must be executed: 
           
                         . Read a record from the item file. 
                         . Output the item number and item name fields. 
                          \f

                   The above actions must be executed for each record in the item
          file, the end record excepted. The process may be further
          illustrated by a graph (fig. 4.5). 
           
          F_i_g_u_r_e_ _4_._5_ 
           
                                   READ 
           
           
           
          1    INITIALISATION    2    PRINTOUT  3       4 
           
           
           
                                     TERMINATION 
           
           
          GRAPH     A graph consists of several nodes, which are connected
                    by edges. 
           
           
           
                                   LINE 
           
           
           
                                   NODE 
           
          The edges are finished with arrows which show the direction to be
          taken in the graph. E.g. in the graph, fig. 4.5, the edge may be
          followed from node 1 to node 2 but not vice versa. 
           
          Nodes in a graph symbolise states, while edges symbolise actions
          (activities). 
           \f

          NODE      The nodes in the graph shown in fig. 4.5 symbolise the
                    following states: 
                          
                    1. start 
                    2. Ready for output 
                    3. Ready for input 
                    4. Stop 
                     
          EDGE      Each edge in fig. 4.5 is supplied with an explanatory
                    text which describes the symbolised action. 
                     
                   The edges in fig. 4.5 symbolise the following actions: 
           
                         . Initialisation 
                         . Input of a record 
                         . Output of item number and item name. 
                         . Termination 
                          
          The course of action described by the graph may be further
          illustrated by a run through of the graph. 
           
                   GRAPH     The initial state is the START state. From this state
          RUN       an edge leads to a new node. The action symbolised by
          THROUGH   this edge is called INITIALISATION, and this consists
                    of accessing the item file and reading the first record
                    If the first record is an end record, which is theore-
                    tically possible, an edge leads from node (2) directly
                    to the last node (4), and the course of action is
                    terminated. 
           
          A more interesting path is followed when the first record is an
          actual item record. An edge symbolising the output of the
          required data then leads to node (3). There is only one exit from
          node (3) the edge symbolising the input of a record, this returns
          to node (2). Depending on the record input, one of two possible
          edges exitting from node (2) is chosen. The loop is repeated as
          long as item records are input and output and input are executed
          for each time round the loop. Exit is made from the loop only
          when the end record is read. 
           \f

          INPUT     A record may be read from the item file on the backing
                    store using the following ALGOL statement. 
                     
                    invar (item); 
                     
          INVAR     INVAR is the name of a subroutine which carries out the
                    input, and ITEM is the name of the zone which is to be
                    used for input. A subroutine is activated by stating
                    the name and an associated parameter list enclosed in
                    brackets. In the parameter list for a procedure, as a 
                             subroutine is usually called, information may be trans-
                    ferred to  the procedure, just as information may be
                    returned by the procedure, using the parameters. 
                     
          The records which may be input using INVAR must have a defined
          construction, the first four halfwords are reserved for internal
          data to be used by INVAR. Fig. 4.6 shows this: 
           
          F_i_g_u_r_e_ _4_._6_ 
           
                                   INTERNAL 
                                     PART 
           
           
                                     USER 
                                     PART 
           
           
          The internal part consists of two word-length data items. The
          first word contains the length of the record as a number of
          halfwords. The second word contains internal control data called
          a CHECKSUM. 
           
          Actual data information makes up the user part, and this can vary
          in size from record to record. The item file is constructed so
          that all records are of fixed length. The presence of the
          internal part explains why the first user field has the field
          address 6, - cf. the record description. 
           \f

          The output of the required data must be supplemented with printed
          information, and every time a record is output to the printer the
          following must be carried out: 
           
                     1. Make a line change. 
                     2. Print the item number 
                     3. Print space 
                     4. Print the item name 
                      
                   The following activation of the output procedure WRITE executes
          all that is required: 
                     
                            write (out,"nl",1,item.no,"sp",2,item.name); 
           
          Procedure name 
          zone 
          line-feed 
          item number 
          space 
          item name 
           
           
          WRITE     The procedure WRITE is entered by stating the procedure
                    name followed by a list of parameters enclosed by brac-
                    kets. The parameter list specifies the zone to be used
                    for output and the data which is to be output. The in-
                    dividual data items in the parameter list are separated
                    by comma, and they are output in the order in which
                    they occur. 
                          
          OUT       The first parameter must always be the name of the zone
                    which is to be used. In this case it is the standard
                    zone, OUT. 
                          
          "NL",1    The next parameter begins with a boolean constant.
                    Boolean constant indicate that a certain character is
                    to be output, and following parameter determines how
                    many times that character is to be repeated. 
                     \f

                    The output of the constant "NL" causes a new-line char-
                    acter to be output, and as the following parameter is
                    the digit one, only one new-line character is output. 
                     
          ITEM.NO   This parameter refers to the field which contains the
                    item number, and this is output. 
                     
                   "SP",2    "SP" is a boolean constant, and the following parameter
                    determines the number of times that character is to be
                    output. The output of the constant "SP" results in the
                    output of a space. Thus two space characters are out-
                    put. 
                     
          ITEM.NAME This parameter refers to the field which contains the
                    item name, and the name is output. 
                     
          Program statements are executed in the order in which they are
          written, and the writing of the two statements 
           
                    invar (item); 
                    write (out, "nl",1, item.no, "sp",2, item.name); 
                     
           
          just as many times as there are records in the item file would
          give one solution to the printing out problem. 
           
          LOOP      A more realistic solution is obtained by expressing the
                    loop in the graph, fig. 4.5, in a WHILE construction,
                    and the graph is thus converted to the following
                    program sequence: 
                          
                         invar(item); 
                         while item.no < 4000 do 
                         begin 
                           write (out, "nl",1, item.no, "sp",2, item.name);
                           invar (item); 
                         end; 
                          \f

          In the first statement in this program sequence, the first record
          in the item file is read in. 
          The next statement is a WHILE statement. A WHILE statement begins
          with the word WHILE, which is followed by a condition. The value
          of this condition may be TRUE or FALSE, dependent on the item
          number in the record last input being less than 4000 or not. When
          the condition is true the sequential operator DO indicates the
                   next statement to be executed. In this case the next statement is
          a compound statement consisting of the two well-known statements
          enclosed by the statement bracket BEGIN END. After the compound
          statement is executed the condition is reexamined, and the cur-
          rent value determines whether the compound statement is to be
          executed again. When the condition is false exit is made from the
          WHILE statement and thus from the loop, and the follwing state-
          ment in the program is executed. 
           
          As the end record has item number, 4000, it is clear that the
          program sequence is a direct transformation of the loop in the
          graph, fig 4.5, to ALGOL statements. 
           
          E_x_e_r_c_i_s_e_ _4_._1_ 
           
                    Assume that the following records exist in the item file.
                     
                      10 transistors 
                      17 diodes 
                     209 print cards 
                    4000 end record 
                     
                    Use the outlined program sequence for this item file
                    and state in detail what occurs. 
                     
          A few details are still required to complete the output program.
          The zone ITEM has to be connected the area on the backing store
          where the item file is kept, and it must be released after use.
          The required initiation of field variables can be easily managed
          as shown in examples 4.8 and 4.10. 
           \f

          OPEN      A zone is connected to a stated area of the backing
                    store by using the procedure OPEN. The zone ITEM may be
                    connected to the area ITEMFILE, where the item file is
                    assumed to exist, by the following activation of OPEN: 
                     
                                       open (item,4,<:itemfile:',0); 
                   Procedure name  
          Zone 
          Backing store type 
          Area name 
          Error statement 
           
          The backing store type determines to which unit the zone is to be
          attached. For disc storage, the only type used for the problems
          in the book, 4 is stated. 
           
          The error statement is used when error routine, defined in the
          zone declaration, is activated. If the standard error is to be
          used, a zero is given as parameter, this will be sufficient for
          the solution of the problems given in the book. 
           
          CLOSE          The procedure CLOSE terminates the used of a zone,
                         and the connected area is released. The use of the
                         zone ITEM may be terminated with the following
                         statement: 
                                   
                                  close (item, true); 
           
          Procedure 
          Zone 
          Release 
           
          The last parameter in the procedure call may be used in various
          ways, amongst others when a zone is connected to a magnetic tape,
          TRUE must always be used in the solution of problems in this book.
           
          The output program may now be put together using the completed
          parts, it must be noted that the individual declarations and
          statements must be separated by semicolons, and the whole program
          should be contained in the brackets BEGIN END. 
           \f

                                  begin 
                           integer field no; 
                           long array field name; 
                           zone item (128,1,stderror); 
                            
                           open (item,4,<:itemfile:',0); 
                           no: = 6; 
                           name: = 6; 
                            
                           invar (item); 
                            
                           while item.no <4000 do 
                           begin 
                             write (out,"nl",1,item.no, 
                                   "sp",2,item.name); 
                             invar(item); 
                           end; 
                            
                           close (item,true); 
                         end 
                            \f

         5_._ _ _ _ _ _ _ _ _S_O_F_T_W_A_R_E_ 5.
           
          The last part of the programming effect, where the program is to
          be debugged using test runs, demands knowledge of the software.
          This chapter describes the use of the software with debugging in
          mind. The following must be done: 
           
                    1. Get permission to use a terminal. 
                    2. Type in the problem the computer is to execute. 
                    3. Make the computer execute the program. 
                     
          NOTATION       In the illustrating examples a special notation is
                         used, amongst other things to show whether a line
                         has been typed in by the terminal user or has been
                         output by the computer. 
                          
                         X  shows that an ATTENTION signal is to be sent. 
                          
                         -' indicates that the line is typed in. 
                          
          Note that a line is not processed before the complete line is
          typed in and terminated with a new line character; this cannot be
          seen in the examples. 
           
           
5_._1_ _ _ _ _ _ _ _L_O_G_I_N_ _R_o_u_t_i_n_e_ 5.1
           
          Permission to use a terminal is obtained after a conversation
          with BOSS. This dialogue is called the LOGIN routine, and this
          may run as shown in ex. 5.1 
           
          E_x_ _5_._1_ 
           
                    X att -' boss 
                  type user name and project number 
           
               -' kc 1234 
                  in: 1978.09.03  11.04 
           \f

                   From ex 5.1 it is seen that the dialogue with the computer is
          initiated by sending an ATTENTION message. The message is answer-
          ed by the output ATT, the user then types BOSS and a new line
          character, the BOSS operating system then asks for identification;
          the user replies with a codeword consisting of a name and a num-
          ber. These data items are separated by a space character. BOSS
          shows acceptance of the codeword by outputting the time of day,
          and the terminal is at the disposal of the user. 
           
          A so called JOBFILE is also reserved for the user where the fol-
          lowing lines, which are to describe the project, are stored. 
           
           
5_._2_ _ _ _ _ _ _ _J_O_B_ 5.2
           
          A defined project which the computer is asked to execute is cal-
          led a job. The job, which can manage the running of the output
          program, may be typed in to the JOBFILE as shown in ex. 5.2. 
           
           \f

                   E_x_._ _5_._2_ 
           
                    -'  10  u=algol 
                    -'  20  begin 
                    -'  30    integer field no; 
                    -'  40    long array field name; 
                    -'  50    zone item(128,1,stderror); 
                    -'  60    no:= 6; 
                    -'  70    name:= 6; 
                    -'  80    open(item,4,<:itemfile:',0); 
                    -'  90    invar(item); 
                    -' 100    while item.no < 4000 do 
                    -' 110    begin 
                    -' 120      write(out,"nl",1,item.no,"sp",2,item.name);
                    -' 130      invar(item); 
                    -' 140    end; 
                    -' 150    close(item,true); 
                    -' 160  end 
                    -' 170  u 
                    -' 180  finis 
                     
                     
          LINE      In ex. 5.2 each line begins with a line number which is
          NUMBER    separated from the contents by a space, lines typed in
                    in this fashion are stored in the JOB FILE in ascending
                    line number order. If any typing errors occur it is not
                    a catastrophe, as by using the line number it is possi-
                    ble to access the lines which are to be amended, or
                    perhaps completely altered. The editing possibilities
                    are described in section 5.5.4. 
                     
          FP        Apart from the output program (lines 20-160), the
          COMMAND   typed-in job contains various directions (control
                    cards), which tell the computer which programs are to
                    be activated during the job run. \f

                             A directive is called an FP Command as a special pro-
                    gram FP undertakes the interpretation and execution of
                    these commands. 
                          
          There are 3 FP commands in the job. 
           
          The first (line 10) states that the ALGOL compiler is to be acti-
          vated and is to compile the typed program to machine instruc-
          tions. It is further stated that the compiled program is to be
          stored under name U. 
           
                   The second FP command (line 170) is the name of the compiled
          program, and by giving this name it is stated that the compiled
          program is to be run. 
           
          The third FP command is FINIS, and with this command the FINIS
          program is activated, this informs BOSS that the job is to be
          terminated. 
           
          The three FP commands are executed in the order they are stored
          in the JOB FILE, and the job thus consists of compiling the out-
          put program, running the compiled program and stating that the
          job has no more requirements. 
           
          FP commands are further described in section 5.6 
           
           
5_._3_ _ _ _ _ _ _ _R_u_n_n_i_n_g_ _a_ _J_o_b_ 5.3
           
          A job, described in the JOB FILE, is brought to execution by
          asking BOSS to run the job. Requests to BOSS are made by typing
          in various commands. 
           
          GO   The GO command request BOSS to execute a job. 
           \f

                   E_x_._ _5_._3_ 
           
               -' go 
               finis kc0 at 13.02 
                
               The GO command is acknowledged with a message stating the
               likely time for the run of the job. 
                
          SYNTAX    go 
                
          FUNCTION  When the GO command is used, the job described in the JOB-
                    FILE is entered to be run. As there may be several jobs
                    entered, the new job is just inserted in the queue of jobs
                    waiting to be run. Following a well-defined strategy, BOSS
                    chooses from the job queue those jobs which are to be run
                    first. Thus the small jobs with short run times are usually
                    run first. 
                
          On job entry, an expected time for the job to be terminated  is calcu-
          lated, and output to the terminal user. 
          The terminal keyboard is then locked, and the terminal may not be used
          to run other jobs before the entered job is run.  

          JOB NAME  A job name is run under a job name made up of a user name
                    and an index. The job name is output in the reply to the GO
                    command. In ex. 5.4 the job name is KC0. 
           
               Ex. 5.4 shows the complete terminal conversation. 
                \f

                   E_x_._ _5_._4_ 

                       X att -' boss 
                       type user name and project number 
                  -'   kc 1234 
                      in: 1978.09.03 11.04 
                       
                  -'   10 u=algol 
                  -'   20 begin 
                  -'   30   integer field no; 
                  -'   40   long array field name; 
                  -'   50   zone item(128,1,stderror); 
                  -'   60   no:= 6; 
                  -'   70   name:= 6; 
                  -'   80   open(item,4,<:itemfile:',0); 
                  -'   90   invar(item); 
                  -'  100   while item.no < 4000 do 
                  -'  110   begin 
                  -'  120     write(out,"nl",1,item.no,"sp",2,item.name); 
                  -'  130     invar(item); 
                  -'  140   end; 
                  -'  150   close(item,true); 
                  -'  160 end 
                  -'  170 u 
                  -'  180 finis 

                  -'  go 
                      finis kc0 at 13.02 
                       
                       
5_._4_ _ _ _ _ _ _ _R_u_n_ _A_n_a_l_y_s_i_s_ 5.4
           
          The entered job (ex. 5.4) produces various messages during its
          run, these are in the following given explanatory comments. 
           
                    1 : begin                    output from 
                    15: end                      the ALGOL compiler 
                    algol end 25 \f

                             9  transistors              Output from the item file. 
                    11  diodes 
                    17  terminals 
                    111  curcuits 
                    900  power supply 
                    1234  disc store 
                    2345  tape station 
                    3456  magnetic tape 
                     
                    end 18                      Final output from the out-
                                                put program. 
                    end 2 sec job kc0           Output from BOSS 
                    log opdate 1978.09.03 12.59 
                    '' 
           
          The output from the ALGOL compiler relates that the compilation
          is completed without error, and the compiled program fills 25
          segments of backing store. The ALGOL compiler is described in
          section 5.7. 
           
          The output from the item file is poor as regards layout, but this
          will be improved later. 
           
          The run of an ALGOL program is always terminated with the message
          END XX. The number after END relates how many times a program
          segment has been transferred from backing store to main store.
          This number may be less than the total number of segments in the
          program, as it is only those segments required which are read in.
           
          A job is always terminated with a message from BOSS stating the
          run time and termination time. 
           
          '' informs that the terminal is free for further use. 
           \f

         5_._5_ _ _ _ _ _ _ _B_O_S_S_ _C_o_m_m_a_n_d_s_ 5.5
           
          A BOSS command is a directive to BOSS concerning the execution of
          a certain action. Such a directive must be typed in from a termi-
          nal. The GO command is an example of a BOSS command. 
           
          There are many BOSS commands which a terminal user may type in,
          and in the following section only a limited number are dealt with.
          After a job is entered from a terminal the keyboard may not nor-
          mally be used until the job is completed. Permision to do so may
          be obtained by sending an ATTENTION signal. 
           
          Ex. 5.5 
                    X 
                    '' 
                    -' kill 
                    The ATTENTION signal receives the reply '', this states
                    that a BOSS command may be typed. The KILL command is
                    then typed. 
                     
          Typing of BOSS commands can cause various error messages to be
          output. There are many reasons for these, but the most common are
          elementary spelling mistakes and the invalid use of a command.
          Appendix B gives a list of the error messages which may arise
          from the use of the BOSS commands given in this book. 
           
           
5_._5_._1_ _ _ _ _ _J_O_B_ _I_n_t_e_r_r_u_p_t_i_o_n_ 5.5.1
           
          KILL      A job may be stopped using the KILL command. 
           
           
          E_x_._ _5_._6_ 
           
                    X 
                    '' 
                    -' kill 
                    Permission to type a KILL 
                    command is obtained \f

                             by sending an ATTENTION message. 
                     
          SYNTAX    kill 
                     
          FUNCTION  When the KILL command is typed at the terminal the job
                    that is entered from that terminal to the job queue
                    administered by BOSS, is stopped. 
                     
                     
5_._5_._2_ _ _ _ _ _E_n_d_ _U_s_e_ _o_f_ _T_e_r_m_i_n_a_l_ 5.5.2
                     
          LOGOUT    The LOGOUT command states that the terminal is no
                    longer required. 
                     
          E_x_._ _5_._7_ 
                     
                    -' logout 
                    logged in 3 min operations 5 
                     
                    The LOGOUT command is typed and receives the following
                    line in reply. 
           
          SYNTAX    logout 
                     
          FUNCTION  The use of the LOGOUT command gives the following
                    result: 
                     
                    1.  The removal of an entered job, if any 
                    2.  All LOGIN areas are removed. (see section 5.5.6.3)
                    3.  An explanatory message concerning the time and the
                        scope of the use of the terminal is output. 
                         
          When this is completed the use of the terminal is terminated, and
          a new session at the terminal must be initiated with the LOGIN
          routine. 
           \f

         5_._5_._3_ _ _ _ _ _A_s_s_i_g_n_m_e_n_t_ _o_f_ _L_i_n_e_ _N_u_m_b_e_r_s_ 5.5.3
           
          AUTOLINE  If the AUTOLINE command is used BOSS creates and
                    outputs line numbers. This saves typing line numbers. 
                     
          E_x_._ _5_._8_ 
                    -'  autoline 
                    10 -' u=algol 
                    20 -' begin 
                    30 -'   integer field no; 
                    40 -'   long array field name; 
                    50 -'   zone item(128,1,stderror); 
                    60 -'   no:= 6; 
                    70 -'   name:= 6; 
                    80 -'   open(item,4,<:itemfile:',0); 
                    90 -'   invar(item); 
                   100 -'   while item.no < 4000 do 
                   110 -'   begin 
                   120 -'     write(out,"nl",1,item.no,"sp",2,item.name); 
                   130 -'    invar(item); 
                   140 -'   end; 
                   150 -'   close(item,true); 
                   160 -' end 
                   170 -' u 
                   180 -' finis 
                   190 -' X 
                    
          SYNTAX   autoline 
           
          FUNCTION After the AUTOLINE command is typed each of the follo-
                   wing lines is assigned with a line number. 
                   The lines are numbered 10, 20, 30..., etc. The line num-
                   ber is output concurrently with the typing in, and the
                   terminal user thus does not have to type the numbers.
                   Assignment of line numbers is concluded when an ATTEN-
                   TION message is sent. 
                    \f

         5_._5_._4_ _ _ _ _ _E_d_i_t_i_n_g_ 5.5.4
           
          It is nearly impossible to work at a terminal without making
          errors. Perhaps a word may be misspelt or a line forgotten.
          Various amendment facilities exist to correct such errors. 
           
 
5_._5_._4_._1_ _ _ _D_e_l_e_t_i_o_n_ 5.5.4.1
           
          A delete character may be used when an error is discovered while
          typing a line. 
           
                    BACKSPACE or RUBOUT deletes the last character 
                    (RUBOUT is eccoed as  , BACKSPACE deletes the last character).
                    A press on CTRL + E at the same time delets the whole line
                    (CTRL + E is eccoed as   ). 
                     
          E_x_._ _5_._9_ 
                     
                    u=alf gol 
                    f is deleted. 
                     
                    u=alf u=algol 
                    the line is deleted and rewritten. 
                     
          The delete symbol   may be used several times in succession, and
          the characters in the line are successively deleted from right to
          left. 
           
          E_x_._ _5_._1_0_ 
                    u=fortran       algol 
                    fortran is deleted. 
                     
                     
5_._5_._4_._2_ _ _ _A_m_e_n_d_m_e_n_t_ _C_o_m_m_a_n_d_s_ 5.5.4.2
           
          It is possible 
           
          .  to insert 
          .  to delete 
          .  to modify 
           
          lines in the JOB FILE. \f

                   Each line in the JOB FILE is supplied with a line number. When
          typing, the line numbering may be chosen freely by the terminal
          user. The lines are stored in ascending line number order regard-
          less of the order in which they were typed. 
           
          INSERT    The typing of the job in example 5.2 consisted of
                    inserting a set of lines into an empty JOB FILE. Thus
                    new lines are inserted by typing the line number and
                    the contents of the line, separated by a space. 
                     
          E_x_._ _5_._1_1_ 
                     
                    35 invar(item); 
                     
          If a line with the given line number already exists, the newest
          version of the line will replace the original line. 
           
          E_x_e_r_c_i_s_e_ _5_._1_ 
                     
                    Define the contents of the JOB FILE after the following
                    input has been made: 
                     
                    10  p=algol 
                    20  integer sum,a,b; 
                    30  write(out,sum); 
                    15  begin 
                    40  end 
                    10  u=algol list.yes 
                    25  read(in,a,b); 
                    26  sum:=a+b; 
                     
                    Insert an empty line immediately after line 10. 
                     
          DELETE    The typing of a line number alone causes that line to
                    be deleted in the JOB FILE. 
                     \f

                   E_x_._ _5_._1_2_ 
                     
                    40 
                     
          MODIFY    A line may be modified, and the following must then be
                    stated: 
                     
                         . the line number, 
                         . the characters (the graphical picture) which
                           are to be replaced, 
                         . the new graphical picture to be inserted. 
                          
                         The data must be separated by the same delimiter.
                         Naturally the delimiter must not be found in
                         either graphical picture. 
                          
          E_x_._ _5_._1_3_ 
                    50 name: =6; 
                    50/: =/:=/
                    The graphical picture >: => is replaced by >:=> in line
                    50. / is used as delimiter. 
                     
          The graphical picture first stated is searched for, from left to
          right. The first time it is met the correction is made, and the
          modification executed. 
           
          DELIMITER A delimiter may be chosen freely with the following
                    restrictions: 
                     
                    1. A space following immediatly after the line number
                       causes the whole line to be inserted, thus a space
                       may not be used as a delimiter. 
                        
                    2. The delimiter must not occur in the graphical
                       pictures. 
                        
                    / > " are given as examples of separators. 
                        \f

                   E_x_e_r_c_i_s_e_ _5_._2_ 
                     
                    The JOB FILE used in exercise 5.1 is to be altered so
                    that the variable name A, whereever it occurs, is to be
                    replaced with SALE. 
                     
                     
5_._5_._5_ _ _ _ _ _P_r_i_n_t_i_n_g_ 5.5.5
           
          The whole or part of the JOB FILE may be printed using various
          commands. 
           
           
5_._5_._5_._1_ _ _ _V_e_r_i_f_y_ 5.5.5.1
           
          The line last typed or modified is printed using the VERIFY com-
          mand. 
           
          E_x_._ _5_._1_4_ 
           
                    verify 
                     
          A chosen line may be printed by adding the line number. 
           
          E_x_._ _5_._1_5_ 
           
                    verify 10 
                     
          A limited group of lines may be printed, by adding the number of
          lines to be output. 
           
          E_x_._ _5_._1_6_ 
           
                    verify 10 4 
           
          line 10 plus the 3 following lines are output. 
           
           
5_._5_._5_._2_ _ _ _L_i_s_t_ 5.5.5.2
           
          The whole of the JOB FILE may be output using the LIST command. \f

                   E_x_._ _5_._1_7_ 
           
                    list 
                     
          If a line number is added then the specified line plus all the
          lines with a greater line number will be output. 
           
          E_x_._ _5_._1_8_ 
           
                    list 30 
                     
          A group of lines may be printed out by stating the lower and
          upper limits for the group. 
           
          E_x_._ _5_._1_9_ 
           
                    list 30 97 
                     
                     
5_._5_._6_ _ _ _ _ _J_o_b_ _F_i_l_e_ _H_a_n_d_l_i_n_g_ 5.5.6
           
          An area on the backing store may be reserved for the JOB FILE by
          using the GET command. The area is then called a BASIS FILE. 
           
          The CLEAR command frees a BASIS FILE, the area then being
          returned to normal status. The contents of the JOB FILE may be
          copied to an area using the SAVE command. 
           
           
5_._5_._6_._1_ _ _ _G_E_T_ 5.5.6.1
           
          E_x_._ _5_._2_0_ 
           
                    get text 
                    The area TEXT is transferred to the JOB FILE. 
                     
          SYNTAX    get <area name' 
 \f

                   GET       An existing basis file, if any, is released, and the
                    specified area is made a BASIS FILE, thus causing the
                    contents to be transferred to the JOB FILE. 
                    The lines are numbered, 10, 20, 30 ..., etc. 
                     
                     
5_._5_._6_._2_ _ _ _C_L_E_A_R_ 5.5.6.2
           
          E_x_._ _5_._2_1_ 
           
                    clear 
                     
                    The contents of the JOB FILE are erased, and a BASIS
                    FILE, if it exists, is released. 
                     
          SYNTAX    clear 
           
          CLEAR     The contents of the JOB FILE are erased and a BASIS
                    FILE, if it exists, is released. 
                     
                     
5_._5_._6_._3_ _ _ _S_A_V_E_ 5.5.6.3
           
          E_x_._ _5_._2_2_ 
           
                    save rctext 
                     
                    The JOB FILE is transferred to the area RCTEXT. 
                     
          SYNTAX    save <area name' 
                     
          SAVE      The contents of the JOB FILE are transferred to the
                    backing store to an area with the specified name. If a
                    LOGIN area with this name exists, the contents are
                    transferred to this area. If not, a new LOGIN area with
                    the name given is created, and the contents are trans-
                    ferred. A LOGIN area is saved until the terminal user
                    removes it, perhaps by using the LOGOUT command. When a
                    LOGIN area is a BASIS FILE, the contents of the JOB\f

                             FILE will be erased after transfer back to the BASIS
                    FILE with the SAVE command. 
                     
                    The last command in the series 
                    get rctext 
                    save rctext 
                    save rctext 
                    thus transfers an empty JOB FILE back to RCTEXT, and
                    the original contents have disappeared. 
                     
                     
5_._5_._7_ _ _ _ _ _M_e_s_s_a_g_e_s_ _f_r_o_m_ _B_O_S_S_ 5.5.7
           
          The conversation with BOSS concerning terminal use, editing, JOB
          FILE handling and job control can give rise to various unexpected
          messages from BOSS. The reasons are many, but the most common are
          probably spelling mistakes and wrong use of BOSS commands. 
           
          A selection of the messages output by BOSS masy be found in
          appendix B. 
           
           
5_._5_._7_._1_ _ _ _N_O_ _R_O_O_M_ 5.5.7.1
           
          The messages NO ROOM occurs when there is no capacity to make
          further amendments to a JOB FILE. To proceed the JOB FILE must be
          transferred to the backing store, and the area used converted to
          BASIS FILE. This capacity problem may be solved by using SAVE and
          GET commands, and further corrections may be made. The command
          which gave rise to the message has not been executed, and must
          thus be repeated. 
           
          When the VERIFY command is used immediately after a GET command,
          the line number of the last line in the JOB FILE is output. 
           
          If NO ROOM appears when typing, the VERIFY command thus ensures,
          in a simple way, the further input, as shown in the following: 
           \f

                             . . . 
                    -' 136 begin 
                    -' 137 integer 
                       no room 
                    -' save rcjob 
                    -' get rcjob 
                    -' verify 
                       510 
                    -' 510 integer 
                    . . . 
                     
                     
5_._6_ _ _ _ _ _ _ _F_P_ _C_o_m_m_a_n_d_s_ 5.6
           
          JOB requirements are expressed in JOB FILE with the aid of FP
          commands. A program is activated by an FP command, and at the
          same time parameters may be transferred to the program. 
           
          E_x_._ _5_._2_3_ 
           
                    u=algol list.yes 
                     
                    Call of the ALGOL compiler, accompanied by control
                    parameters. 
                     
          E_x_._ _5_._2_4_ 
                     
                    u 
                    u data 
                    p=algol txt list.yes bossline.yes 
                     
                    Various FP commands. 
                     
M_m_m_                             1                                 1 
          SYNTAX    <name' =   <programname'  <parameter list'
P_p_p_                             0                                 0 
                              
          Names may consist of at most 11 characters (letters/digits). The
          first character must be a letter. \f

                   FUNCTION  The specified program is activated, and any control
                    parameters are made available to the program. 
                     
                     
5_._6_._1_ _ _ _ _ _M_e_s_s_a_g_e_ _f_r_o_m_ _F_P_ 5.6.1
           
          FP commands are read and interpreted by the FILE PROCESSOR pro-
          gram, FP. When FP reads an erroneous FP command, one or more
          error messages are output, these are often accompained by an
          explanatory text, informing where the command in question was
          input. 
           
          E_x_._ _5_._2_5_ 
           
                    *** FP SYNTAX TESTPROGRAM1 
                    *   READ FROM PRIMARY INPUT 
                     
                    The first message states that there is a syntax error
                    in the name TESTPROGRAM1, and the second states that
                    the command was read on PRIMARY INPUT, i.e. JOB FILE. 
                     
          Appendix C contains some of the messages output by FP. 
           
           
5_._7_ _ _ _ _ _ _ _A_L_G_O_L_ 5.7
           
          COMPILER  is the name of both the programming language and the
          ALGOL     program which can translate an ALGOL text and compile a
                    program in machine instructions. This section deals
                    with the program ALGOL or the ALGOL compiler, as it is
                    called. 
                     
          A program written in ALGOL cannot be run as it stands, as the
          computer can only execute machine code. Before it is run the
          program must be transformed into a series of machine instruc-
          tions. 
           \f

                   SYNTAX    When the ALGOL compiler is working, a source text
          ERRORS    composed of a series of letters and numbers, e.g. the
                    output program, is read. Compilation can only be made
                    correctly if the source text is written according to
                    the defined rules. Syntax errors occur when these rules
                    are broken, and under compilation any error is noted
                    and a message output. An error message states when and
                    where the error occurs as well the type of error. 
                     
          E_x_._ _5_._2_6_ 
                     
                    Assume that line 70 in the output program is, by
                    mistake, written thus: 
                     
                    70 name = 6 
                     
                    Compilation of the program will give the following
                    error message: 
                     
                              6. LINE 6.1 DELIMITER 
                               
          When 
           
          Where 
           
          Error type 
           
          When      The compilation is executed with several passes, and
                    the first number in the error message relates in which
                    pass the error was discovered. 
                     
          Where     The information consists of a line number followed by
                    an operand number, which gives the position in the
                    line. Under compilation each line is given a number,
                    and it is this number which is used in the message. 
                     \f

                   Error     There are various error types. DELIMITER in ex. 5.26
          type      means that the delimiter = is placed incorrectly. It
                    should have been :=. 
                     
          Appendix D contains a selection of the messages from the ALGOL
          compiler. 
           
          LOGICAL   Even if the compilation is completed successfully,
          ERRORS    there may still be errors. These are the logical errors
                    caused by a badly designed program. An incorrectly de-
                    signed program can come to the stage where the run must
                    be abandoned. An error message will be output stating
                    why, and where in the program, the program was aban-
                    doned. 
                     
          E_x_._ _5_._2_7_ 
           
                    10  u=algol 
                    20  begin 
                    30    integer field no; 
                    40    long array field name; 
                    50    zone item(128,1,stderror); 
                    60    no:= 6; 
                    70    name:= 6; 
                     
                    90    invar(item); 
                   100    while item.no < 4000 do 
                   110    begin 
                   120      write(out,"nl",1,item.no,"sp",2,item.name); 
                   130      invar(item); 
                   140    end; 
                   150    close(item, true); 
                   160  end 
                   170  u 
                   180  finis 
                    
                   A run of the familiar job where line 80 is absentminded-
                   ly omitted, will give the following error message. 
                    \f

                             ZONE STATE 4 INVAR 
                    CALLED FROM LINE 6-7 
                     
                    It is obvious that the error is caused by the zone not
                    being connected to the item file. 
                     
          Appendix E contains some of the messages output while the program
          is being run. 
           
           
5_._7_._1_ _ _ _ _ _C_a_l_l_i_n_g_ _A_L_G_O_L_ 5.7.1
           
          The ALGOL compiler may be activated in several ways, and thus it
          is possible to control the input as well as the output. 
           
          E_x_._ _5_._2_8_ 
           
                    u=algol 
                    u=algol source 
                    object=algol source list.yes bossline.yes 
                     
                     
M_m_m_                                                      1 
          SYNTAX    <object name'=algol <source name' 
P_p_p_                                                         0 
M_m_m_                                                            1    1 
                                     list.yes  bossline.yes 
P_p_p_                                                               0    0 
           
          The syntax given shows just a few of the possibilities for trans-
          ferring parameters which can influence execution. 
           
          <object name' 
                    Defines the name of the compiled program. 
                     
          <source name' 
                    When this data is given, the ALGOL text is read from\f

                             the area with the stated name. Where no name is given
                    the ALGOL text must occur immediately after the ALGOL
                    activation. 
                     
          LIST.YES  When this parameter occurs the source text is output
                    during the compilation. Each line starts with an as-
                    signed line number thus facilitating the location of
                    errors. 
                     
          BOSSLINE.YES 
                    This parameter causes the lines to be output with a
                    supplementory line number which may be used when edi-
                    ting with BOSS. 
                     
                     
5_._8_ _ _ _ _ _ _ _I_l_l_u_s_t_r_a_t_i_v_e_ _R_u_n_ _E_x_a_m_p_l_e_s_ 5.8
           
          Runs of the exercises in the book may be executed as shown in
          example 5.4. Though sometimes it may be easier to put the runs
          through in a different way. Many program tools exist, of which
          the following will be discussed: 
           
          O        Using the O program, the output data may be redirected
                   to an area on the backing store. 
           
          CONVERT  Using the CONVERT program, an area may be output to the
                   printer. 
           
          SET      An area is created using the SET program. 
           
          In the example BEGIN ..... END defines an arbitrary ALGOL text. 
           \f

                   E_x_._ _5_._2_9_ 
           
                    Separation of the program text and FP commands. 
                     
                    10 begin 
                    20 end 
                    save text 
                    clear 
                    10 u=algol text line.yes bossline.yes 
                    20 u 
                    30 finis 
                     
          The ALGOL text is typed in and stored in the area TEXT. Then the
          contents of the JOB FILE are deleted, and various FP commands
          typed in. The ALGOL call states that the sourcetext is to be
          found in the area TEXT, and that output is to be made during the
          compilation so that each line is supplied with two line numbers.
          The first line number may be used for a subsegment editing using
          BOSS, while the second is used in connection with error messages
          from ALGOL. 
           
          The separation of the ALGOL text and FP commands results in the
          first set of line numbers corresponding exactly with the line
          numbers assigned when the ALGOL text is transferred to the JOB
          FILE by the GET command. 
           
          E_x_._ _5_._3_0_ 
           
                    It can be an advantage to save the FP commands on the
                    backing store if several runs are to be made. 
                     
                    10 begih            Type in the program. 
                    20 end 
                    save text           Save program. 
                    clear               Delete JOB FILE. 
                     \f

                             10 u=algol text     Type FP commands. 
                    20 u 
                    30 finis 
                    save command        Save FP commands. 
                     
                    go                  Book the job. 
                    . . . 
                    . . .               Wait run results. 
                     
                    get text            Fetch ALGOL text. 
                    10/begih/begin      Correct ALGOL text. 
                    save text           save edited text. 
                     
                    get command         Fetch FP commands. 
                    go                  Book job. 
                     
          E_x_._ _5_._3_1_ 
           
                    Using SET, O, and CONVERT it is possible to redirect
                    output data from a job so that it is printed out on the
                    printer. 
                     
                    10 outfile=set 200       An area of 200 segment is
                                             reserved for output. 
                    20 o outfile             Output is redirected to OUT-
                                             FILE 
                    30 u=algol text list.yes 
                    40 u 
                    50 o c                   Output directed back again,
                                             thus terminating the use of
                                                  OUTFILE 
                    60 convert outfile       OUTFILE output on the printer 
                    70 finis 
                     
                    The data redirected consists of output from ALGOL, any
                    error messages from the running program as well as data
                    output to the standard zone OUT. 
                     \f

                   E_x_._ _5_._3_2_ 
           
                    Input which is read using the standard zone IN, is
                    normally read from the JOB FILE. 
                     
                    10 u=algol text 
                    20 u 
                    30 1 2 
                    40 3 4 
                    50 finis 
                     
                    The program u requires 4 numbers, and these are stated
                    immediately after the call of the program. 
                     
          E_x_._ _5_._3_3_ 
                     
                    The input of data using the standard zone IN can be re-
                    directed by altering the call of the program. This is
                    done by stating the name of the data area immediately
                    after the program name. 
                     
                    10 1 2              Type input 
                    20 3 4 
                    save data           Save in area DATA 
                    clear 
                     
                    10 u=algol text 
                    20 u data           Call of program so that input taken
                                        from DATA 
                    30 finis 
                     \f

         6_._ _ _ _ _ _ _ _ _A_L_G_O_L_ 6.
           
          The output program was written using the familiar characters
          found on a typewriter keyboard. Those characters which may appear
          in an ALGOL program are dealt with in this chapter, also the com-
          bination of characters into symbols, number constants, and names.
          The construction of declarations, expressions, and statements
          using the symbols, numbers, and names is also dealt with, but not
          exhaustively as a detailed explanation is given in the following
          chapters. This chapter ends with the last step in the language
          description, namely the construction of programs using statements
          and declarations. 
           
          NOTATION  The language description is simplified by using a
                    special notation. 
                     
                    Definitions are described with the aid of a so called
                    defining equality sign ::=. 
                     
                    <concept'::= <definition' 
                     
                    In definitions the various possibilities are separated
                    by vertical stroke. 
                     
          E_x_._ _6_._1_ 
           
                    <digit'::= 0 1 2 3 4 5 6 7 8 9 
                     
                    A digit is defined to be one of the symbols which ap-
                    pear to the right of the defining equality sign. 
                     
          A choise between several possibilities may also be shown by sta-
          ting the possibilities in a column enclosed by brackets. 
           
          E_x_._ _6_._2_ 
                                   <integer' 
                    <number'::=    <real number' 
                     
                    A number is defined to be either integer or real. \f

                   When an element may be repeated, it is defined by repetition
          statement on the brackets. 
           
          E_x_._ _6_._3_ 
M_m_m_                                     1            14 
                    <integer'::=  +      <digit' 
P_p_p_                                   - 
U_U_U_                                      0             1 
           
                    The definition shows that an integer may be signed, and
                    must consists of at least one digit and at most 14
                    digits.
           
           
6_._1_ _ _ _ _ _ _ _C_h_a_r_a_c_t_e_r_ _S_e_t_ 6.1
           
                    The following characters may be included in an
                    ALGOL-program: 
                     
                    a b c d e f g h i j 
                    k l m n o p q r s t 
                    u v w x y z æ ø å 
                    A B C D E F G H I J 
                    K L M N O P Q R S T 
                    U V W X Y Z Æ Ø Å 
                              
                    0 1 2 3 4 5 6 7 8 9 
                     
                    =  -  *  / 
                    <  '  = 
                    .  ,  >  :  ;  ( ) 
                    <SP'  <NL'  <FF' 
                     
                    - 
                    &  ! 
                    "  %  ? 
           \f

                             Some symbols cannot be represented graphically, and a
                    special notation is used to designate these characters.
                     
                         <SP'  space. 
                         <NL'  new line. 
                         <FF'  form feed. 
                          
          The individual characters are separated by a vertical stroke and
                grouped as letters, digits, basic characters and graphic charac-
          ters. The characters are used to create indentifiers, numbers,
          basic symbols, strings, and to separate the various elements. 
                 
           
6_._2_ _ _ _ _ _ _ _I_d_e_n_t_i_f_i_e_r_s_ 6.2
           
          In connection with the use of working storage it is necessary to
          declare indentifiers to define the working storage areas (see
          4.1). Procedures (see 4.2) are also defined by names. 
           
          Names in ALGOL must obey the following syntax: 
           
M_m_m_                                          N 
                               <letter'
          <name'::= <letter' 
                               <digit' 
P_p_p_                                          0 
           
          The syntax definition shows that a name must begin with a letter,
          which may be followed by an arbitrary number of letters and
          digits in no definite order. 
           \f

                   E_x_._ _6_._4_ 
           
                    The first column consists of various valid names while
                    the second column contains only invalid names. 
                     
                    a                   9 
                    b2                  2b 
                    abekat              G=7 
                    a99k                vat-month 
                    paymentofwages      payment of wages 
                     
          E_x_e_r_c_i_s_e_ _6_._1_ 
                     
                    Find the errors in the invalid names in 6.4. 
                     
          The last name in the first column in ex. 6.4 is rather difficult
          to read unhappily so, as the advantage of having explanatory and
          easily read names cannot be disconnected. A name may not contain
          a space character but an underline character,  _ , may be used.
          This character may be placed between any two characters in the
          name. 
           
          E_x_._ _6_._5_ 
           
                    payment _of _wages 
                     
                     _ serves only to help the legibility of a name, and has
                    no significance from a programming viewpoint. 
                     
          When choosing a name it must be remembered that various character
          combinations are reserved for special purposes. 
           
          A name is terminated by <SP', <NL', <FF', or one of the delimi-
          ters described in section 6.4 
           
           \f

 6_._3_ _ _ _ _ _ _ _N_u_m_b_e_r_s_ 
           
          A distinction is made between integers and reals. 
           
                        <integer' 
          <number'::=   <real' 
           
          An integer must obey the following syntax. 
           
M_m_m_                            1              14 
          <integer'::=   +      <digit' 
P_p_p_                         -  0              1 
              
          E_x_._ _6_._6_ 
           
                    +1  -1  +01   0987  88 
                    17   9  -8 000 000  97 
                     
                    Ex. 6.6 shows that it is valid to separate digits with
                    a space for better logibility. 6.3
                     
          A real number consists of a decimal number which may be followed
          by an exponent part. 
           
M_m_m_                                                                     1 
               <real number'::=  <decimal number'    <exponent part' 
P_p_p_                                                                  0 
           
              A decimal number must obey the following syntax:  
M_m_m_                                    1         k          14-k 
          <decimal number'::=   +    <digit'   .<digit' 
P_p_p_                                -  0         1          1 
           
          The exponent part states a power of 10, and the following syntax
          must be obeyed: 
           
M_m_m_                                    1          3 
          <exponent part'::=  >  +    <digit' 
P_p_p_                                 -  0          1 
           
          E_x_._ _6_._8_ 
M_M_m_                                                        2 
P_P_p_                    5.7>2 represents the value   5.7* 10  = 570.0 \f

         6_._4_ _ _ _ _ _ _ _B_a_s_i_c_ _S_y_m_b_o_l_s_ 6.4
           
          A basic symbol may consist of a single character or of a group of
          characters. The basic symbols are divided into 4 groups: 
           
                             <letter' 
M_m_m_                             <digit' 
          <basic symbol'::=
P_p_p_                             <logical value' 
                             <delimiter' 
           
          LETTER    A letter is defined in exact agreement with the
                    grouping of the character set in section 6.1. 
                     
                    <letter'::=  a b c d e f g h i j 
                                 k l m n o p q r s t 
                                 u v w x y z æ ø å 
                                 A B C D E F G H I J 
                                 K L M N O P Q R S T 
                                 U V W X Y Z Æ Ø Å 
                                  
          By definition is meant that a letter may be one of the characters
          in the list on the right of the defining equality sign. 
           
          DIGIT     A digit is similarly defined in exact agreement with
                    the character set grouping, thus: 
                     
                    <digit'::= 0 1 2 3 4 5 6 7 8 9 
                     
          Letters and digits are included in variables, amongst other
          things, as shown in section 6.2. As individual characters they do
          not normally have any significance. 
           
          Single digit numbers and single letter indentifiers are the
          exception. 
           
          LOGICAL   The third group of basic symbols is the logical values.
          VALUE     Logically a statement may have the value true or the
                    value false. \f

                             The relation >item.no < 4000> in the printout program
                    could thus be true or false. A logical value is defined
                    thus: 
                     
                    <logical value'::= true  false 
                     
          TRUE and FALSE represent the values true and false. 
           
          A number of boolean constants may be used by writing individual
          characters. 
           
                    <boolean constant'::= "<character symbol'" 
                     
          DELMITER  The fourth group of basic symbols is a motley selection
                    which may be subdivided using the following definition:
           
                     
                                     <operator' 
M_m_m_                                     <separator' 
                    <delimiter'::= 
P_p_p_                                      <parentheses' 
                                     <declarator' 
           
          OPERATOR  In a common arithmetic expression such as 
                     
                    10 + 5*7 
                     
                    two operators exist, + and *. 
                    There is no doubt as to what the expression means, and
                    that the value of the expression is 45. 
           
          To be able to calculate the expression it is necessary to know
          the operations which the operators symbolise, as well as to know
          the order of operation. It is not insignificant if the addition
          is executed then the multiplication or vice versa. 
           
          Operators for various uses exist in ALGOL. 
           \f

                          <arithmetic operator' 
                          <relational operator' 
          <operator'::=   <logical operator' 
                          <sequetial operator' 
           
          ATITHMETIC  Arithmetic expressions may be included in ALGOL
          OPERATOR    programs, and the usual arithmetic operators may
                      naturally be used. The denifition below shows the
                      most common. 
                       
                      <arithmetic operator'::= +  - 
                                               *  ** 
                                               /  //  mod 
                                                

                      +, - and / have their usual meaning. 
                      *          multiplication sign 
                      **         to the power of 
                      //         integer division 
                      mod        the calcutation of the remainder on
                                 integer devision. 
                       
          E_x_._ _6_._9_ 
           
                    7*5        =  35 
                    10 ** 2    = 100 
                    101 // 10  =  10 
                    101 mod 10 =   1 
                     
          The operators // and MOD may not be used in connection with real
          numbers. 
           
          Arithmetic expressions in ALGOL programs are calculated using the
          same rules as normal arithmetic expressions. The operators have
          the following precedence. 
           
                    1.  ** 
                    2.  * / // mod 
                    3.  + - 
                     \f

                   E_x_e_r_c_i_s_e_ _6_._2_ 
           
                    Calculate the value of the following expression: 
                     
                    7-8*10/2+3 
                     
          RELATIO-  The relational operator < has already been used in the
          NAL       printout program. This operator was used to compare two
          OPERATOR  numbers, namely the value of the field, ITEM.NO, and
                    the constant 4000. The result of the comparison may be
                    true or false. That is, a logical value, represented in
                    ALGOL by TRUE or FALSE. 
                     
                    <relational operators' ::= <  <=  =  '=  '   <' 
                     
                    The operators have the following significance: 
                     
                    <  less than 
                    <= less than or equal to 
                    =  equal to 
                    '= greater than or equal to 
                    '  greater than 
                    <' not equal to 
                     
          E_x_e_r_c_i_s_e_ _6_._3_ 
           
                    Put a cross in the correct column. 
                     
                    RELATION            TRUE           FALSE 
                     
                    5 < 7 
                     
                    6 ' 80 
                     
                    7 <= 2  
                     
                    5 <' 5 
                     
                    9 '= 5 + 4 
                     
                    2 = 7 - 5 \f

                   LOGICAL   A logical operator may be used in a logical expression,
          OPERATOR  that is an expression which takes the value TRUE or
                    FALSE. A relation is an example of a logical expression.
                    The definition below includes the 3 most common logical
                    operators. 
                     
                    <logical operator'::= -,  and  or 
                     
          E_x_._ _6_._1_0_ 
           
                    item.no ' 2000 and item.no < 3000 
                     
                    The logical expression has the value TRUE when the item
                    number is greater than 2000 and less than 3000. 
                     
          The significance of the three operators is shown in the following
          diagram. 
           
                           p     true   true   false   false 
                           q     true   false  true    false 
                     
          NEGATION      -, q     false  true   false   true 
           
          CONJUNCTION   p and q  true   false  false   false 
           
          DISJUNCTION   p or  q  true   true   true    false 
                        
          Logical operators and expressions are often called boolean
          operators and expressions after the English mathematican, George
          Boole, who founded symbolic logic. 
           
          SEQUEN-   In the printout program DO was used to select the next
          TIAL      statement: 
          OPERATOR 
                     
                    while item.no < 4000 do 
                    begin 
                      write(out,"nl",1,item.no,"sp",2,item.name); 
                      invar(item); 
                    end; 
                       \f

                   An operator which selects the next statement or the next
          expression, is called s sequential operator. 
           
                   <sequential operator'::=  if      then   else 
                                    case    of 
                                    for     do 
                                    repeat 
                                    goto 
                                     
          All these operators are explained in detail in the following
          chapters. 
           
          SEPARATOR In the printout program the individual declarations and
                    statements are separated by semicolons, and the
                    parameters in procedure calls are separated by commas. 
                     
          There are many different separators. 
           
          <separator'::=  ,   .  >  :  =  :=   ; 
                              while 
                          step   until 
                          comment 
                          <FF'  <NL'  <SP' 
                           
          The last separators, those which do not have a graphic picture,
          differ from the others in that an arbitrary number of these se-
          parators may be used in those positions where such separators are
          allowed. This facility was used in the printout program to make
          the program legible by beginning several lines with spaces, and
          by inserting blank lines (see section 4.2). 
           
          It is also valid to surround the separators 
           
               ,  :  ;  := 
                
          with an arbitrary number of spaces and line feeds. 
           
          The usage of the various separators will be clarified in the
          order in which the necessity of using them occurs in the \f

                   following chapters. 
           
          BRACKETS  In normal arithmetic expressions brackets may be used
                    to alter the order of calculation. The same is possible
                    in ALGOL programs. 
                     
          There are several different kinds of brackets in ALGOL, these are
          defined below: 
           
          <brackets'::=  begin     end 
                         (          ) 
                         <:        :' 
                         <<         ' 
                         <*        *' 
                          
          BEGIN END is called a statement bracket and is used to bracket
          statements in a program. The statement brackets was used in the
          output program to create a compound statement, similarly the
          whole program must be enclosed in a statement bracket. 
           
          () is used in expressions, declarations, procedure calls, and on
          reference to elements in an array. 
           
          E_x_._ _6_._1_1_ 
           
                    (7 + 9)/3 
                    zone item(128,1,stderror); 
                    invar.name(1); 
                     
          <: :' is solely used to enclose a text string. E.g. this could be
          the name of an area: 
           
                    open(item,4,<:itemfile:',0). 
                     
          <<  ' is used to enclose a layout. When printing, a layout
          string states the graphical picture required. This facility
          should be used in the output program. \f

                   E_x_._ _6_._1_2_ 
           
                    <<dddd' 
                     
                    In the layout string a d is given for each digit
                    position required to be output. 
                 
          <*  *' is used to enclose a comment which is directed only to  
                someone reading the program. The characters thus enclosed have
          therefore no significance in relation to the program. 
           
          E_x_._ _6_._1_3_ 
           
                    <*this is a meaningless comment*'. 
                     
          DECLARATOR   
                    Declarators are used in declarations. 
                     
                    <declarator'::= boolean   integer   long    real 
                                    array 
                                    field 
                                    zone 
                                    procedure 
                     
                    Declarators are discussed in chapter 7. 
                     
                     \f

      6_._4_._1_ _ _ _ _ _C_o_m_p_o_u_n_d_ _S_y_m_b_o_l_s_ 6.4.1
           
          The basic symbols in the following list are called compound. In
          an ALGOL program a compound symbol must always be separated from
          the previous and the following letters and digits. This can be
          done using <SP' <NL' or another delimiter which is not it self a
          compound symbol. The compound symbols may not be used as identi-
          fiers. Several of the symbols in the list will be discussed in
          more detail in the book, but all the symbols shown should be
          known to avoid invalid use of the names. 
           
                    
                    abs          external          own 
                    add          extract           procedure 
                    algol        false             real 
                    and          field             repeat 
                    array        for               round 
                    begin        goto              shift 
                    boolean      if                step 
                    case         integer           string 
                    comment      label             switch 
                    do           long              then 
                    else         message           true 
                    end          mod               until 
                    entier       of                value 
                    extend       or                while 
                                                   zone 
           \f

                   E_x_e_r_c_i_s_e_ _6_._4_ 
           
                    Analyse the printout program and find all the brackets
                    delimiters, operators and compound symbols. 
                     
          E_x_e_r_c_i_s_e_ _6_._5_ 
           
                    Find all the errors in the following version of the
                    printout program. 
                     
                    begin 
                      integer field no; 
                      long array field name: 
                      zone item(128,1,stderror), 
                      no:= 6; 
                      name:= 6; 
                      open(item,4<:itemfile:'0); 
                      invar(item); 
                      while item,no < 4000 do 
                      begin 
                        write (ont,"nl",2,item.no,"sp",2,item.name) 
                        invare (item); 
                      end; 
                      close(item,true): 
                    end; 
                       
                       
6_._5_ _ _ _ _ _ _ _P_r_o_g_r_a_m_ _S_t_r_u_c_t_u_r_e_ 6.5
           
          The rules as to how the characters from the character set may be
          combined to form indentifiers, numbers, and basic symbols were
          stated in the previous section. It remains to combine these en-
          tities into declarations and statements which can form a program.
           
           \f

         6_._5_._1_ _ _ _ _ _D_e_c_l_a_r_a_t_i_o_n_s_ 6.5.1
           
          There are various types of declarations. 
           
          <type declaration' 
                            <array declaration' 
          <declaration'::=  <field declaration' 
                            <zone declaration' 
                            <procedure declaration' 
                             
          Declarations are separated from each other and from statements by
          using the delimiter semicolon. The syntax and use of declarations
          are discussed in detail in chapter 7. 
           
           
6_._5_._2_ _ _ _ _ _S_t_a_t_e_m_e_n_t_s_ 6.5.2
           
          Statements may be sub-divided thus: 
           
                          <unconditional statement' 
          <statement'::=  <conditional statement' 
                          <loop statement' 
                           
          The various statement types are covered in detail in the follow-
          ing chapters, the remainder of this chapters deals only with a
          few. 
           
                                        <simple statement' 
          <unconditional statement'::=  <compound statement' 
                                        <block' 
                                         
                                         
6_._5_._2_._1_ _ _ _S_i_m_p_l_e_ _S_t_a_t_e_m_e_n_t_ 6.5.2.1
           
          ASSIGN-  An assignment statement is an example of a simple
          MENT     statement. 
                    \f

                   E_x_._ _6_._1_4_ 
           
                    no:= 6; 
                     
                    A simple statement followed by the delimiter, semicolon.
                     
                    <assigment'::= <identifier':= <expression' 
                     
                     
          FUNCTION  To the right of the dynamic equality sign, as the
                    delimiter := is called, an expression must be stated,
                    and the value of this expression is assigned to the
                    identifier stated on the left. 
                     
          PROCEDURE A procedure call is also an example of a simple state-
          CALL      ment. 
                     
          E_x_._ _6_._1_5_ 
                     
                    invar(item); 
                     
                    A simple statement followed by delimiter, semicolon. 
                     
                    <procedure call'::= 
M_m_m_                                                                    1 
                       <procedure identifier'  (<parameter list') 
P_p_p_                                                                    0 
           
                   FUNCTION  The procedure specified is activated, and using the
                    parameter list it is possible to transfer data to and
                    from the procedure. 
                     \f

         6_._5_._2_._2_ _ _ _C_o_m_p_o_u_n_d_ _S_t_a_t_e_m_e_n_t_ 6.5.2.2
           
          A Compound statement means one or more statements which are
          enclosed in statement brackets. 
           
          E_x_._ _6_._1_6_ 
           
                    begin 
                      write(out, "nl", 1, item.no, "sp", 2, item.name); 
                      invar(item); 
                    end 
                     
                    <compound statement'::= 
M_m_m_                                                      N 
                    begin <statement';  <statement';      end 
P_p_p_                                                      0 
                     
                    The individual statements are separated by a semicolon.
                     
          USE       When several statements are to be executed, in connec-
                    tion with a loop for example, it is necessary to define
                    how many, and this is done by using a compound state-
                    ment. 
                     
          RECURSIVE In the definition of a compound statement the concept
                    STATEMENT appers on the right hand side, this may seen
                    strange when definition of a statement (see 6.5.2.2) is
                    remembered. A reduction of the definition gives the
                    following: 
                     
                    <statement' = begin <statement';  <statement';  end 
                     \f

                                                 i 
           
          T_A_B_L_E_ _O_F_ _C_O_N_T_E_N_T_S_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _P_A_G_E_ 
           
          1.  INTRODUCTION ...........................................   1 
           
          2.  INSTALLATION ...........................................   2 
           
           
          A_P_P_E_N_D_I_C_E_S_: 
           
          A.  REFERENCES .............................................   3 
           
          B.  FUNCTION KEYS ..........................................   4 
           
           \f

                                                 ii 
           \f

         1_._ _ _ _ _ _ _ _ _I_N_T_R_O_D_U_C_T_I_O_N_    1.
           
          CalcStar runs under the control of CP/M, which is assumed to be
          installed on your RC700/RC855 Microcomputer System. 
           
          The CalcStar package you have received contains the following: 
           
          - this manual "CALCSTAR for the RC700/RC855 Microcomputer System,
            Installation Guide". 
           
          - MicroPro documentation of CalcStar: 
            "CalcStar User's Guide" 
           
          - One 8" diskette or one 5 1/4" diskette containing the CALCSTAR
            system. 
           
          Do not write on your distribution diskette as it is your master
          copy, and serves as a last resort backup in case of grave errors.
           
           \f

         2_._ _ _ _ _ _ _ _ _I_N_S_T_A_L_L_A_T_I_O_N_ 2.
           
          Start by making a copy of the original CalcStar distribution
          diskette, see ref. 1, backup, and continue in the following
          way: 
           
          1) Transfer all CalcStar files to your CP/M diskette by means of
             either PIP or TRANSFER 
              
          2) Call the "INSTCS" program which will carry out the
             installation of CalcStar 
              
          3) Answer to the installation questions as shown: 
             First time installation of CalcStar (Y/N):       N_ 
             CALSTAR installation menu please enter  
             selection (A/B)                          :       A_ 
              
             Installation menu A 
              
             Please enter selection: <_n_o_>_ _<_c_r_>_ 
                                     enter 33 for RC855 Work Station 
                                        or 34 for RC855 Work Station with\f

         A_._ _ _ _ _ _ _ _ _R_E_F_E_R_E_N_C_E_S_ A.
           
          1  RCSL No 42-i1995: 
               CP/M for the RC700 Microcomputer System, User's Guide  
                
               or 
                
               RCSL No 42-i1687: 
               RC855 Work Station, User's Guide. 
                \f

         B_._ _ _ _ _ _ _ _ _F_U_N_C_T_I_O_N_ _K_E_Y_S_ B.
           
          K_E_Y_:              F_U_N_C_T_I_O_N_:                  C_O_M_M_A_N_D_: 
           
          ->               GOTO                       @G 
           
          <-               NEXT ROW, FIRST COL        @Z 
           
          RUBOUT (RC702)    DELETE CHAR LEFT           DEL 
           
          DEL CHAR (RC855) 
           
          @                 CURSOR UP                  @E 
           
                            CURSOR DOWN                @X 
           
          <-                CURSOR LEFT                @S 
           
          ->                CURSOR RIGHT               @D 
           \f

                                                 i 
           
          T_A_B_L_E_ _O_F_ _C_O_N_T_E_N_T_S_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _P_A_G_E_ 
           
          1.  INTRODUCTION ...........................................   1 
           
          2.  INSTALLATION ...........................................   2 
           
          3.  KEYBOARD ...............................................   3 
           
          4.  SCREEN CONTROL .........................................   4 
           
          5.  PRINTERS ...............................................   5 
           
           
          A_P_P_E_N_D_I_C_E_S_: 
           
          A.  REFERENCES .............................................   7 
           
          B.  INSTALLATION PROGRAM ...................................   8 
           
           \f

                                                 ii 
           \f

F_       1_._ _ _ _ _ _ _ _ _I_N_T_R_O_D_U_C_T_I_O_N_    1.
           
          The present version of the WordStar 3.0 text processing system
          has been adapted specially for use on your ITT3290 Intelligent
          Terminal Work Station. 
           
          WordStar runs under the control of the CP/M operating system. It
          is assumed that CP/M has been installed on your ITT3290
          Intelligent Terminal Work Station and that you are familiar with
          the basic CP/M procedures. 
           
          The WordStar package you have received contains the following ma-
          terials: 
           
               - This manual: "WordStar for the ITT3290 Intelligent
                 Terminal Work Station, Installation Guide". 
               - MicroPro's documentation of WordStar including: 
                 "WordStar, General Information Manual" 
                 "WordStar, Reference Manual" 
                 "WordStar, Installation Manual". 
               - A diskette containing the WordStar system. 
               
          Do not write on the original distribution diskette as it is your
          master copy and last resort in case of errors. 
           
           \f

F_       2_._ _ _ _ _ _ _ _ _I_N_S_T_A_L_L_A_T_I_O_N_    2.
           
          Start by making a copy of the original WordStar distribution
          diskette - for details on how to do this, see ref. 1, BACKUP.
          After the copy has been made, proceed as follows: 
           
          Transfer all WordStar files to a CP/M system diskette by means of
          CP/M command PIP or TRANSFER (see ref. 1). 
           
          The file WS.COM is now ready for you to use with a standard
          matrix printer. 
           
          In case you are not satisfied with the standard ITT 3290 WordStar
          adaption (WS.COM) please follow the instructions in appendix B in
          order to install a different adaption. 
           
          !_W_A_R_N_I_N_G_!_ 
           
          Due to a peculiarity in WordStar 3.0 the following sequence will
          bring the system down: 
           
             R   ; "run a program" command 
            @U   ; cancel command 
           ---   ; any normal command 
             X   ; exit command 
           
          The remedy for this problem is to avoid the cancel command and to
          run a harmless program in place of the cancel command (e.g. STAT).
           \f

F_       3_._ _ _ _ _ _ _ _ _K_E_Y_B_O_A_R_D_    3.
           
                   The standard ITT 3290 WordStar 3.0 enables you to use the special
          function keys included on the ITT3290 keyboard. 
           
M_               K_e_y_:               =_ _F_u_n_c_t_i_o_n_                          =_ _C_o_m_m_a_n_d_ 
           
          CLEAR              = NOT USED                          = 
          ERASE INP          = DEL CHAR                          = @G 
          ERASE EOF          = NOT USED                          = 
          PF1                = LINE UP                           = @Z 
          PF2                = LINE DOWN                         = @W 
          PF3                = SCREEN UP                         = @C 
          PF4                = SCREEN DOWN                       = @R 
          PF5                = INSERT LINE                       = @N 
          PF6                = DELETE LINE                       = @Y 
          PF7                = DELETE WORD RIGHT                 = @T 
          PF8                = HELP MENU                         = @J 
          PF9                = BLOCK MENU                        = @K 
          PF10               = ON SCREEN MENU                    = @O 
          PF11               = PRINT MENU                        = @P 
          PF12               = QUICK MENU                        = @Q 
          TEST REQ           = NOT USED                          = 
          PROC MODE          = NOT USED                          = 
          USM                = NOT USED                          = 
          CURSR SELECT       = NOT USED                          = 
          PRINT              = PRINT                             = P 
          RESET CURSR        = POSITION BEFORE PREVIOUS COMMAND  = @QP_ 
          <-                 = DELETE CHAR LEFT                  = RUB 
          ESC                = ESC                               = ESC 
          ->                = WORD RIGHT                        = @F 
          <-                = WORD LEFT                         = @A 
          <-                 = RETURN                            = RETURN 
          RESET              = STOP COMMAND                      = @U 
          ENTER              = RETURN                            = RETURN 
          PA1/3              = FORMAT (ON SCREEN MENU)           = @O 
          PA2/4              = BLOCK MOVE                        = @KV_ 
          ->                = TAB                               = @I 
          INS MODE           = INSERT ON/OFF                     = @V 
          DEL                = BLOCK DELETE                      = @KY_ 
          DUP                = BLOCK COPY                        = @KC_ 
          FIELD MARK         = BLOCK MARKER DISPLAY/HIDE         = @KH_ 
          @                  = CURSOR UP                         = @E 
                             = CURSOR DOWN                       = @X 
          <-                 = CURSOR RIGHT                      = @S 
          ->                 = CURSOR LEFT                       = @D 
P_               \f

F_       4_._ _ _ _ _ _ _ _ _S_C_R_E_E_N_ _C_O_N_T_R_O_L_    4.
           
          The headings and menues of the standard system are displayed in
          the form of inverted and underlined text. For further information
          about attributes please see ref. 1, appendix B. 
           
          The standard screen options can be changed by patching the sys-
          tem. For further information about patching please see ref. 2. 
           
           \f

F_       5_._ _ _ _ _ _ _ _ _P_R_I_N_T_E_R_S_    5.
           
                   The WordStar system is provided with a set of printer options
          which make it possible to use almost any type of printer. 
           
          You may choose the standard option (this is already done for you
          in WS.COM) by typing U in the printer menu during installation
          (as described in appendix B of this manual) If, on the other
          hand, you wish to choose an alternative printer option, then
          please note the following points: 
           
                 - The printer chosen may make special demands on the communi-
               cations protocol and/or the printer driver. Please check
               ref. 1 appendix F, ref. 2 chapter 7 and the technical
               specifications of the printer. 
                
             - The following printers may, however, be used without chang-
               ing the printer driver or the communications protocol: 
                
                  1) OKI 83A, Matrix Printer (RC867) 
                  2) Qume Sprint 9 (RC868) 
                  3) NEC Spinwriter 7710/772 Thimble Printer 
                
               To ensure full utilization of the printer facilities, choose
               option U for OKI, F for Qume and G for NEC in the printer
               menu. If you choose options F or G, INSTALL will advise you
               to select a special communications protocol. Answer by typ-
               ing U. 
               
           \f

F_                  
           \f

F_       A_._ _ _ _ _ _ _ _ _R_E_F_E_R_E_N_C_E_S_    A.
           
          1  RCSL No 42-i2134: 
               ITT3290 Intelligent Terminal Work Station 
               CP/M Operating System, User's Guide 
                
          2  WordStar, Installation Manual (by MicroPro) 
           
           \f

F_       B_._ _ _ _ _ _ _ _ _I_N_S_T_A_L_L_A_T_I_O_N_ _P_R_O_G_R_A_M_    B.
             
            Invoke the Installation Program by typing: 
          A> I_N_S_T_A_L_L_ _<_c_r_>_ 
              
          Once you have started INSTALL you should see the following
          question at the bottom of the display: 
              
             DO YOU WANT A NORMAL FIRST-TIME INSTALLATION OF WORDSTAR? 
           
          Answer by pressing the key marked Y. The display will change and
          at the bottom of the display you will see the text 
m_           
             OK (Y/N): 
p_           
          This is a question.   Answer by pressing the key marked Y. 
           
          At the bottom of the display you should now see the text: 
m_           
             PLEASE ENTER SELECTION (1 LETTER): 
p_           
          This is a menu.       Respond by pressing the key marked U or the
                                key for your required selection. 
           
          There should now be a new question of type OK(Y/N) at the bottom
          of the display. This question is one of a series of questions and
          menues which will be displayed on the screen in succession, a new
          one appering each time you respond a question or menu. Each time
          you see a question of the type OK(Y/N) at the bottom of the
          display, press the key marked Y, and each time you see a menu at
          the bottom of the display press the key marked U or the key for
          your required selection, - just as you did above. 
           
          After you have answered the last question there will be a number
          of display changes and then the first WordStar menu will appear.
          At the top of the menu you should see the text: 
m_           
             EDITING NO FILE 
p_           \f

                   To make the function keys active, you have to exit the WordStar
          by pressing the key marked X. 
           
          When the CP/M prompt appear, extend the keyboard function keys by
          entering the command as shown below. 
           
          A> E_X_T_E_N_D_ _W_S_ _<_c_r_>_ 
           
          where keyboard input is underlined and <cr> means pressing the
          return key. 
           
          After the following print out: 
           
          ITT KEYBOARD EXTENTION VERS.1.0 - 82.09.22 
          FUNCTION COMPLETE - KEYBOARD TABLES EXTENDED 
           
          you have a full function key implementation as shown in chapter
          3, Keyboard. 
           
           \f

F_                  
           \f

«eof»