users to type in commands in "direct mode", which were performed immediately, or to prefix them with a line number, in which case they were added to the program if they were unique, or overrode existing code if the same number had previously been used. The method of operation is similar to BASIC's "immediate mode" vs. "program mode". It contrasts with JOSS, in which all commands, both program and direct, were saved and loaded as part of the user's workspace. This allowed JOSS to have commands without line numbers, which they used for definitions and other tasks. FOCAL lacked this capability, so those instructions that needed to be loaded and saved became options on other program-mode commands like . Program statements Every line in a FOCAL program must start with a line number. As with JOSS, line numbers are fixed-point numbers consisting of two two-digit integers separated by a period. In FOCAL-8, valid line numbers range from 1.01 through 31.99. When printed out, using , the FOCAL equivalent to BASIC's , leading zeros will be added; 1.10 will be printed as . This makes all lines numbers five digits long when output so that all line numbers align. Statements referring to those lines do not need the leading zeros, for example, . The number on the left of the period is known as the "group number". Groups provide some level of code organization that is lacking in languages like Fortran or BASIC. The primary use of these was to use a group as a subroutine which can be called with , for example, will jump to the subroutine written in group 5. The editor also used these during edit-time, for example, one could to produce a listing of the code in group 2, or to delete all of the lines in group 4. Every line must start with a command keyword following the line number. There is no concept of a "default command" as is the case in BASIC with its optional statement. Multiple statements can be placed on a single line, separated by semicolons. Usually, the behavior is no different than if the statements had been on separate lines, except in the case of FOR loops. Commands ASK The command (abbreviation A) will take a list of strings and variables, echo the strings and store the user input in variables. Equivalent to BASIC's . 01.01 ASK "NAME", NAME 01.02