A8 Error Messages

The QDOS error code is a negative integer between -1 and -21 and is often referred to instead of the relative error message. You can either refer to the following tables to find the message text or use the various toolkit implementations of the command REPORT to display the representation on your machine.

On some implementations, REPORT also accepts parameters between -22 and -27 which represent strings used by the operating system, but which are not strictly error messages. The text can be freely changed with the TRA and LANG_USE commands.

The instances where such error messages will be reported is actually dependent upon the task which was being performed at the time.

A8.1 Standard English Error Messages

A very general explanation of each message is given below, according to the error number. For each message both the original English QDOS error message is given as well as the new English SMS error message:

-1 NOT COMPLETE (QDOS)-INCOMPLETE (SMS)

This message is generally issued when the Break key <CTRL><SPACE> is pressed, and signifies that a task being carried out by the QL has been interrupted.

This message will also appear if you try to use the standard version of RESPR when a Job is loaded into the QL.

-2 INVALID JOB (QDOS)-INVALID JOB ID (SMS)

This message is issued by all Job-related commands when the Job identification number / Job name / Job tag supplied as a parameter to the command does not relate to a Job resident in the QL’s memory.

-3 OUT OF MEMORY (QDOS)-INSUFFICIENT MEMORY (SMS)

This message is quite self-explanatory. It is issued when you try to do something which requires more memory than is currently available. This can however be due to heap fragmentation, and it may therefore be useful to try the command DEL_DEFB.

-4 OUT OF RANGE (QDOS)-VALUE OUT OF RANGE (SMS)

This generally occurs when a parameter supplied to a machine code Function or Procedure cannot be handled by that machine code routine. The best example of this is trying to open a window which cannot fit on the screen, eg:

OPEN #3,SCR_10000x500a0x0

-5 BUFFER FULL (QDOS & SMS)

This error generally occurs if SuperBasic’s input buffer becomes full. On pre-JS ROMs, you are likely to see this error quite often, especially if you try to INPUT a line greater than 128 characters.

-6 CHANNEL NOT OPEN (QDOS) - INVALID CHANNEL ID (SMS)

