FOCAL-69 was the landmark version of the FOCAL programming language, more widely publicized than the original version of the language created in 1968. FOCAL-69, created by Richard Merrill is important because:
Variable names may start with any letter except F (F is reserved for functions) and may contain any sequence of letters and numbers. However, only the first two characters are significant. For instance, the following code sample from FOCAL: A New Conversational Language[1] refers to the same variable as DESTINATION and then DES:
Any variable may be treated as an array, taking subscripts from -2048 through 2047.[2]
FOCAL-69 contained only five mathematical operators[3]:
FOCAL-69 was unusual in that mathematical expressions could use (), [] and <> interchangeably in matched pairs to establish precedence.
The language did not support any relative operators (e.g., greater than, .GT., >, etc.).
The language contained the following built-in functions:
Every line in a FOCAL-69 program must start with a line number. As with JOSS, and unlike BASIC, line numbers are real numbers. In FOCAL-69, integers are not allowed. Line numbers may range from 1.01 through 31.99. The whole number is referred to as a "group number", the group number (from 1 to 31) is used by the DO command. The editor also allows a programmer to print out all the statements in a group (e.g., WRITE 2) or delete a group (e.g., ERASE 2).
Multiple statements can be placed on a single line. Usually behavior is no different than if the statements had been on separate lines, except in the case of FOR loops.
The ASK command (abbreviation A) will take a list of strings and variables, echo the strings and store the user input in variables.
If the user doesn't enter a number but enters text, the system will convert the initial character to a unique number.
The COMMENT command (abbreviation C) creates a remark.
The DO command (abbreviation D) branches execution to a subroutine; the subroutine is referenced either by group number or line number. Execution is resumed at the next statement once a RETURN is encountered.
The FOR command (abbreviation F) provides for a loop. When three arguments are specified, the first is the initial value of the loop variable; the second is the increment (assumed to be 1, if omitted), and the third value is the terminating value for the loop.