Bienvenidos a Iseries Venezuela

Las mejores prácticas, recursos, tips, enlaces, videos y artículos para informáticos relacionados con el Iseries y el As/400 lenguajes de programación RPG, ILE RPG y SQL.

The best practices, resources, tips, links, videoes and articles for computer related to the Iseries and the As/400 languages of programming RPG, ILE RPG and SQL.

Friday, September 30, 2022

Better Performance with the command TFRCTL/Mejor Performance con el comando TFRCTL

 You can read this post in any language by clicking on this gadget  =======>

  (Puedes leer esta publicacion en cualquier idioma haciendo click en esta aplicación)


 El comando TFRCTL es utilizado en programas CLP y trabaja solamente en entorno OPM. No funciona en entorno ILE. 

TFRCTL es un comando poco conocido que puede ayudar a reducir el tiempo de respuesta en procesos que tienen una secuencia de llamadas entre varios CLP  y que no requieren un entorno ILE.

 Cuando se ejecuta un programa, el sistema destina un espacio de memoria. En este espacio se almacen la información necesaria para que  el código del programa sea ejecutado y ademas las direcciones necesarias para que el programa "hijo" pueda devolver el control al programa "padre" una vez finalizada la ejecución del programa "hijo". 

En el ejemplo a continuación, el programa CLPB transfiere el control al programa CLPC utilizando el comando TFRCTL

A continuación vamos a descifrar que significa todo esto.

El comando TFRCTL se construye de la siguiente manera: 

TFRCTL PGM(library-name/program-name) PARM(CL-variable)


La siguiente gráfica puede ser ampliada haciendo click sobre ella.



 

Se puede apreciar en la secuencia de llamadas que el programa CLPC no retorna a su  programa "padre" CLPB,  sino que regresa al programa "abuelo" CLPA.

 

Esto significa que el programa "padre" CLPB desaparece de la pila de memoria. El sistema no tiene que verificar las direcciones de retorno ni  revisar las siguientes instrucciones para ejecutarlas en el programa "padre" antes de regresar al programa "abuelo" CLPA.  Esto significa una mejora del performance ya que se reduce el tiempo de ejecución del proceso.

 En la gráfica previa:

Se va a ejecutar el código resaltado en amarillo durante la secuencia de llamadas y al final del proceso se ejecutará el código resaltado en rojo. El código resaltado en gris nunca será ejecutado.

Cuando el programa "hijo" tiene parámetros, se pueden enviar estos parámetros en el comando TFRCTL siempre y cuando estos parámetros hayan sido recibidos, a su vez,  por el programa "padre". En la gráfica anterior, el programa CLPB recibe el parametro &C y a su vez lo envia al programa CLPB como parámetro. Si el programa CLPB envía al programa CLPC el parámetro &C sin haberlo recibido como parámetro de entrada, la compilación falla.

Cabe destacar que:

-Cualquier override sobre los archivos que se haya realizado en el programa CLPB persiste durante la ejecución del programa CLPC y desaparece una vez que el programa CLPC finalice su ejecución.

-Las autorizaciones que hayan sido otorgadas durante la ejecución del programa CLPB persiste durante la ejecución del programa CLPC.
 
Si te interesa tener el código presentado en este post, lo puedes descargar en este enlace:   Download Code
 

        

     Si te pareció interesante, reenvíalo a un amigo haciendo click en el sobrecito que está al final del artículo o en el enlace de Linkedin que está encima de este mensaje.  El conocimiento es valioso, compártelo. 

    Autor: Ing. Liliana Suárez

No comments: