Páginas dinámicas HTML |
|
Sisinf 7.2 + |
1. Introducción.
El presente instructivo sirve para explicar la nueva opción de SISINF de páginas dinámicas de HTML.
Desde la versión 7.0 de SISINF se puede ejecutar cualquier programa desde Internet en dos formas, una mediante la instalación del Emulador Sisinf y así mediante un icono accesar la aplicación, otra mediante un buscador. Esta última quizá un poco lenta para consultas pequeñas y ocasionales, dado que se tenían que cargar los archivos JAR.
Así se inicia la opción de páginas dinámicas que consiste en generar HTML con la información del banco de datos de Sisinf, pensando en aquellos usuarios ocasionales y de consultas pequeñas.
Importante recalcar que esta opción NO sustituye al emulador ya que su uso es en las condiciones señaladas y que además, el consumo de recursos es mayor.
Para que Usted pueda hacer uso de esta opción necesita:
Un servidor de paginas HTML tanto hardware como software donde se tengan páginas estáticas de su empresa.
Un servidor de Servlet de JAVA v2.4 que se pueda comunicar con el servidor de páginas estáticas.
Acceso al módulo ELSI de Sisinf V7.2 desde el servidor.
Existen varios productos en el mercado, algunos de ellos sin costo como son
Apache y Tomcat que sirven como servidores de paginas estáticas y dinámicas.
El funcionamiento general de la opción partiendo de que Usted tiene una o varias páginas estáticas; es poner en una de ellas una liga (URL) especial, con la cual se pide la ejecución de un programa hecho con la tecnología de JAVA Servlet, dicho programa es el que se encarga de procesar las páginas dinámicas de Sisinf.
Al ejecutarse este programa pide a su vez la ejecución de un programa de Sisinf en el módulo ELSI. Este programa será el encargado de generar las páginas, así como de leer la información que se considere adecuada.
Un ejemplo sencillo puede ser aquel en que el programa de Sisinf forma una página para pedir ciertos datos y la envía al usuario, una vez que el usuario da la información, el programa la lee y mediante una consulta al Banco de Datos genera una nueva página con el resultado de su consulta.
En este proceso cada "cliente" es independiente y cada uno tiene un ELSI para ejecutar su programa de Sisinf.
Se asume lo siguiente para este instructivo:
Usted conoce de HTML.
Ya instaló y ejecutó el ejemplo. (ver punto 9. Instalación)
2. Estructura del programa de Sisinf.
Los programas de Sisinf para esta opción deben de cumplir con ciertos requisitos o se dará un error en la ejecución de los mismos.
En forma general la estructura que se repite dentro de los mismos es:
Generar la página HTML y enviarla.
Leer información del usuario.
Buscar en el banco de datos de Sisinf la información deseada.
Volver a formar otra página.
Un caso especial es omitir los puntos 2 y 3, en cuyo caso se genera una página HTML y cuando se ejecute una liga de regreso se genera otra.
También el punto 3 se puede omitir si la página generada es un menú.
Las instrucciones de SISINF para generar una página y enviarla son:
| ESCRIBIR TERMINAL 'Inicio-HTML' |
| OPCION TEMPORAL 10 /INTERNET /DISCO 'HTML' /ESCRITURA /EXTERNO |
| ESCRIBIR TEMPORAL 10 '' |
| ..... |
| OPCION TEMPORAL 10 |
La explicación es la siguiente:
Se inicia con una instrucción de ESCRIBIR TERMINAL 'Inicio-HTML'
Se abre un temporal donde se escribirá la página, el número del temporal puede ser cualquiera, pero el disco tiene que ser HTML. Las opciones de /INTERNET /ESCRITURA y /EXTERNO son necesarias.
Se escriben las instrucciones de HTML en el temporal
Se cierra el temporal.
En el programa PSINA0 se puede observar que se repite esta estructura.
La forma de leer información va relacionada con la página generada, la cual tiene que tener FORMAS. Así en el programa PSINA0 la primera página desplegada pide el número y la clave para con eso saber quien es el usuario. La forma se genera como:
| <FORM ACTION="&Sisinf-URL" METHOD=POST><CENTER> |
| Teclee su número <INPUT TYPE="TEXT" NAME="numero"<<BR><BR> |
| Teclee su clave <INPUT TYPE="PASSWORD" NAME="clave"<<BR><BR> |
| <INPUT TYPE="SUBMIT" VALUE="Entrap"> |
| </FORM> |
Para leer la información se puso en el programa:
| LEER TERMINAL EJECUTA 15 'numero' NUM-CVE |
| LEER TERMINAL EJECUTA 15 'clave' CVE-CVE |
Los siguientes comentarios son aplicables:
Por cada campo a leer debe haber un LEER TERMINAL.
Si hay error como información no numérica, se excede longitud, ... o bien el usuario da / se EJECUTA 15.
Note que 'numero' aparece en la instrucción de LEER TERMINAL y en el parámetro NAME de la forma. Es decir de este modo se hace la liga entre la forma y la variable en el programa donde se almacena su valor.
Otros parámetros de la forma son ACTION y METHOD los cuales se deberán de poner igual.
Por ultimo se define en la forma el botón de "Entrar" para que una vez que la información sea tecleada por el usuario, esta se envié al servidor y el programa de Sisinf la lea.
La lógica completa del programa seria:
| IND-ERROR = 0 | |
| 10 | ESCRIBIR TERMINAL 'Inicio-HTML' |
| OPCION TEMPORAL 10 /INTERNET /DISCO 'HTML' /ESCRITURA /EXTERNO | |
| ESCRIBIR TEMPORAL 10 '<HTML>' | |
| ESCRIBIR TEMPORAL 10 '<HEAD><TITLE> Prueba de internet </TITLE></HEAD>' | |
| ESCRIBIR TEMPORAL 10 '<BODY BGCOLOR="#FDF5E6">' | |
| ESCRIBIR TEMPORAL 10 '<H1 ALIGN="CENTER">Registro en el sistema </H1>' | |
| ESCRIBIR TEMPORAL 10 '<FORM ACTION="&Sisinf-URL" METHOD=POST>' | |
| ESCRIBIR TEMPORAL 10 '<CENTER>' | |
| ESCRIBIR TEMPORAL 10 'Teclee su número' | |
| ESCRIBIR TEMPORAL 10 '<INPUT TYPE="TEXT" NAME="numero"><BR><BR>' | |
| ESCRIBIR TEMPORAL 10 'Teclee su clave' | |
| ESCRIBIR TEMPORAL 10 '<INPUT TYPE="PASSWORD" NAME="clave"><BR><BR>' | |
| ESCRIBIR TEMPORAL 10 '<INPUT TYPE="SUBMIT" VALUE="Entrar">' | |
| ESCRIBIR TEMPORAL 10 '</FORM>' | |
| SI IND-ERROR = 1 $ | |
| ESCRIBIR TEMPORAL 10 '<P> Numero o clave inválidos </P>' | |
| ESCRIBIR TEMPORAL 10 '</BODY>' | |
| ESCRIBIR TEMPORAL 10 '</HTML>' | |
| OPCION TEMPORAL 10 | |
| * | |
| * | Leer número y clave |
| * | |
| LEER TERMINAL EJECUTA 15 'numero' NUM-CVE | |
| LEER TERMINAL EJECUTA 15 'clave' CVE-CVE | |
| BUSCAR DISCO CONT EJECUTA 15 PRIN-G1 NUM-CVE | |
| IGUAL CONT CVE-CVE CVE-CVE-D | |
| LEER DISCO CONT NOM-CVE CVE-CVE-D | |
| SI CVE-CVE = CVE-CVE-D EJECUTA 20 | |
| 15 | IND-ERROR = 1 |
| EJECUTA 10 |
Note la lógica, formar HTML, leer información, accesar banco de datos, si hay error volver a formar HTML, ....
3. Inicio de sesión.
Una vez identificado el usuario se inicia la sesión de forma que el control lo tiene
el programa de Sisinf en cuanto a cual es la siguiente página HTML a desplegar
En forma general se pudiera desplegarse algo más de información del usuario
y terminar, o un menú para que el usuario decida que hacer a continuación,
también pudiera ser una secuencia de páginas, etc. Para el caso del ejemplo se
pasa a un menú.
Continuando con PSINA0 la parte que despliega un menú y lee la opción del mismo sería:
| * | |
| * | Menu |
| * | |
| 20 | ESCRIBIR TERMINAL 'Inicio-HTML' |
| 22 | OPCION TEMPORAL 15 /INTERNET /DISCO 'HTML' /ESCRITURA /EXTERNO |
| ESCRIBIR TEMPORAL 15 '<HTML>' | |
| ESCRIBIR TEMPORAL 15 '<HEAD><TITLE> Menú del sistema$ | |
| $</TITLE></HEAD>' | |
| ESCRIBIR TEMPORAL 15 '<BODY BGCOLOR="#FDF5E6">' | |
| * | |
| MOVER '<H1 ALIGN="CENTER">Bienvenido' A X80 | |
| MOVER NOM-CVE A X80 /AGREGAR | |
| MOVER '</H1>' A X80 /AGREGAR | |
| ESCRIBIR TEMPORAL 15 X80 | |
| * | |
| ESCRIBIR TEMPORAL 15 '<FORM ACTION="&Sisinf-URL" METHOD=POST>' | |
| ESCRIBIR TEMPORAL 15 '<CENTER>' | |
| ESCRIBIR TEMPORAL 15 '<INPUT TYPE="RADIO" NAME="botón"$ | |
| $VALUE="cgi"> Variables CGI ' | |
| ESCRIBIR TEMPORAL 15 '<INPUT TYPE="RADIO" NAME="botón"$ | |
| $VALUE="vck"> Ver cookies ' | |
| ESCRIBIR TEMPORAL 15 '<INPUT TYPE="RADIO" NAME="botón"$ | |
| $VALUE="pck"> Poner cookies ' | |
| ESCRIBIR TEMPORAL 15 '<INPUT TYPE="RADIO" NAME="botón"$ | |
| $VALUE="est"> Ver estática ' | |
| ESCRIBIR TEMPORAL 15 '<INPUT TYPE="RADIO" NAME="botón"$ | |
| $VALUE="fin"> Terminar <BR>' | |
| ESCRIBIR TEMPORAL 15 '<INPUT TYPE="SUBMIT" VALUE="Entrar">' | |
| ESCRIBIR TEMPORAL 15 '</FORM>' | |
| ESCRIBIR TEMPORAL 15 '</BODY>' | |
| ESCRIBIR TEMPORAL 15 '</HTML>' | |
| OPCION TEMPORAL 15 | |
| LEER TERMINAL EJECUTA 20 'botón' OP-M | |
| SI OP-M = 'cgi' EJECUTA 30 | |
| SI OP-M = 'pck' EJECUTA 40 | |
| SI OP-M = 'vck' EJECUTA 60 | |
| SI OP-M = 'est' EJECUTA 80 | |
| SI OP-M = 'fin' EJECUTA 90 | |
| EJECUTA 20 |
Los siguientes comentarios son aplicables:
Como siempre se inicia con ESCRIBIR TERMINAL 'Inicio-HTML' , si no marcara error de ejecución.
Se forma el temporal 15 con la nueva página HTML la cual es un menú.
Una vez formado se ejecuta OPCION TEMPORAL 15 para cerrar el temporal y luego se puede leer. Si no se pone esta instrucción marcara error en la ejecución.
Note que el LEER TERMINAL tiene literal 'botón' que es igual al NAME de la forma en los diferentes botones. También cada botón tiene un VALUE mismo que se almacena en OP-M dependiendo de que seleccione el usuario.
Otros parámetros de FORM se conservan iguales.
Note que el encabezado se forma en una variable X80 en la línea 10 a 15 y luego se escribe en el temporal. Recuerde que los temporales EXTERNOS ponen el carácter de coma entre campo y campo, afectando al HTML.
4. Otras opciones.
Como resumen se puede establecer que entre las instrucciones de ESCRIBIR TERMINAL y la de OPCION TEMPORAL para cerrar, se debe formar el HTML.
También dentro de este rango se puede leer o escribir otros archivos temporales de esta opción, que se explican a continuación.
Existen en el servidor unas variables donde se almacena cierta información como sería la versión del HTML, el nombre del servidor, ... dichas variables se les da el nombre de "Variables CGI" y se pueden conocer leyendo un archivo temporal.
Continuando con el ejemplo de PSINA0 una opción del menú es desplegar las variables CGI. La lógica para hacerlo es:
| * | |
| * | listar variables CGI |
| * | |
| 30 | ESCRIBIR TERMINAL 'Inicio-HTML' |
| OPCION TEMPORAL 20 /INTERNET /DISCO 'HTML' /ESCRITURA /EXTERNO | |
| ESCRIBIR TEMPORAL 20 '<HTML>' | |
| ESCRIBIR TEMPORAL 20 '<HEAD><TITLE> Variables CGI$ | |
| $</TITLE></HEAD>' | |
| ESCRIBIR TEMPORAL 20 '<BODY BGCOLOR="#FDF5E6">' | |
| ESCRIBIR TEMPORAL 20 '<TABLE BORDER=1 ALIGN="CENTER">' | |
| ESCRIBIR TEMPORAL 20 '<TR BGCOLOR="#FFAD00">' | |
| ESCRIBIR TEMPORAL 20 '<TH>Variable CGI <TH>Valor' | |
| * | |
| OPCION TEMPORAL 25 /INTERNET /DISCO 'CGI' /LECTURA /ASCII | |
| 32 | LEER TEMPORAL 25 EJECUTA 34 NOM-CGI VAL-CGI |
| MOVER '<TR><TD>' A X80 | |
| MOVER NOM-CGI A X80 /AGREGAR | |
| ESCRIBIR TEMPORAL 20 X80 | |
| MOVER '<TD>' A X80 | |
| MOVER VAL-CGI A X80 /AGREGAR | |
| ESCRIBIR TEMPORAL 20 X80 | |
| EJECUTA 32 | |
| 34 | OPCION TEMPORAL 25 |
| * | |
| ESCRIBIR TEMPORAL 20 '</TABLE>' | |
| ESCRIBIR TEMPORAL 20 '<A HREF="&Sisinf-URL"> Regresar </A>' | |
| ESCRIBIR TEMPORAL 20 '</BODY></HTML>' | |
| OPCION TEMPORAL 20 | |
| EJECUTA 20 |
Los siguientes comentarios son aplicables:
Con la instrucción OPCION TEMPORAL 25 ... /DISCO 'CGI' ... se abre el temporal especial para leer las variables CGI. Las demás opciones de la instrucción deben ser las mismas.
Con la instrucción LEER TEMPORAL 25 EJECUTA 34 NOM-CGI VAL-CGI se lee el nombre y valor de cada una de ellas. Note que NOM-CGI debe ser X 20 y VAL-CGI debe ser X 60. Con los valores se forma la tabla de la página. Si la suma de estas longitudes no es 80 dará error de ejecución.
Note que en este caso NO se va a leer información por lo que se regresa a formar el HTML del menú después de cerrar el temporal.
En la página se tiene la liga '<A HREF="&Sisinf-URL"> Regresar </A>' para que cuando el usuario termine de ver la información de las variables pida la siguiente página que en este caso por la lógica del programa de Sisinf es desplegar nuevamente el menú.
De la misma forma que se leen las variables CGI se pueden leer los "cookie" que tenga almacenados el buscador. En este caso el /DISCO debe ser 'COOKIE' y la longitud de las variables para el nombre y el valor deben ser X 40. La lógica en PSINA0 sería:
| * | |
| * | Leer cookie |
| * | |
| 60 | ESCRIBIR TERMINAL 'Inicio-HTML' |
| OPCION TEMPORAL 20 /INTERNET /DISCO 'HTML' /ESCRITURA /EXTERNO | |
| ESCRIBIR TEMPORAL 20 '<HTML>' | |
| ESCRIBIR TEMPORAL 20 '<HEAD><TITLE> Cookies$ | |
| $</TITLE></HEAD>' | |
| ESCRIBIR TEMPORAL 20 '<BODY BGCOLOR="#FDF5E6">' | |
| ESCRIBIR TEMPORAL 20 '<TABLE BORDER=1 ALIGN="CENTER">' | |
| ESCRIBIR TEMPORAL 20 '<TR BGCOLOR="#FFAD00">' | |
| ESCRIBIR TEMPORAL 20 '<TH>Nombre <TH>Valor' | |
| * | |
| OPCION TEMPORAL 35 /INTERNET /DISCO 'COOKIE' /LECTURA /ASCII | |
| 62 | LEER TEMPORAL 35 EJECUTA 64 NOM-CK VAL-CK |
| MOVER '<TR><TD>' A X80 | |
| MOVER NOM-CK A X80 /AGREGAR | |
| MOVER '<TD>' A X80 /AGREGAR | |
| MOVER VAL-CK A X80 /AGREGAR | |
| ESCRIBIR TEMPORAL 20 X80 | |
| EJECUTA 62 | |
| 64 | OPCION TEMPORAL 35 |
| * | |
| ESCRIBIR TEMPORAL 20 '</TABLE>' | |
| ESCRIBIR TEMPORAL 20 '<A HREF="&Sisinf-URL"> Regresar </A>' | |
| ESCRIBIR TEMPORAL 20 '</BODY></HTML>' | |
| OPCION TEMPORAL 20 | |
| EJECUTA 20 |
También es posible escribir los cookies que se quieran, para ello en el
programa PSINA0 se despliega una forma para leerlos y luego los escribe
mediante la siguiente lógica:
| * | |
| 44 | ESCRIBIR TERMINAL 'Inicio-HTML' |
| OPCION TEMPORAL 30 /INTERNET /DISCO 'COOKIE' /ESCRITURA /ASCII | |
| TIE-CK = 600 | |
| 46 | NUM-CK = NUM-CK - 1 |
| SI NUM-CK = 0 EJECUTA 48 | |
| ESCRIBIR TEMPORAL 30 NOM-CK-V ( NUM-CK ) $ | |
| VAL-CK-V ( NUM-CK ) TIE-CK | |
| EJECUTA 46 | |
| 48 | OPCION TEMPORAL 30 |
| EJECUTA 22 |
Los siguientes comentarios son aplicables:
Ahora el temporal 30 se abre de /ESCRITURA en el /DISCO 'COOKIE' para poner los cookies leídos.
Se debe de escribir el nombre, el valor y una variable N2-0 en que se especifica el tiempo que durará. Un valor de 0 es borrarlo, un valor de 1 es por la sesión y un valor mayor a 1 son los segundos de duración, en este caso 10 minutos.
Note la lógica, iniciar con ESCRIBIR TERMINAL, pasar los cookies y luego regresar a formar el menú, al final el OPCION TEMPORAL 15 para cerrar y luego leer la opción de menú.
Los cookies sirven para definir valores en el buscador del usuario de forma que la siguiente vez que accese la página se conozcan sus valores. En un ejemplo mas real la lógica pudiera ser:
Iniciar con ESCRIBIR TERMINAL.
Leer los cookies y variables CGI, con esto determinar la página a formar.
Formar la página.
El programa PSINA0 ha sido modificado para que no se tenga que teclear
la contraseña al inicio y esta como el PSINA1. Para ello es necesario registrar
un "cookie" con el nombre 'USUARIO' y con un valor del número de clave
como 4 dígitos
5. URL en los HTML.
Note que en todos los HTML generados por el programa se usa "&Sisinf-URL"
para poner la liga, que siempre es la misma ya que el programa de SISINF es el
que tiene el control y por lógica forma la siguiente página.
Internamente "&Sisinf-URL" será remplazado por el URL real o sea el que se
puso en la página estática para iniciar la ejecución de las dinámicas. Si Usted ve
el código fuente de las páginas generadas del ejemplo, vera que ya esta cambiado.
El uso de "&Sisinf-URL" sirve para:
Si cambia de servidor con un nuevo URL no se necesita cambiar el programa.
Control de las sesiones.
Como ya se explico cuando se inicia la ejecución de una página dinámica se
inicia también una sesión. Dado que los buscadores solo piden al servidor
páginas, entonces se necesita otra información que le indique al servidor que
es el mismo usuario. Lo anterior se logra con "cookies" o bien agregando
información al URL.
6. Otra manera de leer información.
También se puede especificar "&Sisinf-SSL" y formara la siguiente página
en una conexión segura. Nota si ejecuta esta opción y da "página no encontrada"
probablemente los servidores (páginas y servlet) NO estén configurados para SSL.
Para las gráficas de preferencia deben estar donde se puso la página con el URL
especial que inicia el proceso, en el URL de dichas gráficas poner "&Sisinf-SER"
para que internamente se ponga el nombre del servidor o host.
Es posible no usar los "&Sisinf-URL", "&Sisinf-SSL" y "&Sisinf-SER" y poner
directamente el URL pero este caso puede NO trabajar el concepto de sesión
si el usuario del buscador ha restringido los "cookie".
Existe otra manera de leer información y es a través de las ligas para regresar
al proceso que siempre tiene "&Sisinf-URL" . Esta manera consiste en pasar aquí
los parámetros como si fuera una forma.
Continuando con el programa PSINA0 se tiene una parte para desplegar una
página estática, la lógica es:
| * | |
| * | Página estática |
| * | |
| 80 | ESCRIBIR TERMINAL 'Inicio-HTML' |
| OPCION TEMPORAL 20 /INTERNET /DISCO 'HTML' /ESCRITURA /EXTERNO | |
| OPCION TEMPORAL 50 /NOMBRE 'KRATOS.HTM' /LECTURA /EXTERNO | |
| 82 | LEER TEMPORAL 50 EJECUTA 84 X80 |
| ESCRIBIR TEMPORAL 20 X80 | |
| EJECUTA 82 | |
| 84 | OPCION TEMPORAL 20 |
| OPCION TEMPORAL 50 | |
| LEER TERMINAL EJECUTA 20 'opc' OP-M | |
| SI OP-M = 'ter' EJECUTA 90 | |
| EJECUTA 20 |
Parte de la página estática de nombre KRATOS.HTM tiene:
| <img width=344 height=106 src="//&Sisinf-SER/Kratos.gif"><br> |
| <A HREF="&Sisinf-URL"> Regresar </A><br> |
| <A HREF="&Sisinf-SSL"> Regresar (seguridad)</A><br> |
| <A HREF="&Sisinf-URL?opc=ter"> Terminar </A><br> |
| </body> |
| </html> |
Los siguientes comentarios son aplicables:
Ahora la página no se forma en el programa, sino que se lee de un archivo con nombre KRATOS.HTM. La lógica es leer y pasar al otro temporal. PRECAUCION: Solo se leen registros de 80 caracteres máximo, si el archivo tiene registros mayores la página no quedara bien.
En el URL de "Terminar" se puso "?opc=ter" de forma que se simula lo que el buscador pone con <FORM> en los parámetros de NAME y VALUE.
El LEER TERMINAL si no hay información se efectúa EJECUTA 20 si no se lee 'opc' en OP-M y si es igual a 'ter' se termina.
Note que también se pide que el menú se reciba en forma segura al poner "&Sisinf-SSL"
La liga de la imagen tiene "Sisinf-SER" entonces aquí se pone el nombre del servidor (HOST) que es lo mismo que Usted usó para llegar a la página con que se inicia el ejemplo y donde esta dicha página debe estar también la imagen.
7. Parámetros del servidor.
En el servidor de servlet se deben de definir los siguientes parámetros:
IP La dirección IP donde esta el módulo ELSI.
Programa: La información que Usted teclea para ejecutar un programa, Si en CPS la clave de acceso tiene prefijados la DBD y directorios, solo no tiene el programa, entonces la información será clave de acceso e iniciales de programa, separados por una coma.
Opcional URL: El valor a remplazar con &Sisinf-URL, este parámetro se saca internamente solo se deberá poner si se desea otro valor.
Opcional SER: El valor a remplazar con &Sisinf-SER, este parámetro se saca internamente solo se deberá poner si se desea otro valor.
Si los parámetros del servidor NO se pueden poner, los dos primeros se pueden
especificar en la página que tiene el URL especial que inicia el proceso de los servlets.
Para ello vea el instructivo de instalación del ejemplo.
8. Recomendaciones.
La ventaja de la primera opción es que los usuarios del sistema no verán esta información
con el buscador.
Se recomienda que primero trabaje el ejemplo, ya que este ya esta probado y luego genere sus propias páginas. Recuerde:
Muchas instrucciones de Sisinf NO están disponibles para esta opción, básicamente las de OPCION TERMINAL AREA, TERMINAL, OPCION IMPRIMIR. Se dará error de ejecución si se tratan de usar. Otras no efectúan nada como ERROR o ESCRIBIR TERMINAL, esta última salvo lo iniciado.
Tanto los servidores como el buscador, están diseñados para trabajar en producción y no en pruebas. Bajo ciertas condiciones se puede desplegar una página de buffers internos y no la que debería. Si esto pasa, puede confundir en la etapa de pruebas, al hacer cambios y no ver los resultados. Como solución es borrar la historia en el buscador y reiniciar el equipo.
Se pueden ejecutar los programas de esta opción con ELSI-Emulador, los temporales HTML serán escritos en un archivo. Lo anterior puede ayudar a encontrar errores.
La opción de ver el "código fuente" de los buscadores también puede ayudar.
Por el diseño de los buscadores, en que NO hay relación entre una petición y la siguiente, se tiene el concepto de sesión que ya se discutió en este instructivo, pero si un usuario permanece inactivo o cancela la ejecución del buscador, tanto el servidor como ELSI se quedan en espera por 15 minutos. Transcurrido dicho tiempo cancelan la sesión y la ejecución del programa.
Se recomienda tener una "página de terminar" en que el programa de Sisinf ejecute un FIN, de forma que se termina ELSI y la sesión.
Se recomienda también que el programa de Sisinf NO dejar registros bloqueados al efectuar LEER TERMINAL.