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

⟦f4c09931e⟧ TextFile

    Length: 157952 (0x26900)
    Types: TextFile
    Names: »D54«

Derivation

└─⟦1e8064b49⟧ Bits:30005867/disk07.imd Dokumenter (RCSL m.m.)
    └─⟦this⟧ »D54« 

TextFile

F_4R_C_ _B_A_S_I_C_ _F_U_N_C_T_I_O_N_S_ 
                   
  
4.1I_n_t_r_o_d_u_c_t_i_o_n_ 
                   
RC BASIC provides a number of functions to perform various
  calculations, thereby eliminating the need to write programs for
these calculations. 
 
RC BASIC functions generally have a three-letter mnemonic name,
followed by a parenthesized expression as an argument, and may
be used as an expression or included as part of an expression. 
 
Standard mathematical functions included in RC BASIC and the
values which they produce are as follows: 
 
     ABS(X)       Absolute value of X. 
     ATN(X)       Arctangent of X in radians.
     COS(X)       Cosine of X, where X is in radians. 
     EXP(X)       eUUUXDDD (-1000 = X = 1000).  
     LOG(X)       Natural logarithm of X (X ' 0). 
     SIN(X)       Sine of X, where X is in radians. 
     SQR(X)       Square root of X (X '= 0). 
     TAN(X)       Tangent of X, where X is in radians. 
      
In addition to these standard arithmetical and trigonometrical
functions, the RC BASIC system includes the following: 
      
     FNa(d)       Functions defined by the user. 
     INT(X)       Integer value of X. 
     RND(X)       Random number between 0 and 1. 
     SGN(X)       Algebraic sign of X. 
     SYS(X)       System information functions. 
      
Further RC BASIC functions, which are described in other
chapters, are these:   
 
     CHR(X)       String function (see Ch. 5). 
     DET(X)       Matrix function (see Ch. 6). 
     EOF(X)       File function (see Ch. 8). 
     LEN(X<)      String function (see Ch. 5). 
     ORD(X<)      String function (see Ch. 5).
TAB(X)       Printing function (see Ch. 3).
 
 \f

T_      4.2A_B_S_(_X_)_ 
      
F_o_r_m_a_t_ 
      
ABS(expr') 
 
      expr': a numeric expression. 
 
U_s_e_ 
 
  As a function to return the absolute (positive) value of expr'. 
&_ 
T_E_x_a_m_p_l_e_ 
 
* LIST 
0010 PRINT ABS(-10);ABS(10) 
 
* RUN 
 10  10 
 
END 
AT 0010 
&_* 
 
 
T_      4.3A_T_N_(_X_)_ 
 
F_o_r_m_a_t_ 
 
ATN(expr') 
 
      expr': a numeric expression (- /2 = ATN(expr') =  /2).
&_ 
U_s_e_
 
As a function to calculate the angle, in radians, whose tangent 
is expr'. 
 
 \f

T_E_x_a_m_p_l_e_ 
 
* LIST 
0010 PRINT ATN(0);ATN(1)*180/SYS(14) 
 
* RUN 
 0  45 

END 
AT 0010 
&_*
 
 
T_      4.4C_O_S_(_X_)_ 
      
F_o_r_m_a_t_ 
      
    COS(expr') 
 
      expr': a numeric expression specified in radians. 
&_ 
U_s_e_ 
 
As a function to calculate the cosine of an angle which is  
expressed in radians. 
 
T_E_x_a_m_p_l_e_ 
 
* LIST 
0010 PRINT COS(0);COS(45*SYS(14)/180) 
 
* RUN 
 1  .707107 
 
END 
AT 0010 
&_*
 
 
T_      4.5E_X_P_(_X_)_ 
 
F_o_r_m_a_t_ 
 
EXP(expr') 
         
&_      expr': a numeric expression (-178 = expr' = 175).\f

U_s_e_
  
As a function to calculate the value of e (2.71828) to the power
of expr'. 
 
T_E_x_a_m_p_l_e_ 
 
* LIST 
0010 PRINT EXP(1);EXP(2);EXP(2.5) 
 
* RUN 
 2.71828  7.38905  12.1825 
 
END 
AT 0010 
&_*


T_      4.6F_N_a_(_d_)_ 
 
For description, see the DEF statement, Chapter 3. 
 
&_ 
T_      4.7I_N_T_(_X_)_ 
 
F_o_r_m_a_t_ 
 
INT(expr') 
 
      expr':  a numeric expression. 
&_ 
U_s_e_ 
 
As a function to return the value of the nearest integer not  
greater than expr'.\f

T_E_x_a_m_p_l_e_ 
 
* LIST 
0010 PRINT INT(4.567);INT(-4.567) 
 
* RUN 
 4 -5 
 
END 
AT 0010 
*
 
&_ 
T_      4.8L_O_G_(_X_)_ 
 
F_o_r_m_a_t_ 
 
LOG(expr') 
 
      expr':  a numeric expression. 
&_ 
U_s_e_ 
 
As a function to calculate the n_a_t_u_r_a_l_ logarithm of expr'. 
 
T_E_x_a_m_p_l_e_ 
 
* LIST  
0010 PRINT LOG(2);LOG(EXP(1)) 
 
* RUN 
 .693149  1 
 
END 
AT 0010 
*
 
&_ 
T_4.9R_N_D_(_X_)_ 
 
F_o_r_m_a_t_ 
 
&_RND(expr') 
 
      expr':  a numeric expression (required, but not used). \f

T_U_s_e_ 
 
As a function to produce a pseudo random number, n, such that  
0 = n 1. 
&_ 
T_R_e_m_a_r_k_s_ 
 
1. The RND(X) function requires an argument, although the
   argument does not affect the resulting random number and the
   function does not affect the argument. 
&_    
2. Each time the RND(X) function is called, it produces a pseudo
   random number in the range 0 to 1. The sequence in which
   these numbers are generated is fixed. The length of the
sequence is 2 23. 
    
3. As the sequence of random numbers is fixed and the starting
point in the sequence is reset to the same point each time a
NEW or RUN command (see Ch. 9) is given, the sequence of
numbers generated by the RND(X) function is reproducible. 
 
4. The RANDOMIZE statement (see Ch. 3) causes the random number
generator to start at a different point in the sequence of
random numbers generated by the RND(X) function. 
 
5. Each occurrence of the RND(X) function yields the value of
the next random number in the list.\f

T_      E_x_a_m_p_l_e_ _1_ 
 
* LIST 
0010 LET I=0 
0020 REPEAT 
0030   PRINT RND(I); 
0040   LET I=I+1 
0050 UNTIL I=4 
0060 STOP 
0070 GOTO 0010 
 
* RUN                               C_o_m_m_e_n_t_ _(_1_)_ 
 .834444  .360030  .652654  9.23512E02 
STOP                                The RUN command resets the 
AT 0060                             sequence of random numbers;  
* RUN                               the CON command does not. 
 .834444  .360030  .652654  9.23512E02 
STOP 
AT 0060 
* CON 
 .939753  .442918  .157011  .913537 
STOP 
AT 0060 
  * 
&_ 
T_E_x_a_m_p_l_e_ _2_
       
* LIST 
0010 LET I=0 
0020 WHILE I4 DO 
0030   PRINT INT(25*RND(I)); 
0040   LET I=I+1
0050 ENDWHILE 
 
* RUN                               C_o_m_m_e_n_t_ _(_2_)_ 
21  3  17  12 
END                                 The program produces random 
AT 0050                             integers in the range 0 to     
&_*24.\f

T_      4.10S_G_N_(_X_)_ 
 
F_o_r_m_a_t_ 
 
SGN(expr') 
 
      expr': a numeric expression. 
&_ 
U_s_e_ 
 
As a function to return a +1 if expr' is greater than 0, a 0 if 
expr' equals 0, and a -1 if expr' is less than 0. 
 
T_E_x_a_m_p_l_e_                             C_o_m_m_e_n_t_
 
* LIST                              Note that SGN(0) = 0. 
0010 PRINT SGN(-5);SGN(0);SGN(5) 
 
* RUN 
-1  0  1 
 
END 
AT 0010 
  *
 
&_ 
T_      4.11S_I_N_(_X_)_ 
 
F_o_r_m_a_t_ 
 
SIN(expr') 
 
      expr': a numeric expression specified in radians. 
&_ 
U_s_e_ 
 
As a function to calculate the sine of an angle which is  
expressed in radians. 
 \f

T_E_x_a_m_p_l_e_ 
 
* LIST 
0010 PRINT SIN(0);SIN(45*SYS(14)/180) 
 
* RUN 
 0  .707107 
 
END 
AT 0010 
      *
 
&_ 
T_      4.12S_Q_R_(_X_)_ 
 
F_o_r_m_a_t_ 
 
SQR(expr') 
 
      expr':  a positive numeric expression. 
&_ 
U_s_e_ 
 
As a function to compute the square root of expr'. 
 
T_      E_x_a_m_p_l_e_ 
 
* LIST 
0010 PRINT SQR(25);SQR(25.734) 
 
* RUN 
 5  5.07287 
 
END 
AT 0010 
&_*
 
 
T_      4.13S_Y_S_(_X_)_ 
 
F_o_r_m_a_t_ 
 
SYS(expr') 
 
      expr': a numeric expression. 
&_ \f

U_s_e_ 
  
As a function to return system information based on the value of
expr', which is evaluated to an integer (0 to 15), as follows: 
 
T_    F_u_n_c_t_i_o_n_      I_n_f_o_r_m_a_t_i_o_n_ 
 
    SYS(0)        Time of day (seconds past midnight). 
     
    SYS(1)        Day of the month (1 to 31). 
      
    SYS(2)       Month of the year (1 to 12).     Current date.
     
    SYS(3)        Year as two digits (e.g. 77). 
     
    SYS(4) 
     
    SYS(5)        Time used in seconds since the terminal was
                  logged on.
     
    SYS(6)        Number of file I/O statements executed (i.e.  
                  every statement or command referring to a file,
                  e.g. PRINT FILE, LIST "<LPT"). 
      
    SYS(7)        Error code of the last run-time error.
             
    SYS(8)        File number of the file most recently  
                  referenced in a file I/O statement. 
     
    SYS(9)        Page size of current output 
                      (length of the print line). 
    SYS(9,fileno) Page size of file. 
                      SYS(10)       Tab size of current output 
                                    (width of the print zone). 
                      SYS(10,fileno)Tab size of file.        
                       
    SYS(11)       Hour of the day. 
     
    SYS(12)       Minutes past the last hour.      Current time
    of day.
&_    SYS(13)       Seconds past the last minute. 
    SYS(14)       Constant   (3.14159). 
     
    SYS(15)       Constant e (2.71828). 
     
    SYS(16)       Line number of last run time error \f

                       
                      SYS(17)       Current date as yymmdd. 
                       
                      SYS(18)       Current time as hhmmss. 
                       
                  SYS(19)       Current weekday (1=Monday).
                       
    SYS(19,yymmdd)Weekday corresponding to date 
                                    (illegal date=8) 
                       
                      SYS(20)       Current weeknumber. Weeknumber 1 is first 
                                    week with a Thursday. 
                       
                      SYS(20,yymmdd)Weeknumber corresponding to date 
                                    (illegal date=1) 
      
     SYS(21)       Digits on current output 
T_      4.14    SYS(21,fileno)Digits on file. 
 

T_A_N_(_X_)_ 

F_o_r_m_a_t_ 
 
&_TAN(expr') 
 
      expr': a numeric expression specified in radians. 
 
U_s_e_ 
 
T_As a function to calculate the tangent of an angle which is  
expressed in radians. 
 
E_x_a_m_p_l_e_ 
 
* LIST 
0010 PRINT TAN(0);TAN(45*SYS(14)/180) 
 
* RUN 
 0  .999999 
&_ 
END 
AT 0010 
*\f

T_      5S_T_R_I_N_G_ _I_N_F_O_R_M_A_T_I_O_N_ 
 
 
        5.1S_t_r_i_n_g_ _c_o_n_c_e_p_t_ 
 
This chapter explains how strings are used in RC BASIC. The
&_string concept is described in the present section, while three
useful string functions, viz. CHR(X), LEN(X<), and ORD(X<) are
described in the remaining sections. 
 
b_5.1.1     S_t_r_i_n_g_ _l_i_t_e_r_a_l_s_  e
A string is a sequence of characters, which may include letters,
               digits, spaces, and special characters. A string literal (string
                  constant) is a string enclosed within quotation marks. String
                  literals are often used in PRINT and INPUT statements (see Ch.
                  3), for example: 
                   
                            100 PRINT "THIS IS A STRING LITERAL" 
                            200 INPUT "X=",X 
                   
                  The enclosing quotation marks are not printed when the string
                  is output. N_o_n_-_p_r_i_n_t_i_n_g_ _a_n_d_ _s_p_e_c_i_a_l_ _c_h_a_r_a_c_t_e_r_s_ _m_a_y_ _b_e_ _i_n_c_l_u_d_e_d_ 
                  i_n_ _s_t_r_i_n_g_ _l_i_t_e_r_a_l_s_ _b_y_ _e_n_c_l_o_s_i_n_g_ _t_h_e_ _d_e_c_i_m_a_l_ _v_a_l_u_e_ _o_f_ _t_h_e_ 
                  c_h_a_r_a_c_t_e_r_ _w_i_t_h_i_n_ _a_n_g_l_e_ _b_r_a_c_k_e_t_s_ _(__'_)_, for example: 
                   
                            10 PRINT "USE DECIMAL 60 TO PRINT 60' IN STRINGS" 
                            * RUN 
                            USE DECIMAL 60 TO PRINT  IN STRINGS 
                   
                  The decimal values of all ASCII characters are given in
                  Appendix D. 
                   
b_      5.1.2S_t_r_i_n_g_ _v_a_r_i_a_b_l_e_s_  e
RC BASIC permits the use of string variables as well as string
literals. A string variable name consists of a letter, followed
by from 0 to 7 letters or digits, f_o_l_l_o_w_e_d_ _b_y_ _a_ _d_o_l_l_a_r_ _s_i_g_n_ _(_<_)_,
for example:       
           
          ANSWER<, TEXT< 
 
String values are assigned to string variables, as described
below, by means of LET, READ, and INPUT statements, for example:
 
          INPUT ANSWER< 
          LET TEXT<="THIS IS A TEXT"\f

b_5.1.3     D_i_m_e_n_s_i_o_n_i_n_g_ _s_t_r_i_n_g_ _v_a_r_i_a_b_l_e_s_e
          All string variables m_u_s_t_ be dimensioned before they are used.
                  By dimensioning the variable, the user sets an upper bound for
           the number of characters that can be stored in it. Dimensioning
T_          is accomplished by means of the DIM statement (see Ch. 3), for
          example:                
                     
                    DIM ANSWER<(20) 
                    DIM TEXT<(15),STRING<(5) 
&_                   
          If the user attempts to assign a string literal that is too long 
T_          to a string variable, the string literal will be truncated, for
          example: 
                   
                    10 DIM TEXT<(6) 
                    20 LET TEXT<="LONG STRING" 
                    30 PRINT TEXT< 
                    * RUN 
                    LONG S 
&_                   
          A string may be of any length, the sole limitation being  
          available memory. 
                   
b_5.1.4     S_u_b_s_t_r_i_n_g_s_e
                One can also reference a portion of a string variable. The 
T_          general form of such substrings is the following: 
                   
                     i'
                  svar'( j,k' )  
 
                                svar':  a string variable name. 
&_                   
                                   i':  a numeric expression indicating 
                                         that the ith character in svar'  
                                         is to be referenced. 
                                           
                     j,k':  numeric expressions indicating  
                                         that the jth through the kth
                                         characters in svar' are to be
                                         referenced. 
                   
          Example 1 shows how substrings can be referenced.\f

T_                E_x_a_m_p_l_e_ _1_ 
                   
                  0010 DIM TEXT<(20) 
                  0020 LET TEXT<="AAAAAAAAAAAAAAAAAAAA" 
                  0030 PRINT TEXT< 
                  0040 LET TEXT<(5)="B" 
                  0050 PRINT TEXT< 
                  0060 LET TEXT<(10,13)="BCDE" 
                  0070 PRINT TEXT< 
                  0080 LET TEXT<(15,17)="BCDEFG" 
                  0090 PRINT TEXT< 
                  0100 PRINT TEXT<(1),TEXT<(8,13),TEXT<(20) 
                   
                  AAAAAAAAAAAAAAAAAAAA 
                  AAAABAAAAAAAAAAAAAAA 
                  AAAABAAAABCDEAAAAAAA 
                  AAAABAAAABCDEABCDAAA 
                  A             AABCDE        A 
&_                 
                  N_o_t_e_: When a value is to be assigned to a substring (i,j), a
                  value must first be assigned to the substring (l,i-l). This can
                  be done by initializing the entire string with blanks. 
                   
b_      5.1.5     A_s_s_i_g_n_i_n_g_ _v_a_l_u_e_s_ _t_o_ _s_t_r_i_n_g_ _v_a_r_i_a_b_l_e_s_e
                  Values can be assigned to string variables by means of LET,
                  READ and DATA, and INPUT statements (see Ch. 3) and READ FILE
                  and INPUT FILE statements (see Ch. 8). Example 2 shows various
                  uses of LET, READ and DATA, and INPUT. 
                   
T_b_5.1.6     C_o_n_c_a_t_e_n_a_t_i_o_n_ _o_f_ _s_t_r_i_n_g_s_e
              Any number of strings (variables or literals) can be concate- 
nated by means of a LET statement having the following syntax: 
                   
                  svar'    svar'
                      LET svar' = slit'  , slit'  ...   
 
          svar':  a string variable. 
                            slit':  a string literal. 
                   
 &_               See Example 2, lines 50, 80, and 90. 
                   \f

T_                E_x_a_m_p_l_e_ _2_C_o_m_m_e_n_t_ _(_2_)_T_
                   
                  * LIST 
                  0010 DATA "THIS"," A" 
                  0020 DIM TEXT<(23),TEMP<(5) 
                  0040 READ TEXT<(1,4) 
                  0050 LET TEXT<=TEXT<," IS" 
                  0060 READ TEXT<(LEN(TEXT<)+1,20)    For LEN(X<), see 
                  0070 INPUT TEMP<                    Sect. 5.3. 
                  0080 LET TEXT<=TEXT<," ",TEMP< 
                  0090 LET TEXT<=TEXT<," TEXT" 
                  0100 PRINT TEXT< 
                   
                  * RUN 
                   ? S_H_O_R_T_ _ _                          The underlined
THIS IS A SHORT TEXT                texts are those 
                                                      entered by the user. 
                  END 
                  AT 0100 
                  * RUN 
                   ? L_O_N_G___ 
                  THIS IS A LONG TEXT 
                   
                  END 
                  AT 0100 
&_                *
                   
                  N_o_t_e_: When a value is assigned to a substring, the number of
                  characters in the source string must not be less than the number
                  of characters in the substring referenced; otherwise, the rest
                  of the characters in the substring and any remaining characters
                  in the string will be truncated. Example 3 provides an
                  illustration of this. 
                   \f

T_                E_x_a_m_p_l_e_ _3_C_o_m_m_e_n_t_ _(_3_)_
                   
                  * LIST 
                  0010DIM TEXT<(10) 
                  0020 LET TEXT<="AAAAAAAAAA"         The underlined  
                  0030 PRINT TEXT<                    texts are those 
                  0040 INPUT TEXT<(3,7)               entered by the user. 
                  0050 PRINT TEXT< 
                   
                  * RUN 
                  AAAAAAAAAA 
                   ? 1_2_3___                  Source string.
                  AA123TEXT<(6,10) has
been truncated. 
                  * LIST 
                  0010 DIM TEXT<(10),TEMP<(10)      The desired result
                  0020 LET TEXT<="AAAAAAAAAA"can be achieved in
                  0030 PRINT TEXT<this way.
                  0040 INPUT TEMP< 
                  0050 LET TEMP<=TEMP<,"        "  
                  0060 LET TEXT<(3,7)=TEMP< 
                  0070 PRINT TEXT<
 
                  * RUN 
                  AAAAAAAAAA 
                   ? 1_2_3___ 
&_                AA123  AAA
                   
b_      5.1.7     R_e_l_a_t_i_o_n_a_l_ _s_t_r_i_n_g_ _e_x_p_r_e_s_s_i_o_n_s_e
                  Strings (literals and variables) may be compared. The result of
                  a comparison is either true or false. The strings are compared
                  character by character, on the basis of their decimal values
                  (see App. D), until a difference is found or the end of one or
                  both strings is met. 
                   
                  If a character in a given position in one string has a higher
                  decimal value than the character in the corresponding position
                  in the other string, the first string is the greater of the two.
                      
                  If the characters in corresponding positions are identical, but
                  one string contains more characters than the other, the shorter
                  string is the lesser of the two. Thus, for example, the
                  expression "ABC"  "ABCD" is true.\f

T_                E_x_a_m_p_l_e_ _1_

                  IF NAME<(1)="J" THEN 
                   . 
                   . 
                   . 
&_                 
T_                E_x_a_m_p_l_e_ _2_                           C_o_m_m_e_n_t_ _(_2_)_
 
                  CASE ANSWER<="YES" OF 
                   . 
                   . 
                   . 
                  WHEN 1                              1 corresponds to true. 
                   . 
                   . 
                   . 
                  WHEN 0                              0 corresponds to false.
                   . 
                   . 
                   . 
&_                ENDCASE
 
        5.1.8     S_t_r_i_n_g_ _a_r_r_a_y_s_ 
          The array-concept can be used in connection with strings.
          Dimensioning of a string array is accomplished by means of the
          DIM statement, (see Chapter 3), for example: 
                  DIM TEXT<(20,40) 
          The string array TEXT< consists of 20 string-elements each 40
          characters long. The i>th element can be referenced as TEXT<(i).
          TEXT<(i,j) is a reference to the j>th character in the i>th
          element, and TEXT(i,j,k) points out character number j through k
          in the i>th element of the string array. 
           
          The lower bound of a string array (i.e. the number of the first
          element) is usually 1. By means of the LOWBOUND-statement (see
          Chapter 3.20) the lower bound may however be changed. The first
character in a string element will always be number 1. 
           \f

T_          E_x_a_m_p_l_e_C_o_m_m_e_n_t_
          0010 TAB=4                 
          0020 DIM NAME<(5,8) 
          0030 LET I=1              The 5 names are stored 
          0040 REPEAT               in the string array 
          0050   READ NAME<(I)      NAME< 
          0060   LET I=I+1 
          0070 UNTIL I'5 
          0080 FOR I=1 TO 5 
          0090   PRINT NAME<(I), 
          0100 NEXT I 
          0110 DATA "PETER","JOHN","ROBERT","ROBERTA","DIANA" 
           
          PETER   JOHN   ROBERT   ROBERTA  DIANA
&_           
          E_x_a_m_p_l_e_C_o_m_m_e_n_t_ 
          0010 DIM TEXT<(6,5) 
          0020 FOR I=1 TO 6 
          0030   LET TEXT(I)="TEXT",CHR(48+I) 
          0040 NEXT I 
          0050 FOR I=6 TO 2 STEP -1 
          0060   PRINT TEXT<(I)     print string element 6 to 2 
          0070 NEXT I 
          0080 FOR I=1 TO 5 
          0090   PRINT TEXT<(1,I);  print string element 1, character 
          0100 NEXT 1               by character 
          0110 PRINT 
          0120 PRINT TEXT<(2,3,LEN(TEXT<(2)))    print string ele- 
                                    ment 2, from character no. 3. 
           
          TEXT6 
          TEXT5 
          TEXT4 
          TEXT3 
          TEXT2 
          TEXT1 
          XT2
 
 
T_ 5.2C_H_R_(_X_)_ _f_u_n_c_t_i_o_n_ 
 
                  F_o_r_m_a_t_ 
 
CHR(expr') 
 
       expr': a numeric expression.  
&_ \f

U_s_e_ 
 
As a function to return the character corresponding to the  
number specified in the argument. 
 
R_e_m_a_r_k_s_ 
 
1. The correspondence between numbers (decimal values) and 
   characters is shown in Appendix D. 
 
2. The number is found as expr' modulo 128. 
 
3. The CHR(X) function may be used in any string expression.
T_      E_x_a_m_p_l_e_                             C_o_m_m_e_n_t_  
 
0010 TAB=4 
0020 PAGE=32 
0030 FOR I=65 TO 74 
0040   PRINT I,CHR(I), 
0050 NEXT I     
   
 65 A    66 B    67 C    68 D       The characters corresponding
 69 E    70 F    71 G    72 H       to the numbers 65-74 are A-J.
&_ 73 I    74 J 
 

T_      5.3L_E_N_(_X_<_)_ _f_u_n_c_t_i_o_n_ 
 
F_o_r_m_a_t_ 
 
svar'
LEN( slit' )

svar': a string variable. 
      slit': a string literal. 
&_ 
U_s_e_ 
 
As a function to return the current length (number of 
characters) of the string specified in the argument. 
 
R_e_m_a_r_k_s_ 
 
1. The LEN(X<) function may be used in any numeric expression. 
 
2. If the string argument is empty, the value returned is 0. 
 \f

T_E_x_a_m_p_l_e_                             C_o_m_m_e_n_t_ 
 
0010 DIM TEXT<(10) 
0020 TAB=12 
0030 PRINT TEXT<,LEN(TEXT<) 
0040 FOR I=1 TO 10 
0050   LET TEXT<=TEXT<,CHR(I+64)    For CHR(X), see Sect. 5.2. 
0060   PRINT TEXT<,LEN(TEXT<) 
0070 NEXT I
&_
T_                   0 
  A            1 
AB           2 
ABC          3 
ABCD         4 
ABCDE        5 
ABCDEF       6 
ABCDEFG      7 
ABCDEFGH     8 
ABCDEFGHI    9 
&_ABCDEFGHIJ   10 
 

T_      5.4O_R_D_(_X_<_)_ _f_u_n_c_t_i_o_n_ 
 
F_o_r_m_a_t_ 
 
svar'
ORD( slit' )

svar': a string variable. 
      slit': a string literal. 
&_ 
U_s_e_ 
 
As a function to return the number of the first character of the 
string specified in the argument. 
 
R_e_m_a_r_k_s_ 
 
1. The number returned is the character>s decimal value, which 
   is equivalent to its internal representation. (This number is 
   also the ordinal number of the character; thus the character 
   A, for example, which has the decimal value 65, is the 65th  
   character in the ASCII character set). The correspondence 
between numbers and characters is shown in Appendix D. \f

2. The ORD(X<) function may be used in any numeric expression. 
    
T_      E_x_a_m_p_l_e_                             C_o_m_m_e_n_t_

0010 TAB=4 
0020 PAGE=32 
0030 DIM A<(10) 
0040 LET A<="0123456789" 
0050 FOR I=1 TO 10 
0060   PRINT ORD(A<(I));A<(I), 
0070 NEXT I 
 
 48 0    49 1    50 2    51 3       The c_h_a_r_a_c_t_e_r_s_ 0-9 have the
52 4    53 5    54 6    55 7internal decimal values
&_56 8    57 948-57.\f

        6M_A_T_R_I_X_ _M_A_N_I_P_U_L_A_T_I_O_N_
 
 
6.1M_a_t_r_i_x_ _o_p_e_r_a_t_i_o_n_s_ 
 
RC BASIC includes a special set of statements which allows the
user to manipulate two-dimensional arrays (see Ch. 2) as
matrices. Among the available matrix operations are the
following: 
 
    Addition, subtraction, and multiplication. 
     
    Scalar multiplication. 
     
    Formation of a zero matrix (all elements set to 0). 
     
    Formation of a constant matrix (all elements set to 1). 
      
    Formation of an identity matrix (major diagonal elements set
    to 1, remaining elements set to 0). 
 
    Calculation of the inverse of a matrix. 
 
    Calculation of the determinant of a matrix. 
 
    Transposition of a matrix. 
 
    Input/output of a matrix via the user>s terminal. 
 
All of the above operations are described in the present
chapter, while matrix file input/output statements are described
in Chapter 8. 
 
A_l_l_ _s_t_a_t_e_m_e_n_t_s_ _i_n_v_o_l_v_i_n_g_ _m_a_t_r_i_x_ _o_p_e_r_a_t_i_o_n_s_ _a_r_e_ _i_n_t_r_o_d_u_c_e_d_ _b_y_ _t_h_e_
r_e_s_e_r_v_e_d_ _w_o_r_d_ _M_A_T_._ 
 
 
6.2D_i_m_e_n_s_i_o_n_i_n_g_ _m_a_t_r_i_c_e_s_ 
 
A matrix is dimensioned as a two-dimensional array by means of
the DIM statement (see Ch. 3). Thus the statement 
 
    10 DIM MATRIXA(10,20) 
 
defines a matrix variable named MATRIXA, which has 10 rows and
20 columns (or a total of 10 x 20 = 200 elements).\f

F_                If the lower bound of arrays has been set to zero (by means of
                  the LOWBOUND-statement, see Chapter 3), then MATRIXA will have
                  11 rows (no. 0 through 10) and 21 columns (0 through 20). 
                   
                  A previously dimensioned matrix may be redimensioned by means of
                  new DIM statement, provided that the total number of elements
                does not exceed e previously declared total number of elements.
 
Matrix elements are stored by rows in ascending memory
locations. 
 
As a one-dimensional array containing i elements is considered
a 1 x i matrix, t_h_e_ _m_a_t_r_i_x_ _o_p_e_r_a_t_i_o_n_s_ _d_e_s_c_r_i_b_e_d_ _i_n_ _t_h_e_ _f_o_l_l_o_w_i_n_g_
s_e_c_t_i_o_n_s_ _a_l_s_o_ _a_p_p_l_y_ _t_o_ _o_n_e_-_d_i_m_e_n_s_i_o_n_a_l_ _a_r_r_a_y_s_._ 
 
 
  6.3M_a_t_r_i_x_ _a_s_s_i_g_n_m_e_n_t_ _s_t_a_t_e_m_e_n_t_ 
 
F_o_r_m_a_t_ 
 
MAT mvar1' = mvar2'
 
      mvar1, mvar2':  matrix variables. 
   
U_s_e_ 
 
As a statement or command to copy the elements of one matrix to
another matrix. 
 
R_e_m_a_r_k_s_ 
 
1. The matrices must have been dimensioned before the statement
   is executed. 
 
2. The number of elements in mvar2' must not exceed the number
   of elements in mvar1'. 
 
3. After the assignment, mvar1' will have the same dimensions
   and values as mvar2'. 
 \f

F_      E_x_a_m_p_l_e_                             C_o_m_m_e_n_t_ 
 
0010 DIM MATA(3,2),MATB(2,3) 
0020 FOR I=1 TO 3 
0030   FOR J=1 TO 2 
0040     LET MATA(I,J)=I*10+J 
0050   NEXT J 
0060 NEXT I 
0070 PRINT "MATA : " 
0080 MAT PRINT MATA 
0090 PRINT "13'10'MATB : " 
0100 MAT PRINT MATB 
0110 MAT MATB=MATA 
0120 PRINT "13'10'NEW MATB : " 
0130 MAT PRINT MATB 
 
MATA : 
 11            12 
 21            22 
 31            32 
 
MATB : 
 0             0             0 
 0             0             0 
 
T_NEW MATB :                          Note that the dimensions of
 11            12                   MATB have been changed. 
 21            22 
   31            32 
 
&_ 
T_      6.4M_a_t_r_i_x_ _a_d_d_i_t_i_o_n_/_s_u_b_t_r_a_c_t_i_o_n_ _s_t_a_t_e_m_e_n_t_ 
 
F_o_r_m_a_t_ 
+
MAT mvar1' = mvar2'   -  mvar3'
 
      mvar1, mvar2, mvar3' : matrix variables. 
&_ 
T_U_s_e_ 
 
As a statement or command to perform the scalar addition or  
subtraction of two matrices. 
&_ \f

R_e_m_a_r_k_s_ 
 
1. The matrices must have been dimensioned before the statement
   is executed.   
 
2. mvar2' and mvar3' must have the same dimensions. 
 
3. The number of elements in mvar2' (and mvar3') must not
   exceed the number of elements in mvar1'. 
 
4. The arithmetic is performed element by element with the
   resultant value assigned to the element in mvar1'.   
 
5. mvar1' may appear on both sides of the equal sign. 
 
6. After the addition or subtraction, mvar1' will have the same
   dimensions as mvar2' (and mvar3'). 
 
T_E_x_a_m_p_l_e_                             C_o_m_m_e_n_t_ 
 
0010 DIM MATA(3,2),MATB(3,2) 
0020 FOR I=1 TO 3 
0030   FOR J=1 TO 2 
0040     LET MATA(I,J)=I*10+J 
0050     LET MATB(I,J)=2*(I*10+J)
0060   NEXT J 
0070 NEXT I 
0080 PRINT "MATA :  " 
0090 MAT PRINT MATA 
0100 PRINT "13'10'MATB :  " 
0110 MAT PRINT MATB 
0120 MAT MATB=MATA+MATB             MATB appears on both sides
0130 PRINT "13'10'MATA + MATB :"  of the equal sign. 
  0140 MAT PRINT MATB 
&_ \f

T_MATA : 
 11            12 
 21            22 
 31            32 
 
MATB :
 22            24 
 42            44 
 62            64 
 
        MATA + MATB : 
 33            36                   The addition of MATA and 
 63            66                   MATB is performed element  
   93            96                   by element. 
 
&_ 
T_      6.5M_a_t_r_i_x_ _m_u_l_t_i_p_l_i_c_a_t_i_o_n_ _s_t_a_t_e_m_e_n_t_ 
 
F_o_r_m_a_t_ 
 
mvar2'
MAT mvar1' =  (expr')  * mvar3'
 
      mvar1, mvar2, mvar3':  matrix variables. 
                     expr':  a numeric expression
                              (parenthesized). 
&_ 
T_U_s_e_ 
 
As a statement or command to perform the multiplication of one
matrix either by another matrix or by a scalar (the value of a
numeric expression). 
&_ 
R_e_m_a_r_k_s_ 
 
1. The matrices must have been dimensioned before the statement
   is executed. 
 
2. The number of columns in mvar2' must match the number of
   rows in mvar3'.   
    
3. If mvar2' is an n x p matrix (i.e. with n rows and p
   columns) and mvar3' is a p x m matrix, then mvar1' will be
   an n x m matrix. 
 \f

4. mvar1' may not appear on the right-hand side of the equal
   sign, unless it is a scalar multiplication.
 
5. mvar2' and mvar3' may represent the same matrix (i.e. a
   square matrix, in which the number of rows matches the
   number of columns). 
 
6. The product of mvar2' and mvar3' is calculated as follows: 
    
   Each row of mvar2' is multiplied by each column of mvar3'
   such that the corresponding elements are multiplied and their
   products added together to provide the resultant value
   assigned to the element in mvar1' (see Example). 
    
   Row number i of mvar2' * column number j of mvar3' will,
   accordingly, result in element number (i,j) of mvar1'.
 
7. If a matrix is multiplied by a scalar, each element in mvar3'
   is multiplied by expr' to give the corresponding element
   value in mvar1'. In this case, the number of elements in
   mvar3' must not exceed the number of elements in mvar1'.
   After the multiplication, mvar1' will have the same dimen-
   sions as mvar3'. 
    
T_E_x_a_m_p_l_e_ 
         
0010 DIM MATA(3,2),MATB(2,3),MATC(3,3) 
0020 FOR I=1 TO 3 
0030   FOR J=1 TO 2 
0040     LET MATA(I,J)=I*10+J 
0050     LET MATB(J,I)=I*20+J 
0060   NEXT J 
 0070 NEXT I 
0080 PRINT "MATA : " 
0090 MAT PRINT MATA 
0100 PRINT "13'10'MATB : " 
0110 MAT PRINT MATB 
0120 MAT MATC=MATA*MATB 
0130 PRINT "13'10'MATA * MATB :" 
0140 MAT PRINT MATC 
&_ \f

T_MATA :C_o_m_m_e_n_t_
 11            12 
 21            22 
 31            32 
 
MATB : 
 21            41            61 
 22            42            62 

MATA * MATB :                     DDD21UUU 
 495           955           1415      495 = (11   12) x  DDD22UUU
 925           1785          2645
 1355          2615          3875 = (11 x 21) + (12 x 22)

&_ 
T_6.6D_E_T_(_X_)_ _f_u_n_c_t_i_o_n_ 
 
F_o_r_m_a_t_ 
 
var' = DET(expr') 
 
       var':  a numeric variable. 
      expr':  a numeric expression (required, but not used). 
&_ 
U_s_e_ 
 
As a function to return the determinant of the last matrix
inverted by a MAT INV statement (see Sect. 6.10) or the last
matrix decomposed by a MAT SOLVE statement (see sect. 6.13).
 
R_e_m_a_r_k_s_ 
 
1. The DET(X) function requires an argument, although the
   argument does not affect the resulting determinant and the
   function does not affect the argument. 
 
2. For calculation of the determinant of a matrix, see Section
   6.10. 
 
T_E_x_a_m_p_l_e_ 
 
See the MAT INV statement (Sect. 6.10). 
 
&_ \f

T_6.7M_A_T_ _C_O_N_ _s_t_a_t_e_m_e_n_t_ 
 
F_o_r_m_a_t_ 
 
MAT mvar' = CON 
 
      mvar':  a matrix variable. 
&_ 
U_s_e_ 
 
As a statement or command to initialize a matrix such that all
elements are set to one. 
 
R_e_m_a_r_k_s_ 
 
1. The matrix must have been dimensioned before the statement is
   executed.
 
2. All elements of mvar' are set to one regardless of any
   previously assigned values. 
 
3. The resulting matrix is often called a constant matrix. 
 \f

T_E_x_a_m_p_l_e_ 
 
0010 DIM MATA(3,2) 
0020 FOR I=1 TO 3 
0030   FOR J=1 TO 2 
0040     LET MATA(I,J)=I*10+J 
0050   NEXT J 
0060 NEXT I 
0070 PRINT "MATA :  " 
0080 MAT PRINT MATA 
0090 MAT MATA=CON  
0100 PRINT "13'10'NEW MATA :" 
0110 MAT PRINT MATA 
 
MATA : 
 11            12 
 21            22 
 31            32 
 
NEW MATA : 
 1             1 
 1             1 
1             1
 
&_                   
T_6.8M_A_T_ _I_D_N_ _s_t_a_t_e_m_e_n_t_ 
 
F_o_r_m_a_t_ 
 
MAT mvar' = IDN 
 
      mvar':  a matrix variable. 
&_ 
U_s_e_ 
 
As a statement or command to initialize a matrix such that all
elements (i,i) are set to one and the remaining elements are set
to zero. 
 
R_e_m_a_r_k_s_
 
1. The matrix must have been dimensioned before the statement
   is executed. 
 
2. If mvar' is an n x p matrix (i.e. with n rows and p\f

   columns), then all elements (i,i), 1 = i = minimum (n,p),
   are set to one and the remaining elements are set to zero
   (see Example). 
 
3. If mvar' is a square matrix (i.e. where n = p), then the
   resulting matrix will be the identity matrix, in which all
   elements of the major diagonal are set to one and the
   remaining elements are set to zero (see Example). 
 
T_E_x_a_m_p_l_e_ 
 
0010 DIM MATA(3,2),MATB(6,6) 
0020 FOR I=1 TO 3 
0030   FOR J=1 TO 2 
0040     LET MATA(I,J)=I*10+J 
0050   NEXT J 
0060 NEXT I 
0070 PRINT "MATA :  " 
0080 MAT PRINT MATA 
0090 MAT MATA=IDN 
0100 PRINT "13'10'NEW MATA :" 
0110 MAT PRINT MATA 
0120 MAT MATB=IDN 
0130 PRINT "13'10'MATB :" 
0140 MAT PRINT MATB; 
&_ 
T_MATA : 
 11            12 
 21            22 
 31            32 
 
NEW MATA : 
 1             0 
 0             1 
 0             0 
 
MATB : 
 1  0  0  0  0  0 
 0  1  0  0  0  0 
 0  0  1  0  0  0 
 0  0  0  1  0  0  
 0  0  0  0  1  0 
   0  0  0  0  0  1
 
&_ \f

T_      6.9M_A_T_ _I_N_P_U_T_ _s_t_a_t_e_m_e_n_t_ 
 
F_o_r_m_a_t_ 
 
MAT INPUT mvar1' ,mvar2', ... ,mvar-n'
 
      mvar1, mvar2, mvar-n': matrix variables. 
&_ 
U_s_e_
 
As a statement or command to assign numeric values entered from
the user>s terminal during program execution to the elements of
one or more matrices. 
 
R_e_m_a_r_k_s_ 
 
1. The matrices must have been dimensioned before the statement
   is executed. 
 
2. When a MAT INPUT statement is executed, the system outputs a
   question mark (?) as an initial prompt. 
 
3. The user responds by typing a list of numeric data items,
   each of which is separated from the next by a comma. The last
   item is followed by a carriage return. 
 
4. If the data list is terminated (by pressing the RETURN key)
   before values have been assigned to all of the matrix
elements, the system will output / ?  as a prompt, indicating
   that further items are expected.   
 
 
T_6.10M_A_T_ _I_N_V_ _s_t_a_t_e_m_e_n_t_ 
 
F_o_r_m_a_t_ 
 
MAT mvar1' = INV(mvar2') 
 
      mvar1, mvar2':  matrix variables. 
&_ 
U_s_e_
 
As a statement or command to invert a matrix and assign the
resultant element values to another matrix. 
 \f

R_e_m_a_r_k_s_  
 
1. The matrices must have been dimensioned before the statement
   is executed.   
 
2. The inverse, B, of a matrix, A, is defined such that the
   products of A x B and B x A are both equal to the identity
   matrix. 
 
3. mvar2' must be a square matrix. 
 
4. The determinant (see Remark 6) of mvar2' must not equal
   zero. 
 
5. After the inversion of a matrix, the determinant of that
   matrix can be obtained by means of the DET(X) function (see
   Sect. 6.6). 
 
6. M_a_t_r_i_x_ _d_e_t_e_r_m_i_n_a_n_t_s_ 
 
   In order to calculate the inverse of a matrix, one must first
   calculate the determinant of that matrix. 
 
   The calculation of the determinant of a 2 x 2 matrix is
   described in the following. For larger matrices, consult a
   mathematics text. 
    
   The determinant of a 2 x 2 matrix 
    
    a b a b
    c d   is written as   c d .   
    
   The determinant is the scalar 
    
   (a x d) - (b x c) 
    
   i.e. multiplication along the diagonals and subtraction of
   the product of the second diagonal from the product of the
   major diagonal. 
    
  7. The execution time will be reduced, if mvar1'=mvar2'.\f

T_      6.11M_A_T_ _P_R_I_N_T_ _s_t_a_t_e_m_e_n_t_ 
 
F_o_r_m_a_t_ 
 
; 
MAT PRINT mvar'   , mvar'  ... ;
 
      mvar': a matrix variable. 
&_ 
U_s_e_
 
As a statement or command to output the values of the elements
of one or more matrices on the user>s terminal. 
 
R_e_m_a_r_k_s_ 
 
1. The matrices must have been dimensioned before the statement
   is executed. 
 
2. If a semicolon is used after a matrix variable in the
   argument list, the elements of that matrix will be output
   with c_o_m_p_a_c_t_ _s_p_a_c_i_n_g_, i.e. each element will be output
   starting from the next character position. (N_o_t_e_: A blank
   space is always printed after an element and a blank space is
   reserved for the plus sign, even though this sign is not
   printed). 
    
3. If a comma or carriage return is used after a matrix variable
   in the argument list, the elements of that matrix will be
   output with z_o_n_e_ _s_p_a_c_i_n_g_, i.e. each element will be output
   starting from the leftmost position of a print zone. The
   width of the print zones can be set by means of the TAB
   command (see Ch. 3). 
    
4. The values of the elements are output by rows in ascending
   order. If a row cannot be contained on a single print line, a
   carriage return and line feed are output and the row is
   continued on the next print line. 
    \f

T_E_x_a_m_p_l_e_                                      C_o_m_m_e_n_t_s_
 
0010 TAB=10 
0020 PAGE=72 
0030 DIM MATA(3,2),MATB(2,3),ARRAY(10) 
0040 FOR I=1 TO 3 
0050   FOR J=1 TO 2 
0060     LET MATA(I,J)=I*10+J 
0070     LET MATB(J,I)=J*10+I 
0080   NEXT J 
0090 NEXT I 
0100 PRINT "13'10'" 
0110 MAT PRINT MATA,MATB 
0120 PRINT "13'10'" 
0130 MAT PRINT MATA;MATB; 
0140 PRINT "13'10'" 
0150 MAT PRINT MATA,MATB; 
0155 TAB=5 
0160 PRINT "13'10'" 
0170 MAT PRINT ARRAY 
        0180 MAT ARRAY=CON 
0190 PRINT "13'10'" 
0200 MAT PRINT ARRAY; 
&_ 
T_ 11        12                       Statement 110.
 21        22                       Zone spacing
 31        32                       is used (comma
or carriage
 11        12        13return as sepa-
 21        22        23rator).
 
 11  12                             Statement 130.
 21  22                             Compact spacing
 31  32                             is used (semi-
 colon as sepa-
 11  12  13rator).
   21  22  23 
&_ 
T_ 11        12                           Statement 150. 
 21        22 
 31        32 
 
 11  12  13 
   21  22  23 
&_ 
0    0    0    0    0    0    0    0    0    0   Statement 170.
  
1  1  1  1  1  1  1  1  1  1                     Statement 200.\f

T_      6.12M_A_T_ _R_E_A_D_ _s_t_a_t_e_m_e_n_t_ 
 
F_o_r_m_a_t_ 
 
MAT READ mvar' ,mvar' ... 
 
      mvar':  a matrix variable. 
&_ 
U_s_e_ 
 
As a statement or command to read in numeric values from the
list defined by one or more DATA statements (see Ch. 3) and to
assign the values to the elements of one or more matrices. 
 
R_e_m_a_r_k_s_ 
 
1. The matrices must have been dimensioned before the statement
   is executed. 
 
2. Values are assigned to matrix elements by rows in ascending
   order. 
 
T_E_x_a_m_p_l_e_ 
 
0010 DIM MATA(3,2),MATB(2,3) 
0020 DATA 1,2,3,4,5,6,7,8,9 
0030 MAT READ MATA 
0040 PRINT "MATA :" 
0050 MAT PRINT MATA 
0060 RESTORE 
0070 MAT READ MATB 
0080 PRINT "13'10'MATB :" 
0090 MAT PRINT MATB 
&_ 
T_MATA : 
 1         2 
 3         4 
 5         6 
MATB : 
 1         2         3 
&_ 4         5         6
 
   \f

T_6.13      MAT SOLVE statement 
 
          F_o_r_m_a_t_ 
&_          MAT SOLVE mvar1' * mvar2' = mvar3' 
 
T_          U_S_E_ 
           
          As a statement or command to decompose the matrix mvar1' and
          solve it with the right-hand sides mvar3'. The solutions are
          assigned to mvar2' 
           
          R_e_m_a_r_k_s_ 
&_                    1. The matrices mvar1' and mvar3' must have been
                       dimensioned before the statement is executed. 
                    2. The matrix mvar1' is decomposed and the solution(s)
                       are assigned to mvar2' 
                    3. After the execution mvar2' will have the same
                       dimension as mvar3' 
                    4. mvar2' and mvar3' may be the same matrix. 
                    5. The determinant of mvar1' (see INV) must not be
                               equal to zero.
                    6. After the execution, the determinant of the matrix
                       can be obtained by means of the DET function. 
                        
T_          E_x_a_m_p_l_e_ 
                       0010 DIM A(4,4),X(4),B(4),MATA(5,5)MATB(2,5) 
                       0020 MAT READ A,B 
                       0030 MAT SOLVE A*X=B 
                       0040 MAT PRINT X 
                       0050 MAT SOLVE MATA*MATB=MATB 
                       0060 MAT PRINT MATB
&_
T_6.14M_A_T_ _T_R_N_ _s_t_a_t_e_m_e_n_t_ 
 
F_o_r_m_a_t_ 
 
MAT mvar1' = TRN(mvar2') 
 
      mvar1, mvar2':  matrix variables. 
&_ 
U_s_e_ 
 
As a statement or command to transpose a matrix and assign the
resultant element values to another matrix. 
 \f

R_e_m_a_r_k_s_ 
 
1. The matrices must have been dimensioned before the statement
   is executed. 
 
2. A matrix is transposed by reversing the row and column
   assignments of the matrix elements, i.e. row number 1 in
   mvar2' becomes column number 1 in mvar1' and column number
   1 in mvar2' becomes row number 1 in mvar1'. 
    
3. If mvar2' is an n x m matrix, mvar1' will be an m x n
matrix.
 
4. mvar1' and mvar2' must be two distinct matrices. 
    
 
 
T_6.15M_A_T_ _Z_E_R_ _s_t_a_t_e_m_e_n_t_ 
 
F_o_r_m_a_t_ 
 
MAT mvar' = ZER 
 
      mvar':  a matrix variable. 
&_ 
U_s_e_ 
 
As a statement or command to initialize a matrix such that all
elements are set to zero. 
 
R_e_m_a_r_k_s_ 
 
1. The matrix must have been dimensioned before the statement is
   executed. 
 
2. All elements of mvar' are set to zero regardless of any 
   previously assigned values. 
 
3. The resulting matrix is often called a zero matrix. 
 \f

T_E_x_a_m_p_l_e_ 
 
0010 DIM MATA(3,2) 
0020 FOR I=1 TO 3 
0030   FOR J=1 TO 2 
0040     LET MATA(I,J)=I*10+J 
0050   NEXT J 
0060 NEXT I 
0070 PRINT "MATA : " 
0080 MAT PRINT MATA 
0090 MAT MATA=ZER 
0100 PRINT "13'10'NEW MATA :" 
0110 MAT PRINT MATA 
&_ 
T_MATA : 
 11            12 
 21            22 
 31            32 
 
NEW MATA : 
 0             0 
 0             0 
 0             0 
&_ \f

F_7FILENAMES, DISC RESOURCES AND RELATED COMMANDS
 
 
7.1Introduction 
 
Each filename is described by a catalog entry in the disc
catalog. Each user is allotted an amount of slices and entries.
This is called the user>s claim. The user may have claims on
several disc kits. 
 
A slice is a number of consecutive segments. The slicelength is
defined by the monitor. A slice cannot be divided among two
entries. 
 
Each project contains a user, the MATER, who embraces all other
users. The MATER has a pool of claims and is able to, by means
of procedure NEWCLAIM, to move claims to or from a user. The
MATER is also able to, by means of procedure SCOPE, to move
files to or from a user. 
 
The procedure SCANCLAIM will list the current distribution of
claims 
 
 
7.2       CLAIM 
 
F_o_r_m_a_t_ 
 
CLAIM "LPT" 
 
U_s_e_ 
 
As a statement or command to return a listing of used and free
disc resources, similar to the terminating lines in SEARCH. 
 
E_x_a_m_p_l_e_ 
 
* CLAIM 
 
USED: 
disc  2 slices * 21 =  42 segments       2 entries 
 
FREE: 
disc  8 slices * 21 = 168 segments       4 entries\f

T_7.3       LOOKUP 
 
F_o_r_m_a_t_ 
 
&_LOOKUP  filename' 
        filename' : the name of a disc expressed as a string
                     literal or by means of a variable. 
 
U_s_e_ 
 
As a command or statement to return a listing (name and
attributes) of the specified disc file. 
   
R_e_m_a_r_k_s_ 
 
1) the first column contains the name of the file 
2) the second column contains the size in number of segments 
3) the third column contains the name of the disc kit 
4) the fourth column contains the date of creation or latest
   output 
5) the fifth column contains the number of the last block
   written in the file (sequential access) or the number of
   records in the file (random access) 
6) the sixth column contains 0 
7) the seventh column contains: 
T_               0 empty sequential file 
               1 ASCII sequential file 
               2 binary sequential file 
              3 binary random access file 
