Source con retorno de más de un valor

Consultas, trucos, consejos. Todo sobre Clarion en todas sus versiones
dlopez
Mensajes: 8
Registrado: Lun Feb 07, 2011 4:54 am
Contactar:

Re: Source con retorno de más de un valor

Mensaje por dlopez » Mar Feb 15, 2011 5:45 am

danielnelsonrivarola escribió:Leo, gracias por responder.
En el Prototype del source pongo
(ULONG,ULONG,ULONG,*REAL,*REAL,*REAL,*REAL),BYTE

al llamar la función

if SourceStockHacienda(Recate,Renspa,CategoriaOrigen,StockIni,Ingresos,Egresos,Stock)
message('Error al Calcular Stock|Verifique y reintente',icon:exclamation)
end

y al compilar me da el error
No matching prototype available, en la linea del if, revisé todo y no encuentro el error.
Si tenes muchos parametros puedes usar un group y pasarlo por referencia. Es mas complejo pero ademas de agrupar una serie de datos en un solo parametro, tiene como ventaja adicional el no tener limites en la cantidad de datos pasados.
Además, si mas adelante quieres aumentar la cantidad de parametros o valores devueltos solo debes agregarlos al group y recompilar.

Ej:

Código: Seleccionar todo

! declaramos un  group "tipo" que usaremos para pasar los parámetros.
! tipicamente se declara en global data

misParametros_tipo    GROUP,TYPE,pre(misParamTipo)
Param1                    ULONG
Param2                    ULONG
Param3                    DECIMAL
Param4                    DECIMAL
                      END !GROUP

! en el prototype del source declaramos:

miProcedure (*misParametros_tipo par)

! dentro del source usas el group "par".  Ejemplo:

  if par.Param1  then 
     par.param3 = 10
     par.Param4 =  11
  end
  ......

!-----------------
! para llamar al source debes crear un group local del mismo tipo que misparametros_tipo
!--------------------
  DATA
prm   group(misParametros_tipo),pre(p)
      end

   CODE

  
     prm.Param1 = 4
     prm.param2 = 5
 
     !llamamos al procedure pasando el grupo local

     miProcedure(prm)

     ! al volver ya tienes los valores retornados en prm

      message(prm.param3 & ' ' & prm.param4)

 
Saludos
---
Daniel C. López
Programación San Salvador
Entre Ríos - Argentina


Responder

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 9 invitados