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.

Responder a