&_               4 saved file 
8) the eighth column contains: 
                                 sequential: last halfword in last T_
                                             block 
                                 random:     record length in &_
                                             halfwords 
9) The columns are listed in the same order as for the command
search, the BOSS command lookup and the utility command lookup 
 
T_E_x_a_m_p_l_e_ 
 
*LOOKUP "DATA" 
data   13 disc  d.781006.1332   13   0   1    20 
&_ \f

T_      7.4       NEWCLAIM 
                   
                  F_o_r_m_a_t_ 
 
                  NEWCLAIM username' ,disc name', slices' ,entries' 
                   
                      username' : name of the user 
                      discname' : name of a disc kit 
                      slices'   : a numeric expression 
                      entries'  : a numeric expression 
&_ 
                  U_s_e_ 
 
                  As a statement or command to increase/reduce the claims of a
                  user. 
                  (The claims of the MATER is reduced/increased by the same slices
                  and entries). 
                   
                  R_e_m_a_r_k_s_ 
 
                  The statement/command can only be used by the MATER  
                   
T_                E_x_a_m_p_l_e_                    C_o_m_m_e_n_t_ 
 
                  NEWCLAIM "KNUD", 2,1       Knuds claims on the standard disc kit
                                             are increased by 2 slices and 1 entry.
                                             (And the claim of the MATER is reduced
                                             by 2 slices and 1 entry) 
         
