Bueno, todavía no tengo claro algunas cosas pero vamos a intentarlo.
- La clase 'bascula' que utilizar con QCMDEXC no es la misma que 'bascula2'.
- La clase 'bascula2', ¿dónde la tienes ubicada en el IFS? ¿Está incluida en
CLASSPATH o está en el directorio de extensiones de Java?
- Sin ver la definición de los métodos de 'bascula2' es difícil saber si están
bien declarados en RPG.
- Creo que el método 'pesobas' no está bien declarado en RPG. Si 'pesobas'
devuelve una 'java.lang.String' deberías hacer lo siguiente:
D pesobas PR O EXTPROC(*JAVA:'bascula2'
D :'pesobas')
D CLASS(*JAVA: 'java.lang.String')
En el código
Peso2 = JString_getBytes( pesobas( PESO3 ) );
Te adjunto en el correo un fuente donde se define 'JString_getBytes'.
¿No tienes ningún error de ejecución?
Saludos,
Javier
> -----Mensaje original-----
> De: [email protected] [mailto:forum.help400-
> [email protected]] En nombre de Antonio
> Enviado el: martes, 28 de febrero de 2017 16:18
> Para: [email protected]
> Asunto: Re: Clase Java
>
> Hola.
>
> Estoy en versión 7.1, si lo ejecuto desde QSH funciona.
> Si la llamo de esta forma
> F* ******************************************************************
> D* SE DEFINEN LOS PARÁMETROS DE LA API QCMDEXC
> D*
> D CMDSTRING S 25 INZ('JAVA CLASS(''bascula'')')
> D CMDLENGTH S 15P 5 INZ(25)
> D* AHORA SE LLAMA A QCMDEXC CON EL MANDATO CL 'JAVA'
> C CALL 'QCMDEXC'
> C PARM CMDSTRING
> C PARM CMDLENGTH
> C*
>
> funciona.
>
> Lo que no consigo es que me devuelva nada.
> He probado muchas cosas.
> Esto es lo último
> D*
> D peso PR O EXTPROC(*JAVA:'bascula2':
> D *CONSTRUCTOR)
> D CLASS(*JAVA:'bascula2')
> D pesobas PR 50A EXTPROC(*JAVA:'bascula2'
> D :'pesobas') VARYING
> D PESO3 S O CLASS(*JAVA:'bascula2')
> D PESO2 S 50A VARYING
> D*
> C* COMIENZO DEL PROGRAMA
> /FREE
> PESO3=peso();
> PESO2=pesobas(PESO3);
> dsply PESO2;
> *inlr=*on;
>
> Un Saludo.
>
>
>
> El 28/02/2017 a las 13:27, Javier Mora escribió:
> > ¿Nos puedes mostrar cómo has definido el prototipo de los métodos de
> la clase?
> > ¿Cómo la usas?
> > ¿Qué error te genera el programa?
> > ¿Encuentra el programa RPG la clase de Java? Configurar
> convenientemente CLASSPATH.
> > ¿Versión S.O. y JVM?
> >
> > Saludos,
> >
> > Javier
> >
> >> -----Mensaje original-----
> >> De: [email protected] [mailto:forum.help400-
> >> [email protected]] En nombre de Antonio Enviado el: martes,
> >> 28 de febrero de 2017 12:59
> >> Para: forum.help400
> >> Asunto: Clase Java
> >>
> >> Buenos días.
> >>
> >> Estoy intentando llamar a una clase java que recupera los datos de
> >> una báscula.
> >>
> >> La clase Java debe de devolver el peso en un string, pero no consigo
> >> realizar correctamente la llamada desde el rpg.
> >>
> >> He seguido los ejemplos del manual de ibm, pero no encuentro la
> forma.
> >>
> >> ¿Alguien tiene un ejemplo?
> >>
> >> Gracias.
> >>
> >>
> >> ____________________________________________________
> >> Únete a Recursos AS400, nuestra Comunidad ( http://bit.ly/db68dd )
> >> Forum.Help400 © Publicaciones Help400, S.L.
> > ____________________________________________________
> > Únete a Recursos AS400, nuestra Comunidad ( http://bit.ly/db68dd )
> > Forum.Help400 © Publicaciones Help400, S.L.
> > .
> >
>
> ____________________________________________________
> Únete a Recursos AS400, nuestra Comunidad ( http://bit.ly/db68dd )
> Forum.Help400 © Publicaciones Help400, S.L.
/IF DEFINED( JAVASTD_H )
/EOF
/ENDIF
/DEFINE JAVASTD_H
*
* NOMBRE.......: JAVASTD_H
* DESCRIPCION..: Biblioteca estándar de Java. Declaración de
* clases y métodos del Entorno de Ejecución de
* Java (JRE).
*
* Programador..: Javier Mora
* Fecha........: Abril 2015
*
* Historia:
*
* Fecha Programador Observaciones
* -------- ------------------ -------------
*
* Uso:
*
* /COPY JavaStd_H
*
* Notas:
*
* En este fuente se declaran algunas clases y métodos de la
* biblioteca estándar de Java para su utilización desde RPG.
*
*
* byte[] - Una secuencia de bytes.
*
D JBytes_T S 2048A Varying
/IF DEFINED(*V6R1M0)
D Template
/ELSE
D Based( template_ )
D/ENDIF
* __________________________________________________________________
*
* java.lang.String
*
* Cadenas de texto
*
D JC_STRING C 'java.lang.String'
/IF NOT DEFINED( included_RPG_JNI )
D jstring S O Class( *JAVA: JC_STRING )
/ENDIF
*
* new String( byte[] chars )
*
* Constructor de un objeto String a partir de una cadena de
* caracteres.
*
D new_JString PR Like( jstring )
D ExtProc( *JAVA:
D JC_STRING:
D *CONSTRUCTOR )
D bytes Const Like( JBytes_T )
*
* byte[] getBytes()
*
* Codifica la cadena Java como una secuencia de bytes utilizando
* el juego de caracteres por defecto de la plataforma.
*
D JString_getBytes...
D PR Like( JBytes_T )
D ExtProc( *JAVA:
D JC_STRING:
D 'getBytes' )
*
* String trim()
*
* Elimina los espacios en blanco iniciales y finales.
*
D JString_trim...
D PR Like( jstring )
D ExtProc( *JAVA:
D JC_STRING:
D 'trim' )
*
* public String substring( int beginIndex, int endIndex)
*
* Devuelve una subcadena.
*
D JString_substring...
D PR Like( jstring )
D ExtProc(*JAVA:
D JC_STRING:
D 'substring' )
D beginIndex Value Like( jint )
D endIndex Value Like( jint )
* __________________________________________________________________
/IF NOT DEFINED( JAVASTD_NO_DEF_FILE_OUTPUT_STREAM )
*
* java.io.FileOutputStream
*
* Archivos continuos de salida. Son ficheros de acceso secuencial
* byte a byte.
*
D JC_FILE_OUTPUT_STREAM...
D C 'java.io.FileOutputStream'
D JFileOutputStream...
D S O CLASS( *JAVA:
D JC_FILE_OUTPUT_STREAM )
*
* new FileOutputStream( String name )
*
* Crea un archivo de salida con el nombre de fichero especificado.
*
D new_JFileOutputStream...
D PR Like( JFileOutputStream )
D ExtProc( *JAVA:
D JC_FILE_OUTPUT_STREAM:
D *CONSTRUCTOR )
D fileName Const Like( jstring )
*
* public void close()
*
* Cierra el archivo de salida.
*
D JFileOutputStream_close...
D PR ExtProc( *JAVA:
D JC_FILE_OUTPUT_STREAM:
D 'close' )
* __________________________________________________________________
/ENDIF
/IF NOT DEFINED( JAVASTD_NO_DEF_OUTPUT_STREAM )
*
* java.io.OutputStream
*
* Clase abstracta.
*
* Representa una corriente de bytes de salida.
*
D JC_OUTPUT_STREAM...
D C 'java.io.OutputStream'
D JOutputStream S O Class( *JAVA:
D JC_OUTPUT_STREAM )
* __________________________________________________________________
/ENDIF
*
* java.io.FileInputStream
*
* Archivos continuos de entrada. Son ficheros de acceso secuencial
* byte a byte.
*
D JC_FILE_INPUT_STREAM...
D C 'java.io.FileInputStream'
D JFileInputStream...
D S O Class( *JAVA:
D JC_FILE_INPUT_STREAM )
*
* new FileInputStream( String name )
*
* Abre un archivo para lectura con el nombre de fichero
* especificado.
*
D new_JFileInputStream...
D PR Like( JFileInputStream )
D ExtProc( *JAVA:
D JC_FILE_INPUT_STREAM:
D *CONSTRUCTOR )
D fileName Const Like( jstring )
*
* public void close()
*
* Cierra el archivo de entrada.
*
D JFileInputStream_close...
D PR ExtProc( *JAVA:
D JC_FILE_INPUT_STREAM:
D 'close' )
* __________________________________________________________________
*
* java.io.InputStream
*
* Clase abstracta.
*
* Representa una corriente de bytes de entrada.
*
D JC_INPUT_STREAM...
D C 'java.io.InputStream'
D JInputStream...
D S O Class( *JAVA:
D JC_INPUT_STREAM )
* __________________________________________________________________
*
* java.util.Map
*
D JC_MAP C 'java.util.Map'
D JMap S O Class( *JAVA:
D JC_MAP )
____________________________________________________
Únete a Recursos AS400, nuestra Comunidad ( http://bit.ly/db68dd )
Forum.Help400 © Publicaciones Help400, S.L.