LISTE DES ERREURS
PRÉAMBULE.
Par défaut, le BBC BASIC stop l'exécution du programme si une erreur est détectée et affiche un message indiquant le type d'erreur retournée, ainsi que parfois le nom du module installé ou appelé dans lequel l'erreur s'est produite et/ou le numéro de ligne ou l'erreur est apparue, si le listing est numéroté.
LISTE ALPHABÉTIQUE DES ERREURS.
[189] Access denied (accès refusé).
Une tentative d'écriture ou de suppression illégale dans un fichier ou un répertoire a été détectée par le système d'exploitation. Le cas le plus courant de cette erreur est l'écriture dans un fichier ouvert en lecture avec OPENIN. Sur un système réseau, cette erreur peut indiquer que vous tentez d'accéder à un fichier verrouillé par un autre utilisateur. Vous obtiendrez également cette erreur si vous essayez de supprimer un répertoire contenant des fichiers.
[23] Accuracy lost (précision perdue).
Avant que BBC BASIC ne calcule les fonctions trigonométriques (SIN, COS, etc.) des très grands angles, ces derniers sont réduits à ± PI radians. Plus l'angle est grand, plus l'imprécision de la réduction, et donc du résultat, est grande. Lorsque cette imprécision devient inacceptable, BASIC affiche le message d'erreur : Accuracy lost.
[8] Address out of range (adresse hors de portée).
Bien que les programmes BBC BASIC doivent toujours allouer la mémoire correctement (par exemple, en utilisant l'instruction DIM ou en diminuant la valeur de HIMEM), de nombreux programmes écrits pour BBC Micro (et certains écrits pour d'autres versions de BBC BASIC) contiennent des références à des "adresses mémoire absolues". De tels programmes risquent fort de faire planter BBC BASIC for SDL 2.0, car ces adresses ne sont généralement pas valides. De ce fait, les tentatives d'accès aux adresses mémoire inférieures à &10000 sont interceptées et génèrent l'erreur : Adresse hors limites, plutot qu'un plantage. L'adresse est vérifiée en cas d'indirection (c'est-à-dire les opérateurs ?, ! et $), lors de la définition des valeurs de PAGE et LOMEM , dans les instructions CALL, SYS et USR, et dans les commandes système *LOAD et *SAVE. Cette erreur se produit également lorsque l'assembleur détecte que le pointeur de code a atteint la valeur limite spécifiée L%.
[30] Bad call (mauvais appel).
Une procédure ou une fonction a été appelée de manière incorrecte, par exemple en ajoutant un espace entre le mot-clé FN et le nom de la fonction.
[254] Bad command (mauvaise commande).
Une interaction avec système d'exploitation n'est pas correctement structurée ou lorsque le système d'exploitation ne comprend pas un nom ou une spécification de fichier. Par exemple, si l'adresse mémoire est omise dans une commande *LOAD. Notez que si une commande système n'est pas reconnue par BBC BASIC, elle est transmise au système d'exploitation pour exécution. S'il ne s'agit pas d'une commande d'interface utilisateur graphique ou de console valide (par exemple, en cas de saisie incorrecte), l'erreur Bad command ne sera pas générée, mais une erreur s'affichera à l'invite de commande. Ce problème n'est pas détectable par un programme BASIC et peut n'apparaître à l'écran que brièvement, voire pas du tout.
[205] Bad device (appareil défectueux).
Le système d’exploitation ne parvient pas à comprendre le nom d’un périphérique.
[10] Bad DIM statement (mauvaise instruction DIM).
Une instruction DIM est erronée. Par exemple, si un suffixe de tableau est négatif. Cette erreur se produira également si vous tentez de redimensionner un tableau qui a déjà été déclaré ou de redéclarer une structure qui a déjà été déclarée. Rappel : vous pouvez répéter une déclaration de tableau ou de structure, à condition que les dimensions ou le format soient identiques à ceux spécifiés lors de la déclaration initiale du tableau ou de la structure. Dans ce cas, le contenu du tableau ou de la structure reste inchangé : il n'est pas initialisé.
[206] Bad directory (mauvais répertoire).
Le système d'exploitation n'a pas pu comprendre le nom d'un répertoire (dossier), par exemple s'il contenait des caractères illégaux.
[28] Bad hex or binary (mauvaise valeur hexadécimale ou binaire).
Une valeur hexadécimale ou binaire est erronée. Les nombres hexadécimaux ne peuvent contenir que les caractères de 0 à 9 et de A à F, et les nombres binaires ne peuvent contenir que les chiffres 0 et 1. Si vous essayez de former un nombre hexadécimal ou binaire avec d'autres caractères, cette erreur se produira.
[251] Bad key (mauvaise touche).
Le numéro de la touche associée à une commande *KEY est supérieur à 24.
[25] Bad MODE (mauvais mode de fenêtre).
Le numéro associé à l'instruction MODE supérieur à 33.
[204] Bad name (mauvais nom de fichier).
Le nom du fichier dépasse 255 caractères, ou dépasserait 255 caractères après l'ajout d'une extension par défaut, par exemple .BBC.
[0] Bad programm (mauvais programme).
Il y a une tentative d'exécution d'un script avec un format inapproprié (par exemple, un programme au format texte ASCII) ou par la corruption du programme en mémoire (attention aux programmeurs de code machine). Cette erreur indétectable et n'a pas de code d'erreur (par définition, il n'y a aucun programme présent qui pourrait utiliser un tel code). La cause la plus probable est que le fichier programme est au format ASCII (texte) ou Acorn, et non au format interne (tokenisé) correct. Dans ce cas, vous pouvez convertir le fichier au format souhaité en le chargeant dans l'éditeur de programme et en l'enregistrant au format BBC BASIC (.BBC).
[253] Bad string (mauvaise chaine de caractères).
Dans les commandes système, tel que OSCLI, les paramètres doivent parfois être exprimés entre guillemets, par exemple si un nom de fichier contient un espace, l'erreur Bad string sera retournée s'il un, ou les deux, guillemets sont absents. L'erreur Bad string est également retournée s'il n'y a pas suffisamment d'espace pour la chaîne de clé dans une commande système *KEY.
[15] Bad subscript (mauvais indice).
La valeur de l'indice d'un tableau de donnée est erronée, soit parce qu'il est négatif ou supérieur à la dimension spécifiée lors de sa déclaration avec l'instruction DIM.
[14] Bad use of array (mauvaise utilisation d'un tableau de données).
Le programme tente de lire ou de modifier une donnée dans un tableau qui n'a pas été déclaré et dimensionné avec l'instruction DIM, même qu'il a été déclaré comme LOCAL ou PRIVATE dans la définition d'une procédure ou d'une fonction personnalisée, mais qu'il n'a pas encore été dimensionné avec l'instruction DIM.
[56] Bad use of structure (mauvaise utilisation d'une structure de données).
Le programme tente de lire ou de modifier une donnée dans une structure qui n'a pas été déclaré et dimensionné avec l'instruction DIM{}, même qu'il a été déclaré comme LOCAL ou PRIVATE dans la définition d'une procédure ou d'une fonction personnalisée, mais qu'il n'a pas encore été dimensionné avec l'instruction DIM{}.
[33] Can't match FOR (pas de correspondance avec FOR).
La variable associée à l'instruction NEXT ou l'instruction composée EXIT FOR ne correspond à aucune des variables associées aux instructions FOR en cours.
[54] DATA not LOCAL (pas de DATA LOCAL correspondant).
Le programme rencontre une instruction composée RESTORE DATA, mais ne trouve aucune correspondance avec une instruction composée LOCAL DATA précédente.
[202] Device fault (le support n'est pas prêt).
Le programme ne peut pas communiquer correctement avec le périphérie, ou son support : disque dur, disquette, carte mémoire.
[245] Device unavailable (le périphérie est indisponible).
Une instruction ou une fonction, telle que ADVAL, SOUND, PLAY, demande l'accès à un périphérie et qu'il lui est refusé, car il est absent ou déjà utilisé par une autre application exclusive.
[11] DIM space (DIM demande trop de mémoire).
La déclaration d'un tableau de données ou d'une structure de données nécessiterait plus d'espace mémoire que celle disponible pour le programme BBC BASIC for SDL 2.0, ou si une instruction DIM réserve une quantité de mémoire négative.
[199] Disk fault (mauvais support).
Le programme ne peut pas lire ou écrire sur le support : disque dur, disquette, clé USB, carte mémoire, ... indiqué.
[198] Disk full (support plein).
Le support : disque dur, disquette, clé USB, carte mémoire, ... indiqué est plein, ou ne comprend plus assez d'espace pour les opération demandées.
[201] Disk read only (support protégé en écriture).
Le programme ne peut pas écrire sur le support : disque dur, disquette, clé USB, carte mémoire, ... indiqué, car il est protégé contre l'écriture et ses données peuvent être uniquement lues.
[18] Division by zero (division par 0).
Il n'est pas possible de diviser une valeur par 0.
[17] Escape (touche esc enfoncée).
Si l'utilisateur appuie sur la touche esc durant l'exécution d'un programme, le BBC BASIC le stoppera et retournera cette erreur, sauf si un gestionnaire d'erreur y pourvoit. Notez que la commande système *ESC OFF annule l’échappement d'un programme en retournant la valeur ASCII 27 , soit 1B en hexadécimal et que la commande système *ESC ON le rétabli.
[24] Exponent range (valeur hors limites).
La fonction EXP retourne une valeur supérieure au nombre maximal toléré par BBC BASIC for SDL 2.0.
[196] File exists (fichier existant).
Le programme tente de renommer un fichier avec un noms de fichier qui existe déjà dans le même répertoire.
[214] File or path not found (fichier ou répertoire absent).
Le programme tente d'accéder à un fichier, ou à un répertoire qui n'existe pas sur le support par défaut ou indiqué. Notez les instructions OPENIN, OPENOUT et OPENUP ne retourneront pas cette erreur, mais a valeur 0.
[31] Incorrect argument (argument incorrect).
Le nombre ou le type des arguments passés à une procédure ou à une fonction ne correspond pas à ceux attendus.
[222] Invalid channel (canal invalide).
Le canal de communication associé à un fichier de données est déjà fermé, ou n'a pas été ouvert précédemment.
[1] Jump out of range (canal invalide).
Le programme tente de faire, à la suite d'une gestion en assembleur, un saut court à une adresse mémoire située à +127 ou -128 octets.
[22] Logarithm range (logaritme incorrect).
Il n'est pas possible de calculer des logarithmes par 0 ou une valeur négative, ou d'élever un nombre négatif à une puissance non entière.
[5] Missing , (virgule manquante).
Il manque une virgule.
[9] Missing " (guillemet manquant).
Il manque un guillemet.
[27] Missing ) (parenthèse fermante manquante).
Il manque la parenthèse fermante.
[45] Missing # (dièse manquant).
Il manque un symbole dièse, # ou, en MODE 7 un symbole livre, £.
[55] Missing \ (antislash manquant).
Il manque un symbole antislash ou barre oblique inverse, \, au début d'une ligne de continuation.
[47] Missing ENDCASE (ENDCASE manquant).
Il manque une instruction de cloture ENDCASE pour sortir correctement d'un bloc d'instructions selon que CASE ... OF.
[49] Missing ENDIF (ENDIF manquant).
Il manque une instruction de cloture ENDIF pour sortir correctement d'un test conditionnel multilingue IF ou ELSE IF.
[37] Missing OF (OF manquant).
Il manque le mot clé OF dans l'entête d'un bloc d'instructions selon que CASE ... OF.
[36] Missing TO (TO manquant).
Il manque le mot clé TO dans l'entête d'un bloc d'instructions pour tous FOR.
[4] Mistake (erreur).
Le BBC BASIC ne comprend pas ce qui est demandé. Par exemple, si une ligne du script ne commence pas par un mot clé reconnu, une déclaration d'une variable ou d'une nouvelle affection de valeur.
[3] Multiple label (étiquette multiple).
Lors du premier passage d'un assemblage, une étiquette présente une valeur non nulle. Cela est probablement dû à l'utilisation répétée (ou plus) de la même étiquette dans le programme.
[21] Negative root (racine carrée négative).
Il n'est pas possible de calculer une racine carrée d'une valeur négative, par exemple en utilisant l'instruction SQR, ASN ou ACS.
[244] No coprocessor (coprocesseur absent).
Le coprocesseur pour les données numériques et absent ou n'est pas disponible pour traiter un commande système *FLOAT 64.
[0] No room (plus de place en mémoire).
La totalité de la mémoire disponible pour l'exécution d'un programme BBC BASIC a été utilisée. Vous pouvez augmenter la mémoire disponible pour le BASIC BBC en augmentant la valeur de HIMEM. Cette erreur indétectable.
[29] No such FN/PROC (FN/PROC non définie).
Le programme tente d'appeler une procédure ou une fonction personnalisée qui n'a pas été définie, avec l'instruction DEF, ou dont le nombre et le type de paramètres ne correspondent pas à ceux qui lui sont passés lors de l'appel, ou une tentative est faite pour obtenir un pointeur vers un PROC ou un FN avant que des appels n'aient été effectués.
[246] No such font (fonte non trouvée).
Le programme tente de charger une fonte, c'est-à-dire le fichier d'une police de caractères, qui n'existe pas avec ce nom de fichier ou dans le répertoire indiqué, à l'aide d'une commande système *FONT ou *PRINTERFONT. En général, le système d'exploitation lui substituera une autre police similaire, ou générique, pour éviter de retourner cette erreur.
[41] No line (ligne non trouvée).
Une instruction GOTO, GOSUB, TRACE ou RESTORE envoie la suite de l'exécution vers un numéro de ligne inexistant.
[248] No such printer (imprimante non trouvée).
Le nom de l'imprimante associée à une commande système *PRINTER n'est pas reconnu. Les noms d'imprimante ne sont pas sensibles à la casse, mais doivent être précis.
[51] No such system call (appel système inconnu).
Une fonction API du système d'exploitation, appelée par son nom via une instruction SYS, ou depuis un code assembleur, n'est pas reconnue. Cela peut être dû à une erreur de frappe dans le nom de la fonction ou à l'absence d'exportation de la fonction spécifiée par les bibliothèques partagées chargées par le processus.
[26] No such variable (variable inconnue).
Le programme tente de récupérer ou de modifier la valeur d'une variable qui n'a pas encore été déclarée.
[12] Not in a FN or PROC (pas dans un FN ou PROC).
Une variable est déclarée de portée locale ou privée, avec les instructions LOCAL ou PRIVATE en dehors d'une définition de procédure ou de fonction personnalisée.
[32] Not in a FOR loop (pas dans une boucle FOR).
Le programme rencontre une instruction de cloture NEXT, ou de sortie forcée EXIT FOR, mais ne trouve aucune entête FOR lui correspondant, par exemple si une instruction EXIT FOR a forcée la sortie de cette boucle.
[32] Not in a function (pas dans une fonction personnalisée).
Le programme rencontre une instruction de cloture de définition de fonction personnalisé, c'est-à-dire le sigle = sans identifiant de variable le précédent, en dehors de toute définition de fonction personnalisée.
[13] Not in a procedure (pas dans une procédure personnalisée).
Le programme rencontre une instruction de cloture ENDPROC en dehors de toute définition de procédure personnalisée.
[43] Not in a REPEAT loop (pas dans une boucle REPEAT).
Le programme rencontre une instruction de cloture UNTIL, ou de sortie forcée EXIT REPEAT, mais ne trouve aucune entête REPEAT lui correspondant, par exemple si une instruction EXIT REPEAT a forcée la sortie de cette boucle.
[38] Not in a subroutine (pas dans une routine).
Le programme rencontre une instruction RETURN, mais ne trouve aucune adresse de retour lui correspondant provenant d'une instruction GOSUB ou ON.
[46] Not in a WHILE loop (pas dans une boucle WHILE).
Le programme rencontre une instruction de cloture ENDWHILE, ou EXIT WHILE, mais ne trouve aucune entête WHILE lui correspondant, par exemple si une instruction EXIT WHILE a forcée la sortie de cette boucle.
[20] Number too big (nombre trop grand).
Le nombre saisi ou la valeur calculée est trop élevé pour être pris en charge par BBC BASIC. La plage de valeurs d'une variable entière 32 bits (type %) est comprise entre −214 7483 648 et +214 7483 647, et celle d'une variable entière 64 bits (type %%) est comprise entre −922 3372036854775808 et +922 3372036854775807. La plage de valeurs d'une variable à virgule flottante de 40 bits est d'environ −3,4E38 à +3,4E38, la plage de valeurs d'une variable à virgule flottante de 64 bits (type #) est d'environ −1,7E308 à +1,7E308 et la plage de valeurs d'une variable variante de 80 bits est d'environ −1,1E4932 à +1,1E4932.
[48] OF not last (pas de OF).
Le mot clé OF est rencontré par le programme, mais sans être le dernier terme d'un bloc d'instructions selon que CASE ... OF.
[0] ON ERROR not LOCAL (pas dans une erreur locale).
Le programme rencontre une instruction composée RESTORE LOCAL, mais ne trouve aucune correspondance avec un gestionnaire d'erreur ON ERROR LOCAL actif.
[39] ON syntax (mauvaise syntaxe pour ON).
La syntaxe générale d'un gestionnaire d'événement introduit par le mot clé ON est incorrecte.
[42] Out of DATA (DATA épuisé).
Le programme tente d'obtenir une nouvelle valeur en utilisant l'instruction READ alors que toutes les données contenues dans les instructions DATA ont déjà été retourné.
[53] Size mismatch (types non compatibles).
Erreur d'assemblage qui est retournée si une combinaison inappropriée de valeurs 16 bits et 32 bits est utilisée dans la même instruction.
[2] Size needed (taille imprécise).
Certaines instructions en langage assembleur ne précisent pas clairement s'il s'agit d'une valeur de type 8 (byte), 16 (word), 32 (dword) ou 64 (qword) bits. Dans ce cas, la taille des données doit être explicitement indiquée comme byte, word, dword or qword
[35] STEP cannot be zero (STEP ne peut pas etre 0).
La valeur suivant l'instruction STEP, pour préciser le pas entre 2 valeurs d'une boucle d'instructions pour tous FOR / NEXT ne doit pas être 0.
[16] Syntax error (erreur de syntaxe).
La syntaxe, à la suite d'un mot clé valide du BBC BASIC for SDL 2.0, est incorrecte ou insuffisante, ou si un symbole non autorisé est présent dans l'identifiant ou la valeur d'une variable.
[192] Too many open files (pas de canal de communication disponible).
Le programme tente d'ouvrir plus de huit fichiers ou quatre ports de communication simultanément.
[6] Type mismatch (type incompatible).
Le type de la valeur, saisie ou retournée, est une chaine de caractères alors que la variable est d'un type numérique, ou inversement. Par exemple, dans le passage de valeurs entre une procédure ou une fonction personnalisée et le module principal. Cette erreur sera aussi retournée si l'arithmétique du tableau est effectuée, mais que les dimensions des tableaux ne sont pas compatibles.
[255] Unknown error (erreur inconnue).
Le système d'exploitation signale une condition d'erreur non reconnue par BBC BASIC.
[44] WHEN/OTHERWISE not first (WHEN/OTHERWISE ne sont en premier).
Dans une boucle d'instructions selon que CASE ... OF, une clause WHEN, ou à défaut la clause OTHERWISE, doit se trouver en premier comme première instruction.
RUBRIQUE.
Gestion des erreurs pour plus de détails sur la création de gestionnaire d'erreur.
Votre aide est précieuse pour améliorer ce site, alors n'hésitez pas à faire part de
Dans la RETROGICIEL vous trouvez des suggestions simples et classiques pour
TESTER - DÉCOUVRIR - PRATIQUER - APPROFONDIR - EXPLORER
avec un exemple de résolution à télécharger pour vous inspirer.