Cobol Foro
Navegación en el Foro
Retroceder   Cobol Foro Entornos de desarrollo y compiladores Cobol Fujitsu COBOL PowerCOBOL (ActiveX, v4 - v11)
PowerCOBOL (ActiveX, v4 - v11) Versiones del IDE basadas en ActiveX
 
Otros temas que te pueden interesar
Tema Autor Foro Respuestas Último post
[Componente] Imprimir código QR Armando PowerCOBOL (ActiveX, v4 - v11) 14 5 de diciembre de 2024 12:13
[Componente] Generador código QR atncasiello PowerFORM 1 29 de diciembre de 2020 23:49
[Sintaxis] Error en el código dariodr GnuCOBOL (OpenCOBOL) 1 28 de noviembre de 2018 09:02
[Duda] Leer codigo de barras EAN 128 Recato53 PowerCOBOL (ActiveX, v4 - v11) 5 10 de agosto de 2015 13:41
[Componente] Codigo de barras Roger PowerCOBOL (ActiveX, v4 - v11) 11 14 de mayo de 2015 19:27

Respuesta

  #1
Antiguo 20 de septiembre de 2018, 16:22
Breew
Patrocinador del Foro
Última Actividad 09.05.2022 07:47
Posts Posts: 125
Likes enviados Enviados: 104
Likes recibidos Recibidos: 8
Predeterminado Codigo Ean 13
0 Inactivo Inactivo

Hola.

Intento crear un campo con codigo de barras ean-13 , pero no consigo que lo lea el scaner.
Se que leerlo en pantalla, requiere un escaner especial, pero lo que me tiene mosca , es que si paso el codigo a papel, tampoco lo lee.
Utilizo una fuente que he descargado que se llama ean-13.ttf pero s simple vista, lo veo diferente al codigo del envase.

Si alguno ha intentado hacer etiquetas ean13, por favor indicarme con que font lo habeis conseguido, o bien como lo haceis.

Muchisimas Gracias
Breew is offline   Responder Con Cita
  #2
Antiguo 20 de septiembre de 2018, 20:11
Kuk
Administrador
Última Actividad 19.09.2026 20:11
Posts Posts: 2.500
Likes enviados Enviados: 1037
Likes recibidos Recibidos: 1207

Breew, pasa más bien por PowerFORM



NORMAS DEL FORO - para garantizar el buen funcionamiento del Foro.
¿Te han ayudado? NO TE OLVIDES de darle a
¿Quieres dirigirte a alguien en tu post? Notifícale haciendo clic en su Nick
Kuk is offline   Responder Con Cita
  #3
Antiguo 20 de septiembre de 2018, 20:58
Roger
Forero Activo
Última Actividad 04.02.2021 13:03
Posts Posts: 236
Likes enviados Enviados: 26
Likes recibidos Recibidos: 60

Hola Breew

Utilizo el font Bar-Code 39 y para la impresión uso
Código COBOL:
  1.  01 BARRAS.
  2.     02 FILLER PIC X VALUE "*".
  3.     02 COD-B PIC X(16).
  4.     02 FILLER PIC X VALUE "*".
  5.  PROCEDURE       DIVISION.
  6.       MOVE POW-TEXT OF CMTEXT45 TO COD.
  7.       INSPECT cod REPLACING ALL " " BY "$".
  8.       INSPECT cod REPLACING ALL "$$" BY "  ".
  9.       INSPECT cod REPLACING ALL "$ " BY "  ".
  10.       INSPECT cod REPLACING ALL " $" BY "  ".
  11.       INSPECT cod REPLACING ALL "$" BY " ".
  12.       MOVE COD TO COD-B.

Si tienes codigos menores a 16 caracteres eliminas los campos en blanco de esta manera el lector
los leera poniendo un asterisco al comienzo y final.
Roger is offline   Responder Con Cita
  #4
Antiguo 20 de septiembre de 2018, 22:07
Kuk
Administrador
Última Actividad 19.09.2026 20:11
Posts Posts: 2.500
Likes enviados Enviados: 1037
Likes recibidos Recibidos: 1207

Roger, puedes explicar qué hacen exactamente los INSPECT en este caso? Porque si lo primero que hacemos es:

