|
|
En la implementación de Stop las siguientes consideraciones aplican:
EVALUATE.Al ser desplegados en pantalla, los objetos se presentan (formatean) de la siguente forma:
Lo ideal sería tener una matriz única que describiera la posible conversión de datos al usar los diversos operadores relacionales, lógicos y aritméticos. Sin embargo, por las múltiples excepciones que se pueden presentar, la mejor alternativa es presentar una matriz por cada operador.
1 El resultado es la cadena "ObjAObjB". Para el caso de objetos inhibidos no se incluye el operador de inhibición o identificadores adicionales del tipo de dato (como paréntesis o llaves). Cualquier objeto diferente a cadena se convierte primero a cadena.
2 Error por tipos de datos incompatibles.
3 El resultado es una cadena a la que se le han quitado el número de caracteres indicado por ObjB a partir de la posición más a la izquierda y contando hacia la derecha. Una cadena vacía se deja si ObjA > |cadena|.
4 El resultado es una cadena a la que se le han quitado el número de caracteres indicado por ObjA a partir de la posición más a la derecha y contando a la izquierda. Una cadena vacía se deja si ObjA > |cadena|.
5 El resultado es la cadena que resulta de quitar de ObjA la aparición de ObjB (sólo una vez en caso de haber más ocurrencias). Una cadena vacía se deja si ObjA = ObjB. Si |ObjA| = 0 ó |ObjB| = 0, ObjA se deja intacto.
6 Cerradura sobre la cadena. Una cadena vacía o valores menores a 1 producirán una cadena vacía.
7 División entera.
8 El resultado es la subcadena que se extrae del objeto cadena tomando como punto de inicio la parte entera de la mantisa del objeto real y como contador la parte fraccionaria. Una cadena vacía se deja si alguno de los parametros es igual a 0 o si el punto de inicio > |cadena|.
9 El resultado es la cadena que resulta de quitar de ObjA todas las ocurrencias indicadas por ObjB. Una cadena vacía se deja si ObjB+ = ObjA. Si |ObjB| = 0 ó si |ObjA| = 0, ObjA se deja intacto.
10 Residuo de la división.
Para los operadores relaciones se presenta una matriz que explica el tipo de valor esperado. Se considera que todo tipo de objeto es factible de ser comparado para evitar errores en run-time, pero hay tipos que no es posible comparar e invariablemente se devuelve una respuesta de FALSO.
| <, <=, =, =>, >, >< | ||||||
ObjA2 ObjB1 |
ENTERO | REAL | BINARIO | CADENA | ARREGLO | INHIBIDO |
| ENTERO | 1/011 | 1/011 | 1/011 | 012 | 012 | 012 |
| REAL | 1/011 | 1/011 | 012 | 012 | 012 | 012 |
| BINARIO | 1/011 | 012 | 1/011 | 012 | 012 | 012 |
| CADENA | 012 | 012 | 012 | 1/013 | 012 | 1/014 |
| ARREGLO | 012 | 012 | 012 | 012 | 012 | 012 |
| INHIBIDO | 012 | 012 | 012 | 1/014 | 012 | 1/015 |
11 Las comparaciones se hacen por valor.
12 Aunque los elementos se consideran incompatibles para efectuar una comparación no se marca error y se devuelve un valor de FALSO.
13 Las comparaciones se hacen por contenido para igualdad y por valor ASCII para el resto.
14 Las comparaciones se hacen convirtiendo primero al objeto inhibido en cadena.
15 Ambos objetos se convierten en cadena antes de ser comparados.
Diversas situaciones se pueden presentar cuando un programa Stop se encuentra en ejecución. Se producirá una condición de error cuando se presente una de las siguientes condiciones:
Ambos errores aplican tanto para instrucciones como operaciones. El primer tipo de error aplica a aquellas situaciones en las que no se encuentra la cantidad de argumentos requeridos para llevar a cabo la operación o instrucción indicada. El segundo tipo de error se presenta cuando la cantidad de argumentos esperados (elementos en la pila) se encuentra pero algunos o varios de estos no corresponden a los que se necesitan. Para mayor detalle sobre el tipo de dato esperado por las diversas operaciones o instrucciones de Stop debe consultarse los diagramas de pila abstractos.


| Ultima actualización: . |