Funciones en Progress 4gl

Share this Post Share to Facebook Share to Twitter Email This Pin This
Progress es un lenguaje que tiende a ser para programación estructurada pero también puede ser del tipo modular, ya que nos permite crear funciones y procedimientos para poder crear modularidad en nuestros programas para poder reutilizar las funciones y sea más fácil de entender, una forma de comparar la programación modular es como cuando tenemos un teatro en casa son un buffer, un subufer, barras de sonido y un controlador, esto visto en programación el controlador es el programa principal y las barras de sonido, bufer, etc son funciones, procedimientos o subprogramas.

Las funciones en Progress 4gl tienen las siguientes características 


  • Se deben escribir al principio del programa principal, o antes de ser llamada
  • Se debe utilizar la palabra reservada FUNCTION para iniciar el inicio End Function para definir el fin de la función
  • Se debe definir el tipo de dato que regresara la función utilizando la función RETURNS
  • Puede tener parámetros de entrada o no, los cuales se definen con la palabra INPUT
  • Se utiliza la palabra reservada RETURN para devolver el resultado de la función

¿Como hacer una función en Progress 4gl?


Vamos hacer un ejemplo que nos permita obtener el código de selección de pago en el que se pago una factura de un proveedor.

FUNCTION getpaydoc RETURNS CHAR (INPUT id_invoice  LIKE Cinvoice.Cinvoice_Id):
DEF VAR vc-paysel AS CHAR NO-UNDO INITIAL "".

   FOR FIRST DOmains NO-LOCK WHERE
               DOmaincode    = global_DOmain, 
         FIRST Company OF DOmains NO-LOCK,
         FIRST CInvoice   OF Company 
                WHERE Cinvoice.Cinvoice_ID = id_invoice    NO-LOCK,
         FIRST CDOcumentInvoiceXref OF Cinvoice NO-LOCK,  
         FIRST PayselLine OF CDOcumentInvoiceXref NO-LOCK,
         FIRST PaySel OF PaySelLine NO-LOCK:          
        vc-paysel = PaySelCode.
   END.  

RETURN vc-paysel.
END FUNCTION.

  • Primero definimos el nombre de nuestra función que en este caso es getpaydoc
  • La función nos regresara un valor tipo carácter, esto lo decimos con la instrucción RETURNS CHAR
  • Vamos a tener en este caso un parametro de entrada que es la parte del programa INPUT id_invoice  LIKE Cinvoice.Cinvoice_Id
  • Definimos la variable con la que regresaremos el valor resultado esto con la parte de DEF VAR vc-paysel AS CHAR NO-UNDO INITIAL "".
  • Realizamos la ejecución del query y asignamos el resultado a la variable
  • Regresamos el resultado RETURN vc-paysel.

¿Como utilizar funciones en Browse de QAD?


En QAD que es el ERP que conozco a más detalle tiene unos reportes que se llaman browse o vistas y lo que permite hacer es crear reportes con columnas, es muy ágil de diseñar porque es en base al diagrama entidad relación que se adicionan las tablas a utilizar y se seleccionan las columnas que queremos visualizar. Adicional a poder utilizar las tablas podemos colocar funciones en el apartado de Local Variables donde podemos escribir las funciones que requiramos en el browse.
Para poder utilizar la función en el Browse debemos agregar un campo calculado, vamos a utilizarlo como se muestra en la imagen, colocando en la parte de Expresión el llamado a la función que definimos antes.


Con esto ya hemos creado una función para poder colocar en un programa de Progress o en un Browse.

No olvides compartirnos y seguirnos en este blog o en Facebook.

No hay comentarios.:

Publicar un comentario