Código COBOL:
  1.       INSPECT cod REPLACING ALL " " BY "$".

Y lo último es:

Código COBOL:
  1.       INSPECT cod REPLACING ALL "$" BY " ".

Volvemos a la situación del principio, no?



NORMAS DEL FORO - para garantizar el buen funcionamiento del Foro.
¿Te han ayudado? NO TE OLVIDES de darle a
¿Quieres dirigirte a alguien en tu post? Notifícale haciendo clic en su Nick
Kuk is offline   Responder Con Cita
  #5
Antiguo 20 de septiembre de 2018, 22:31
Breew
Patrocinador del Foro
Última Actividad 09.05.2022 07:47
Posts Posts: 125
Likes enviados Enviados: 104
Likes recibidos Recibidos: 8

Citación del post de Kuk Ver Mensaje
Breew, pasa más bien por PowerFORM
Hola Kuk.
Si, lo habia pensado, pero es que la primera intencion que tenia era poder leer el codigo en la pantalla con un scaner o un telefono movil.
Pero aparentemente con la fuente que utilizo, veo una diferencia enorme con la etiqueta .
El caso es que queria saber que fuente utilizais en la pantalla o si quizas utilizais algun control especifico. La impresion la he hecho desde una CMtable con la opcion printable.
Breew is offline   Responder Con Cita
  #6
Antiguo 20 de septiembre de 2018, 22:52
Roger
Forero Activo
Última Actividad 04.02.2021 13:03
Posts Posts: 236
Likes enviados Enviados: 26
Likes recibidos Recibidos: 60

Kuk
Código COBOL:
  1. INSPECT cod REPLACING ALL "$" BY " ".
esa linea no va.

Los codigos de barras de las etiquetas por defecto son 13.
puse 16 por una exigencia de la empresa.
Roger is offline   Responder Con Cita
  #7
Antiguo 21 de septiembre de 2018, 19:23
Gusaiello
Forero Activo
Concurso: Segundo puesto: Ganador/a del Segundo puesto en un concurso - Issue reason: Generador de código QR encriptado Activista del Foro: Activista del Foro - Issue reason: Por aportar ejecrcicios para los novatos 
Última Actividad 17.09.2026 14:29
Posts Posts: 236
Likes enviados Enviados: 150
Likes recibidos Recibidos: 139

Yo creo que la diferencia que ves entre lo que aparece en pantalla y la etiqueta es por que el código EAN-13 no es solo cambiar de fuente, es una conversón de cada uno de los dígitos en función de unas tablas.

Eso funciona con el código 3 de 9, al cual solo hay que agregarle las mascas de inicio y fin que generalmente son asteriscos.

En el caso del EAN-13 las cosas son diferentes, por ejemplo el número 1234567890128 hay que convertirlo (mediante las tablas anteriormente mencionadas) en : 1CDOFQR*ijabci+

Esto es independiente del tamaño del campo, es decir que no importa si tu campo es de mas de 13 dígitos.

