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.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.
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)