Clarion - funciones en clarion

 
Vista:

funciones en clarion

Publicado por JuanM (22 intervenciones) el 04/02/2010 17:37:51
hola a todos, se pueden crear funciones en clarion?

las cuales pueda enviar parametros y retornar valor? , como las declaro y donde las declaro? asi como visual basic

Function ejemplo(Number As Double) As String

gracias!

saludos
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:funciones en clarion

Publicado por RobertoMexicali (12 intervenciones) el 04/02/2010 19:47:13
Si se puede, de hecho cualquier modulo, sea browse, window, source, etc puedes enviar parametros y devolver resultado

ejemplo: una funcion que nos devuelva el valor de un nmero en letras

var:CantidadEnLetra = DevuelveNumeroEnLetra(numero)

en la s propiedades del modulo DevuelveNumeroLetra:

prototype: (ulong),string
aqui le estas diciendo que vas a recibir un parametro de tipo entero y que devuelves un valor tipo string

parameters: (Numero)
y en esta parte estas especificando el nombre(s) del parametro(s) que recibiste en prototipo

en tu codigo:
ValorADevolver = numero * 2

return ValorADevolver

si el parametro que enviaste = 2 (por ejemplo) entonces te devuelve "cuatro"

espero te sirva de algo, por lo menos ya sabes por donde buscarle, no olvides consultar la ayuda, casi siempre tenemos la respuesta ahi, simplemente a veces no la encontramos, busca con "parameters" y encontraras varios temas de ayuda
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:funciones en clarion

Publicado por JuanM (22 intervenciones) el 04/02/2010 21:16:22
Gracias, entiendo por donde va el asunto, pero entonces por cada funcion tendria que crear un browse o un form... pense que habria la forma de crear funciones dentro del form como si fueran rutine, pero con la diferencia de que estas pudieran recibir parametros y retornar valores... entonces le intentare por ese lado

de antemano gracias, me has dado la idea de hacerlo de otra forma,

si alguien sabe de otra forma me la pueden decir...

gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:funciones en clarion

Publicado por RobertoMexicali (12 intervenciones) el 08/02/2010 09:10:30
Te recuerdo o te aclaro q no solamente existen browse, forms, windows y reports, existen los modulos tipo "source" que no son visibles fisicamente, solo contienen codigo y es exactamente lo q necesitas, simplemente lo agregas en procedures de la ventana donde lo vas a usar, la gran ventaja es que esa funcion o ese source lo puedes llamar de cualqueir modulo, sea ventana, browse, reporte.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:funciones en clarion

Publicado por JuanM (22 intervenciones) el 08/02/2010 16:20:08
ok, con los source se puede hacer, ahora una pregunta, ¿soporta recursividad?, saludos y gracias por sus respuestas, me han dado muchas ideas...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:funciones en clarion

Publicado por Joan V (69 intervenciones) el 08/02/2010 18:18:10
Hola JuanM
pincha Help para ayuda de Clarion y en Buscar pones Recursive:FUNCTION
lo normal esdeclarar la funcion en GLOBAL con variable tb globales y con ello la puedes llamar desde cualquier sitio del programa sin restricciones.
Saludos Joan V.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:funciones en clarion

Publicado por JoanV (69 intervenciones) el 08/02/2010 18:35:49
Hola JuanM
aqui va un ejemplo de como seria una funcion parecida a BASIC para ser llamada como una funcion standard del propio clarion
por supuesto es codigo fuente SOURCE es donde lo tines que escribir el codigo.

Las Funciones son como los PROCEDURES se declaran dentro de un MAP del PROGRAM o de un MAP de un MEMBER en un modulo
por ejemplo pinchas Embeds en un module
en el Start of Module declaras el MAP y dentro la FUNCTION asi

!inicio modulo Start
MAP
.CheckError FUNCTION(),LONG
END

y en el Module Data Section declaras el codigo de la funcion.
por ejemplo asi:

!Inicio data seccion
CheckError FUNCTION()
CODE
.IF ERRORCODE() THEN
..IF ERRORCODE() = 90 THEN
...IF MESSAGE('Error: '& FILEERROR()) THEN
.....RETURN ERRORCODE()
...END
..ELSE
...IF MESSAGE('Error: '& ERROR()) THEN
.....RETURN ERRORCODE()
...END
..END
.END
RETURN 0

a mi me funcionan si perfecto silal declaras en el embeds Global la funcion es accesible desde toda la aplicacion si es en el MOdule solo en los procesos que hayas colocado en dicho modulo.

Saludos Joan.

Nota.- si me dices que funcion quieres hacer la preparo y te pongo un ejemplo para que pruebes el funcionameinto de las funciones.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:funciones en clarion

Publicado por Joan V. (69 intervenciones) el 26/05/2010 11:38:52
Hola Juan M
Clarion es recursivo y facil de usar las funciones o procedures globales
accesibles desde cualquier proceso del programa.
un ejemplo tipico de recursividad es la funcion FACTORIAL
veamos como implementarla en Clarion
abres una aplicacion pinchas en la pestaña Module aparecera en primer lugar el proceso global que es el que nos interesa para colocar nuestra funcion FACTORIAL como funcion global.
sobre el PROGRAM DEFAULT que es el primero pinchas boton derecho del ratón y pinchas EMBEDS
pinchas en INSIDE THE GLOBAL MAP en SOURCE pones la declaracion de la funcion asi con un parametro de entrada ULONG y otro de salida tambien ULONG.solo escribes aqui esta linea.

FACTORIAL(ULONG);ULONG

sales con EXIT! y grabas . ya tienes declarado el FACTORIAL.

luego en la misma ventana EMBEDDED SOURCE pinchas el punto de EMBED
PROGRAM PROCEDURES
y en SOURCE escribes estas 7 lineas.

FACTORIAL PROCEDURE(var1)
. CODE
. if var1=0 then var1=1 end
. if var1>1 then
. var1=var1 * FACTORIAL((var1 - 1))
. end !if
. RETURN (var1)

la palabra FACTORIAL es la etiqueta aparecera en rojo las demas empiezan por un espacio y apareceran en negro.
fijate que es recursiva pues se llama asi misma reiteradamente hasta que la var1 vale 1 que finaliza el calculo devolviendo el valor 1.

cierras con EXIT y grabas . ya tienes la funcion FACTORIAL generada como global

luego desde calquier parte del programa
la llamas asi
SALIDA = FACTORIAL(ENTRADA)
deben de ser la variables ENTRADA y SALIDA desde donde llames la funcion definidas como ULONG.

espero sea de utilidad como ejemplo a cuantos tengan dudas de como generar funciones globales y como llamarlas.
Saludos Joan Vilatimo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:funciones en clarion

Publicado por Joan Vilatimó (69 intervenciones) el 26/12/2012 21:09:37
!En Global/Embeds/GlobalData/SOURCE
- map
FACTORIAL PROCEDURE(ULONG),ULONG
- end
-
!En Global/Embeds/ProgramProcedures/SOURCE
FACTORIAL PROCEDURE(var1)
- CODE
- if var1=0 then var1=1 end
- if var1>1 then
- var1=var1 * FACTORIAL((var1 - 1))
- end !if
- RETURN (var1)
!
!luego ya se llama la función FACTORIAL desde donde se requiera y como vemos es recursiva
!por ejemplo en la expresion que la necesiemos asi:
!
-dato2=FACTORIAL(dato1)
!NOTA :el simbolo - de inicio de lineas es en realidad un espacio blanco
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar