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)