> -----Mensaje original-----
> De:   Fernando Pérez [SMTP:[EMAIL PROTECTED]
> Enviado el:   martes, 20 de septiembre de 2005 12:46
> Para: [email protected]
> Asunto:       Re: Consulta sobre programas de servicio
> 
> Como dijo Jack el destripador, vampos por partes:
> 
        Hola Jack, digo Fernando.
> 
> Los programas de servicio permanecen activos hasta que finaliza el grupo
> de activación en el que se han creado. Si este grupo de activación es el
> grupo por defecto, solamente se desactivarán al reiniciar la sesión.
> 
        ¿Y si no es el grupo por defecto? Me da la sensación que tampoco me
lo desactiva. A no ser que el menú también se esté ejecutando en el mismo
grupo.
> 
> Lo que hacemos nosotros es que el programa gestor de menús llama a un
> progama 'puente', que tiene ACTGRP = *NEW, y que llama al programa a
> ejecutar, que tiene ACTGRP = *CALLER (todos los programas lo tienen así).
> De esta manera, a cada ejecución de un punto de menú se crea un grupo de
> activación, que será común para todos los programas que se ejecuten hasta
> volver al menú (y se consigue también que al salirse al menú se recoja la
> versión modificada del programa y los programas de servicio). Así, los
> programas de servicio que se hayan podido activar se desactivarán al
> volver al menú, y también se cerrarán los ficheros que pudieran estar
> abiertos y se liberará la memoria dinámica asignada con MALLOC.
> 
        Tenía entendido que un grupo de activación se mantenía "abierto"
hasta que se reclamaban recursos (RCLRSC). ¿Qué aspecto tiene ese programa
puente? Me imagino que usarás QCMDEXC o algo parecido para hacer la llamada
al programa a ejecutar.

> Para que esto funcione, todos los programas han de tener grupo de
> activación *CALLER (en contadas ocasiones, cuando es necesario, lo tienen
> a *NEW y tampoco causa problemas, pero no suele darse el caso). Esto
> implica que ningún programa ha de ejecutarse en el grupo de activación por
> defecto. O sea, que todos los programas OPM se han de convertir a ILE (las
> cl's también).
> 
        Esto puede ser un problema. Buscaré alguna solución intermedia.
> 
> En cuanto a los ficheros, nosotros los tenemos definidos con *USROPN. Así,
> solamente se abren los ficheros tal y como se van necesitando (antes de
> acceder comprobamos si están abiertos con IF NOT %OPEN , y si no lo están
> los abrimos con OPEN). En la medida que se van metiendo ficheros en los
> programas de servicio, esto se hace bastante necesario por temas de
> rendimiento.
> 
        Este mismo sistema es el que he usado hasta ahora.
> 
> En el tema de añadir ficheros en programas de servicio, lo que me preocupa
> es que, independientemente de que lo abras o no, el declarar cada fichero
> incrementa la cantidad de memoria estática que utiliza el programa. Esto
> en un programa de servicio aislado no es demasiado importante, pero
> nuestros programas de servicio se requieren entre ellos, lo cual puede
> implicar que por acceder a una función de un programa de servicio
> provoques un gasto de memoria estática correspondiente a todos los
> ficheros usados tanto por ese programa de servicio como por los programas
> de servicio que éste requiera, y los que requieran a su vez éstos, ... Por
> eso intentamos agrupar las funciones en programas de servicio de forma que
> se minimice en lo posible esta circunstancia. 
> 
> Ánimo con los programas de servicio. Las ventajas que aportan hacen que
> valga la pena el esfuerzo.
> 
> Conozco sobradamente sus virtudes pero la cuestión es que todavía no tengo
> muy claro el funcionamiento de los grupos de activación y temas de
> rendimiento (en espacio y tiempo).
> 
        Gracias por tus comentarios.

        Un saludo,

        Javier Mora
        Dpto. Informática
        Dialsur S.A.U.


__________________________________________________
Forum.HELP400 es un servicio más de NEWS/400.
© Publicaciones Help400, S.L. - Todos los derechos reservados
http://www.help400.es
_____________________________________________________

Para darte de baja visita la siguente URL:
http://coyote.combios.es/mailman/listinfo/forum.help400

Responder a