Esta orden lee el registro 0 y asigna su contenido a d$.
Repasemos todo lo que hemos hecho hasta ahora. Hemos escrito en los tres primeros registros
sendas cadenas formadas por 20 letras 'X' cada una. Hemos cambiado las letras 'X' del registro 0
por la palabra 'PRIMERO'. Finalmente, hemos vuelto a definir d$ como una cadena de 20
espacios. Si ahora escribimos
PRINT
d$
el resultado debe ser 'PRIMEROXXXXXXXXXXXXX'. Este ejemplo ilustra una consideración
importante que se debe tener presente al utilizar estas órdenes. Si la cadena que se escribe en
un registro no lo llena completamente, los caracteres antiguos sobre los que no se ha escrito
seguirán estando en el registro. Esto puede ser ventajoso en ocasiones, pero en general será
conveniente escribir una cadena de espacios (o sea, de caracteres ASCII 32) en el registro antes
de actualizar la información en él almacenada. Lo mismo se puede decir acerca de la cadena a la
que se va a asignar los caracteres leídos en un registro: si la longitud de la cadena es mayor que
la longitud del registro, al final de ella quedarán caracteres que no habrán resultado de la
operación de lectura. Ésta es la razón por la que hemos borrado (o igualado a una cadena de
espacios) la cadena d$ antes de asignar el contenido del registro 0.
Es posible escribir una cadena en un registro que sea demasiado corto para recibir la cadena
completa. En tal caso se ignoran los caracteres de la cadena (los últimos por la derecha) que no
quepan en el registro.
Análogamente, si se lee un registro y se asigna su contenido a una cadena demasiado corta, los
caracteres que no quepan en ella serán ignorados. En las operaciones normales con cadenas,
BASIC ampliaría automáticamente la cadena para aceptar todos los caracteres, pero esto no es
así cuando se utilizan órdenes externas.
Finalmente, vamos a describir la orden |BANKFIND. Esta orden sirve para examinar los
registros en busca de una sucesión de caracteres especificada. Por ejemplo, si el registro número
24 empieza con la palabra 'DANIEL', la orden
|BANKFIND,@r%,"DANIEL"
la encontrará. Esta función es extremadamente útil en los programas de bases de datos, en los
cuales se puede necesitar, por ejemplo, buscar un nombre a lo largo del fichero.
|BANKFIND inicia la búsqueda a partir del registro actual y la continúa hasta que encuentra la
cadena o hasta el final de los 64K de memoria, si no se especifica otra cosa. Se puede incluir un
parámetro para especificar el número de registro a partir del cual se debe buscar. Después de
éste se puede incluir otro parámetro para especificar en qué número de registro se debe
interrumpir la búsqueda.
|BANKFIND también puede buscar una cadena que no esté al principio de registro. Para ello, al
principio de la cadena buscada se incluyen tantos caracteres chr$(0) como posiciones haya en el
registro antes de los buscados. Los caracteres chr$(0) actúan como 'símbolos comodín' (como
los ? en los nombres de ficheros de CP/M), con el significado de 'cualquier carácter'. Por
ejemplo,
a$=STRING$(10,0)+"DANIEL"
|BANKFIND,@r%,a$,0
busca el primer registro en el que figure la palabra 'DANIEL' en las posiciones 11ª a 16ª. Los diez
Manual de Amstrad CPC 6128 (revisión 2008) - Página 96