Schema 2

January 5, 2014 | By

Schema 2 is the big brother to the spreadsheet found in Acorn’s Advance integrated package. It provides a user interface that complies with the standards set by Acorn Advance. The resulting package is much faster, more economical on memory and easier to use. It is the result of extensive discussions with many users of all spreadsheets on the Acorn machines. Features include:

Multiple sheets up to 30,000 by 30,000 cells
A large and powerful set of 78 standard functions including Matrix operations
A flexible macro language closely modelled on BBC BASIC
Functions can be added to menu via Macros
Upward compatibility with Advance from Acorn
Compatibility with Schema, Advance, Lotus 123 & SID files
An extendable system of graphics include pie charts, histograms, pictograms,linear bar charts, 3D graphs, scatter graphs etc

A Schema screen shot

A separate but integrated macro compiler, leading to further economies of space and speed of loading
Easy data transfer through a clipboard with all other applications which conform to the Acorn Advance standard
A configurable interface which allows you to link important operations directly to icons on an icon ribbon
A manual with a large tutorial section.
Definition of ‘BIG’ cells capable of holding multi line text and graphs
Graphs can be embedded in cells and linked to ‘live’ data if required
Cells can hold imported graphics
Compatible with Virtualise – our virtual memory system

Version 1.06 now available

Version 1.06 has now been released. It has the following changes from previous versions.

There is a new function CHANGENAMEFULL. This acts like CHANGENAME except that it also changes the leafname of the file.

There is a new function FINDFROM which is like FIND, but takes an extra parameter specifying the start position for the search. This is like INSTR( in BASIC.

The rarely used replicate facility used to have a limit of 20 rows/columns This is now controllable via a message tag ‘maxreps’.

There is a new function GENERATEERROR for use in a macro. This takes one parameter which is the number of the error you wish to generate. The error numbers are defined in the messages file.

Related to the above is a new feature in WorkSpaces. A new block type exists starting with LM. This consists of a filename which is a additional messages file. The syntax is


The usual use for this is


to allow a set of extra errors to be provided with a workspace.

Two new CELL attributes added. CELLCONTENTSHEIGHT and CELLCONTENTSWIDTH report the height and width of the contents of a cell.

It is now possible to get hex output in a format using the %x string.

If you try to load a sheet with the same name as an existing sheet, you now get the chance to allow it to overwrite the old one.

There is a new attribute to the CELL function.


will return

1 if the cell contains an integer

2 if the cell contains a real

3 if the cell contains a string

5 if the cell is empty

8 if the cell contains an expression.

The main purpose of this is to distinguish between a cell which contains an expression and one which contains a literal number.

There are new trace functions available. The main utilities menu has two new option ‘Start Trace’ and ‘End Trace’. When tracing is in operation, debug info is sent to the file <Schema2$dir>.log.

You can send your own info to the file using the TRACE(string) command.

There is a new version of the PUTBLOCK command called PUTBLOCKX This has exactly the same syntax as PUTBLOCK, but evaluates at level 0 instead of level 1. THIS CAN BE DANGEROUS AND CAN LEAD TO INFINITE LOOPS, but can be useful in some circumstances.

There are two new sheet attributes called SheetHeight and SheetWidth, provide the sheet height and width.

There is a new function available in macros called Sheets(). This returns the number of sheets loaded.

A new function called FindSheetname(n) will return the name of a loaded sheet, where n is in integer in the range 0 – Sheets()-1.

There is a new picture format available for custom formats. %pc is similar to the percent format in Excel and multiplies the number by 100 and put a % sign after it.

There is a new function MAKEBLOCK which converts a string into a block reference. E.g. b=MAKEBLOCK(“a3:b10″)

A new function CHANGEDSHEET has been added to return the name of a modified sheet.

Two new functions added. SAVEFILEDB and PARTSAVEFILEDB are like their non-DB counterparts, except that they don’t take a filename and instead open up a SaveAs dialogue box for the user to drag.

They both return a spreadsheet block, from which you can determine the new name of the sheet (if any, as there’s no guarantee that the sheet will actually have been saved).

A new function has been added. EXPRESSION takes two parameters. The first is a block. The second is an expression. The expression is evaluated as if it were in the top left cell of block specified.

For example


A new item ‘Discard All’ has been added to the main iconbar menu.

If a macro called __quitschema exists, it is called in place of the standard routine when Schema2 quits with unsaved sheets. The macro takes no parameters. It returns a string. If the return string is STOP then schema 2 is not quit.

Macro error handling has been improved.

Text printing has been improved somewhat.

If a macro called __preprint exists, it is called before the printer dialogue box is displayed. The macro has one parameter, which is the spreadsheet to be printed.

If a macro called __print exists, it is called before printing begins. The macro has one parameter, which is the spreadsheet to be printed.

If a macro called __postprint exists, it is called after printing finishes. The macro has one parameter, which is the spreadsheet which has been printed.

The concept of the default print area has been introduced. This is an area which can be defined as the most commonly printed area. The print dialogue box now offers three choices; All,Selection,Print Area. There are also macros and a sheet variable to use with the print area if you wish to control it from your own macros.

Filed in: Uncategorized

Comments are closed.