This will be generated by all well-written machine code Procedures and Functions if you pass a channel parameter (#ch) which points to a channel which is not actually open.

-7 NOT FOUND (QDOS & SMS)

This error message is generally issued by file-related commands (eg. LOAD) if either the supplied device name or file name do not exist.

-8 ALREADY EXISTS (QDOS & SMS)

This error is returned by commands such as SAVE to indicate that a file already exists with the specified name on the specified device. If Toolkit II is available, you will generally be asked whether or not you wish to overwrite the file.

-9 IN USE (QDOS)-IS IN USE (SMS)

This message is normally generated by file-related commands where you try to access a file which has an exclusive channel open to it, or for example, if you try to DELETE a file which has a channel open to it. This message is also printed by commands such as WSTAT where a channel is open to a file, allowing further data to be written to that file.

You will also see this message if you try to open a channel to one of the serial ports when there is already a channel open to that port.

-10 END OF FILE (QDOS & SMS)

You will see this message if you try to input data from a file when the file pointer is at the end of the file.

This also occurs if you try to READ DATA from within a program and there is no more DATA in the program to be READ. Note however, on SMS, that this error is altered to:

End of DATA

in this instance.

EOF or EOFW should be used to overcome this error.

-11 DRIVE FULL (QDOS)-MEDIUM IS FULL (SMS)

This error message is normally generated when you try to write to a medium and there is not enough room on the medium. Unfortunately, with many commands, unless you have Toolkit II installed, the error message will only be generated if there is no room left on the medium when you first try to open the new file. Without Toolkit II, if the medium becomes full whilst the file is actually being written, no error will be reported and an incomplete file will be left on the medium.

-12 BAD NAME (QDOS)-INVALID NAME (SMS)

This error is generated when you try to use an undefined name as a command in a program. It generally reveals typing errors in programs, such as 10 PRIT ‘Title’.

-13 XMIT ERROR (QDOS)-TRANSMISSION ERROR (SMS)

This is generated when you are trying to read data over the Network, or serial ports. This error normally occurs when there is an error in the parity of the data which has been read.

-14 FORMAT FAILED (QDOS & SMS)

This error will appear when you try to FORMAT a medium. It generally shows that there is something dreadfully wrong with that medium, however, you may find that if you try to FORMAT the same medium in another drive, or clean the drive heads, this may prevent this error.

-15 BAD PARAMETER (QDOS)-INVALID PARAMETER (SMS)

This message is generated by machine code Procedures and Functions where the wrong type of parameter has been used in the calling statement. This may for example occur if you try to pass a string when a number is required.

-16 BAD OR CHANGED MEDIUM(QDOS) - MEDIUM CHECK FAILED(SMS)

This message occurs when you try to read or write to a medium and an error occurs when the computer tries to verify the data being read or written.

When trying to write to microdrives, it will also signify when a microdrive is read only, due to a bug in the QL’s hardware.

-17 ERROR IN EXPRESSION (QODS & SMS)

This error is normally generated when part of an expression does not make sense, for example: DIM a(10,10):PRINT a/10. Look for the use of undefined variables, or possibly arrays where a simple variable is needed (or vice versa).

-18 OVERFLOW (QDOS)-ARITHMETIC OVERFLOW (SMS)

This occurs when you have used an expression which cannot be handled by the QL’s maths package, for example divide by zero, or where you try to assign a value to an integer which is greater than 32767.

-19 NOT IMPLEMENTED YET (QDOS) - NOT IMPLEMENTED (SMS)

This message generally appears when you try to do something which the QL cannot currently do, but which it is hoped may be implemented in the future. For example, DIM a$(10,10), z$(10,10): z$=a$.

-20 READ ONLY (QDOS)-WRITE PROTECTED (SMS)

This message is normally generated when you are trying to open a channel to a file for the output of data and the medium has been write-protected. Unfortunately, this does not work on microdrives!

-21 BAD LINE (QDOS)-INVALID SYNTAX (SMS)

This error message appears if you try to enter a SuperBASIC command which does not make sense. It is in fact a Syntax error - the line will be represented for editing, and if Minerva or SMS is present, the cursor will be (hopefully) placed on top of the offending character.

-22 IN LINE (QDOS) *

This message forms part of the error sequence and is used to notify you of the line at which the error occurred (eg. IN LINE 100). This has been modified on Minerva and SMS so that the number of the statement on that line where the error occurred is also shown (eg. IN LINE 100;3).

-22 UNKNOWN MESSAGE (SMS)

This error is reported if you try to use REPORT with a number parameter which does not point to an existing message in the computer.

-23 SECTORS (QDOS) *

This message is used by commands such as DIR and STAT to signify the number of used sectors/the number of available sectors on the given medium. FORMAT actually uses this to signify the number of available sectors/the number of sectors on the medium.

-23 ACCESS DENIED (SMS)

This error message has been implemented for when you try to access files over the network which are protected on the system of the other computer - see SERNET and MIDINET for a further explanation.

-24, -25 Various messages (QDOS) *

These messages only appear on the start up screen, to tell you which keys are available to start the QL in different modes. Message -25 is the copyright message explaining who designed the current ROM version. See below.

-26 DURING WHEN PROCESSING (QDOS) *

This message is generated after an error message to show that the error has actually occurred within a WHEN definition block.

-27 PROC/FN CLEARED (QDOS) *

This message is generated after an error which has occured whilst the interpreter was in the middle of a DEFine PROCedure or DEFine FuNction block. After this message has appeared, any attempt to RETRY or CONTINUE will fail. Also any LOCal variables (or parameters passed to the definition block) will be reset.

Those error messages marked with an asterisk above exist on SMS, but cannot be shown using the REPORT command as they are message groups rather than errors. The equivalents on SMS appear below.

A8.2 Foreign Error Messages

In the following tables, we have tried to list as many of the different language implementations as possible (thanks to QView for this information), although there are bound to be some languages which are not covered here (for example the Russian languages supported on the THOR XVI).

If you can supply any further error messages supported on the QL or its derivatives, then please contact us with a full print-out of the error messages (and preferably, a file on disk with containing the error messages supported).

Under QDOS the error messages are as follows:-

ERNUM English German French
-1 NOT COMPLETE ABGEBROCHEN OPERATION NON TERMINÉE
-2 INVALID JOB FEHLERHAFTER JOB TACHE INVALIDE
-3 OUT OF MEMORY SPEICHERUEBERLAUF HORS CAPACITÉE MEMOIRE
-4 OUT OF RANGE BEREICHSUEBERLAUF SORTIE DES LIMITES
-5 BUFFER FULL PUFFER VOLL TAMPON PLEIN
-6 CHANNEL NOT OPEN KANAL NICHT EROEFFNET CANAL NON OUVERT
-7 NOT FOUND NICHT GEFUNDEN NON TROUVÉE
-8 ALREADY EXISTS EXISTIERT BEREITS EXISTE DÉJÀ
-9 IN USE IN BEARBEITUNG EN USAGE
-10 END OF FILE DATEIENDE FIN DE FICHIER
-11 DRIVE FULL DATENTRAEGER VOLL LECTEUR PLEIN
-12 BAD NAME UNGUELTIGE BEZEICHNUNG NOM INCORRECT
-13 XMIT ERROR UEBERTRAGUNGSFEHLER ERREUR DE TRANSMISSION
-14 FORMAT FAILED FORMATFEHLER DEFAILLANCE DANS LE FORMATAGE
-15 BAD PARAMETER UNGUELTIGER PARAMETER MAUVAIS PARAMèTRE
-16 BAD OR CHANGED MEDIUM FEHLERHAFTER DATENTRAEGER ERREUR DE SUPPORT
-17 ERROR IN EXPRESSION FEHLER IM AUSDRUCK ERREUR DANS L’EXPRESSION
-18 OVERFLOW UEBERLAUF DÉPASSEMENT DE CAPACITÉ
-19 NOT IMPLEMENTED YET NICHT IMPLEMENTIERT COMMANDE NON REPERTORIE …
-20 READ ONLY NUR LESEN LECTURE UNIQUEMENT
-21 BAD LINE SYNTAX-FEHLER LIGNE INCORRECTE
-22 IN LINE IN ZEILE A LA LIGNE NO
-23 SECTORS SEKTOREN SECTEURS
-26 DURING WHEN PROCESSING VERARBEITUNG LÄUFT PENDANT L’EXECUTION DE WHEN
-27 PROC/FN CLEARED PROC/FN GELOESCHT PROC/FN EFFACÉES
ERNUM Swedish Finnish Danish
-1 ej färdig epätäydellinen ikke fullf|rt
-2 fel i jobb epäkelpo työ ugyldig Job
-3 minne slut muisti lopussa arbeidslager fullt
-4 utom område ulkopuolella område overskredet
-5 buffer full puskuri täynnä buffer fullt
-6 oöppnad kanal kanava avaamatta kanal ikke åpen
-7 hittar ej ei löydy ikke funnet
-8 finns redan jo olemassa allerede oprettet
-9 används redan varattu optatt
-10 fil slut tiedosto lopussa filens slutning nådd(EOF)
-11 full kassett asema täynnä lagermedie fullt
-12 namnfel huono nimi ukjent navn
-13 RS-232 fel siirtovirhe transmissjonsfejl
-14 ej formaterbar alustusvirhe mislykket formatering
-15 parameterfel huono parametri ulovlig parameter
-16 mediafel huono väline lese/skrive feil
-17 fel i uttryck lausekevirhe feil i utryk
-18 för stort tal ylitys numerisk overl|p
-19 används ej ei käytössä … ikke innf|rt
-20 endast läsning vain luku kun lesning tillatt
-21 fel form huono rivi feil i linje
-22 På rad Rivillä I linje
-23 sektorer sektoria sektorer
-26 WHEN under bearbetning WHEN - rutiinin aikanaved WHENovervågning
-27 PROC/FN raderad PROC/FN nollattu PROC/FN renset

A8.3 Dates

When defining a new language for use by the computer, not only is it necessary to re-define the error messages, but also the codes used for representing the days of the week and the months of the year.

Days of the Week

UK+Finland:Sun Mon Tue Wed Thu Fri Sat

Germany:Son Mon Die Mit Don Fre Sam

France:Dim Lun Mar Mer Jeu Ven Sam

Sweden: Sön Mån Tis Ons Tor Fre Lör

Denmark: Søn Man Tir Ons Tor Fre Lør

Months of the Year

UK+Finland:Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec

Germany:Jan Feb Mär Apr Mai Jun Jul Aug Sep Okt Nov Dez

France: Jan Fév Mar Avr Mai Jun Jul Aoú Sep Oct Nov Déc

Sweden: Jan Feb Mar Apr Maj Jun Jul Aug Sep Okt Nov Dec

Denmark:Jan Feb Mar Apr Mai Jun Jul Aug Sep Okt Nov Des

A8.4 SMS Messages

Under SMS, the equivalent in-built foreign error messages are as follows:

ERNUM German French
-1 unterbrochen opération incomplète
-2 ungültige Job ID ID Job non valable
-3 zu wenig freier Speicher hors capacité mémoire
-4 Wert auáerhalb Bereich valeur hors limites
-5 puffer voll tampon plein
-6 ungültige Kanal ID ID canal non valable
-7 nicht gefunden est introuvable
-8 existiert bereits existe déja
-9 wird schon benutztest utilisé par ailleurs
-10 Datei-Ende fin de fichier
-11 Medium ist voll disque plein
-12 ungültiger Name nom inadmissible
-13 Übertragungs-Fehler erreur de transmission
-14 Formatier-Fehler erreur dans le formatage
-15 ungültiger Parameter paramètre non valable
-16 fehlerhafter Datenträger erreur de support
-17 Fehler im Ausdruck erreur dans l’expression
-18 arithmetischer Überlauf débordement arithmétique
-19 nicht implementiert ça n’existe pas
-20 schreibgeschützt protection en écriture
-21 Syntax-Fehler syntaxe non valable
-22 unbekannte Meldung message inconnu
-23 Zugriff verweigert accès interdit

SMS also incorporates an improved Interpreter, and as a result, has a long list of further errors which can appear either before a program is RUN or whilst a program is RUNning. These errors do not affect ERNUM and do not have an error code as such. Each error is given in English, German and French.

In many instances, these errors replace the QDOS ‘Bad Line’ error, which left the user to guess why the line had been rejected.

Many of these problems would also be reported if you try to compile the program.

The SBASIC interpreter works in three stages:

PARSING

This occurs whenever a new line is entered either from the keyboard as a direct command or using EDIT for example, or when a program is LOADed.

PRE-COMPILING

This occurs whenever the command RUN or GO TO is entered - the interpreter runs through the whole of the program to check that structures are correctly defined. It is this stage which has been added to the original QDOS SuperBASIC interpreter and allows SBASIC to be so much quicker than the original.

RUNNING

This is the interpreter’s job as the program is being RUN - keeping track of variables and program lines, as well as carrying out the actual instructions contained in the program.

Different errors are produced at each stage of the Interpretation process.

SYNTAX ERROR IN EXPRESSION

(ENGLISH)

Syntax-Fehler im Ausdruck

(German)

erreur de syntaxe dans l’expression

(French)

This is reported during PARSING - it normally occurs where you have made a typing error when entering a line and placed two operators together when this is not allowed (or meaningless). For example, the following line will cause this error:

x = x ++ 1

MISSING LEFT PARENTHESIS

(ENGLISH)

Linke Klammer fehlt

(German)

manque parenthèse gauche

(French)

This error is generated during PARSING - it indicates that there are more closing brackets on a line, than opening brackets. You either need to insert another opening bracket somewhere or delete a closing one.

However, the interpreter reports this error very infrequently - normally ‘Invalid Syntax’ is reported.

MISSING RIGHT PARENTHESIS

(ENGLISH)

Rechte Klammer fehlt

(German)

manque parenthèse droite

(French)

This message is generated during PARSING - it appears when a program line has more opening brackets than closing brackets.

For example:

PRINT CHR$ ((HEX (‘d2’))

ERROR IN LINE NUMBER

(ENGLISH)

fehlerhafte Zeilennummer

(German)

erreur à la ligne numéro

(French)

This message appears during PARSING - it should be caused whenever you try to enter a line number outside the range 1…32767. However, line numbers which exceed 32767 are merely ignored on current implementations of SMS, causing the program line to be executed as if it had been entered without a line number.

BAD STRING: MISSING DELIMITER

(ENGLISH)

String-Begrenzer fehlt

(German)

manque marqueur limite de chaîne

(French)

This error is reported during PARSING whenever a program line is entered which contains a string within quote marks (either single or double) and one of those quote marks is missing.

Example:

PRINT ‘Hello “There”

INCORRECT PROCEDURE OR FUNCTION DEFINITION

(ENGLISH)

falsche Definition einer Prozedur oder Funktion

(German)

mauvaise définition d’une procédure ou fonction

(French)

This message is reported during PARSING and indicates that there is something amiss with a program line containing DEFine PROCedure or DEFine FuNction, for example where one of the end brackets is missing around the parameter definition list, or one of the parameters appears in the definition as just a comma or empty quotes:

1 DEFine PROCedure TEST (a,”“)

and:

1 DEFine PROCedure TEST (a,)

both produce this error.

Other problems may be indicated by the error ‘Invalid Syntax’, such as no opening bracket appearing before the list of parameters.

PROCEDURE OR FUNCTION DEFINITION NOT ALLOWED HERE

(ENGLISH)

Prozedur- oder Funktion-Definition hier nicht erlaubt

(German)

définition d’une fonction ou procédure non permise ici

(French)

This message is reported during PARSING and occurs if you try to enter a line containing the DEFine PROCedure or DEFine FuNction structure as a direct command (rather than as a program line).

DEFINES MAY NOT BE WITHIN OTHER CLAUSES

(ENGLISH)

DEFines dürfen nicht innerhalb Strukturen stehen

(German)

DEFines ne peuvent se trouver dans d’autres structures

(French)

This message is reported during PRE-COMPILING if the program includes a line containing DEFine PROCedure or DEFine FuNction inside another structure, such as another DEFine … END DEFine clause, or SELect … END SELect structure, IF … END IF, WHEN … END WHEN.

Unfortunately, a lot of very early SuperBASIC programs written for the Sinclair QL fall foul of this rule. The old style interpreter would jump the rogue DEFine structure, sometimes falling out of the program because the problem was actually a missing END DEFine statement.

MISPLACED END DEFINE

(ENGLISH)

END DEFine darf hier nicht stehen

(German)

END DEFine n’est pas à sa place ici

(French)

This error is reported during PRE-COMPILING if a program line contains END DEFine without a relative DEFine PROCedure or DEFine FuNction.

MISPLACED LOCAL

(ENGLISH)

LOCal darf hier nicht stehen

(German)

LOCal n’est pas à sa place ici

(French)

This message is reported during PRE-COMPILING if the program contains a LOCal statement other than as the first active program line after a DEFine PROCedure or DEFine FuNction statement.

RETURN NOT IN PROCEDURE OR FUNCTION

(ENGLISH)

RETurn ist nicht innerhalb Prozedur oder Funktion

(German)

RETurn ne se trouve pas dans une fonction ou procédure

(French)

This message is generated during RUNNING if the interpreter tries to execute a RETurn command outside of a DEFine PROCedure or DEFine FuNction structure.

It will also be reported during RUNNING if the interpreter is executing a DEFine FuNction structure, but meets an END DEFine statement - in other words, the RETurn command is missing from the structure.

WHEN CLAUSES MAY NOT BE NESTED

(ENGLISH)

WHEN Strukturen dürfen nicht verschachtelt sein

(German)

des structures WHEN ne peuvent être emboîtées

(French)

This error is generated during PRE-COMPILING if a program contains a WHEN ERRor (or WHEN variable, if implemented) structure inside another one.

MISPLACED END WHEN

(ENGLISH)

END WHEN darf hier nicht stehen

(German)

END WHEN n’est pas à sa place ici

(French)

This error is generated during PRE-COMPILING if the program contains an END WHEN statement without a corresponding WHEN ERRor or WHEN variable statement.

MISPLACED ELSE

(ENGLISH)

ELSE darf hier nicht stehen

(German)

ELSE n’est pas à sa place ici

(French)

This error is generated during PRE-COMPILING if the program contains an ELSE statement without a corresponding IF statement.

MISPLACED END IF

(ENGLISH)

END IF darf hier nicht stehen

(German)

END IF n’est pas à sa place ici

(French)

This error is generated during PRE-COMPILING if the program contains an END IF statement without a corresponding IF statement.

PROGRAM STRUCTURES NESTED TOO DEEPLY, MY BRAIN ACHES

(ENGLISH)

Strukturen zu tief verschachtelt

(German)

les structures sont trop emboîtées, ça me fait mal au crÀne

(French)

This message will rarely appear - it will be generated during RUNNING if the program uses PROCedures or FuNctions which call themselves too many times.

You are in fact more likely to run out of memory or crash the machine than see this message!!

INCOMPLETE IF CLAUSE

(ENGLISH)

unvollständige IF Struktur

(German)

structure IF incomplète

(French)

This error is generated during PRE-COMPILING if the program contains an IF statement without a corresponding END IF statement.

NOTE that in-line IF structures do not necessarily need a corresponding END IF statement.

INCOMPLETE SELECT CLAUSE

(ENGLISH)

unvollständige SELect Struktur

(German)

structure SELECT incomplète

(French)

This error is generated during PRE-COMPILING if the program contains a SELect ON statement without a corresponding END SELect statement.

NOTE that in-line SELect ON structures do not necessarily need a corresponding END SELect statement.

INCOMPLETE DEFINE

(ENGLISH)

unvollständiges DEFine

(German)

structure DEFINE incomplète

(French)

This error is generated during PRE-COMPILING if the program contains a DEFine PROCedure statement or a DEFine FuNction statement without a corresponding END DEFine statement.

INCOMPLETE WHEN CLAUSE

(ENGLISH)

unvollständige WHEN Struktur

(German)

structure WHEN incomplète

(French)

This error is generated during PRE-COMPILING if the program contains a WHEN ERRor statement (or WHEN variable when supported) without a corresponding END WHEN statement.

UNACCEPTABLE LOOP VARIABLE

(ENGLISH)

unerlaubte Schleifen-Variable

(German)

variable de contrôle boucle inacceptable

(French)

This message appears during the PARSING stage if a program line contains a FOR loop with a string loop identifier (compare Minerva), such as:

FOR a$=’a’ TO ‘z’

UNABLE TO FIND AN OPEN LOOP

(ENGLISH)

kann keine offene Schleife finden

(German)

aucune boucle ouverte ne peut être trouvée

(French)

This message appears during the PRE-COMPILING phase if a program contains an EXIT, NEXT, END FOR or END REPeat statement which does not have a loop control variable specified (compare ‘Undefined Loop Control Variable’) and the Interpreter is unable to find a corresponding FOR or REPeat statement.

UNDEFINED LOOP CONTROL VARIABLE

(ENGLISH)

undefinierte Schleifen-Variable

(German)

la variable de contrôle boucle est indéfinie

(French)

This message is similar to ‘Unable to Find an Open Loop’ except that it appears during RUNNING if a program contains an EXIT, NEXT, END FOR or END REPeat statement which includes the name of a loop control variable and the Interpreter is unable to find a corresponding FOR or REPeat statement.

This will also happen if the loop control variable has been re-defined before the EXIT, NEXT, END FOR or END REPeat statement is executed, for example:

FOR x=1 to 100
...
...
DIM x(100)
...
...
END FOR x

MISPLACED END SELECT

(ENGLISH)

END SELect darf hier nicht stehen

(German) (French)

END SELect n’est pas à sa place ici

(French)

This message appears during PRE-COMPILING if a program contains an END SELect statement without a corresponding SELect ON statement.

DATA IN COMMAND LINE HAS NO MEANING

(ENGLISH)

DATA in Befehlszeige wird ignoriert

(German)

DATA dans une ligne de commande n’a pas de sens

(French)

This message appears during PARSING if a line containing a DATA statement is entered as a direct command.

INCORRECTLY STRUCTURED SELECT CLAUSE

(ENGLISH)

falsch strukturiertes SELect

(German)

SELECT mal structuré

(French)

This message is generated during PRE-COMPILING in one of two cases:

  • a SELect ON statement appears without any comparison values, such as:
10 SELect ON x
20 PRINT 'Hello'
30 END SELect
  • the comparison values appear in a program outside of a SELect ON structure, for example:
10 SELect ON x
20 =10 : PRINT 'x=10'
30 END SELect
40 =20 : PRINT 'x=20'

UNACCEPTABLE PARAMETERS FOR READ

(ENGLISH)

unerlaubte Parameter für READ

(German)

paramètre inacceptable pour READ

(German) (French)

This message appears during PRE-COMPILING if a READ statement has meaningless parameters, for example:

READ 'x'
READ s,s1,s*1
READ 1,1,2

Note however, that no error is caused by the READ statement without any parameters.

Compare also:

READ PRINT

which causes an error during RUNNING - assignment can only be a variable or array element.

END OF DATA

(ENGLISH)

Ende von DATA

(German)

fin de DATA

(French)

This message is generated during RUNNING if a program is trying to READ DATA statements but has run out of DATA to read - use RESTORE or add check that all of the required DATA is contained in the program.

SBASIC CANNOT PERFORM READS WITHIN DATA EXPRESSIONS

(ENGLISH)

SBASIC kann keine READs innerhalb DATAs ausführen

(German)

SBASIC ne peut effectuer des READs dans des expressions DATA

(French)

We are uncertain when this error appears, not having been able to create a situation which causes this error to be reported.

If a DATA statement contains a procedure name, such as:

DATA 1,1,READ

or:

DATA 1,1,PRINT

then during RUNNING, when the program tries to read the data parameter ‘READ’, the error ‘unknown function or array’ is produced.

UNKNOWN PROCEDURE

(ENGLISH)

unbekannte Prozedur

(German)

procédure inconnue

(French)

This message is displayed during RUNNING if a procedure name is used which has not been defined - this normally suggests one of three problems:

  • a typing error
  • a machine code toolkit has not been linked in properly
  • a SuperBasic DEFine PROCedure structure is missing.

UNKNOWN FUNCTION OR ARRAY

(ENGLISH)

unbekannte Funktion oder Feld

(German)

fonction ou tableau inconnus

(French)

This message is displayed during RUNNING if a Procedure name has been used as a function, variable or array descriptor. This normally suggests that a program uses the same name for a variable as a toolkit which has been linked in.

ONLY ARRAYS MAY BE DIMENSIONED

(ENGLISH)

nur Felder dürfen dimensioniert werden

(German)

on ne peut dimensionner que des tableaux

(French)

This message is displayed during RUNNING if a Procedure name has been used as an array name in a DIM statement. This normally suggests that a program uses the same name for a variable as a toolkit which has been linked in.

This error is also reported if you try to DIMension the name of a parameter passed to a PROCedure or FuNction, such as:

100 DEFine PROCedure TEST(x)
110 DIM x(100)
120 END DEFine
  • Use LOCal instead, such as:
110 LOCal x(100)

(although why you would want to do this, is anyone’s guess!!)

PROCEDURE AND FUNCTION PARAMETERS MAY NOT BE DIMENSIONED

(ENGLISH)

Prozedur- oder Funktion-Parameter dürfen nicht dimensioniert werden

(German)

les paramètres des procédures et fonctions ne peuvent être dimensionnés

(French)

This error is intended to trap the second example for ‘Only Arrays May be Dimensioned’ - see description of DIM for an example and the difference between these two errors.

SBASIC CANNOT PUT UP WITH NEGATIVE DIMENSIONS

(ENGLISH)

SBASIC mag keine negativen Dimensionen

(German)

SBASIC ne sait comment traiter des dimensions négatives

(French)

This error is reported during RUNNING if you try to DIMension an array with a negative index, such as:

DIM x(-100)

Note that if you try to use a negative index in other situations, such as:

x(-100)=32

the error ‘Array Index out of Range’ will be reported.

DIMENSIONAL OVERFLOW - YOU CANNOT BE SERIOUS!

(ENGLISH)

Dimensions-Überlauf

(German)

dépassement de dimension - soyons sérieux!

(French)

This message appears during RUNNING if you try to DIMension an array with too many indices - this appears to happen after around 7 indices). For example, the error will be caused by the following line:

DIM x(1,2,3,4,5,6,7,8)

NOTE the warning listed below!!

ERROR IN INDEX LIST

(ENGLISH)

Fehler in Index-Liste

(German)

erreur dans la liste d’indexage

(French)

We are uncertain when this error appears, not having been able to create a situation which causes this error to be reported.

TOO MANY INDEXES

(ENGLISH)

zu viele Indizes

(German)

trop d’indices

(French)

We are uncertain when this error appears, not having been able to create a situation which causes this error to be reported.

CANNOT ASSIGN TO SUB-ARRAY

(ENGLISH)

kann nicht auf Teil-Feld zuweisen

(German)

impossible d’assigner à un sous-tableau

(French)

We are uncertain when this error appears, not having been able to create a situation which causes this error to be reported.

UNACCEPTABLE ARRAY INDEX LIST

(ENGLISH)

fehlerhafte Feld-Index-Liste

(German)

liste d’indices dans tableau inacceptab (French)le

(French)

This message is generated during RUNNING if you try to use an array with more indices that it was DIMensioned with, for example:

DIM x(100,100)
x(10,10,10)=52

The error can also be generated when you try to assign a value across several array elements at a time (this should possibly cause the error ‘Cannot Assign to a Sub-Array’), for example:

DIM x(10,10)
x(3,4 TO 5)=100

Beware of the dangers here - see below

WARNINGS:

In current versions of SMSQ/E, if you DIMension an array with the maximum number of indices and use two more indices in the reference that this maximum, you can crash the computer, for example:

DIM x(1,2,3,4,5,6,7)
x(1,2,3,4,5,6,7,8,9)=52

You can also crash the computer if you miss out array indexes:

x(1,,1)=100

Another way of crashing the computer is when trying to assign a value across several array elements, for example:

x(1 TO 3,10)=52

ARRAY INDEX OUT OF RANGE

(ENGLISH)

Feld-Index auáerhalb Bereich

(German)

indice tableau hors limites

(French)

This message is generated during RUNNING if the value of an index specified in an array is higher than that specified when the array was DIMensioned, for example:

DIM x(10,10)
x(10,12)=52

Note however, that if you try to use an index which exceeds 32767, the error ‘Error in Expression’ is generated.

ONLY ARRAYS OR STRINGS MAY BE INDEXED

(ENGLISH)

nur Felder oder Strings dürfen indiziert werden

(German)

on peut indexer uniquement des tableaux ou chaînes

(French)

This message is generated during RUNNING if you try to reference an array which has not yet been DIMensioned, for example:

CLEAR

x(100)=52

Compare the situation where you try to index a name which is in fact defined as a Procedure - the index is ignored and the Procedure executed as normal, for example

PRINT (100)=32 displays 32 on the screen.

On the other hand, if you try to index a name which is defined as a Function, the error ‘Unknown Procedure’ is generated instead.

In both cases, compare what happens when an index is not specified (the next error listed here is generated).

ASSIGNMENT CAN ONLY BE TO A VARIABLE OR ARRAY ELEMENT

(ENGLISH)

Zuweisungen nur an Variable oder Feld-Element

(German)

assignation uniquement vers une variable ou un élément d’un tableau

(French)

This error is generated during RUNNING when a program tries to assign a value to a variable which is actually defined as a Procedure or Function already (this suggests that a toolkit may have re-defined a variable name).

MISTAKE IN PROGRAM

(ENGLISH)

MISTake - Fehler im Programm

(German)

MISTake - Erreur de programmation

(French)

This message is generated during PRE-COMPILING - whilst a program is being LOADed (or QLOADed), if a line has generated an error during PARSING, the word MISTake is inserted in the relevant line in the program. This message is generated if you try to RUN the program without altering the offending line.

DURING WHEN PROCESSING

(ENGLISH)

während WHEN-Bearbeitung

(German)

pendant le traitement de when

(French)

This message is generated during RUNNING if an error occurs whilst the program was executing a WHEN ERRor (or WHEN variable when it is implemented) structure. You should enter WHEN ERRor as a direct command to switch off the WHEN ERRor trapping.

PROC/FN CLEARED

(ENGLISH)

PROC/FN gelöscht

(German)

PROC/FN effacée

(French)

If an error is generated whilst the program is executing a DEFine PROCedure or DEFine FuNction structure, this error will be generated when you EDIT the program, or enter CONTINUE. Unlike earlier ROMs, this does not seem to prevent you from using CONTINUE to carry on with RUNning the program from the place the error occurred.

At line

(ENGLISH)

In Zeile

(German)

A la ligne

(French)

This is merely the message used to generate part of all error messages, signifying the line number and statement number where the error occurred.

FATAL ERROR IN SBASIC INTERPRETER

(ENGLISH)

schwerwiegender Fehler im SBASIC-Interpreter

(German)

erreur fatale dans l’interpréteur SBASIC

(French)

This message should hopefully never happen - it means that the interpreter has become corrupt. If a multiple SBASIC interpreter, it will be removed from the system when you press a key.

One instance where this error will occur is if you try to RUN a program which has been QLOADed and the original file was created using QSAVE on a Minerva ROM with integer tokenisation enabled.