Creo que lo que quieres hacer debería hacerse con un EXTERNAL PROCEDURE, me
explico:

        Teóricamente las EXTERNAL FUNCTIONS sirven para retornar. Tu programa 
RPG
tiene parámetros de entrada / salida pero no retorna un valor que pueda ser
usado en el SELECT en forma de columna.

        Si quieres ejecutar un RPG con los parámetros de entrada / salida, 
bastará
con definir un EXTERNAL PROCEDURE al modo:

CREATE PROCEDURE MYLIB.FX_SCR_CALIFICACIONSBS (
    PTIPDOC CHAR(1) ,
    PDOCUME CHAR(12) )
    RETURNS DECIMAL(1, 0)
    LANGUAGE RPGLE
    SPECIFIC AUCO.FX_SCR_CALIFICACIONSBS
    NOT DETERMINISTIC
    READS SQL DATA
    CALLED ON NULL INPUT
    DISALLOW PARALLEL
    EXTERNAL NAME 'MYLIB/R7401883'
    PARAMETER STYLE SQL ;

        al que podrás llamar desde SQL mediante CALL FX_SCR_CALIFICACIONSBS 
('1',
'00000232', '1').

        Si lo que quieres es mostrar algún tipo de información en el SELECT, lo
correcto es usar una función exportada desde un programa de servicio. Ésta,
además de ejecutar una acción, puede retornar un valor para mostrar en el
SELECT y aparecer como columna de la consulta.

Bueno, espero haberme explicado bien.

Saludos,
Jorge Merino.


-----Mensaje original-----
De: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED] nombre de Carlos
Augusto Correa García
Enviado el: miércoles, 24 de enero de 2007 19:19
Para: forum.help400
Asunto: Funcion Externa


Saludos amigos del foro, tengo una duda.
*
He creado una función externa de la sgte manera:*
CREATE FUNCTION MYLIB.FX_SCR_CALIFICACIONSBS (
    PTIPDOC CHAR(1) ,
    PDOCUME CHAR(12) )
    RETURNS DECIMAL(1, 0)
    LANGUAGE RPGLE
    SPECIFIC AUCO.FX_SCR_CALIFICACIONSBS
    NOT DETERMINISTIC
    READS SQL DATA
    CALLED ON NULL INPUT
    DISALLOW PARALLEL
    EXTERNAL NAME 'MYLIB/R7401883'
    PARAMETER STYLE SQL ;

COMMENT ON SPECIFIC FUNCTION AUCO.FX_SCR_CALIFICACIONSBS
    IS 'Devuelve Calificación SBS' ;

*El programa RPG (Programa externo) es el sgte:*

H DATEDIT(*DMY)
 *---------------------------------------------------------------*
 * APLICACION: Credit Scoring
 * TITULO    : Devuelve Calificación SBS
 *---------------------------------------------------------------*
FFILESBS   IF   E           K DISK
C     *ENTRY        PLIST
C                   PARM                    pTipdoc           1
C                   PARM                    pDocume          12
C                   PARM                    pCalSBS           1 0
C*---------------------------------------------------------------*
C     CLA001        KLIST
C                   KFLD                    pTipreg
C                   KFLD                    pTipdoc
C                   KFLD                    sDocume
C                   seton                                        LR
C* Hay más codigo ...........................................

*Pero a la hora de ejecutarlo*

SELECT FX_SCR_CALIFICACIONSBS ('1', '00000232')
FROM SYSIBM.SYSDUMMY1


*Me da error, Veamos*

 > SELECT FX_SCR_CALIFICACIONSBS ('1', '00000232')   FROM SYSIBM.SYSDUMMY1

Estado de SQL: 42704
Código de proveedor: -204
Mensaje: [SQL0204] FX_SCR_CALIFICACIONSBS en *LIBL de tipo *N no
encontrado. Causa . . . . . :   FX_SCR_CALIFICACIONSBS en *LIBL tipo *N
no se ha encontrado. Si se trata de una sentencia ALTER TABLE y el tipo
es *N, no se ha encontrado una restricción o partición. Si no se trata
de una sentencia ALTER TABLE y el tipo es *N, no se ha encontrado una
función, procedimiento o desencadenante. Si no se ha encontrado una
función, FX_SCR_CALIFICACIONSBS es el programa de servicio que contiene
la función. La función no se encontrará si el nombre externo y el nombre
de uso no coinciden exactamente. Examine en las anotaciones de trabajo
para ver si encuentra un mensaje que dé más detalles sobre el nombre de
función que se está buscando y el nombre que no coincide. Recuperación
. :   Cambie el nombre y vuelva a intentar la petición. Si el objeto es
un grupo de nodos, asegúrese de que el producto DB2 Multisystem está
instalado en el sistema y cree un grupo de nodos con el mandato CL
CRTNODGRP. Si no se ha encontrado la función externa, asegúrese de que
las mayúsculas y minúsculas del EXTERNAL NAME en la sentencia CREATE
FUNCTION coinciden exactamente con las mayúsculas y minúsculas del
nombre exportado por el programa de servicio.

Se ha finalizado el proceso ya que la sentencia resaltada no se ha
completado satisfactoriamente
----------------------------------------------------------------------------
-------------------------

En resume
En otras funciones si me ha funcionado porco con solo un parámetro y con
parametros numéricos.
Esta vez me está fallando pues la verdad no he visto mucho del tema

Denme alguna ide pues ya se me agotaron
Saludos

-------------------------------
Carlos Augusto Correa García
Area de Sistemas - Desarrollo
CMAC PIURA S.A.C.














--
Este mensaje ha sido analizado por MailScanner
en busca de virus y otros contenidos peligrosos,
y se considera que está limpio.
For all your IT requirements visit: http://www.transtec.co.uk

__________________________________________________
Forum.HELP400 es un servicio más de NEWS/400.
© Publicaciones Help400, S.L. - Todos los derechos reservados
http://www.help400.es
_____________________________________________________

Para darte de baja visita la siguente URL:
http://listas.combios.es/mailman/listinfo/forum.help400

__________________________________________________
Forum.HELP400 es un servicio más de NEWS/400.
© Publicaciones Help400, S.L. - Todos los derechos reservados
http://www.help400.es
_____________________________________________________

Para darte de baja visita la siguente URL:
http://listas.combios.es/mailman/listinfo/forum.help400

Responder a