&_                 
        7.5       SCANCLAIM 
                   
                  F_o_r_m_a_t_ 
 
                  SCANCLAIM "LPT" 
                   
                  U_s_e_ 
 
                  As a statement or command to return a listing of the current
                  claims in the usercat \f

T_                E_x_a_m_p_l_e_ 
 
                  *SCANCLAIM 
                  PROJECT No.           4             1000    1010 
                   
                  BASICMATER                          1000    1010 
                  DISC1        40       10     42 
                   
                  KC                                  1000    1000 
                  DISC1        10       5      42 
                   
                  PSS                                 1001    1001 
                  DISC1        10       5      42 
                   
                  TA                                  1002    1002 
                  DISC1        10       5      42 
&_                 
T_                C_o_m_m_e_n_t_  
                  The first three columns contain slices, entries and slicelength.
                  The two last columns contains the catalog bases.
 
&_ 
T_      7.6       SCOPE 
                   
                  F_o_r_m_a_t_ 
 
                        USER 
                  SCOPE         username', filename' 
                        MATER 
                               username': name of the user 
                                filename': name of the file to be scoped 
&_                 
T_                U_s_e_ 
 
                  As a statement or command to move a file to/from a user from/to
                  the MATER. The required claims must be present. The claims of as
                  well the user as the MATER will be updated. 
