Southampton BASIC System (SOBS) was a dialect of the BASIC programming language developed for and used on ICT 1900 series computers in the late 1960s and early 1970s; it was implemented as an incremental BASIC interpreter under the MINIMOP operating system at the University of Southampton and also ran under MAXIMOP.
It was operated from a Teletype terminal, though CRT terminals could also be used.
In common with many early implementations of BASIC, SOBS needed lines to have line numbers, both to allow a user to add new lines to the program in the desired place and also as targets for <code>GOTO</code> and <code>GOSUB</code> statements. A <code>RENUMBER</code> facility was available to allow for sections of the code to be renumbered, by default in increments of 10, to allow more space in the middle of a program.
Other than line numbers, all numeric values were represented internally as floating point.
The language had relatively few statements by comparison with modern programming languages:
Note in particular the lack of a <code>WHILE</code>-like statement; <code>FOR</code> was the only looping construct available to programmers.
Variable names for numeric values were either a single letter, or a single letter followed by a single numeric digit, thus allowing for 286 discreet variables in total. Strings were supported; variable names for them had the same restriction but were followed by a pound (<code>ã</code>) symbol.
A limited number of numeric functions were provided, all of which took one numeric parameter:
Support for strings was more limited, with only one function, <code>LEN</code>, which returned the length of the string parameter. Sub-strings were supported with square brackets, so <code>Aã[2,3]</code> referred to the sub-string of the string <code>Aã</code> from the 2nd character to the 3rd character inclusive, so
would print <code>OO</code>
This syntax was also supported on the left-hand side of an assignment, so
would print <code>FBARO</code>
Support for handling arrays of data was relatively strong, with <code>MAT</code> statements able to read an entire array from <code>DATA</code> statements, and perform useful matrix operations such as matrix addition, matrix subtraction, matrix multiplication, and finding the inverse matrix for a square matrix.
Example:
The output would be 2 2 1 1 -1 0 4 -3 -2
SOBS had primitive debugging capabilities, limited mostly to the <code>TRACE</code> statement. <code>TRACE ON</code> would cause the interpreter to print each line number as it was executed.