glenda.party
term% ls -F
term% pwd
$home/manuals/unix_v7/1/bas
term% cat index.txt
BAS(1)                      General Commands Manual                     BAS(1)

NAME
       bas - basic

SYNOPSIS
       bas [ file ]

DESCRIPTION
       Bas is a dialect of Basic.  If a file argument is provided, the file is
       used  for  input before the terminal is read.  Bas accepts lines of the
       form:

          statement
          integer statement

       Integer numbered statements (known as internal statements)  are  stored
       for  later execution.  They are stored in sorted ascending order.  Non-
       numbered statements are immediately executed.  The result of an immedi‐
       ate expression statement (that does not have ‘=' as its highest  opera‐
       tor) is printed.  Interrupts suspend computation.

       Statements have the following syntax:

       expression
            The  expression  is  executed  for its side effects (assignment or
            function call) or for printing as described above.

       comment
            This statement is ignored.  It is used to interject commentary  in
            a program.

       done
            Return to system level.

       dump
            The name and current value of every variable is printed.

       edit
            The UNIX editor, ed, is invoked with the file argument.  After the
            editor exits, this file is recompiled.

       for name = expression expression statement


       for name = expression expression


       next
            The  for  statement repetitively executes a statement (first form)
            or a group of statements (second form) under control  of  a  named
            variable.   The  variable  takes on the value of the first expres‐
            sion, then is incremented by one on each loop, not to  exceed  the
            value of the second expression.

       goto expression
            The expression is evaluated, truncated to an integer and execution
            goes  to the corresponding integer numbered statment.  If executed
            from immediate mode, the internal statements are compiled first.

       if expression statement


       if expression


       [ else


       fi
            The statement (first form) or group of statements (second form) is
            executed if the expression evaluates to non-zero.  In  the  second
            form, an optional else allows for a group of statements to be exe‐
            cuted when the first group is not.

       list [expression [expression]]
            is  used to print out the stored internal statements.  If no argu‐
            ments are given, all internal statements are printed.  If one  ar‐
            gument  is  given, only that internal statement is listed.  If two
            arguments are given, all internal statements  inclusively  between
            the arguments are printed.

       print list
            The  list of expressions and strings are concatenated and printed.
            (A string is delimited by " characters.)

       prompt list
            Prompt is the same as print except that no  newline  character  is
            printed.

       return [expression]
            The  expression  is evaluated and the result is passed back as the
            value of a function call.  If no expression is given, zero is  re‐
            turned.

       run
            The internal statements are compiled.  The symbol table is re-ini‐
            tialized.   The  random  number  generator  is  reset.  Control is
            passed to the lowest numbered internal statement.

       save [expression [expression]]
            Save is like list except that the output is written  on  the  file
            argument.  If no argument is given on the command, b.out is used.

       Expressions have the following syntax:

       name
            A  name  is  used  to specify a variable.  Names are composed of a
            letter followed by letters and digits.  The first four  characters
            of a name are significant.

       number
            A number is used to represent a constant value.  A number is writ‐
            ten  in  Fortran  style,  and contains digits, an optional decimal
            point, and possibly a scale factor consisting of an e followed  by
            a possibly signed exponent.

       ( expression )
            Parentheses are used to alter normal order of evaluation.

       _ expression
            The result is the negation of the expression.

       expression operator expression
            Common functions of two arguments are abbreviated by the two argu‐
            ments  separated by an operator denoting the function.  A complete
            list of operators is given below.

       expression ( [expression [ , expression] ... ] )
            Functions of an arbitrary number of arguments can be called by  an
            expression  followed  by the arguments in parentheses separated by
            commas.  The expression evaluates to the line number of the  entry
            of  the function in the internally stored statements.  This causes
            the internal statements to be compiled.  If the expression  evalu‐
            ates  negative, a builtin function is called.  The list of builtin
            functions appears below.

       name [ expression [ , expression ] ...  ]
            Each expression is truncated to an integer and used as a specifier
            for the name.  The result is syntactically identical  to  a  name.
            a[1,2]  is the same as a[1][2].  The truncated expressions are re‐
            stricted to values between 0 and 32767.

       The following is the list of operators:

       =      = is the assignment operator.  The left operand must be  a  name
              or  an array element.  The result is the right operand.  Assign‐
              ment binds right to left,

       &  |   & (logical and) has result zero if either of its  arguments  are
              zero.   It has result one if both its arguments are non-zero.  |
              (logical or) has result zero if both of its arguments are  zero.
              It has result one if either of its arguments are non-zero.

       <  <=  >  >=  ==  <>
              The  relational operators (< less than, <= less than or equal, >
              greater than, >= greater than or equal,  ==  equal  to,  <>  not
              equal to) return one if their arguments are in the specified re‐
              lation.   They  return  zero otherwise.  Relational operators at
              the same level extend as follows: a>b>c is the same as a>b&b>c.

       + -    Add and subtract.

       * /    Multiply and divide.

       ^      Exponentiation.

       The following is a list of builtin functions:

       arg(i) is the value of the i -th actual parameter on the current  level
              of function call.

       exp(x) is the exponential function of x.

       log(x) is the natural logarithm of x.

       sqr(x) is the square root of x.

       sin(x) is the sine of x (radians).

       cos(x) is the cosine of x (radians).

       atn(x) is the arctangent of x.  Its value is between -π/2 and π/2.

       rnd( ) is a uniformly distributed random number between zero and one.

       expr( )
              is  the only form of program input.  A line is read from the in‐
              put and evaluated as an expression.  The resultant value is  re‐
              turned.

       abs(x) is the absolute value of x.

       int(x) returns x truncated (towards 0) to an integer.

FILES
       /tmp/btm? temporary
       b.out          save file
       /bin/ed   for edit

DIAGNOSTICS
       Syntax  errors  cause the incorrect line to be typed with an underscore
       where the parse failed.  All other diagnostics are self explanatory.

BUGS
       Has been known to give core images.
       Catches interrupts even when they are turned off.

                                                                        BAS(1)