Estas son las tablas que vas a necesitar
Código COBOL:
  1.      ******************************************************************
  2.      *            TABLAS PARA EL CODIGO DE BARRAS EAN-13              *
  3.  
  4.        77  CODIGO-AUX           PIC X(13).
  5.        01  DIGITOS REDEFINES CODIGO-AUX.
  6.            03 DIGITO-1          PIC 9(1).
  7.            03 DIGITO-2          PIC 9(1).
  8.            03 DIGITO-3          PIC 9(1).
  9.            03 DIGITO-4          PIC 9(1).
  10.            03 DIGITO-5          PIC 9(1).
  11.            03 DIGITO-6          PIC 9(1).
  12.            03 DIGITO-7          PIC 9(1).
  13.            03 DIGITO-8          PIC 9(1).
  14.            03 DIGITO-9          PIC 9(1).
  15.            03 DIGITO-10         PIC 9(1).
  16.            03 DIGITO-11         PIC 9(1).
  17.            03 DIGITO-12         PIC 9(1).
  18.            03 DIGITO-13         PIC 9(1).
  19.  
  20.        77  PUNTERO-DE-TABLA-DE-VALORES PIC 99.
  21.        77  PUNTERO-STRING       PIC 9(2).
  22.  
  23.        77  EAN-13-X             PIC X(15).
  24.  
  25.        01  DATOS-TABLA-DE-TABLAS.
  26.            03 CERO         PIC X(6) VALUE "111111".
  27.            03 UNO          PIC X(6) VALUE "112122".
  28.            03 DOS          PIC X(6) VALUE "112212".
  29.            03 TRES         PIC X(6) VALUE "112221".
  30.            03 CUATRO       PIC X(6) VALUE "121122".
  31.            03 CINCO        PIC X(6) VALUE "122112".
  32.            03 SEIS         PIC X(6) VALUE "122211".
  33.            03 SIETE        PIC X(6) VALUE "121212".
  34.            03 OCHO         PIC X(6) VALUE "121221".
  35.            03 NUEVE        PIC X(6) VALUE "122121".
  36.  
  37.       *  Tabla para determinar el set de datos a utilizar.
  38.        01  TABLA-DE-TABLAS REDEFINES DATOS-TABLA-DE-TABLAS.
  39.            02              OCCURS 9.
  40.               03 TABLA     PIC 9(1) OCCURS 6.
  41.  
  42.       *                                    12345
  43.        01  DATOS-TABLAS-DE-VALORES.
  44.            03              PIC X(5) VALUE "AKa0K".
  45.            03              PIC X(5) VALUE "BLb1l".
  46.            03              PIC X(5) VALUE "CMc2m".
  47.            03              PIC X(5) VALUE "DNd3n".
  48.            03              PIC X(5) VALUE "EOe4o".
  49.            03              PIC X(5) VALUE "FPf5p".
  50.            03              PIC X(5) VALUE "GQg6q".
  51.            03              PIC X(5) VALUE "HRh7r".
  52.            03              PIC X(5) VALUE "ISi8s".
  53.            03              PIC X(5) VALUE "JTj9t".
  54.  
  55.        01  TABLA-DE-VALORES REDEFINES DATOS-TABLAS-DE-VALORES.
  56.            02 VALOR        OCCURS 9.
  57.               03 CARACTER  PIC X(1) OCCURS 5.
  58.  
  59.        77  COLUMNA-VALORES PIC 9.
  60.        77  FILA-VALORES    PIC 99.
  61.      *                                                                *
  62.      ******************************************************************


Y esta es la rutina