&_                 
T_                R_e_m_a_r_k_s_ 
 
                  The statement/command can only be used by the MATER. 
&_                 
T_                E_x_a_m_p_l_e_                             C_o_m_m_e_n_t_ 
                   
                  SCOPE USER "TOVE", "TESTS"          The file TESTS is moved to
                                                      TOVE \f

T_      7.7       SEARCH 
                   
                  F_o_r_m_a_t_ 
 
                  SEARCH  "LPT" 
&_                 
T_                U_s_e_ 
 
                  As a command or statement to return a listing of a user>s files
                  (names and attributes). 
&_                 
T_                R_e_m_a_r_k_s_ 
 
                  See LOOKUP 
&_                 
T_                E_x_a_m_p_l_e_ 
 
                  * SEARCH 
                  data           12 disc d.781002.1420  12   0   1     100 
                  prog           10 disc d.701005.0931  10   0   1      40 
&_                 
T_                      
USED
                  disc    2 slices*21 =  42 segments         2 entries 
                   
                  FREE 
                  disc    8 slices*21 = 168 segments4 entries 
&_                    \f

      8F_I_L_E_S_ _A_N_D_ _R_E_L_A_T_E_D_ _S_T_A_T_E_M_E_N_T_S_
 
 
8.1       Introduction 
 
The present section describes the file concept itself, while
statements related to the use of files are described in the   
remaining sections of this chapter. 
 
8.1.1     D_i_s_c_ _f_i_l_e_s_ _a_n_d_ _d_e_v_i_c_e_s_ 
Several of the statements described in the following sections
have filename' as an argument. A filename may be the name of a
disc file or the name of a device. In many respects, a disc file
and a device are one and the same, and most of the explanations
in this chapter apply to both. A device is used either for input
or for output, whereas a  disc file can be used for both. When a
device is specified, a work area with the device name is
created, and the filerouter is required to demand input/output.
 
8.1.2     S_t_a_n_d_a_r_d_ _d_e_v_i_c_e_s_ _a_n_d_ _r_e_s_e_r_v_e_d_ _n_a_m_e_s_ 
The system devices which can be used in RC BASIC are listed
below. The names in parentheses should be used when the device
is referenced as a file.   
 
Line printer (LPT) 
                      
Paper tape punch (PTP) 
 
Paper tape reader (PTR) 
 
Card reader (CDR or MCDR) 
 
Terminal (TERM) 
 
The card reader has two names, as it can be used in two
different ways.   
 \f

T_    8.1.3     B_l_o_c_k_ _s_i_z_e_s_e
An RC BASIC disc file comprises a number of blocks. Each disc
file is described separately by an entry in the catalog. One
halfword (12 bits) corresponds to one character, so that a
string containing 10 characters will occupy 10 halfwords,
whereas numeric data will occupy 4 halfwords per item. 
 
b_8.1.4     F_i_l_e_n_a_m_e_s_ _a_n_d_ _f_i_l_e_ _s_i_z_e_s_e
A disc file can be CREATEd with a name and a size. A filename
may contain from 1 to 8 characters. The name consists of a
letter followed by 0 to 7 digits or letter (similar to variable
names). The size of a file is the number of blocks allocated to
the file, expressed as a number greater than or equal to zero. 
 
A disc file can also be DELETEd, RENAMEd or CHANGESIZEd.
 
b_8.1.5     H_o_w_ _f_i_l_e_s_ _a_r_e_ _u_s_e_d_e
Files can be used for many purposes. The user can SAVE/LOAD/ 
CHAIN/RUN or LIST/ENTER a program to or from a file (see Chs. 3
and 9). 
 
A file can also be used for data. In order to read data from or
write data to a file, the user must first OPEN the file. The
data can be in binary or ASCII (character) format. When the file
is OPENed, the user must specify one of the following modes: 
 
Mode 0    for binary input from or binary output to a random  
          access file (READ FILE or WRITE FILE statement). 
 
Mode 1    for binary input from a sequential access file 
          (READ FILE statement). 
 
Mode 2    for binary output to a sequential access file, 
          when data is to be appended to previously written 
          data (WRITE FILE statement). 
 
Mode 3    for binary output to a sequential access file 
          (WRITE FILE statement). 
 
Mode 4    for binary input (only) from a random access file 
          (READ FILE statement). 
 
Mode 9    for ASCII input from a sequential access file (INPUT
          FILE statement). 
 \f

Mode 11   for ASCII output to a sequential access file 
          (PRINT FILE statement). 
 
When the user no longer needs to access a file, he should CLOSE
it. 
 
b_8.1.6     R_a_n_d_o_m_ _a_c_c_e_s_s_ _f_i_l_e_s_e
The data in a random access file is organized in individual
records, which can be accessed directly. If a random access file
is to be used for both reading and writing, it must be OPENed in
mode 0. If a random access file is to be used for reading only,
it can be OPENed in mode 4.   
 
b_8.1.7     S_e_q_u_e_n_t_i_a_l_ _a_c_c_e_s_s_ _f_i_l_e_s_e
The data in a sequential access file can only be accessed in a
sequential manner. When a sequential access file is OPENed, the
system positions to the beginning of the file and the data is
read or written starting from there. If, however, a sequential
access file is OPENed in mode 2, the system will position after
the last item written to the file, so that data can be appended
to previously written data. Sequential access files can be
OPENed in mode 1, 2, 3, 9, or 11. 
 
If a file is OPENed for reading (writing), it must be CLOSEd and
OPENed again before it can be used for writing (reading). 
 
The remaining sections of this chapter contain separate
                  descriptions of the CREATE, DELETE, and RENAME statements,
statements related to file input/output, and the EOF(X)
function. 
 
For the use of these statements as keyboard commands, see
Appendix C. 
 
 
        8.2       CHANGESIZE 
 
                  F_o_r_m_a_t_
 
                  CHANGESIZE filename',size' 
                             filename': the name (1 to 8 characters) of the disc
                                         file to be changed, expressed as a literal
                                 or by means of a variable. 
                     size'    : a numeric expression specifying either the
                                 length of the file in blocks (sequential
                                 access file) or the number of records in
the file (random access file).\f

          U_s_e_ 
 
                  As a statement or command to change the size of a file. 
           
          R_e_m_a_r_k_s_ 
 
          1) Typically used to secure claims for output before run. 
          2) Also used to upspeed the run, as there will be no need for
             extension during output. 
           
           
8.3       C_L_O_S_E_ _F_I_L_E_ 
 
F_o_r_m_a_t_ 
 
