
Estos Comandos devuelven a nuestro programa una lista en la que figuran todos los registros en el orden establecido en el Indice y que *****plen las condiciones solicitadas. Como la lista puede ser muy larga se hahilitan dos parámetros para recibir solo un número de registros a partir de una posición, esto nos permite recorrer un gran Archivo y traer solamente las líneas de datos que componen la Página vamos a presentar.
En nuestro programa solo tendremos que hacer una lectura en disco por cada número de registro de la lista devuelta por el programa de ISAM, números que vienen separados con coma por lo que resulta muy fácil, veamos un ejemplo para PHP:
$nConsu = $cabecera; // Obtener el Número de Consulta.
$Longi = 300; // Longitud registro de Respuestas
$nLineas = 20; // Indica 20 líneas por Página.
$inicio += $nLineas; // Avance de Página.
$resul = exec("serafoX l/Respuestas/0/".$nConsu."/".$inicio."/".$nLineas."");
$totRegis = strtok( $resul, "/");
echo "Total registros encontrados:".$totRegis;
$nuReg = strtok( $resul, ",");
while($nuReg){
fseek( $fich, $nuReg*$Longi );
$Buf = fread( $fich, $Longi );
SEPARACION EN CAMPOS DEL REGISTRO $Buf LEIDO
Y CREACION DE HTML PARA PRESENTAR LA LINEA
$nuReg = strtok( $resul, ",");
}
La primer línea supone que hemos leido una Consulta y tenemos su número que es $nConsu. Hemos utilizado el Comando l/Respuestas/etc. que nos devuelve una string con un número que es el total de registros encontrados y un / slash de separación seguido de los números de Registro a presentar separados por coma, los cuales vamos seleccionando con strtok, leyendo y presentando en el subsiguiente bucle while.
Por supuesto también se dispone de los Comandos clásicos como la Creación del Archivo de Indices, Inserción de una Clave, Eliminar, Buscar una sola Clave, Primera, Siguiente, Anterior, Ultima.
Aprovechando la operativa descrita, se habilita la posibilidad de ejecutar varios Comandos en una sola llamada al programa de ISAM, para casos como en las modificaciones de Claves donde usaremos primero el de Eliminar todas las Claves del registro y a continuación el de Insertar los nuevos valores, otro caso, y este el más interesante, nos permite seleccionar varios Indices del mismo Archivo y obtener una lista con los que *****plen todas las condiciones, y con del orden de clasificación de cualquiera de los Indices implicados, p.e. todos los registros del mismo Cliente comprendidos entre dos Fechas, para lo que usaremos un Comando g/ARCHIVO/2/cliente para seleccionar los del Cliente, y otro con k/ARCHIVO/3/fch1/fch2 para Limitar las Fechas. Hemos supuesto el Indice=2 para Cliente y el Indice=3 para Fecha.
Para obtener estos resultados se hace una sola llamada a ISAM con los Comandos seguidos y separados por chr(198) el caracter ASCII Æ = 198. En el caso de listas es obligatorio un número que indica cuál de ellas impone el orden en la lista resultante, en caso contrario no se realiza el cruce de los diferentes Indices. e/ARCHIVO/etc.Æh/ARCHIVO/etc. para el primer ejemplo y g/ARCHIVO/2/clienteÆ0k/ARCHIVO/3/fch1/fch2 para el segundo, donde el cero que acompaña al separador indica que el orden de los datos resultante será el del comando cero, o sea el Indice 2, y si deseamos orden por Fecha que es el Indice 3 pondremos un 1 con el separador.
URL: http://www.phpisam.com