Ir al contenido principal

Como crear Funciones en Progress 4gl

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 subuffer, barras de sonido y un controlador, esto visto en programación el controlador es el programa principal y las barras de sonido, buffer, etc son funciones, procedimientos o subprogramas.

Paradigma Programación Modular


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

¿Cómo 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.

¿Cómo utilizar funciones en Browse o vistas 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.
La ventaja de tener funciones como pueden observar es que podemos reutilizarlas en varios programas sin tener que volver a escribirlas, pueden incluso ir creando sus propias librerías. 

Otros artículos en este blog acerca de Progress 4gl

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

Comentarios

  1. Hola Ana: Buscando alguna información sobre progress me apareció una referencia a tu vlog en google . . Aprovecho para saludarte. Gustavo. (quedó pendiente compartirte la experiencia de la migración a Vancouver . . espero el proyecto de migración de tu parte siga en pie)

    ResponderBorrar
  2. Hola. Me ha sido de gran utilidad este blog. Si bien usando la misma tabla del ejemplo (pl_mstr) me funciona a la perfección, no lo he logrado con otras tablas como pt_mstr o spt_mstr. Sabes que me puede estar bloqueando? Muchas gracias!

    ResponderBorrar
    Respuestas
    1. No deberias tener problema es el mismo proceso solo cambia la tabla, revisa que los campos esten visible y revisa el valor de dominio

      Borrar

Publicar un comentario

Entradas más populares de este blog

Graficar funciones en Python con dataframes

Bienvenidos a un nuevo post, en esta semana, en esta ocasión les quiero platicar acerca de una librería en Python que se llama  matplotlib  que nos sirve para gráfica funciones de  matemáticas. Habitualmente en Python existen muchas librerías, lo que hay que hacer es primero investigar si ya existe alguna que nos ayude y entenderla antes de inventar el hilo negro, en mi caso encontré la librería  Matplotlib Para instalar deben utilizar el comando PIP en 2.7 Instalando en Python 3.7 Si tienen Python 2.7 deben realizar la ejecución de estos 2 comandos desde consola python -m pip install -U pip python -m pip install -U matplotlib Aunque lo más recomendable es utilizar la versión 3.7 o superior de Python. Programa para graficar en Python import matplotlib.pyplot as plt import numpy as np import math as mt def move_spines():     """Esta funcion divide pone al eje y en el valor      0 de x para dividir claramente los valores positivos y     negativos.&quo

Ejemplo Macro en Word

Hola: ¿Sabían que no solo en Excel pueden hacer Macros?  ¡¡¡También en Outlook, Word, Power Point,Access  es posible hacer Macros!!!  ☺️ Ya que Word, Excel, Power Point,Access son de familia Microsoft y Visual Basic también es que podemos programar nuestras macros en esta paquetería. Como hemos visto antes, para poder programar nuestras macros, necesitamos primero configurar la Barra de tareas de Developer o Desarrollador Seleccionan el Menu File>Options>Customize Ribbon o en Español Archivo>Opciones>barra de tareas Despues la parte de seguridad de las macros Menu File>Options>Trus Center o Archivo>Opciones>Centro de Seguridad y marcamos como se ve en la imagen, la cuarta opción y el combo Ejemplo Vamos hacer un ejemplo donde, tengamos que generar varios diplomas de fin de curso, pero con una lista de Nombres , entonces vamos a crear un nuevo archivo en Word y le vamos a guardar como tipo Macro  Tenemos una plantill

Ejemplo Python para leer imagen y transformarla en una matriz

Como hemos visto en otros post, Python nos permite hacer programas de manera más rápida, en esta ocasión quiero compartirles un ejemplo para leer un archivo de imagen y como convertirlo en una matriz o un arreglo. Aplicaciones Poder hacer ingeniería de datos, es decir poder convertir una misma imagen en diferentes todos y utilizarlos para machine learning para reconocimiento de gatos, para ello hay que mostrar muchas imágenes a nuestro modelo es decir entrenarlo, para ello hay que colocarle imágenes claras y imagenes que no sean tan claras por ejemplo, se pone la imagen original y se agrega "ruido" para que se vea en rojos, grises, verdes. Se pudo utilizar para un mapa , para poder ver datos a detalle Se puede aplicar para manipular imágenes, por ejemplo agregar efectos  Seguramente a ustedes se les pueden ocurrir más aplicaciones Les comparto el ejemplo de como hacerlo en Jupiter y para hacer el ejemplo voy a utilizar el logo del blog es una imagen de 500x500 pixeles Los Pas