-
Notifications
You must be signed in to change notification settings - Fork 1
7.07. Mensajes de error de BASIC
Contenido:
-
Mensajes de error de BASIC
- Unexpected NEXT.
- Syntax error.
- Unexpected RETURN.
- DATA exhausted.
- Improper argument.
- Overflow.
- Memory full.
- Line does not exist.
- Subscript out of range.
- Array already dimensioned.
- Division by zero.
- Invalid direct command.
- Type mismatch.
- String space full.
- String too long.
- String expression too complex.
- Cannot CONTinue.
- Unknown user function.
- RESUME missing.
- Unexpected RESUME.
- Direct command found.
- Operand missing.
- Line too long.
- EOF met.
- File type error.
- NEXT missing.
- File already open.
- Unknown command.
- WEND missing.
- Unexpected WEND.
- File not open.
- Broken in.
- Errores de disco en AMSDOS.
Se ha encontrado un NEXT que no corresponde a ningún FOR, o bien la variable mencionada tras NEXT no coincide con la de FOR.
BASIC no puede entender la línea porque algo en ella no se ajusta a las reglas de sintaxis del lenguaje.
Se ha encontrado una orden RETURN fuera de una subrutina.
Una orden READ ha intentado leer más datos de los incluidos en líneas DATA.
Este es un error no específico. Puede haber algo incorrecto en el argumento de una función o en un parámetro de una orden.
El resultado de una operación aritmética ha sobrepasado los márgenes aceptables. Si ha ocurrido en un número en punto flotante, el resultado ha sido mayor que 1.7E+38 (aprox.). También puede haber ocurrido al intentar convertir un número en punto flotante en un entero con signo de 16 bits.
El programa actual o sus variables ocupan demasiado espacio en la memoria, el anidamiento de la estructura de control es demasiado profundo (demasiadas órdenes GOSUB, WHILE o FOR anidadas).
La orden MEMORY provoca este error si se intenta situar el límite de la memoria accesible a BASIC demasiado bajo, o tan alto que sea imposible. Obsérvese que los ficheros abiertos tienen un tampón dedicado a ellos, lo que puede restringir los valores correctos de MEMORY.
Se ha mencionado un número de línea que no existe en el programa.
Uno de los subíndices mencionados en una lista es demasiado pequeño o demasiado grande.
Una de las listas declaradas en una orden DIM ya ha sido dimensionada antes.
División por cero, que puede ocurrir en la división de números reales, en la división entera, en la operación MOD y en la exponenciación.
Se ha intentado dar como orden directa una orden que sólo es válida si va precedida de un número de línea.
Incongruencia de tipos. Un dato es literal cuando tenía que ser numérico, o viceversa, o se ha introducido un dato no numérico en READ o INPUT.
Se han creado demasiadas cadenas literales y ya no hay espacio disponible para más, incluso después de reorganizar la memoria.
Una cadena literal consta de más de 255 caracteres. Puede haber sido generada por concatenación de otras.
Expresión literal demasiado compleja. Las expresiones literales pueden generar valores intermedios; cuando el número de estos valores excede de un límite razonable, se produce este error.
No se puede reanudar la ejecución del programa con CONT. Obsérvese que CONT reanuda el programa después de una instrucción STOP, de [ESC] [ESC] o de un error, pero a condición de que no se modifique el programa durante la pausa.
Se ha invocado una FN sin la correspondiente DEF FN.
Se ha llegado al final del programa mientras se ejecutaba una rutina de gestión de errores (esto es, una rutina invocada por ON ERROR GOTO).
RESUME sólo es válida en una rutina de gestión de errores (esto es, en una rutina invocada por ON ERROR GOTO).
Al cargar un fichero se ha encontrado una línea sin número de línea.
BASIC ha encontrado una expresión incompleta.
BASIC ha convertido a su forma interna una línea y ésta ha resultado ser demasiado larga.
Se ha intentado leer más allá del final del fichero de entrada.
El fichero que se ha leído no es del tipo adecuado. OPENIN sólo puede abrir ficheros de texto ASCII. Análogamente, LOAD, RUN, etc., solamente pueden acceder a ficheros creados por SAVE.
BASIC ha encontrado un FOR al que no corresponde ningún NEXT. La línea mencionada tras el mensaje es aquella en la que se encuentra el FOR.
Se ha ejecutado una orden OPENIN u OPENOUT sin previamente cerrar el fichero que estaba abierto.
BASIC no encuentra un comando externo que corresponda a lo que se ha escrito tras |.
BASIC ha encontrado un WHILE al que no corresponde ningún WEND.
Se ha encontrado un WEND que no corresponde a ningún WHILE, o bien el WEND no concuerda con el WHILE del bucle actual.
Véase la sección "Errores de disco".
Véase la sección "Errores de disco".
Hay varios errores que pueden producirse con ocasión del manejo de ficheros en disco. BASIC da a todos ellos el número de ERR 32; no obstante, DERR contiene información más específica cuando se detecta ese número de error. Los valores de DERR tienen el siguiente significado:
Error de AMSDOS |
Valor de DERR |
Causa del error |
---|---|---|
0 | 0 o 22 | Se ha pulsado [ESC]. |
14 | 142 (128+14) | El canal no se encuentra en situación correcta. |
15 | 143 (128+15) | Se ha alcanzado el final físico del fichero. |
16 | 144 (128+16) | Orden incorrecta: generalmente nombre de fichero incorrecto. |
17 | 145 (128+17) | El fichero ya existe. |
18 | 146 (128+18) | El fichero no existe. |
19 | 147 (128+19) | El directorio está lleno. |
20 | 148 (128+20) | El disco está lleno. |
21 | 149 (128+21) | Se ha cambiado el disco cuando había ficheros abiertos en él. |
22 | 150 (128+22) | El fichero es de "sólo lectura". |
26 | 154 (128+26) | Se ha llegado al final de los datos grabados en el fichero (final lógico del fichero). |
Si AMSDOS ya ha informado de un error, el bit 7 de DERR está a 1 y por lo tanto todos los valores de DERR están desplazados en 128 unidades.
Otros valores generados por DERR proceden del controlador del disco. Su significado se analiza bit a bit. El bit 6 siempre está a 1. El bit 7 indica si AMSDOS ha informado del error (según se ha explicado antes). El significado de los bits es el siguiente:
Bit | Significado |
---|---|
0 | Falta marca de direcciones. |
1 | No escribible. El disco está protegido. |
2 | Faltan datos. No se puede encontrar el sector. |
3 | No hay disco en la unidad, unidad no preparada. |
4 | Error de sincronización (velocidad). |
5 | Error de datos. Error CRC (comprobación de redundancia cíclica). |
6 | Siempre a 1, para indicar que es un error detectado por el controlador del disco. |
7 | A 1 si AMSDOS ya ha informado del error. |
ERR también puede dar el valor 31 si se ha intentado el acceso sin haber ningún fichero abierto. La forma recomendable de utilizar ERR y DERR consiste en incluir una instrucción ON ERROR GOTO que invoque una pequeña subrutina en la cual se compruebe si ERR es 31 o 32; si es 32, se puede examinar DERR para obtener mayor información sobre la naturaleza del error. Por ejemplo:
19 ON ERROR GOTO 1000
20 OPENOUT "fichero.asc"
30 WRITE #9,"prueba-datos"
40 CLOSEOUT
50 END
1000 erramsdos=(DERR AND &7F): REM mascara para bit 7
1010 IF ERR<31 THEN END
1020 IF ERR=31 THEN PRINT "Esta seguro de que ha tecleado la linea 20 correctamente?":END
1030 IF erramsdos=20 THEN PRINT "Disco lleno; ponga otro disco de datos. ":END
1940 IF erramsdos=&X01001000 THEN PRINT "Inserte un disco en la unidad y luego pulse una tecla.":WHILE INKEY$="":WEND:RESUME
1050 END
◀ Capítulo 7. Parte 6: Sonidos / Índice / Capítulo 7. Parte 8: Palabras reservadas de BASIC ▶
- Parte 1: Instalación y mantenimiento.
- Parte 2: Conexión de los periféricos.
- Parte 3: En cuanto a los discos.
- Parte 4: Manos al teclado.
- Parte 5: Carga de programas.
- Parte 6: Empecemos a trabajar.
- Parte 7: Grábelo en disco.
- Parte 8: Introducción a los modos de pantalla, colores y gráficos.
- Parte 9: Sonidos.
- Parte 10: Introducción a los sistemas operativos AMSDOS y CPM.
- Parte 11: Introducción al gestor de bancos de memoria.
- Parte 1: Posiciones del cursor y códigos ampliados de control en BASIC.
- Parte 2: El sistema operativo.
- Parte 3: Interrupciones.
- Parte 4: Caracteres ASCII y caracteres gráficos en BASIC.
- Parte 5: Esquemas de teclado.
- Parte 6: Sonidos.
- Parte 7: Mensajes de error de BASIC.
- Parte 8: Palabras reservadas de BASIC.
- Parte 9: Plantillas.
- Parte 10: Conexiones.
- Parte 11: Impresoras.
- Parte 12: Joysticks.
- Parte 13: Organización de los discos.
- Parte 14: Ampliaciones del sistema residentes RSX.
- Parte 15: Memoria.
- Parte 16: Emulador de consola CP/M Plus.
- Parte 17: Juego de caracteres de CP-M Plus.
- Apéndice 1. Digital Research y AMSTRAD.
- Apéndice 2. Léxico inglés-castellano y glosario.
- Apéndice 3. Que usted lo disfrute:
- Apéndice 4. Índice.