Código COBOL:
  1.      ******************************************************************
  2.        GENERO-EAN-13.
  3.            INITIALIZE EAN-13-X.
  4.            MOVE CODBA-ARTI TO CODIGO-AUX.
  5.            MOVE DIGITO-1   TO EAN-13-X.
  6.  
  7.            MOVE DIGITO-1  TO PUNTERO-DE-TABLA-DE-VALORES.
  8.            ADD  1         TO PUNTERO-DE-TABLA-DE-VALORES.
  9.  
  10.       *    2° DIGITO.
  11.            MOVE TABLA(PUNTERO-DE-TABLA-DE-VALORES, 1) TO COLUMNA-VALORES
  12.            ADD  1 TO DIGITO-2 GIVING FILA-VALORES.
  13.            MOVE 2 TO PUNTERO-STRING.
  14.            STRING CARACTER(FILA-VALORES, COLUMNA-VALORES)
  15.                  DELIMITED BY SIZE INTO EAN-13-X POINTER PUNTERO-STRING.
  16.  
  17.       *    3° DIGITO.
  18.            MOVE TABLA(PUNTERO-DE-TABLA-DE-VALORES, 2) TO COLUMNA-VALORES
  19.            ADD  1 TO DIGITO-3 GIVING FILA-VALORES.
  20.            MOVE 3 TO PUNTERO-STRING.
  21.            STRING CARACTER(FILA-VALORES, COLUMNA-VALORES)
  22.                  DELIMITED BY SIZE INTO EAN-13-X POINTER PUNTERO-STRING.
  23.  
  24.       *    4° DIGITO.
  25.            MOVE TABLA(PUNTERO-DE-TABLA-DE-VALORES, 3) TO COLUMNA-VALORES
  26.            ADD  1 TO DIGITO-4 GIVING FILA-VALORES.
  27.            MOVE 4 TO PUNTERO-STRING.
  28.            STRING CARACTER(FILA-VALORES, COLUMNA-VALORES)
  29.                  DELIMITED BY SIZE INTO EAN-13-X POINTER PUNTERO-STRING.
  30.  
  31.       *    5° DIGITO.
  32.            MOVE TABLA(PUNTERO-DE-TABLA-DE-VALORES, 4) TO COLUMNA-VALORES
  33.            ADD  1 TO DIGITO-5 GIVING FILA-VALORES.
  34.            MOVE 5 TO PUNTERO-STRING.
  35.            STRING CARACTER(FILA-VALORES, COLUMNA-VALORES)
  36.                  DELIMITED BY SIZE INTO EAN-13-X POINTER PUNTERO-STRING.
  37.  
  38.       *    6° DIGITO.
  39.            MOVE TABLA(PUNTERO-DE-TABLA-DE-VALORES, 5) TO COLUMNA-VALORES
  40.            ADD  1 TO DIGITO-6 GIVING FILA-VALORES.
  41.            MOVE 6 TO PUNTERO-STRING.
  42.            STRING CARACTER(FILA-VALORES, COLUMNA-VALORES)
  43.                  DELIMITED BY SIZE INTO EAN-13-X POINTER PUNTERO-STRING.
  44.  
  45.       *    7° DIGITO.
  46.            MOVE TABLA(PUNTERO-DE-TABLA-DE-VALORES, 6) TO COLUMNA-VALORES
  47.            ADD  1 TO DIGITO-7 GIVING FILA-VALORES.
  48.            MOVE 7 TO PUNTERO-STRING.
  49.            STRING CARACTER(FILA-VALORES, COLUMNA-VALORES)
  50.                  DELIMITED BY SIZE INTO EAN-13-X POINTER PUNTERO-STRING.
  51.  
  52.       *    SEPARADOR
  53.            MOVE 8 TO PUNTERO-STRING.
  54.            STRING "*"
  55.                  DELIMITED BY SIZE INTO EAN-13-X POINTER PUNTERO-STRING.
  56.  
  57.       *    EL RESTO ES DE LA TABLA C (3).
  58.      *    8° DIGITO.
  59.            MOVE  3 TO COLUMNA-VALORES
  60.            ADD   1 TO DIGITO-8 GIVING FILA-VALORES.
  61.            MOVE  9 TO PUNTERO-STRING.
  62.            STRING CARACTER(FILA-VALORES, COLUMNA-VALORES)
  63.                  DELIMITED BY SIZE INTO EAN-13-X POINTER PUNTERO-STRING.
  64.  
  65.       *    9° DIGITO.
  66.            MOVE  3 TO COLUMNA-VALORES
  67.            ADD   1 TO DIGITO-9 GIVING FILA-VALORES.
  68.            MOVE 10 TO PUNTERO-STRING.
  69.            STRING CARACTER(FILA-VALORES, COLUMNA-VALORES)
  70.                  DELIMITED BY SIZE INTO EAN-13-X POINTER PUNTERO-STRING.
  71.  
  72.       *    10° DIGITO.
  73.            MOVE  3 TO COLUMNA-VALORES
  74.            ADD   1 TO DIGITO-10 GIVING FILA-VALORES.
  75.            MOVE 11 TO PUNTERO-STRING.
  76.            STRING CARACTER(FILA-VALORES, COLUMNA-VALORES)
  77.                  DELIMITED BY SIZE INTO EAN-13-X POINTER PUNTERO-STRING.
  78.  
  79.       *    11° DIGITO.
  80.            MOVE  3 TO COLUMNA-VALORES
  81.            ADD   1 TO DIGITO-11 GIVING FILA-VALORES.
  82.            MOVE 12 TO PUNTERO-STRING.
  83.            STRING CARACTER(FILA-VALORES, COLUMNA-VALORES)
  84.                  DELIMITED BY SIZE INTO EAN-13-X POINTER PUNTERO-STRING.
  85.  
  86.       *    12° DIGITO.
  87.            MOVE  3 TO COLUMNA-VALORES
  88.            ADD   1 TO DIGITO-12 GIVING FILA-VALORES.
  89.            MOVE 13 TO PUNTERO-STRING.
  90.            STRING CARACTER(FILA-VALORES, COLUMNA-VALORES)
  91.                  DELIMITED BY SIZE INTO EAN-13-X POINTER PUNTERO-STRING.
  92.  
  93.       *    13° DIGITO.
  94.            MOVE  3 TO COLUMNA-VALORES
  95.            ADD   1 TO DIGITO-13 GIVING FILA-VALORES.
  96.            MOVE 14 TO PUNTERO-STRING.
  97.            STRING CARACTER(FILA-VALORES, COLUMNA-VALORES)
  98.                  DELIMITED BY SIZE INTO EAN-13-X POINTER PUNTERO-STRING.
  99.  
  100.       *    CIERRE.
  101.            MOVE 15 TO PUNTERO-STRING.
  102.            STRING "+"
  103.                  DELIMITED BY SIZE INTO EAN-13-X POINTER PUNTERO-STRING.
  104.  
  105.            MOVE EAN-13-X TO CODBA-AUX.
  106.  
  107.       ******************************************************************