CLOSE FILE(file')
 
      file': a numeric expression which evaluates to a user
              file number that was previously associated with a
              filename in an OPEN FILE statement (see Sect.
              8.11). 
&_ 
U_s_e_ 
 
As a statement or command to dissociate a filename and a user
file number so that the file no longer can be referenced. 
 
R_e_m_a_r_k_s_ 
 
1. The CLOSE FILE statement may be used to close a file so that
   it can be re-opened by an OPEN FILE statement with a new mode
   argument. 
 
2. The CLOSE form of the statement closes all open files. 
 
T_3. When an output file is closed, the size is cut to the used
             size. 
&_           
T_          E_x_a_m_p_l_e_s_ 
 
100 CLOSE FILE(1) 
          200 CLOSE FILE(X+3) 
300 CLOSE 
 
&_ \f

T_8.4       COPY 
           
&_          F_o_r_m_a_t_ 
T_ 
          COPY filename1', filename2' 
               filename1' : the name of the disc file or device 
                             to be copied, expressed as a string literal
                             or by means of a variable.
          filename2' : The name of the disc file or device to which
                             filename1' is copied, expressed as a string
                             literal or by means of a variable. 
&_           
T_          U_s_e_ 
 
          As a statement or command to copy a file. 
&_           
          R_e_m_a_r_k_s_ 
 
          If filename2' is not a user file, a file will be created with the
          name filename2' 
&_           
T_          E_x_a_m_p_l_e_ 
 
          *COPY "NEWDATA", "DATA" 
          *COPY "PTR", "LPT"
 
&_ 
T_8.5       C_R_E_A_T_E_ 
 
F_o_r_m_a_t_ 
 
&_CREATE filename',discname',size',recl'  
 
       filename': the name (1 to 8 characters) of the disc file
                   to be created, expressed as a string literal
                   or by means of a variable. 
 
discname':  name of disc in case the file is not to be
                    created on the standard disc. 

           size':  a numeric expression specifying either the
                   length of the file in blocks (sequential  
                   access file) or the number of records in the
                   file (random access file). 
 \f

           recl': a numeric expression specifying the record
                   length in halfwords. recl' should be
                    specified if, and only if, the file is to be
                    used as a random access file. 
 
U_s_e_ 
 
As a statement or command to create a file. 
 
R_e_m_a_r_k_s_ 
 
1. The block size is 512 halfwords. 
 
2. If recl' is specified, the file can (only) be used as a
   random access file. (See also the OPEN FILE, READ FILE, and
   WRITE FILE statements.) recl' must be positive and less than
   or equal to 512. 
    
3. A random access file will be organized such that each
   physical block in the device will contain an integral number
   of records. 
    
T_E_x_a_m_p_l_e_ _1_                     C_o_m_m_e_n_t_ _(_1_)_ 
    
120 LET NAME<="PROC1"          
130 CREATE NAME<,17 
140 CREATE "PROC2", 10        CREATE used as a statement. 
&_ 
T_E_x_a_m_p_l_e_ _2_                     C_o_m_m_e_n_t_ _(_2_)_ 
 
* CREATE "DATAFILE",15,52     CREATE used as a command. 
 
&_ 
T_8.6       D_E_L_E_T_E_ 
 
F_o_r_m_a_t_ 
 
DELETE filename'
 
      filename': the name of the disc file to be deleted,
                  expressed as a string literal or by means of
                  a variable.
&_ 
U_s_e_ 
 
As a statement or command to delete a file. \f

8.7       DIGITS FILE 
           
          F_o_r_m_a_t_ 
 
          DIGITS FILE (file')=expr' 
                       file': a numeric expression which evaluates to 
                                            the number of a user file. 
                       expr': a numeric expression in the range
                               1=expr'=11. 
           
          U_s_e_ 
 
          As a command or statement to specify the number of digits output
T_          by a PRINT FILE statement. 
           
          R_e_m_a_r_k_s_ 
 
          The default value is 6. 
                   
                  E_x_a_m_p_l_e_ 
 
                  DIGITS FILE (0)=7 
  
                   
T_8.8       E_O_F_(_X_)_ _f_u_n_c_t_i_o_n_ 
    
F_o_r_m_a_t_ 
 
EOF(file') 
 
      file': a numeric expression which evaluates to the number
              of a user file opened for reading (i.e. in mode
              1 or 9). 
&_ 
U_s_e_ 
 
As a function to detect the end of data when transferring data
from a file. 
 
R_e_m_a_r_k_s_ 
 
1. The EOF(X) function returns an integer indicating whether or
   not the last READ FILE or INPUT FILE statement included an
   end of file delimiter. 
    
2. If an end of file condition was detected, the function
   returns a value of +1; otherwise, a value of 0 is returned. \f

E_x_a_m_p_l_e_ 
 
See the examples under READ FILE (Sect. 8.19).
 
 
T_8.9       I_N_P_U_T_ _F_I_L_E_ 
    
F_o_r_m_a_t_ 
 
var'var'
INPUT FILE(file') , svar'  ,svar'   ...
&_
file': a numeric expression which evaluates to the
&_                   number of a user file opened in mode 9. 
 
      var, svar': a list of one or more numeric or string 
                   variables which are assigned values read from
                   a sequential access file. 
 
U_s_e_ 
 
As a statement or command to read data in ASCII format from a 
s_e_q_u_e_n_t_i_a_l_ _a_c_c_e_s_s_ _f_i_l_e_ for the variables in the argument list.
 
R_e_m_a_r_k_s_ 
 
1. Each variable in the argument list must be of the same type
   (numeric or string) as the corresponding data item in the
   data file. 
    
2. The data file must be formatted such that commas or carriage
   returns are used to separate numeric data items and quotation
   marks or carriage returns are used to separate string data
   items. 
    
3. If the length of a string in the data file is greater than
   the length of the corresponding string variable in the
   argument list, the last part of the string will be skipped. 
    
T_E_x_a_m_p_l_e_ 
    
40 OPEN FILE(1,9)"INFILE" 
 . 
 . 
&_70 INPUT FILE(1)Z,Y,X,A<,B< \f

T_8.10      M_A_T_ _I_N_P_U_T_ _F_I_L_E_ 
 
F_o_r_m_a_t_ 
 
&_MAT INPUT FILE(file') , mvar' ,mvar' ...  
 
      file': a numeric expression which evaluates to the number
              of a user file opened in mode 9. 
 
      mvar': a matrix variable. 
 
U_s_e_  
 
As a statement or command to read data in ASCII format from a
s_e_q_u_e_n_t_i_a_l_ _a_c_c_e_s_s_ _f_i_l_e_ for the matrix variables in the argument
list. 
 
R_e_m_a_r_k_s_ 
 
1. The matrices must have been dimensioned before the statement
   is executed (see Ch. 6). 
 
2. Values are assigned to the matrix elements by rows in
   ascendingorder. 
 
3. The data file must be formatted such that commas or carriage 
   returns are used to separate the data items.
 
 
T_8.11      M_A_T_ _P_R_I_N_T_ _F_I_L_E_ 
 
F_o_r_m_a_t_ 
 
&_MAT PRINT FILE(file') , mvar' ,mvar' ... 
 
      file': a numeric expression which evaluates to the number
              of a user file opened in mode 11. 
 
      mvar': a matrix variable. 
 
U_s_e_ 
 
As a statement or command to write matrix data in ASCII format
to a s_e_q_u_e_n_t_i_a_l_ _a_c_c_e_s_s_ _f_i_l_e_._
 \f

R_e_m_a_r_k_s_ 
 
See the MAT PRINT statement (Ch. 6).
 
 
T_8.12      M_A_T_ _R_E_A_D_ _F_I_L_E_ 
 
F_o_r_m_a_t_ 
 
MAT READ FILE(file',recno') , mvar' ,mvar' ... 
&_ 
       file': a numeric expression which evaluates to the
               number of a user file opened in mode 0, 1, or 4.
 
      recno': a numeric expression which evaluates to the
               number (' 0) of a record to be read from a  
               random access file. 
 
       mvar': a matrix variable. 
 
U_s_e_ 
 
As a statement or command to read data in binary format from a
sequential access file or record of a random access file for the
matrix variables in the argument list. 
 
R_e_m_a_r_k_s_ 
 
1. The matrices must have been dimensioned before the statement
   is executed (see Ch. 6). 
    
2. Values are assigned to the matrix elements by rows in
   ascending order. 
    
3. If the attempt is made to read a record (from a random access
   file) which is longer than the record length specified for
   the file, the error message 0132: RECORD TOO LONG will
   appear. 
    
  
T_  8.13      M_A_T_ _W_R_I_T_E_ _F_I_L_E_ 
    
F_o_r_m_a_t_ 
    
&_MAT WRITE FILE(file',recno') , mvar' ,mvar' ... 
       file': a numeric expression which evaluates to the  
               number of a user file opened in mode 0 or 3. \f

      recno': a numeric expression which evaluates to the  
               number (' 0) of a record to be written to a
               random access file. 
 
       mvar': a matrix variable. 
 
U_s_e_ 
 
As a statement or command to write matrix data in binary format 
to a sequential access file or record of a random access file. 
 
R_e_m_a_r_k_s_ 
 
1. The matrices must have been dimensioned before the statement
   is executed (see Ch. 6). 
 
2. The values of the matrix elements are output by rows in  
   ascending order. 
 
3. If the attempt is made to write a record (to a random access 
   file) which is longer than the record length specified for
   the file, the error message 0132: RECORD TOO LONG will
   appear. 
 
 
T_8.14      O_P_E_N_ _F_I_L_E_ 
 
F_o_r_m_a_t_ 
 
&_OPEN FILE(file',mode') , filename'  
 
          file': a numeric expression which evaluates the
                  number of a user file. This number is
                  associated with filename' and used whenever
                  the file is referenced in other file
                  input/output statements. 
                  -1 =' open and close are blind. 
      input/output to current input/output. 
          mode': a numeric expression which evaluates to a
                  number and specifies how the file is to be
                  used (see Remarks). 
                   
      filename': a disc file or a device expressed as a string
                  literal or by means of a variable. 
                     \f

                U_s_e_ 
 
As a statement or command to associate a disc file or a device
with a user file number and to specify how the file is to be
used. 
 
R_e_m_a_r_k_s_
 
1. One of the following modes must be specified: 
 
   Mode 0  for binary input from or binary output to a random 
           access file (READ FILE or WRITE FILE statement). 
 
   Mode 1  for binary input from a sequential access file 
(READ FILE statement). 
 
   Mode 2  for binary output to a sequential access file, 
           when data is to be appended to previously written 
           data (WRITE FILE statement) 
 
   Mode 3  for binary output to a sequential access file 
           (WRITE FILE statement). 
 
   Mode 4  for binary input (only) from a random access file 
           (READ FILE statement). 
 
   Mode 9  for ASCII input from a sequential access file 
           (INPUT FILE statement). 
 
   Mode 11 for ASCII output to a sequential access file 
           (PRINT FILE or PRINT FILE USING statement). 
 
2. A disc file must have been CREATEd (see Sect. 8.3) before it
   can be opened, yet open will attempt to create a file if 
   mode = 3 or 11.
 
3. Random access files can only be opened in mode 0 or 4.
 
4. When a sequential access file is opened in mode 1, 3, 9, or
   11, the system will position to the beginning of the file. 
When a sequential access file is opened in mode 2, the system
   will position after the last item written to the file, so
   that data can be appended to previously written data. 
 
                  5. When a sequential file is opened in mode 2, 3 or 11, the size\f

                     is extended to an integral number of slices. Any extension
                     during output will also be slice by slice. 
                    
T_                E_x_a_m_p_l_e_ _1_                     C_o_m_m_e_n_t_ _(_1_)_  
 
                  10 NAME<="DATA1" 
20 OPEN FILE(0,0)NAME< 
30 OPEN FILE(1,11)"DATA2"     OPEN FILE used as a statement. 
&_ 
T_E_x_a_m_p_l_e_ _2_                     C_o_m_m_e_n_t_ _(_2_)_ 
 
                  * OPEN FILE(6,9)"PTR"         OPEN FILE used as a command. 
 
&_ 
        8.15      PAGE FILE 
                   
                  F_o_r_m_a_t_ 
 
                  PAGE FILE (file')=expr' 
                             file': a numeric expression which evaluates to 
                                               the number of a user file. 
                             expr': a numeric expression in the range 
                                               0=expr'=132. 
                   
                  U_s_e_ 
 
                  As a statement or command to set the right-hand margin of an
                  output file. 
                   
                  R_e_m_a_r_k_s_ 
 
                  1. The default page width (length of a print line) is 72
                     columns. 
                  2. If the page width is set to zero, the system will regard the
                     length of the print line as infinite and consequently not
                     output an automatic carriage return and line feed in PRINT
                     statements (see Ch. 3). The user may find this advantagous
                     when using the x-y addressing facilities of a video terminal.
 
                  E_x_a_m_p_l_e_ 
 
                  PAGE FILE (1)=80
 
 \f

T_8.16      P_R_I_N_T_ _F_I_L_E_ 
 
F_o_r_m_a_t_ 
 
expr'   ,  expr'         ,
PRINT FILE(file') ,  slit'   ;  slit'   ...   ;
&_svar'      svar'
                  file': a numeric expression which evaluates
                          to the number of a user file opened 
                          in mode 11. 
 
      expr, slit, svar':a list of one or more numeric or rela
                          tional expressions, string literals,
                          or string variables the values of
                          which are written to a sequential 
                          access file. 
U_s_e_ 
 
As a statement or command to write data in ASCII format to a 
s_e_q_u_e_n_t_i_a_l_ _a_c_c_e_s_s_ _f_i_l_e_. 
 
R_e_m_a_r_k_s_ 
 
1. The PRINT FILE statement is used to output data to an ASCII
   device, such as a line printer, or to a disc file for
   subsequent off-line printing. 
    
2. Each item in the argument list must be separated from the
   next item by a comma or a semicolon. The argument list itself
   must be terminated by a carriage return. 
 
3. Output formatting is the same as that described under the
   PRINT statement (see Ch. 3). 
    
T_E_x_a_m_p_l_e_ 
    
10 OPEN FILE(2,11)"DATAFILE" 
20 PRINT FILE(2)"RESULTS:" 
30 PRINT FILE(2)X 2,X 3,X 4 
 
&_ \f

T_8.17      P_R_I_N_T_ _F_I_L_E_ _U_S_I_N_G_ 
 
F_o_r_m_a_t_ 
 
expr'      expr'
PRINT FILE(file') , USING format',  slit'   ,  slit'  ...,
  svar'   ;  svar'      ;
 
&_ 
        file': a numeric expression which evaluates to the
                number of a user file opened in mode 11. 
 
      format': a string literal or string variable that
                specifies the format (see Remarks) forout- 
                putting the items in the argument list. 
 
        expr': a numeric or relational expression. 
 
        slit': a string literal. 
 
svar':  a string variable.
 
U_s_e_ 
 
As a statement to output the values of items in the argument
list using a specified format. 
 
R_e_m_a_r_k_s_ 
 
See the PRINT FILE statement (Sect. 8.16) and the PRINT USING
statement (Ch. 3). 
 
 
       8.18      PRINTDATE FILE 
                   
                  F_o_r_m_a_t_ 
                  , 
                  PRINTDATE FILE (file') expr1',expr2',expr3' 
                  ; 
                                  file' a numeric expression which evaluates to the
                                   number of a user file opened in mode 11. 
                  expr1' 
                  expr2'    a numeric expression 
                  expr3' 
                   \f

U_s_e_ 
 
                  As a statement or command to write a variable with a date layout
                  in ASCII format to a sequential access file. The value of expr1'
                  is considered a date in the  format yymmdd. 
                   
                  The value of expr2' is considered a time in the format hhmmss. 
                   
                  The value of expr3' is used as the format, determining the type
                  of output. The value is considered as a bit pattern. 
                   
                  Value of bit                Print result 
                      1                       hours and minutes 
                      2                       seconds 
                      4                       19 in front of year   
                      8                       d. in front of date 
                                              (and no points between yy, mm and dd)
                     16                       date is printed as ddmmyy 
                     32                       output is followed by extra space 
                     64                       space in front of output 
                   
                  E_x_a_m_p_l_e_ _1_ 
                  0010 PRINTDATE FILE (0) SYS(17), SYS(18), 2+4 
                  0020 PRINTDATE FILE (0) SYS(17), SYS(18), 1+8 
                  0030 STOP 
                  1978.09.26 10.31.05 
                  d.780926.1031 
                   
                  E_x_a_m_p_l_e_ _2_ 
                  0010 PRINTDATE FILE (0) VAR, 0,4+16 
                  0020 STOP 
                   
                  25.07.1978 
                   
        8.19      PRINTEPS FILE 
                   
                  F_o_r_m_a_t_ 
 
                  PRINTEPS FILE (file')= expr' 
                                 file' :  a numeric expression which evaluates to
                                           the number of a user file. 
                  expr' :  a numeric expression in the range E-100
                                           to 1
                   
                  U_s_e_ 
 
                  As a statement or command to specify the smallest number which
                  will not be printed as zero by a PRINT FILE statement. 
                   \f

                  R_e_m_a_r_k_s_  
                  The default value is 1E-10. 
                   
                  E_x_a_m_p_l_e_ 
 
PRINTEPS FILE (0)=E-8
 
 
T_8.20      R_E_A_D_ _F_I_L_E_ 
 
F_o_r_m_a_t_ 
 
var'var'
READ FILE(file',recno'), svar'  , svar'   ...
&_ 
                            file': a numeric expression which evaluates to the   
                  number of a user file opened in mode 0, 1, or 4.
 
         recno': a numeric expression which evaluates to the
                  number (' 0) of a record to be read from a 
                  random access file. 
 
     var, svar':a list of one or more numeric or string  
                  variables which are assigned values read   
                  sequentially from a randomly accessed record
                  or sequentially from a file. 
 
U_s_e_ 
 
As a statement or command to read data in binary format from a
sequential access file or record of a random access file for the
variables in the argument list.
 
R_e_m_a_r_k_s_ 
 
1. Each variable in the argument list must be of the same type
   (numeric or string) as the corresponding data item in the
   data file. 
    
2. One can, however, read string data items into numeric
   variables. (For each numeric variable, four bytes will be
   read.) This facility can be used to copy a file (see Ex. 2).
   N_o_t_e_: If the total number of bytes in the file is not
   divisible by 4, the error message 0139: END OF FILE may
   appear. 
    
3. The EOF(X) function (see Sect. 8.5) can be used to detect an
   end of file condition in the file (see Examples). \f

4. If the attempt is made to read a record (from a random access
                     file) which is longer than the record length specified for
                     the file, the error message 0132: RECORD TOO LONG will
                     appear. 
 
E_x_a_m_p_l_e_ _1_            C_o_m_m_e_n_t_ _(_1_)_ 
 
0010 OPEN FILE(0,1)"DATA"  This program uses the file  
0020 DIM TEXT<(25)         DATA, which is created in  
0030 READ FILE(0)TEXT<     the program shown as an  
0040 PRINT TEXT<           example of the WRITE FILE 
0050 READ FILE(0)A         statement (see Sect. 8.16). 
0060 WHILE NOT EOF(0) DO 
0070   PRINT A; 
0080   READ FILE(0)A 
0090 ENDWHILE 
0100 CLOSE 
 
THIS IS A DATA FILE 
 1  2  3  4  5  6  7  8  9  10 
&_ 
T_E_x_a_m_p_l_e_ _2_                  C_o_m_m_e_n_t_ _(_2_)_ 
 
0010 CREATE "DATA1",5      This program copies the file 
0020 OPEN FILE(0,1)"DATA"  DATA to a new file, DATA1. 
0030 OPEN FILE(1,3)"DATA1" 
0035 READ FILE(0)A 
0040 WHILE NOT EOF(0) DO 
0050   WRITE FILE(1)A 
0060   READ FILE(0)A 
0070 ENDWHILE 
0080 CLOSE 
 
&_ 
T_8.21      R_E_N_A_M_E_ 
 
F_o_r_m_a_t_ 
 
&_RENAME filename1',filename2'
&_ 
      filename1': the name of the disc file to be renamed.
 
      filename2': the new name of filename1'. 
 
       Both arguments are expressed as string literals or 
by means of variables.\f

                  U_s_e_ 
    
As a statement or command to rename a file. 
 
E_x_a_m_p_l_e_ _1_                            C_o_m_m_e_n_t_ _(_1_)_ 
 
                  20 RENAME NAMES,"PROC3"              RENAME used as a statement.
                   
                  E_x_a_m_p_l_e_ _2_                            C_o_m_m_e_n_t_ _(_2_)_ 
 
                  * RENAME "DATAFILE","FILE 3"         RENAME used as a command. 
                      
                   
        8.22      TAB FILE 
                   
                  F_o_r_m_a_t_ 
 
                  TAB FILE (file')=expr' 
                            file':  a numeric expression which evaluates to 
                                               the number of a user file 
                            expr':  a numeric expression in the range 1expr'=
                                     page width of this file. 
                   
                  U_s_e_ 
 
                  As a command or statement to set the zone spacing between the
                  print elements output by PRINT FILE statement. 
                   
                  R_e_m_a_r_k_s_ 
 
                  1. The default zone spacing (width of a print zone) is 14
                     columns. This spacing allows five print zones per 72
                     character print line. 
                  2. Since the maximum range of zone spacing depends on the PAGE
                     FILE command, it is wise to specify the page width (length of
                     the print line) first and then specify the setting of the
                     tabulation zones. 
                   
                  E_x_a_m_p_l_e_ 
 
                  TAB FILE (2)=12\f

T_8.23      W_R_I_T_E_ _F_I_L_E_  
 
                  F_o_r_m_a_t_ 
    
expr'    expr'
WRITE FILE(file',recno') , slit'  , slit'   ...
svar'    svar'
&_ 
                  file': a numeric expression which evaluates
                          to the number of a user file opened in
                          mode 0 or 3. 
  
                 recno': a numeric expression which evaluates
                          to the number (' 0) of a record to be
                          written to a random access file. 
 
      expr, slit, svar': a list of one or more numeric or
                          relational expressions, string
                          literals, or string variables the
                          values of which are written
                          sequentially to a randomly accessed
                          record or sequentially to a file. 
                           
                  U_s_e_ 
 
As a statement or command to write data in binary format to a
sequential access file or record of a random access file. 
 
R_e_m_a_r_k_s_ 
 
1. A_ _n_u_m_e_r_i_c_ _d_a_t_a_ _i_t_e_m_ _i_s_ _w_r_i_t_t_e_n_ _a_s_ _f_o_u_r_ _b_y_t_e_s_._ _A_ _s_t_r_i_n_g_ _d_a_t_a_ 
   i_t_e_m_ _i_s_ _w_r_i_t_t_e_n_ _a_s_ _a_ _n_u_m_b_e_r_ _o_f_ _b_y_t_e_s_ _c_o_r_r_e_s_p_o_n_d_i_n_g_ _t_o_ _t_h_e_ 
   l_e_n_g_t_h_ _o_f_ _t_h_e_ _s_t_r_i_n_g_._ _T_h_e_ _s_t_r_i_n_g_ _i_s_ _t_e_r_m_i_n_a_t_e_d_ _b_y_ _a_ _N_U_L_ 
   c_h_a_r_a_c_t_e_r_ _(_s_e_e_ _A_p_p_._ _D_)_._ 
    
2. The result of a relational expression is written as one
   numeric item, the value of which is 1, if the expression is
   true (e.g. 3 ' 0), or 0, if the expression is false  
(e.g.  0 ' 3). 
    
3. If the attempt is made to write a record (to a random access
   file) which is longer than the record length specified for
   the file, the error message 0132: RECORD TOO LONG will
   appear. 
    \f

T_E_x_a_m_p_l_e_ 
 
0010 CREATE "DATA",5 
0020 OPEN FILE(1,3)"DATA" 
0030 WRITE FILE(1)"THIS IS A DATA FILE" 
0040 FOR I=1 TO 10 
0050   WRITE FILE(1)I 
0060 NEXT I 
&_0070 CLOSE FILE(1) \f

F_      9S_Y_S_T_E_M_ _C_O_M_M_A_N_D_S_ 
 
 
9.1I_n_t_r_o_d_u_c_t_i_o_n_ 
 
The statements and functions that are used for writing programs
in RC BASIC are described in preceding chapters. RC BASIC, how-
ever, may also be used interactively to perform such functions
as: 
 
    Maintenance of RC BASIC source programs 
    Desk calculator functions 
    Dynamic program debugging 
    File input/output 
 
The present chapter describes commands for program development
and execution.   
 
Commands derived from RC BASIC statements, for desk calculator
functions, program debugging, and file input/output, are
described in Appendix C. 
 
Commands used in conjunction with batch mode are described in
Appendix B. 
 
 
9.2C_o_m_m_a_n_d_ _t_o_ _d_e_l_e_t_e_ _p_r_o_g_r_a_m_ _s_t_a_t_e_m_e_n_t_s_ 
 
F_o_r_m_a_t_ 
 
 line n1',line n2'
 line n1'
 line n1',
 ,line n2'
 
      line n1':  the first statement to be deleted. 
                  
      line n2':  the last statement to be deleted. 
 
U_s_e_ 
 
As a command to delete one or more statements in a program. 
 \f

T_R_e_m_a_r_k_s_
 
The variations of the command have the following effects:
 
line n1',line n2'                 Deletes all lines with 
                                    line n1' = line number =
                                    line n2'.
        line n1'                           Deletes only the single line 
                                    with line number = line n1'. 
 
line n1',                          Deletes all lines with 
                                    line n1' = line number. 
         
,line n2'                          Deletes all lines with  
                                    line number = line n2'. 
&_ 
T_E_x_a_m_p_l_e_                            C_o_m_m_e_n_t_ 
 
* LIST 
0010 PRINT 
0020 PRINT 
0030 PRINT 
0040 PRINT 
0050 PRINT 
0060 PRINT 
0070 PRINT 
0080 PRINT 
0090 PRINT 
0100 PRINT 
 
* 20,40                             Lines 20-40 (= 20, 30, 40) 
* LIST                              are deleted. 
0010 PRINT 
0050 PRINT 
0060 PRINT 
0070 PRINT 
0080 PRINT 
0090 PRINT 
0100 PRINT 
&_ \f

T_* 60                                Line 60 is deleted. 
* LIST 
0010 PRINT 
0050 PRINT 
0070 PRINT 
0080 PRINT 
0090 PRINT 
  0100 PRINT 
&_ 
T_      * 90,                               Lines 90-9999 (= 90, 100) 
* LIST                              are deleted. 
0010 PRINT 
0050 PRINT 
0070 PRINT 
0080 PRINT 
 
* ,70                               Lines 1-70 (= 10, 50, 70) 
* LIST                              are deleted. 
0080 PRINT 
 
* 
   
&_ 
T_      9.3A_U_T_O_ 
 
F_o_r_m_a_t_ 
 
 
line n1'
STEP 
AUTO   ,      line n2'
STEP 
      line n1'   ,    line n2'
 
     line n1': the initial line number in a program. 
 
     line n2': the increment between line numbers in a program. 
&_ 
T_U_s_e_ 
 
As a command to provide automatic line numbers in a program,
thereby making it easier to enter programs from a terminal. 
&_ \f

T_R_e_m_a_r_k_s_
 
1. The terminal is released from AUTO mode by pressing the
   ESCape key. 
&_ 
T_2. AUTO can be used as a command for a file that contains
   statements; the statements can then be read into the current
   program storage area by means of the ENTER command (see Sect.
   9.7). 
&_ 
T_3. The variations of the command have the following effects:
 
   AUTO                        Assigns numbers to a program  
starting with the default line
number 0010 and with a default
increment of 10 between line
numbers. 
&_ 
T_   AUTO line n1'               Assigns numbers to a program  
starting with line number line
n1' and incrementing by line n1'
between line numbers. 
&_ 
T_   STEP
   AUTO  ,    line n2'       Assigns numbers to a program
                              starting with the default line
                              number 0010 and incrementing by
                              line n2' between line numbers. 
&_ 
                   STEP
AUTO line n1' ,    line n2'Assigns numbers to a program
                              starting with line number line  
                              n1' and incrementing by line n2'
&_                              between line numbers. \f

T_E_x_a_m_p_l_e_                       C_o_m_m_e_n_t_ 
 
* AUTO 
0010 LET I=1 
0020                          An empty line is ignored. 
0020 LET TOOLONGNAME=5 
 
ERR : 0011 
NAME TOO LONG 
0020 LET Y=X                  If an error occurs, the line is 
0030 repeated.
  *
   
&_ 
T_9.4B_A_T_C_H_/_B_A_T_C_H_ _"_L_P_T_"_ 
 
F_o_r_m_a_t_ 
 
BATCH "LPT"  
&_ 
T_U_s_e_ 
 
As a command to place the terminal in batch mode and cause the
system to start reading cards from the mark-sense card reader. 
&_ 
T_R_e_m_a_r_k_s_ 
 
1. Output from the jobs executed, i.e. listings, output from
   PRINT statements (see Ch. 3), and error messages, will appear
   on the terminal or, if the BATCH "LPT" form of the command
   is used, on the line printer. 
&_ 
T_2. For a complete description of the batch mode of operation,
   see Appendix B.   
&_ 
          
T_9.5BYE 
 
F_o_r_m_a_t_ 
 
  BYE 
&_ 
T_U_s_e_ 
 
&_As a command or statement to log the terminal off the system. \f

T_R_e_m_a_r_k_s_ 
 
Accounting information is output prior to the log-off. 
&_ 
T_E_x_a_m_p_l_e_                             C_o_m_m_e_n_t_ 
 
* BYE 
 
TA     4 LOGGED OUT AT D.781113.0938 
TIME USED, CPU:  00.00.11 REAL: 00.00.18  LOGIN: 00.01.13 
 
TERMINAL  1 IDLE                       The now idle terminal can
                                       be re-activated by pres-
                                       sing the ESCape key.  
&_ 
T_9.6C_O_N_/_C_O_N_L_  
 
F_o_r_m_a_t_ 
 
 CON      
 CONL            
&_ 
T_U_s_e_ 
 
As a command to continue execution of the current program after
the execution of a STOP statement (see Ch. 3) in the program,
after the ESCape key has been pressed, or after an error has
occurred.
&_ 
T_R_e_m_a_r_k_s_ 
 
1. Output from PRINT statements (see Ch. 3) will appear on the
   terminal or, if the CONL form of the command is used, on the
   line printer. 
&_ 
T_2. The CON/CONL command is equivalent to a RUN/RUNL line no.'
   command (see Sect. 9.15) where line no.' is equivalent to
   the statement immediately following the statement at which
   the program stopped. 
&_ 
T_3. If a run-time error is encountered in the program, the user
   may correct the error and then give a CON/CONL command to
   begin execution from the statement where the error occurred. 
&_ \f

T_E_x_a_m_p_l_e_C_o_m_m_e_n_t_
 
* LIST 
0010 DEF FNF(X)=2 X+2*X+2 
0020 DATA 5,6,0 
0030 PRINT " X ";"FNF(X)" 
0040 READ X 
0050 WHILE X'0 DO 
0060   PRINT X;FNF(X) 
0070   READ X 
0080 ENDWHILE 
0090 PRINT "13'10'SUPPLY NEW DATA (LINE 20)" 
0100 STOP 
0110 RESTORE 0020 
0120 GOTO 0030 
 
&_ 
T_* RUN 
 X FNF(X) 
 5  44 
 6  78 
 
SUPPLY NEW DATA (LINE 20) 
 
STOP 
AT 0100 
* 20 DATA 1,2,3,4,5,6,7,8,9,0                   New data is
* CON                                           supplied to the
 X FNF(X)                                       program before
 1  6execution con-
 2  10 tinues.
 3  16 
 4  26 
 5  44 
 6  78 
 7  144 
 8  274 
 9  532 
 
SUPPLY NEW DATA (LINE 20) 
 
STOP 
AT 0100 
  * 
&_ \f

T_      9.7       DISPLAY 
                   
                  F_o_r_m_a_t_ 
                  DISPLAY 
&_                 
T_                U_s_e_ 
                  As a command to return a listing of the users logged in, together
                  with time of login and time of latest command or statement. 
&_                 
T_                E_x_a_m_p_l_e_ 
                  *DISPLAY 
                                                  logged in      last 
                  1 KNUD 4                        14.30.05       15.01.17 
                  2 TOVE 4                        14.31.07       14.50.36 
&_
T_   R_e_m_a_r_k_s_ 
The project number will only be output, if the command is given
by operator. 
 
            
9.8E_N_T_E_R_ 
 
F_o_r_m_a_t_ 
&_ 
T_ENTER filename'
 
      filename': a disc file or a device expressed as a string
                  literal or by means of a variable. 
 
&_U_s_e_ 
T_ 
As a command or statement to merge the statement lines from the
disc file or the device specified by filename' into the current
program storage area. 
 
&_R_e_m_a_r_k_s_ 
T_ 
1. If an error is detected during the reading of a statement,
   the statement will be echoed on the terminal and an error
   message output (see App. A). 
 
2. Only those statements in the current program that have line
&_   numbers equivalent to the line numbers of the ENTERed state-
   ments will be deleted. If, therefore, the current program (or
   a part of it) is not to be used, a NEW command (see Sect.
   9.11) should be given prior to the ENTER command.  \f

T_E_x_a_m_p_l_e_ _1_                     C_o_m_m_e_n_t_ _(_1_)_ 
 
* NEW                         The user>s program storage area is
* ENTER "PTR"                 cleared. The program on paper tape
* ENTER "PROGSR"              and the program in file PROGSR  
* LIST "PTP"                  are merged. The resulting program
                              is listed on paper tape.   
&_ 
T_E_x_a_m_p_l_e_ _2_                     C_o_m_m_e_n_t_ _(_2_)_ 
 
* LIST                        The current program and the
0010 PRINT                    program on paper tape are merged. 
0020 PRINT 
0030 PRINT 
0040 PRINT 
 
* ENTER "PTR" 
 
* LIST 
0010 PRINT I 
0015 PRINT I 
0020 PRINT 
0025 PRINT I 
0030 PRINT 
0040 PRINT I 
0050 PRINT I 
 
* 
 
&_ 
T_9.9E_O_J_ 
 
Used only in batch mode.  For description, see Appendix B. 
 
&_ \f

T_9.10L_I_S_T_ 
 
F_o_r_m_a_t_ 
 
      line n1' 
        TO                                  
LIST   ,   line n2'           filename'
                 TO 
      line n1'  ,   line n2'
 
      line n1':  the first statement to be listed. 
 
      line n2':  the last statement to be listed. 
 
     filename':  a disc file or a device expressed as a string
                  literal. 
&_ 
T_U_s_e_
 
As a command to output part or all of the currently loaded
program in ASCII to the disc file or the device specified by
filename' or, if filename' is not specified, to the terminal. 
&_ 
T_R_e_m_a_r_k_s_ 
 
1. The variations of the command have the following effects:
    
   LIST                             Lists the entire program
                                    starting from the lowest 
                                    numbered statement. 
&_    
T_   LIST line n1'                   Lists only the single
                                    statement at line 
                                    number line n1'. 
&_    
T_         TO          
   LIST  ,  line n2'               Lists from the lowest
                                    numbered statement 
                                    through line number line n2'.
&_    
T_                   TO 
   LIST line n1'  ,  line n2'     Lists from line number line
                                    n1' through line number 
                                    line n2'. 
&_    \f

T_2. When the filename' argument is included, the LIST command
   causes the specified lines to be written to the disc file or
   the device named filename'. 
&_    
T_3. A file of statements created by the LIST command can be read
   back into the current program storage area by means of the  
   ENTER command (see Sect. 9.8).
&_ 
T_    4. I6 the statements are listed to a disc file, a new file named
   filename' is created in the logical disc to which the termi-
   nal is connected (see Ch. 8). If filename' already exists,
   the statements are written to this file. 
&_    
T_5. If no program is currently loaded, the LIST command will not
   cause an error message, but the output of a prompt (*) on the
terminal.
&_ 
T_E_x_a_m_p_l_e_s_                      C_o_m_m_e_n_t_s_ 
 
* LIST                        The entire program will be listed 
                              on the terminal. 
 
* LIST "LPT"                  The entire program will be listed 
                              on the line printer. 
 
* LIST 100,500 "PROG1SR"      Lines 100 through 500 will be
                              listed to the file PROG1SR. 
 
* LIST 50                     Line 50 will be listed on the
                              terminal. 
 
&_ 
T_9.11L_O_A_D_ 
 
F_o_r_m_a_t_ 
 
LOAD filename'
 
      filename':  a disc file or a device expressed as a string
                   literal. 
&_ \f

T_U_s_e_ 
 
As a command to load a previously SAVEd program in binary format
from the disc file or the device specified by filename' into
the user>s program storage area.
&_ 
T_R_e_m_a_r_k_s_ 
 
1. The LOAD command executes an implicit NEW command (see Sect.
   9.13), thereby clearing any currently loaded program from
   core memory. 
&_ 
T_      2. When a previously SAVEd program (see Sect. 9.16) has been 
   LOADed, it can be LISTed (see Sect. 9.9), modified, or RUN 
   (see Sect. 9.16). 
&_ 
T_E_x_a_m_p_l_e_s_                            C_o_m_m_e_n_t_s_ 
 
* LOAD "PTR"                        filename' is a device  
                                    (paper tape reader). 
 
* LOAD "PROG1SV"                    filename' is a disc file. 
 
&_ 
T_      9.12      MESSAGE 
                   
                  F_o_r_m_a_t_ 
 
                  MESSAGE username',project', mess' 
                           username' : name of the user 
                  project'  : project number 
                           mess'     : the message to be output 
                                        expressed as a string literal or 
                                        by means of a variable. 
&_                 
T_                U_s_e_ 
 
                  To send a message to another terminal. If the message is not
                  addressed it will appear on the main console. 
&_                 
T_                R_e_m_a_r_k_s_ 
 
                  If the operator sends an unaddressed message, it will appear on
                  all consoles logged in. 
&_                 \f

T_                E_x_a_m_p_l_e_ 
                  message "KC",4,"printer output ready" 
                  message "please log out" 
                   
&_                 
T_      9.13      NEW 
                   
                  F_o_r_m_a_t_ 
 
NEW 
&_ 
T_U_s_e_ 
 
As a command or statement to clear all currently stored program 
statements and variables from core memory and to close any open 
files (see Ch. 8). 
&_ 
T_R_e_m_a_r_k_s_ 
 
1. The user should clear his program storage area by means of a 
   NEW command(or statement) before entering a new program so 
   that statement lines from previous programs will not be  
   executed along with the new program.
&_ 
T_2. A NEW statement may appear as the last executable statement
   in a program, thereby clearing the program from core memory
   after program execution. 
&_ 
T_3. When used with an ON-ERR or ON-ESC statement (see Ch. 3), the
   NEW statement can be used to prevent unauthorized access to a
   program. 
&_ \f

T_E_x_a_m_p_l_e_                             C_o_m_m_e_n_t_ 
 
      * LIST 
0010 LET NUMBER=5; I=0 
0020 WHILE I=NUMBER DO 
0030   PRINT NUMBER; 
0040   LET NUMBER=NUMBER+1; I=I+2 
0050 ENDWHILE 
0060 NEW                            NEW used as a statement. 
   
        * RUN 
 5  6  7  8  9  10 
END 
AT 0060 
* LIST                              This LIST command shows that
                                    the program has been cleared. 
  *
&_ 
T_      9.14P_U_N_C_H_ 
 
F_o_r_m_a_t_ 
 
line n1'
TO 
PUNCH    ,  line n2'
                  TO 
        line n1' ,  line n2'
 
      line n1': the first statement to be punched. 
 
      line n2': the last statement to be punched. 
&_ 
T_U_s_e_ 
 
As a command to output part or all of the currently loaded
program in ASCII to the terminal punch (when present). 
&_ 
T_R_e_m_a_r_k_s_
 
1. A PUNCHed listing is preceded by a leader and followed by a
   trailer, each containing 120 STX characters (see App. D). 
&_    
T_2. As the PUNCH command does not turn the terminal punch on and
   off, the following procedure is required: 
&_    \f

T_   a. Type the desired PUNCH command, press the RETURN key, and
      immediately press the ON button on the punch. 
&_    
T_   b. A STX leader will be punched, followed by a listing of the
      desired lines of the current program, followed by a STX
      trailer. 
&_    
T_   c. When punching is completed, press the OFF button on the
      punch. 
&_    
T_3. When part or all of a program is PUNCHed, a listing is output
   on theterminal simultaneously.
&_ 
T_4. The variations of the command have the following effects:
    
   PUNCH                            Punches the entire program 
                                    starting from the lowest 
                                    numbered statement. 
&_    
T_   PUNCH line n1'                  Punches only the single 
                                    statement at line number 
                                    line n1'. 
&_    
T_   TO 
   PUNCH  ,  line n2'              Punches from the lowest  
                                    numbered statement through 
                                    line numberline n2'.
&_                                       
T_   TO 
   PUNCH line n1' ,  line n2'     Punches from line number  
                                    line n1' through line 
                                    number line n2'.   
&_    
T_   E_x_a_m_p_l_e_                          C_o_m_m_e_n_t_ 
    
   * PUNCH 200 TO 500               Lines 200 through 500 will  
                                      be punched. 
&_ \f

T_      9.15R_E_N_U_M_B_E_R_ 
    
F_o_r_m_a_t_ 
 
line n1'
 STEP 
RENUMBER    ,    line n2'
                     STEP 
           line n1' ,   line n2'
 
      line n1': the initial line number in the current program. 
 
      line n2': the increment between line numbers in the
                 current program. 
&_ 
T_U_s_e_ 
 
As a command to renumber the statements in the current program. 
&_ 
T_R_e_m_a_r_k_s_ 
 
1. The variations of the command have the following effects:
 
   RENUMBER                         Renumbers the current
                                    program starting with the 
                                    default line number 0010
       and with a default incre-
                                    ment of 10 between line
                                    numbers. 
&_    
T_   RENUMBER line n1'               Renumbers the current
                                    program starting with line  
                                    number line n1' and
                                    incrementing by line n1'
                                    between line numbers. 
&_    
T_        STEP
   RENUMBER  ,    line n2'         Renumbers the current
                                    program starting with the 
                                    default line number 0010and
                                    incrementing by line n2'
between line numbers. 
&_    \f

T_                      STEP
   RENUMBER line n1' ,    line n2'Renumbers the current pro-
                                      gram starting with line 
                                      number line n1' and in-
                                      crementing by line n2'
                                      between line numbers.  
 
T_2. Line numbers are limited to four digits. If a RENUMBER
   command causes a line number to be greater than 9999, the
   command will be re-executed as: 
    
         RENUMBER 1 STEP 1 
&_    
T_3. The RENUMBER command will also modify the line numbers in
   GOSUB, GOTO, ON-GOTO/GOSUB, and RESTORE statements (see Ch.
   3) to agree with the new line numbers assigned to the current
   program. 
    
4. References to non-existent lines are changed to 0000. 
&_    \f

T_E_x_a_m_p_l_e_                             C_o_m_m_e_n_t_ 
 
* LIST 
0001 LET NUMBER=5; I=0 
0002 REPEAT 
0004   PRINT NUMBER*I; 
0007   LET I=I+1 
0010 UNTIL I=NUMBER 
 
        * RENUMBER                          The default values ofline      
                                    n1',line n2' are 10,10.   
* LIST 
0010 LET NUMBER=5; I=0 
0020 REPEAT 
0030   PRINT NUMBER*I; 
0040   LET I=I+1 
0050 UNTIL I=NUMBER 
 
* RENUMBER ,5 
 
*LIST 
0010 LET NUMBER=5; I=0 
0015 REPEAT 
0020   PRINT NUMBER*I; 
0025   LET I=I+1 
0030 UNTIL I=NUMBER 
 
  *
 
&_ 
T_      9.16R_U_N_/_R_U_N_L_ 
 
F_o_r_m_a_t_ 
 
 RUN     line no.'
 RUNL    filename'
 
      line no.': the line number in the current program from  
                  which execution is to begin. 
 
      filename': a disc file or a device expressed as a string 
                  literal. 
&_ \f

T_U_s_e_
 
As a command to execute the current program, either from the
lowest numbered statement or from the line number specified by
line no.', or to load and execute a previously SAVEd program as
the current program. 
&_ 
T_R_e_m_a_r_k_s_ 
 
1. Output from PRINT statements (see Ch. 3) will appear on the
   terminal or, if the RUNL form of the command is used, on the
   line printer. 
&_ 
T_2. The variations of the command have the following effects:
 
           RUN/RUNL                   Clears all variables; undimensions 
                              all arrays and string variables; 
                              executes an implicit RESTORE 
                              command (see Ch. 3); resets the 
                              random number generator; runsthe
                              c_u_r_r_e_n_t_ _p_r_o_g_r_a_m_ from the lowest
                              numbered statement. 
&_ 
T_   RUN/RUNL line no.'        Retains all existing information, 
                              e.g. the values of variables and  
                              dimensioning, resulting from a  
                              previous execution of the current 
                              program; runs the c_u_r_r_e_n_t_ _p_r_o_g_r_a_m_ 
                              from the line number specified by 
                              line no.'. 
&_                                 
T_                              This variation of the command 
                              allows program execution to be 
                              resumed retaining the current 
                              values of all variables and para- 
                              meters. It may be used after the  
                              execution of a STOP statement  
                              (see Ch. 3) in the program, after  
                              the ESCape key has been pressed, 
                              or after an error has occurred,  
                              and will incorporate any changes  
                              made in the program after the  
                              program was stopped. 
&_                                     \f

T_         RUN/RUNL filename'        LOADs a previously SAVEd program  
                              from the disc file or the device  
                              specified by filename' (see Sect.
                              9.10), thereby clearing any cur-   
                              rently loaded program from core
                              memory; runs the previously S_A_V_E_d_  
                              p_r_o_g_r_a_m_ from the lowest numbered  
                              statement. 
&_                                     
T_   E_x_a_m_p_l_e_s_                   C_o_m_m_e_n_t_s_ 
            
   * RUN                      Runs the current program from the  
lowest numbered statement. 
                               
   * RUNL 50                  Runs the current program starting  
at line 50; output will appear on 
the line printer. 
                               
   * RUN "PTR"                Loads a program from paper tape 
and runs it from the lowest  
numbered statement. 
                               
         * RUNL "PROG SV"           Loads a program from the file  
PROG.SV and runs it from the  
lowest numbered statement; output 
will appear on the line printer.   
 
&_ 
T_      9.17S_A_V_E_ 
 
F_o_r_m_a_t_ 
 
SAVE filename'
 
      filename': a disc file or a device expressed as a string  
                  literal or by means of a variable. 
&_ 
T_U_s_e_ 
 
As a command or statement to write the currently loaded program, 
including the current values of all variables and parameters, in 
binary format to the disc file or the device specified by  
filename'. 
&_ \f

T_R_e_m_a_r_k_s_ 
 
1. If the program is written to a disc file, a new file named  
   filename' is created in the logical disc to which the 
   terminal is connected (see Ch. 8). If filename' already 
   exists, the program is written to this file.  
&_   
T_2. In the interests of conserving space on a SAVE device, one
   should add the statement 
    
     1 STOP
   
   to the program and RUN it before it is SAVEd. This will cause
   the core memory area which is used for variables during
   program execution to be truncated. The 1 STOP statement may
   then be deleted, before the program is SAVEd (see Ex. 2). 
&_    
T_3. A SAVEd program can be LOADed, CHAINed, or RUN (see,
   respectively, Sect. 9.10, Ch. 3, and Sect. 9.15). 
&_    
T_4. SAVEing, rather than LISTing (see Sect. 9.9), is a more
   efficient way to store large programs. The size of a program
   in binary format can be determined by means of the SIZE
   command (see Sect. 9.18). If the indicated size is less than
   the number of ASCII characters in the program, which may be
   ascertained by looking at the program, then SAVE should be
   used rather than LIST. 
&_        
T_E_x_a_m_p_l_e_ _1_                           C_o_m_m_e_n_t_ _(_1_)_  
 
* SAVE "PTP"                        SAVE commands. 
* SAVE "PROG1SV"
    
200 SAVE "PTP"                      SAVE statements. 
200 SAVE "PROG1SV" 
&_    \f

T_E_x_a_m_p_l_e_ _2_                           Co_m_m_e_n_t_ _(_2_)_  
       
* LIST                              Shows how one can save space
0010 DIM A(100)                    when SAVEing a program. 
0020 FOR I=1 TO 100 
0030   LET A(I)=I 
0040 NEXT I 
 
* SIZE 
00422 HALFWORDS USED                  Size before execution. 
04578 HALFWORDS LEFT
 
* RUN 
 
END 
AT 0040 
* SIZE 
00836 HALFWORDS USED                  Size after execution. 
04164 HALFWORDS LEFT
 
* 1 STOP                             1 STOP statement inserted.
* RUN 
   
        STOP 
AT 0001 
* SIZE 
00428 HALFWORDS USED                  Size after second  
04572 HALFWORDS LEFT                execution. 
 
* 1                                   1 STOP statement deleted. 
* SIZE 
00422 HALFWORDS USED
04578 HALFWORDS LEFT
 
* SAVE "PTP"                          Program SAVEd on paper    
*                                   tape. 
 
&_ 
T_      9.18S_C_R_A_T_C_H_ 
 
Used only in batch mode. For description, see Appendix B. 
 
&_ \f

T_      9.19S_I_Z_E_ 
 
F_o_r_m_a_t_ 
 
SIZE 
&_ 
T_U_s_e_ 
 
As a command to return the number of bytes used by the current  
program and the numbers of bytes left.
&_ 
T_R_e_m_a_r_k_s_ 
 
Even though no program is present, the SIZE command will  
indicate that approximately 350 bytes have been used, as these 
are always required to administer the execution of running  
programs. 
&_ 
T_E_x_a_m_p_l_e_ 
 
* SIZE 
  00836 HALFWORDS USED 
04164 HALFWORDS LEFT 
&_ 
T_      9.20T_I_M_E_ 
 
Used only in batch mode. For description, see Appendix B. 
 
&_ \f

                    
           \f

 
                    
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
                           RC Computer Equipment 
                           Installation Planning 
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
                                                         2. edition 
          RC COMPUTER                                    February 1981 
          Installation Department                        RCSL 42-i1621 
           \f

                   TECHNICAL ADVISER: Jørgen Rosendahl 
           
          TEXT EDITOR:       Henning Christensen 
           
           
          KEYWORDS:          RC Computer Equipment, hardware, installation
                             planning. 
           
           
          ABSTRACT:          It is the concern of this publication to pro-
                             vide information on the installation planning
                             of RC computer equipment. Only hardware in-
                             stallation is covered. General information is
                             given with respect to computer room, environ-
                             ment, power supply, precautional arrangements,
                             and the connection patterns of the equipment. 
                              \f

                                                 i 
           
          F_O_R_E_W_O_R_D_ 
           
          First edition: RCSL No 42-i1438 
           
           
          Second edition: RCSL No 42-i1621 
          In general the second edition is a reprint of the first edition.
          However, the tolerance of the voltage unfortunately was omitted
          in the first edition - this has now been corrected. Further the
          Appendix A: REFERENCES has been up-dated.  
           
          The changes are indicated by correction lines in the left margin.
           
          Jørgen Rosendahl and Henning Christensen 
          A/S REGNECENTRALEN af 1979, February 1981 
           \f

                              ii 
           \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.  INSTALLATION PLANNING .................................   2 
           
          3.  COMPUTER ROOM .........................................   3 
              3.1  Size .............................................   3 
              3.2  Location .........................................   3 
              3.3  Walls, Ceiling, and Doors ........................   4 
              3.4  Flooring .........................................   4 
                   3.4.1  Floor Covering ............................   4 
                   3.4.2  Raised Floor ..............................   5 
           
          4.  ENVIRONMENTAL .........................................   6 
              4.1  Temperature and Air Humidity .....................   6 
              4.2  Sunlight and Lighting ............................   7 
              4.3  Air Purity .......................................   7 
              4.4  Vibration ........................................   8 
              4.5  Static Electricity ...............................   8 
              4.6  Cleaning .........................................   9 
           
          5.  POWER SUPPLY PLANNING .................................  11 
              5.1  Power Supply .....................................  11 
              5.2  Equipment Ground .................................  12 
           
          6.  PRECAUTIONAL PLANNINGS ................................  13 
           
          7.  CONNECTION OF EQUIPMENT ...............................  15 
              7.1  Connection of Peripherals ........................  15 
              7.2  Connection of Terminals ..........................  15 
                   7.2.1  Terminals Directly Connected ..............  16 
                          7.2.1.1  Data Connection ..................  16 
                          7.2.1.2  Power Connection .................  16 
                   7.2.2  Terminals Connected by Modems .............  17 
                          7.2.2.1  Data Connection ..................  17 
                          7.2.2.2  Power Connection .................  17 \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_ 
               
                   7.2.3  Terminals Connected by Current-Loop 
                          Couplers ..................................  17 
                          7.2.3.1  Data Connection ..................  18 
                          7.2.3.2  Power Connection .................  18 
                   7.2.4  Terminals Connected by Terminal Concentra- 
                          tors ......................................  18 
                          7.2.4.1  Data Connection ..................  18 
                          7.2.4.2  Power Connection .................  19 
           
          A_P_P_E_N_D_I_X_: 
           
          A.  REFERENCE LIST ........................................  21 
           
           \f

F_       1_._ _ _ _ _ _ _ _ _I_N_T_R_O_D_U_C_T_I_O_N_ 1.
           
          The installation of computer systems requires proper planning and
          execution of many tasks. In addition to the general organisation
          planning, the programming, and the education involved, also the
          job of preparing the computer site and environment is of utmost
          importance. A well planned installation saves money and is of
          long term benefit because of the improved efficiency in oper-
          ation. 
           
          It may often be felt that a smaller system should require fewer
          preperations in arranging the installation - and rightly so, be-
          cause of the overall impact on the environment being comparati-
          vely smaller. Yet, it should not be forgotten that - say - a disc
          storage device, whether applied in smaller or larger systems,
          will forward exactly the same requirements. 
           
          This publication contains the general information on planning an
          installation of RC computer equipment. It is augmented with a
          further publication which contains the installation specifica-
          tions. The two publications are intended as a guide in planning a
          successful and efficient installation of RC computer equipment. 
           
          Throughout all phases of planning and installation of the equip-
          ment, the RC Installation Department will be available to advise
          you, based on a considerable experience in this specialized
          field. 
           
           \f

F_       2_._ _ _ _ _ _ _ _ _I_N_S_T_A_L_L_A_T_I_O_N_ _P_L_A_N_N_I_N_G_ 2.
           
          Well in advance before delivery of the computer system, the cus-
          tomer assisted by an RC installation engineer should find the
          most appropriate solution to the subjects discussed in this pub-
          lication.  
           
          It is the customer>s responsibility: 
           
               - to provide environmental conditions as specified in sec-
                 tion 4. 
                  
               - to provide power supply, wall outlets, and regulation
                 equipment (if necessary) in accordance with the tolerances
                 of voltage and frequency as specified in section 5. 
                  
               - to provide a safe and satisfactory access route for the
                 equipment, from the area where the truck is to be unloaded
                 to the computer room. 
                  
               - to provide sufficient space and facilities for the instal-
                 lation and the subsequent maintenance of the computer sys-
                 tem by RC engineers. 
                  
          The computer site and all facilities must be completed in due
          course for approval by an RC installation engineer so that pos-
          sible mistakes can be corrected before delivery of the equip-
          ment. 
           
          The customer is asked to supply RC personnel with keys and ident-
          ity cards if needed. 
           
           \f

F_       3_._ _ _ _ _ _ _ _ _C_O_M_P_U_T_E_R_ _R_O_O_M_ 3.
           
          When choosing an area to locate the computer system, attention
          should be paid to the aspects mentioned below. 
           
           
3_._1_ _ _ _ _ _ _ _S_i_z_e_ 3.1
           
          The size of the room should be as large as to allow for a ra-
          tional arrangement of the equipment. Generally a minimum of 1
          meter in front and 0.6 meter at the rear of the units will be
          required. In addition some units require 0.6 meter at both sides.
          The clearance is required in order that the operator as well as
          the service engineer can do their work, yet it is also essential
          in order to keep an ample air flow around the equipment. These
          areas therefore have to be kept clear at all times. The operator
          and service areas specifically required are listed in the aug-
          menting publication 1. 
           
          Furthermore there should be enough space for proper storage of
          data media and accessories in the same environment as the com-
          puter. 
           
          In case the system is supposed to expand according to schedule or
          depending on increased need, these facts should be taken into
          consideration when planning room facilities. 
           
           
    3_._2_ _ _ _ _ _ _ _L_o_c_a_t_i_o_n_ 3.2
           
          The room should be located in a building of solid structure (due
          to fire risk and damage by water). The building further should be
          fairly well insulated (to lower the environmental influence by
          sun heat or cold weather). 
           
          All doors, from the place of unloading to the computer room, have
          to be wide enough for the units to pass through. In case of
          stairs these have to be of a construction which allow heavy units
          to be handled. 
           
           \f

         3_._3_ _ _ _ _ _ _ _W_a_l_l_s_,_ _C_e_i_l_i_n_g_,_ _a_n_d_ _D_o_o_r_s_ 3.3
           
          The walls and the ceiling of the computer room should be covered
          with noise absorbing dustless material in order to reduce the
          noise level in the computer room as well as to avoid the noise
          from being transmitted to adjoining rooms. 
           
          Panels of glass should be provided in the partitions so that the
          system can be viewed without entering the computer room. 
           
          The doors of the computer room have to be wide enough for the
          different units of the computer system to pass through. It is
          recommended that doors be fitted with self-closing devices and
          clear glass panels at eye level. 
           
           
    3_._4_ _ _ _ _ _ _ _F_l_o_o_r_i_n_g_ 3.4
           
3_._4_._1_ _ _ _ _ _F_l_o_o_r_ _C_o_v_e_r_i_n_g_ 3.4.1
           
          When selecting a suitable floor covering the following character-
          istics need to be considered. 
           
          Wood, Linoleum                 - easy to keep clean, and harmful
                                           electrostatic discharges unlike-
                                           ly to occur. 
                                            
          Vinyl                          - easy to keep clean, and with
                                           antistatic treatment electro-
                                           static discharges can be  kept
                                           below harmful levels. 
                                            
          Antistatic carpets             - difficult to keep reasonable
                                           free from dust, but, if correct-
                                           ly laid the electrostatic dis-
                                           charges can be kept below harm-
                                           ful levels (between the carpet
                                           surface and the building  floor
                                                  a maximum resistance of 2 x
M_M_m_                                             10 
P_P_p_                                           10   ohms is allowed). 
                                                  \f

                   Synthetic and wool             - should be avoided due to heavy
          carpets                          generation of static electric-
                                           ity. 
                                            
                                            
     3_._4_._2_ _ _ _ _ _R_a_i_s_e_d_ _F_l_o_o_r_ 3.4.2
           
          The installation of a raised floor has several advantages. 
           
               - Protects the interconnecting cables. 
               - Future layout changes are easily accomplished. 
               - Improves the personnel safety factor. 
               - Permits the space between the two floors to be used for
                 air supply to the equipment. 
           
          Raised floors can be obtained from specialist firms. 
           
          If it is expedient to install a raised floor, the following
          points have to be taken into consideration: 
           
               - Height to the ceiling. 
               - The height under the raised floor should be 15 cm minimum.
               - Level difference in proportion to adjoining rooms. 
               - If the floor of the room is made of plain concrete or an-
                 other dust producing material, the surface must be paint-
                 ed. 
               - Slots in the raised floor for cable exits and possibly for
                 ventilation must be arranged according to the drawings in
                 the augmenting publication 1. 
                  \f

F_       4_._ _ _ _ _ _ _ _ _E_N_V_I_R_O_N_M_E_N_T_A_L_ 4.
           
4_._1_ _ _ _ _ _ _ _T_e_m_p_e_r_a_t_u_r_e_ _a_n_d_ _A_i_r_ _H_u_m_i_d_i_t_y_ 4.1
           
          A computer system will generate heat and at the same time it will
          require that the ambient temperature and the air humidity are
          kept within certain limits. In order to obtain the required con-
          ditions it will often be necessary to install an air conditioning
          system. 
           
          The RC computer systems are designed to operate at 21C and 50%
          relative humidity. This design point provides for optimum system
          performances. 
           
          The input air to the system under all conditions of operation has
          to meet the specifications of the individual devices. The spec-
          ifications given for each device constitute the maximum range of
          operating conditions and should not be considered as the design
          conditions. The specifications for the system environment as a
          whole, of course, is determined by the unit having the most
          restrictive limits. The temperature gradient should at no time
          exceed 6C per hour. All specifications are contained in the
          augmenting publication 1. 
            
          Condensation is not permitted on system components, i.e. other
          parts than the system components have to be the coldest points in
          the environment. 
           
          The specified environment has to be established in the system
          area before system power is switched on. 
           
          Monitoring of the operating conditions with temperature and hu-
          midity recording instruments (a Termohygrograph) is recommended. 
           
           \f

4_._2_ _ _ _ _ _ _ _S_u_n_l_i_g_h_t_ _a_n_d_ _L_i_g_h_t_i_n_g_ 4.2
           
          System parts should not be exposed directly to sunlight. If the
          room cannot meet this requirement, then windows have to be sup-
          plied with reflective glass, film, or other sun screening facil-
          ities. 
           
                   Lighting fixtures should preferably be of the dual fluorescent
          tube type. The fixtures should be evenly distributed over the
          whole of the computer area. It is important that sufficient light
          penetrates the area behind the devices so as to allow the en-
          gineers to perform maintenance. On an average the light intensity
          at desk top level should not be less than 400 lux. 
           
          Visual display terminals, however, may require places of less
          light intensity. 
           
           
     4_._3_ _ _ _ _ _ _ _A_i_r_ _P_u_r_i_t_y_ 4.3
           
          In order to achieve a high reliability of a computer installation
          comprising disc drives, it is mandatory to keep the atmosphere in
          the computer room free from dust. Incoming and recirculated air
          must be filtered in accordance with Federal Standard 209a class
          100 000. The standard states, that one liter of air in the room
          is allowed to contain up to 3500 dust particles of a size 0.5
          micron and larger, or 25 particles of a size 5.0 microns and
          larger. 
           
          Dust sources, such as line printers, must be placed either close
          to the air intake of the ventilation system, or even better in a
          separate adjacent room. 
           
          Some industrial environments where the atmosphere is contaminated
          with particles, liquids, or gases can cause corrosion of copper
          and other metals used in computer systems. Extended corrosive
          growth in any computer system can produce electrical short cir-
          cuits or contact failures which will result in system malfunc-
          tion. A satisfactory environment is obtained when complying to
          the requirements of U.S. Occupational Safety & Health Standards
          Administration (OSHA), Subpart G. 
           
           \f

         4_._4_ _ _ _ _ _ _ _V_i_b_r_a_t_i_o_n_ 4.4
           
          Computer systems can be affected by vibration, especially
          installations comprising disc drives. 
           
          In case vibration is suspected to be a potential problem, one
          should place a shallow disc of water on the floor. If ripples are
          evident, then corrective actions are mandatory. 
           
          As a guide the following limits can be considered tolerable for
          computer systems: 
           
               - For frequencies between 5 Hz and 10 Hz a maximum amplitude
                 of 0.1 mm. 
               - For frequencies between 10 Hz and 50 Hz a maximum ampli-
                 tude of 0.04 mm. 
               - For frequencies of 50 Hz and above a maximum acceleration
                 of 0.2 g. 
           
           
4_._5_ _ _ _ _ _ _ _S_t_a_t_i_c_ _E_l_e_c_t_r_i_c_i_t_y_ 4.5
           
          Static electricity is an accumulation of electric charges on
          either insulating or conducting bodies. Static charges arise from
          friction, in computer areas mostly from friction between the
          floor and the shoes of the personnel, or plastic wheels of a
          chair. 
            
          The amount of static electricity generated primarily depends on
          the material of the shoes, the type of flooring, and the humidity
          conditions. The average static voltage generated is typically
          5000 to 12000 volts. 
           
          Due to the unavoidable contact between personnel and machines, it
          is practically impossible to keep away all static discharges from
          the computer equipment. 
           \f

                   The remedies to reduce this annoying phenomenon are: 
           
               - Selection of a suitable flooring (see section 3.4). 
                  
               - Maintaining a relative humidity higher than 40%. 
                  
               - Treatment of the floor with an antistatic spray (which is
                 available in most grocery stores). When applying the spray
                 the equipment must be switched off. 
                  
               - Placing an antistatic mat at the entrance. 
                  
                  
4_._6_ _ _ _ _ _ _ _C_l_e_a_n_i_n_g_ 4.6
           
          The computer area should be cleaned on a daily basis to remove
          dust and dirt and to help to prevent premature blockage of air
          conditioning and equipment filters. 
           
          Cleaning should be performed with a slightly moist cloth. 
           
          In case a vacuum-cleaner is applied, one should observe that an
          ordinary vacuum-cleaner may severly polute the air, when
          referring to the computer environment. In fact the filter of an
          ordinary vacuum-cleaner is far less effective than that for
          instance of disc equipment. Especially if the vacuum-cleaner is
          used outside the computer room, an extra amount of dust particles
          is easily introduced, when subsequently using the vacuum-cleaner
          in the computer room. As a result the equipment filters will be
          more heavily loaded than would otherwise be the case. Therefore,
          if using a vacuum-cleaner:  
           
               - use it in the computer room only, 
               - have it equipped with a special filter, equal in quality
                 to the equipment filters. 
           \f

          In order to keep the computer room clean and tidy and to minimize
          equipment malfunction the following rules should apply: 
           
               1) No smoking in the computer area. 
                   
               2) No food or beverage to be allowed in the computer area. 
                   
               3) All manuals, books, papers, discs, tapes, etc. not in use
                  should be returned to their correct locations and not
                  left lying in the work areas of the computer room. 
                   
                  In particular no objects should be placed on top of the
                  computer cabinets as they may easily obstruct the cabinet
                  ventilation. 
           
           \f

F_5_._ _ _ _ _ _ _ _ _P_O_W_E_R_ _S_U_P_P_L_Y_ _P_L_A_N_N_I_N_G_ 5.
           
          By observing the below requirements, electrical noise is usually
          reduced to a level that allows operation without problems due to
          power supply. However, the electrical power can be of such bad
          quality (transient or interrupted) that insertion of a ferroreso-
          nant transformer, or a no-break system, may be needed. The RC
          Installation Department should be consulted in such cases as well
          as in general when problems arise due to power supply. 
             
           
5_._1_ _ _ _ _ _ _ _P_o_w_e_r_ _S_u_p_p_l_y_ 5.1
           
          The power supply of the computer system must be 220/380 volts
          +_5%, three phases, neutral, and ground with a frequency of 50 Hz
          +0.5/-1 Hz. 
           
          It is essential that the power is supplied directly from the main
          switchboard of the building to a computer switchboard, which has
          to be installed in or near the computer room. T_h_e_ _p_o_w_e_r_ _s_u_p_p_l_y_
          h_a_s_ _t_o_ _b_e_ _a_ _d_e_d_i_c_a_t_e_d_ _l_i_n_e_ _o_n_l_y_ _u_s_e_d_ _b_y_ _t_h_e_ _c_o_m_p_u_t_e_r_ _e_q_u_i_p_m_e_n_t_,
          and has to be kept away of exposure by any powerful electrical
          induction. Therefore separate supply lines have to be planned for
          general-purpose outlets, air conditioning, and other equipment. 
           
          The computer system is supplied from one 3-phase power-outlet in-
          stalled within 6 meters of the central processing unit of the
          computer. All peripherals, excepting detached disc drives and
          Charaband printers, are supplied via the system power supply. The
          detached disc drives are connected in groups of three to separate
          3-phase power-outlets. Also the Charaband printers need separate
          power-outlets, but one phase only. 
           
          Further, modems and directly connected terminals m_u_s_t_ _b_e_ _s_u_p_p_l_i_e_d_
          from separate power-outlets, which have their supply from the
          computer switchboard. 
           \f

          The computer switchboard must contain fuses for each power-out-
          let. Due to heavy startup current the fuses must at least be 16
          amp. slow blow. In particular the Charaband printers need 25 amp.
          fuses. 
           
          The use of ground fault interrupter relays (GFI, FI, or HFI) is
          not possible. 
           
          In addition and separate to the computer power supply, a reason-
          able number of wall-outlets should be available for servicing and
          for other electrical appliances (220 V, 10 amp). 
           
          The power consumption of each unit is given in the augmenting
          publication 1. 
           
           
5_._2_ _ _ _ _ _ _ _E_q_u_i_p_m_e_n_t_ _G_r_o_u_n_d_    5.2
           
          The ground wire for the computer must be run from the neutral
          point of the main switchboard of the building to the power-out-
          lets in the computer area, or preferably to the frame of the
          computer itself. The ground wire must be insulated and is not
          allowed to make electrical contact with any conductive part of
          the building on its way to the computer. The cross-sectional area
          of the ground wire must be equal to or larger than that of the
          active conductors. I_t_ _i_s_ _n_o_t_ _a_l_l_o_w_e_d_ _t_o_ _u_s_e_ _t_h_e_ _e_q_u_i_p_m_e_n_t_ _g_r_o_u_n_d_
          f_o_r_ _a_n_y_ _o_t_h_e_r_ _p_u_r_p_o_s_e_. 
               
                   If connection of the ground wire to the neutral point of the main
          switchboard is not possible because of regulations by the local
          electricity supply authority or otherwise, then a ground rod has
          to be established. The resistance of the ground rod to true
          ground must be less than 2 ohms. 
           
                \f

F_       6_._ _ _ _ _ _ _ _ _P_R_E_C_A_U_T_I_O_N_A_L_ _P_L_A_N_N_I_N_G_S_ 6.
           
          During the planning of the computer installation, attention
          should be paid to the handling of emergencies. 
           
          In case of fire the computer equipment and the data carrying me-
          dia can be permanently damaged both by the fire itself, but also
          by smoke or water. 
           
          Temperatures over 65C can damage data on magnetic tapes or
          discs, while temperatures above 120C will destroy these media
          completely. 
           
          The following points should be considered, if convenient in co-
          operation with an insurance representative: 
           
               - All furnishing in the computer area should be made of non-
                 combustible material. 
                  
               - Emergency circuit breakers for the computer system and the
                 air conditioning system should be installed near the exit
                 of the computer area. 
                  
               - At least two hand-operated fire extinguishers should be
M_M_m_m_                 placed in the area. Both the CO  and in particular the
P_P_p_p_                                                2
                 Halon type are suitable. 
                  
M_M_m_m_               - CO  and Halon flooding systems can be installed in the
P_P_p_p_                   2
                        computer area and the adjacent areas, providing sufficient
                 precautions are taken to safeguard the personnel. 
                  
               - It is recommended to install a fire and smoke detection
                 system. The detectors should be located in the computer
                 area and in adjoining areas such as raised floors, false
                 ceilings, media storage areas, etc. The system installed
                 should indicate the location of the fire and sound an
                 alarm. 
                  \f

                        - For security reasons additional copies of data files
                 should be kept on entirely separate premisses, if possible
                 in a fire-proof place. 
                  \f

F_       7_._ _ _ _ _ _ _ _ _C_O_N_N_E_C_T_I_O_N_ _O_F_ _E_Q_U_I_P_M_E_N_T_ 7.
           
          Two principles in connecting equipment are applied. They will af-
          fect the installation planning in different ways. Connections of
          peripherals will mainly be a question of providing the adequate
          quality of the computer room, whereas connection of terminals
          will mainly be concerned with the line cabling involved. 
           
           
     7_._1_ _ _ _ _ _ _ _C_o_n_n_e_c_t_i_o_n_ _o_f_ _P_e_r_i_p_h_e_r_a_l_s_ 7.1
           
          Peripherals are connected to the processing unit by means of in-
          terfacing circuit-boards. The circuit-boards are accommodated in
          chassis which again are accommodated in cabinets. 
           
          Due to the flexibility in product structuring, the actual way in
          doing so differs somewhat from one device to another. The general
          issue of interest in installation planning, however, is covered
          by calculating the effects from the products which are mounted in
          chassis, and the products which are selfcontained. 
           
          The augmenting publication 1 which contains the planning spec-
          ifications provides further information in calculating the over-
          all requirements of a computer installation. 
           
           
         7_._2_ _ _ _ _ _ _ _C_o_n_n_e_c_t_i_o_n_ _o_f_ _T_e_r_m_i_n_a_l_s_ 7.2
           
          Terminal equipment can be connected in different ways as will be
          seen in the following. Besides of these connections there is also
          the console connection, which is a direct connection by means of
          a controller board and which is equal to the connections of peri-
          pheral devices. Terminal connections in general are accomplished
          by means of multiplexer equipment (where the multiplexer equip-
          ment with respect to the computer equals a peripheral device). 
           
           \f

7_._2_._1_ _ _ _ _ _T_e_r_m_i_n_a_l_s_ _D_i_r_e_c_t_l_y_ _C_o_n_n_e_c_t_e_d_ 7.2.1
           
          Terminals can be connected directly to the computer system if
          they are situated within reach of a 25 m standard cable furnished
          by RC. 
           
           
7_._2_._1_._1_ _ _ _D_a_t_a_ _C_o_n_n_e_c_t_i_o_n_ 7.2.1.1
           
          The cables can be run through walls or horizontal divisions pro-
          viding that the customer prepares the necessary holes prior to
          the installation by RC. The minimum size of the holes must be 15
          x 55 mm because of the cable connectors. 
           
          It may be preferred to establish the cable connection as a fixed
          installation. In this case the cable is terminated  by receptac-
          les on the wall within 2 meters from the computer and the termi-
          nal respectively. The maximum length of the cable in this kind of
          installation still is not allowed to exceed 25 meters. 
           
          The fixed installation must comprise 3 pairs of twisted wires ap-
          proximately # 22 AWG (3 x 2 x 0.6 mm) terminated at each end with
          an empty wall switchbox type LK-NES 102 H 1030 (if locally not
          available, please contact RC). The customer is responsible for
          the installation and labelling of the fixed installation. Recep-
          tacles and interconnection cables to the computer and the termi-
          nals are supplied and installed by RC. If a number of receptacles
          have to be installed at the computer location, a wallbox with 8
          receptacles can be delivered by RC. 
           
           
7_._2_._1_._2_ _ _ _P_o_w_e_r_ _C_o_n_n_e_c_t_i_o_n_ 7.2.1.2
           
          A power-outlet (phase, neutral, and ground) for the terminal has
          to be available within reach of the 1.5 meter power cable of the
          terminal. The power-outlets MUST be supplied from the computer
          switchboard. 
           
           \f

7_._2_._2_ _ _ _ _ _T_e_r_m_i_n_a_l_s_ _C_o_n_n_e_c_t_e_d_ _b_y_ _M_o_d_e_m_s_ 7.2.2
           
          Distances between terminal and computer beyond 25 meters can be
          supported by modem connections using a telephone line as line
          cable. 
           
         7_._2_._2_._1_ _ _ _D_a_t_a_ _C_o_n_n_e_c_t_i_o_n_ 7.2.2.1
           
          The interconnection cables are supplied by RC; from modem to com-
          puter a 12 m standard cable is supplied and from modem to ter-
          minal a 5 m, 12 m, or 25 m cable is supplied according to re-
          quest. 
           
           
7_._2_._2_._2_ _ _ _P_o_w_e_r_ _C_o_n_n_e_c_t_i_o_n_ 7.2.2.2
           
          For power supply to the modems the Danish Post and Telegraph
          Service requires a power-outlet comprising pilot-lamp, phase,
          neutral, and ground. At computer site the power-outlet, which
          services the modem, MUST be supplied from the computer switch-
          board. At terminal site the terminal and the modem can be sup-
          plied from any switchboard available. A power-outlet (phase,
          neutral, and ground) has to be available within reach of the 1.5
          meter power cables of the equipment.  
           
           
     7_._2_._3_ _ _ _ _ _T_e_r_m_i_n_a_l_s_ _C_o_n_n_e_c_t_e_d_ _b_y_ _C_u_r_r_e_n_t_-_L_o_o_p_ _C_o_u_p_l_e_r_s_ 7.2.3
           
          Distances between terminal and computer in the range 25 m to 10
          km can be supported by current-loop couplers. The current-loop
          couplers facilitates similar connections as the modems do, only
          they operate on private lines, opposite the modems which operate
          on telephone lines. 
           
           \f

7_._2_._3_._1_ _ _ _D_a_t_a_ _C_o_n_n_e_c_t_i_o_n_ 7.2.3.1
           
          The line cable must comprise 2 pairs of twisted wires approxima-
          tely # 22 AWG (2 x 2 x 0.6 mm) terminated at each end with an
          empty wall-switchbox type LK-NES 102 H 1030 (if locally not
          available, please contact RC). The customer is responsible for
          the installation and labelling of the line cable and the wall
          switchboxes. Receptacles and interconnection cables between com-
          puter and current-loop coupler, and terminal and current-loop
          coupler respectively, are supplied and installed by RC. If a num-
          ber of receptacles have to be installed at the computer location,
          a wallbox with 8 receptacles can be delivered by RC. 
           
           
7_._2_._3_._2_ _ _ _P_o_w_e_r_ _C_o_n_n_e_c_t_i_o_n_ 7.2.3.2
           
          A power-outlet (phase, neutral, and ground) for the terminal and
          the current-loop coupler has to be available within reach of the
          1.5 meter power cables of the equipment. The power-outlets can be
          supplied from any switchboard available. The current-loop coupler
          at the computer site is supplied with power via the computer sys-
          tem. 
           
           
     7_._2_._4_ _ _ _ _ _T_e_r_m_i_n_a_l_s_ _C_o_n_n_e_c_t_e_d_ _b_y_ _T_e_r_m_i_n_a_l_ _C_o_n_c_e_n_t_r_a_t_o_r_s_ 7.2.4
           
          A number of terminals can utilize one line cable by means of a
          terminal concentrator. The terminal concentrator functions as a
          terminal seen from the computer and it functions as a computer
          seen from the terminals. 
           
           
7_._2_._4_._1_ _ _ _D_a_t_a_ _C_o_n_n_e_c_t_i_o_n_ 7.2.4.1
           
          The data connections available with a terminal concentrator are
          equal to those available with terminals in general (i.e. those
          mentioned earlier in this section). 
           
           \f

7_._2_._4_._2_ _ _ _P_o_w_e_r_ _C_o_n_n_e_c_t_i_o_n_ 7.2.4.2
           
          A power-outlet (phase, neutral, and ground) has to be available
          within the reach of the 1.5 m power cable of the terminal concen-
          trator. The concentrator can be supplied from any switchboard
          available. If current-loop couplers are applied, these cannot be
          supplied from the concentrator. Hence, a number of additional
          power-outlets are required equal to the one of the concentrator.
          These outlets as well as possible outlets for directly connected
          terminals have to be supplied from the same switchboard as the
          concentrator. 
           
           \f

F_                  
           \f

F_       A_._ _ _ _ _ _ _ _ _R_E_F_E_R_E_N_C_E_ _L_I_S_T_                                       A.
           
          1 RCSL No 42-i 1442, January 1981 (2. edition)
              J. Michelsen/H. Christensen 
               
              R_C_ _C_o_m_p_u_t_e_r_ _E_q_u_i_p_m_e_n_t_,_ _I_n_s_t_a_l_l_a_t_i_o_n_ _S_p_e_c_i_f_i_c_a_t_i_o_n_s_ 
               
              It is the concern of this publication to provide information
              on the installation planning of RC computer equipment. Only
              hardware is considered. Installation specifications are given
              with respect to mounting, cabling distance, dimensions,
              environmental and electrical aspects. Further a number of
              area diagrams for layout planning. 
               
               \f

 
           \f

«eof»