Hola

Prueba con algo así, siendo Rstr un campos varying y Jstr un clase String
de Java

Rstr = %ucs2('H') + a + %ucs2('SO') + b ;
jstr = newString( Rstr );


El 5 de julio de 2017, 12:02, Javier Mora <jm...@musgrave.es> escribió:

> Es posible que sea más sencillo (te recuerdo que no domino muy bien esto
> de las codificaciones) pero lo que necesito es que la variable ‘jstr’ sea
> un objeto String de Java y esa cadena pasarla a un método de Java, que es
> el que realiza el trabajo sucio con la cadena.
>
>
>
> Un lío fruto de mi desconocimiento.
>
>
>
> Me anoto tu sugerencia para probarla. Ya comento el resultado.
>
>
>
> Gracias, Alex.
>
>
>
> *De:* forum.help400-boun...@listas.combios.es [mailto:
> forum.help400-boun...@listas.combios.es] *En nombre de *Alex Martínez
> *Enviado el:* miércoles, 5 de julio de 2017 11:26
>
> *Para:* forum.help400
> *Asunto:* Re: Java, ILE RPG y Unicode
>
>
>
> Hola de nuevo
>
>
>
> ¿y todo esto que haces no será más sencillo con esto  ?
>
>
>
> he probado a definir jstr indicando el CCSID 13488 y también funciona
>
>
>
> D jstr            s             25C   varying CCSID(1200)
>
> D a               s              1c   inz(U'2082')
>
> D b               s              1c   inz(U'2074')
>
>
>
>    jstr = %ucs2('H') + a + %ucs2('SO') + b ;
>
>
>
> El 5 de julio de 2017, 10:13, Javier Mora <jm...@musgrave.es> escribió:
>
> Hola Alex,
>
>
>
> por lo que he estado leyendo UCS es equivalente a Unicode. En las pruebas
> que he realizado, CCSID(*UTF16) no se puede utilizar con un CHAR VARYING,
>  sólo lo he podido asociar a un tipo C VARYING. También he comprobado que
> (en 7.2) el sistema realiza conversión automática entre campos UTF-8 y
> UTF-16.
>
>
>
> Mi problema original era generar una cadena de caracteres con codificación
> Unicode y pasarla por parámetro a un método de Java (siempre desde RPG). El
> ejemplo que me pasaste funcionaba al contrario, pero me dio la pista para
> cambiar algunas cosas en mi código. Después de algunas pruebas, definiendo
> los parámetros como tipo C (¿UCS?) y CCSID(*UTF16), tanto en procedimientos
> RPG como en los métodos Java, ¡¡parece que funciona!! (aunque todavía no
> entiendo muy bien por qué).
>
>
>
> Básicamente con,
>
>
>
>      D JC_STRING       C                   'java.lang.String'
>
>
>
>      D jstring         S               O   Class( *JAVA: JC_STRING )
>
>      D utf_str         S            128C   Varying CCSID(*UTF16)
>
>      D jstr            S                   Like( JString )
>
>
>
>      D new_UnicodeString...
>
>      D                 PR                  Like( jstring )
>
>      D                                     ExtProc( *JAVA:
>
>      D                                       JC_STRING:
>
>      D                                       *CONSTRUCTOR )
>
>      D   bytes                     2048C   Const Varying
>
>      D                                           Ccsid( *UTF16 )
>
>
>
>         utf_str = 'H' + U'2082' + 'SO' + U'2074';
>
>         jstr = new_UnicodeString( utf_str );
>
>
>
>         // ‘jstr’ ya tiene la secuencia en Unicode
>
>
>
> parece que funciona.
>
>
>
> Tampoco tengo muy claro para qué sirve la BIF %ucs2 y si es útil en 7.2,
> ya que parece que el compilador se encarga de las conversiones. Si quiero
> poner en la cadena Unicode un símbolo que no se puede expresar con EBCDIC
> utilizo la secuencia U’hhhh’, donde hhhh es la codificación del símbolo.
>
>
>
> Lo dicho, no entiendo muy bien por qué funciona, pero lo hace.
>
>
>
> Saludos,
>
>
>
> Javier Mora
>
>
>
> *De:* forum.help400-boun...@listas.combios.es [mailto:
> forum.help400-boun...@listas.combios.es] *En nombre de *Alex Martínez
> *Enviado el:* miércoles, 5 de julio de 2017 8:07
>
>
> *Para:* forum.help400
> *Asunto:* Re: Java, ILE RPG y Unicode
>
>
>
> Hola
>
>
>
> yo tambien me pierdo...... jajajaja pero para la pregunta complicada creo
> que siempre puedes usar una cadena en hexadecimal y combinarlo con la
> funcion %ucs2
>
>
>
> val = x'2074' + %ucs('hola datos') + x'2082'
>
>
>
> en vez de definirla como VARCHAR prueba con VARYING con CCSID 1200 para
> que sea UTF-16 según el manual o usando free para la hoja D como varucs2
> que era lo que te indicaba en el ejemplo anterior
>
>
>
> D val             s           2000C   varying  CCSID(1200)
>
>
>
> https://www.ibm.com/support/knowledgecenter/en/ssw_ibm_i_73/rtref/
> datatypecompatibility.htm
>
>
>
>
>
>
>
> El 4 de julio de 2017, 20:33, Javier Mora <jm...@musgrave.es> escribió:
>
> Gracias Alex por tu interés.
>
>
>
> Te respondo primero a la pregunta que no entiendes. Por ejemplo la
> codificación de un “2 subíndice” es \u2082 (https://unicode-table.com/es/
> 2082/) o la codificación de un “4 subíndice” es \u2074 (
> https://unicode-table.com/es/2074/). Lo que necesito es mezclar este tipo
> de símbolos con caracteres del alfabeto y traspasarlo a un método Java que
> espera una String.
>
>
>
> No sé si he sido capaz de explicarme.
>
>
>
> En este caso, realmente necesito utilizar Unicode para usar determinados
> símbolos que necesito.
>
>
>
> Voy a probar lo que me indicas.
>
>
>
> Lo que más me confunde de todo es el lío entre Unicode, UTF-8, UTF-16,
> UTF-32, UCS, etc.
>
>
>
> Una cosa que he probado ha sido definir una cadena (VARCHAR) con UTF-16,
> pero no me deja. En cambio si me deja con ¿UCS?
>
>
>
> Cómo puedes apreciar voy un poco perdido.
>
>
>
> Gracias de nuevo.
>
>
>
> Javier Mora
>
>
>
> *De:* forum.help400-boun...@listas.combios.es [mailto:
> forum.help400-boun...@listas.combios.es] *En nombre de *Alex Martínez
> *Enviado el:* martes, 4 de julio de 2017 19:20
> *Para:* forum.help400
> *Asunto:* Re: Java, ILE RPG y Unicode
>
>
>
> Hola
>
>
>
> En V7R2 puedes utilizar la función GetBytes con CCSID(*UTF8) y recibir el
> valor en una variable de tipo varucs2
>
> dcl-pr getbytes varchar(65535) ccsid(*utf8)
> extproc(*java : 'java.lang.String' : 'getBytes');
> end-pr;
> dcl-s val varucs2(65535);
> val = getbytes (str);
>
>
>
> El ejemplo es de https://archive.midrange.com/midrange-l/201608/msg00404.
> html
>
>
>
>
>
> para mezclar con texto normal puedes usar la funcion %char (no le veo
> mayor problema)
>
>
>
> y no acabo de entender la pregunta *¿Cómo puedo obtener en RPG un
> determinado símbolo Unicode si conozco su código?*
>
>
>
> No sé si lo que necesita es un simple variable = %ucs2('hola caracola')
>
>
>
> Salu2
>
>
>
> El 4 de julio de 2017, 16:07, Javier Mora <jm...@musgrave.es> escribió:
>
> Hola a tod@s,
>
>
>
> necesito utilizar símbolos Unicode en un programa RPG que utiliza unas
> bibliotecas de Java. Sé que en Java se puede incluir símbolos Unicode en
> una cadena de caracteres con \uhhhh (donde hhhh es el valor hexadecimal del
> símbolo). Pero esta fórmula no la puedo utilizar en RPG (al menos no he
> sabido). Tampoco tengo un conocimiento muy profundo de Java, ni de Unicode
> ni cómo utilizarlo desde RPG.
>
>
>
> ¿Cómo puedo obtener en RPG un determinado símbolo Unicode si conozco su
> código?
>
> ¿Cómo lo mezclo con texto normal?
>
> ¿Cómo le indico en el prototipo del método Java que el texto es Unicode?
>
>
>
> He rebuscado por Internet pero no entiendo lo que leo. ¿Alguna ayuda o
> pista?
>
>
>
> Javier Mora
>
>
> ____________________________________________________
> Ú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.
>
>
>
> ____________________________________________________
> Ú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.

Responder a