Buenas, y primero gracias por la ayuda! Ya lo hemos conseguido. Lo hemos hecho cambiandole el CCDIS a la variable Z60:
dcl-s Z60 char(60) ccsid(819) ; Finalmente parece ser que era un problema de conversión. De nuevo, GRACIAS! On Fri, Nov 13, 2020 at 10:38 AM estela retes <[email protected]> wrote: > Buenas, > > Hemos encontrado una web en la que subes la imagen del código de barras y > te da lo que contiene: https://zxing.org/w/decode.jspx > > Enviando el código datamatrix que nos ha enviado el cliente la > interpretación que hace de los 4 campos es esta: > [image: image.png] > Hace el salto de línea. > > Sin embargo, con el que enviamos nosotros ya sea CR, LF, CRLF, LN,... Lo > interpreta de esta otra: > [image: image.png] > > Ayer encontramos algo que teníamos mal, y es que en el CRTPRTF hay que > poner RPLUNPRT(*NO) para que no sustituya por blancos los caracteres no > imprimibles. > > Pero aún así, nuestro código parece que sigue sin generarse correctamente. > > Hemos probado definiendo las constantes de varias maneras: > D CRLF C CONST(x'0D25') > D CRNL C CONST(x'0D15') > D LF C CONST(x'0A') > D CRLF C CONST(X'0D0A') > D CR C CONST(x'0D') > D LF C CONST(x'25') > y con todas ellas hemos probado con este código (donde pone LF hemos > probado con todas las constantes anteriores): > C MOVE *BLANKS Z60 60 > C EVAL Z60=%TRIM(P1_REFER1)+%TRIM(P1_REFER2) > C + LF + %EDITC(P1_NUALBA:'X') > C + LF + %TRIM(P2_CDARCL) > C + LF + %CHAR(Z7N) > C EVAL PC_CDTMAT=Z60 > > > Definición del datamatrix en el PRTF: > A PC_CDTMAT 60A 61BARCODE(DATAMATRIX + > A (*DATAMATRIX 20 20 + > A *USRDEF *DATA *NO > A *ESCAPE)) > > > Pero el resultado siempre es el del "rombo con interrogación" de la > segunda imagen. > Está claro que algo estamos haciendo mal, que algo más nos falta en el > CRTPRTF o en la definición del propio PRTF, o quizá algún lío de conversión > ASCII-hexadecimal... > Seguimos haciendo pruebas, pero no conseguimos dar en el clavo. > > Muchas gracias! > > > > On Fri, Nov 13, 2020 at 10:26 AM Alex Martínez <[email protected]> wrote: > >> Hola >> >> Ya puestos prueba también con el hexadecimal 0D0A que es un CR+LF >> >> Salu2 >> >> El jue., 12 nov. 2020 a las 15:35, estela retes (<[email protected]>) >> escribió: >> >>> Gracias Javier. >>> >>> Le hemos pedido al cliente que nos ponga en contacto con su departamento >>> técnico/informático para que nos den una especificación más completa. >>> Estamos a la espera. >>> >>> Mientras tanto, intentaremos conseguir la cadena ascii del código de >>> ejemplo que nos han enviado probando con la configuración de algún lector >>> que tenemos. >>> >>> Muchas gracias! >>> >>> On Thu, Nov 12, 2020 at 2:39 PM datil400 <[email protected]> wrote: >>> >>>> ¿Puede tu cliente enviarte la cadena ASCII que leen y la que debiera >>>> ser? De esta forma puedes intentar localizar el valor binario del carácter >>>> que buscas. >>>> >>>> Si está leyendo bien las letras, también debería leer correctamente el >>>> LF o lo que sea. >>>> >>>> La mayoría de lectores del mercado pueden servir, solo hay que >>>> configurarlos para que lean Datamatrix. Casi todos pueden parametrizarse. >>>> >>>> Un saludo, >>>> >>>> Javier >>>> >>>> El jue., 12 nov. 2020 14:31, estela retes <[email protected]> escribió: >>>> >>>>> Muchas gracias Javier, >>>>> >>>>> Hemos hecho lo que nos comentabas y a nuestro parecer los códigos de >>>>> barras están ya saliendo bien, pero hemos estado esperando respuesta del >>>>> cliente y nos dice que su lector no está interpretando lo que ellos llaman >>>>> ENTER. Nosotros le hemos enviado para probar el LF, el CR, el CRLF y hasta >>>>> un NL por si acaso, y nos dice que su lector no está interpretando bien el >>>>> salto. >>>>> >>>>> ¿Hay alguien que conozca algún software que interprete los códigos de >>>>> barras datamatrix y te devuelva lo que están leyendo incluídos los >>>>> caracteres de control? De esa manera al menos podríamos intentar leer el >>>>> único que nos han enviado de ejemplo (y que ellos dicen que va bien) e >>>>> intentar reproducir lo que tengan ahí puesto, que en este momento ya dudo >>>>> de si es un LF. >>>>> >>>>> Muchas gracias a todos! >>>>> >>>>> On Mon, Nov 9, 2020 at 3:51 PM datil400 <[email protected]> wrote: >>>>> >>>>>> Hola Estela, >>>>>> >>>>>> sustituye el \n por X'25'. >>>>>> >>>>>> Ten en cuenta que \n es un carácter de escape típico del lenguaje C >>>>>> que, precisamente, identifica un fin de línea (y lo que eso signifique). >>>>>> En >>>>>> RPG no va a funcionar. >>>>>> >>>>>> El IBM i utiliza EBCDIC para codificar sus cadenas de caracteres, así >>>>>> el valor X'25' es LF y X'0D' es CR. >>>>>> >>>>>> Prueba a ver y nos cuentas. >>>>>> >>>>>> Un saludo, >>>>>> >>>>>> Javier Mora >>>>>> >>>>>> El lun., 9 nov. 2020 a las 12:39, estela retes (<[email protected]>) >>>>>> escribió: >>>>>> >>>>>>> Buenas a todos, >>>>>>> >>>>>>> Tenemos un cliente que nos ha solicitado que en sus albaranes >>>>>>> añadamos un código de barras de tipo Datamatrix que contenga la >>>>>>> información >>>>>>> que va en el albarán. >>>>>>> >>>>>>> El código lo sacamos sin problema, pero en la especificación del >>>>>>> cliente viene que cada campo debemos separarlo con un "ENTER". Le >>>>>>> pedimos >>>>>>> que nos aclarase más ese ENTER qué debía ser y nos respondió que debe >>>>>>> ser >>>>>>> un >>>>>>> >>>>>>> - LF (0x0A, \n) >>>>>>> >>>>>>> >>>>>>> El problema nos viene aquí, ya que no sabemos cómo codificar ese LF >>>>>>> dentro de la cadena de caracteres que componen el código de barras. >>>>>>> >>>>>>> En el PRTF tenemos descrito el campo así: >>>>>>> A PC_CDTMAT 20 61BARCODE(DATAMATRIX + >>>>>>> A (*DATAMATRIX 20 20 + >>>>>>> A *ESCAPE)) >>>>>>> >>>>>>> En el SQLRPGLE: >>>>>>> >>>>>>> C EVAL >>>>>>> PC_CDTMAT=%TRIM(REFER1)+%TRIM(REFER2) >>>>>>> C + '\n' + %EDITC(NUALBA:'X') >>>>>>> C + '\n' + %TRIM(CDARCL) >>>>>>> C + '\n' + %EDITC(CANSER:'X') >>>>>>> >>>>>>> >>>>>>> Pero cuando escaneamos el código nos interpreta el \n como si fuese >>>>>>> parte de la cadena de caracteres y no una secuencia de escape. >>>>>>> >>>>>>> ¿Alguien sabría decirnos qué estamos haciendo mal? >>>>>>> >>>>>>> Muchísimas gracias y un saludo, >>>>>>> >>>>>>> >>>>>>> -- >>>>>>> Estela >>>>>>> ____________________________________________________ >>>>>>> Ú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. >>>>> >>>>> >>>>> >>>>> -- >>>>> Estela >>>>> ____________________________________________________ >>>>> Ú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. >>> >>> >>> >>> -- >>> Estela >>> ____________________________________________________ >>> Ú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. > > > > -- > Estela > -- Estela
____________________________________________________ �nete a Recursos AS400, nuestra Comunidad ( http://bit.ly/db68dd ) Forum.Help400 � Publicaciones Help400, S.L.