El digito verificador se obtiene :
Numerar los digitos de derecha a izquierda
Sumar los de las posiciones pares.(x)
Sumar los de las posiciones impares (y)
Calcular z=x*3y
Buscar el primer numero divisible por diez siquiente a este resultado (m)
El verivicador es m-z.

Por ejemplo el verificador de 123456789012 es 8
La suma de los digitos pares da 26
La suma de los impares da 22
26+22*3=92
100-92=8

Espero te sirva.
Gusaiello is offline   Responder Con Cita
  #8
Antiguo 21 de septiembre de 2018, 19:35
Kuk
Administrador
Última Actividad 19.09.2026 20:11
Posts Posts: 2.500
Likes enviados Enviados: 1037
Likes recibidos Recibidos: 1207

Breew, yo en su día lo único que necesitaba era poder imprimir pegatinas con códigos de barras. Usar PowerFORM para lectura de pantalla lo veo más complicado, porque la salida de PowerFORM no se puede poner en un control visual. A lo mejor se podría intentar generar el informe en PowerFORM, convertirlo en PDF y mediante una OCX que lee dicho formato mostrarlo en pantalla. No es una solución ideal pero puede funcionar.



NORMAS DEL FORO - para garantizar el buen funcionamiento del Foro.
¿Te han ayudado? NO TE OLVIDES de darle a
¿Quieres dirigirte a alguien en tu post? Notifícale haciendo clic en su Nick
Kuk is offline   Responder Con Cita
  #9
Antiguo 21 de septiembre de 2018, 22:57
Breew
Patrocinador del Foro
Última Actividad 09.05.2022 07:47
Posts Posts: 125
Likes enviados Enviados: 104
Likes recibidos Recibidos: 8

Hola.

He probado la solucion de Roger y funciona , pero es sumamente lento, creo que es debido al tamaño del codigo que hace que el lector tarde mucho en fijarlo todo sobre la pantalla.

Intentare el algoritmo de Gusaiello para crear un CmText y comprobar si el lector lo interpreta en la pantalla.

Y tambien lo imprimire en un pdf.
Kuk, has probado algun ocx que funcione?
Breew is offline   Responder Con Cita
  #10
Antiguo 22 de septiembre de 2018, 11:08
Kuk
Administrador
Última Actividad 19.09.2026 20:11
Posts Posts: 2.500
Likes enviados Enviados: 1037
Likes recibidos Recibidos: 1207

Citación del post de Breew Ver Mensaje
Kuk, has probado algun ocx que funcione?
Mira este a ver, a mi me ha funcionado bien: [Aporte] FoxitReader - COBOL Foro



NORMAS DEL FORO - para garantizar el buen funcionamiento del Foro.
¿Te han ayudado? NO TE OLVIDES de darle a
¿Quieres dirigirte a alguien en tu post? Notifícale haciendo clic en su Nick
Kuk is offline   Responder Con Cita
Respuesta


Herramientas

Derechos de Publicación
No puedes publicar nuevos temas
No puedes publicar posts/responder
No puedes adjuntar archivos
No puedes editar tus posts

BB code is habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado

Saltar a Foro


La franja horaria es GMT +2. Ahora son las 14:48.
Powered by: vBulletin, Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.