Cobol Foro
Navegación en el Foro
Retroceder   Cobol Foro Entornos de desarrollo y compiladores Cobol Fujitsu COBOL PowerCOBOL y COM/OLE
PowerCOBOL y COM/OLE La utilización de COM / OLE en PowerCOBOL
 
Otros temas que te pueden interesar
Tema Autor Foro Respuestas Último post
Cálculo CRC8 Kuk Cocina MicroFocus 0 4 de octubre de 2021 10:37
[Sintaxis] Calcular dias, meses y años entre dos fechas Roger Fujitsu COBOL 7 6 de febrero de 2020 09:27

Respuesta

  #21
Antiguo 3 de octubre de 2021, 21:38
Dasije
Forero Senior
Última Actividad 06.03.2022 17:04
Posts Posts: 173
Likes enviados Enviados: 1
Likes recibidos Recibidos: 79

Hola @Kuk.

Te dejo el código para NetCOBOL, no hacía falta la directiva para el binario, pero si mover el resultado una PIC 9(3) sin COMP-5, a pelo, entonces si se ve correctamente el resultado, cosas del compilador.

Código COBOL:
  1.  program-id. "CRC8".
  2.  
  3.  environment division.
  4.  configuration section.
  5.  
  6.  data division.
  7.  working-storage section.
  8.  
  9.   01 CRC8-Table.
  10.       05 filler occurs 256.
  11.          10 tbByte            PIC X(1).
  12.        
  13.   01 cadena                   PIC X(256) VALUE
  14.      "https://batuz.eus/QRTBAI/?id=TBAI-00000006Y-251019-btFpwP8dcLGAF-237&s=T&nf=27174&i=4.70".
  15.   01 len                      PIC 9(2) COMP-5.
  16.   01 crc                      PIC X(1).
  17.   01 crcNum redefines crc     PIC 9(2) comp-5.
  18.  
  19.   01 crc_resultado            PIC 9(3) VALUE ZEROS.
  20.        
  21.   01 idx-1                    PIC 9(2) COMP-5.
  22.      
  23.   01 tmpChar                  PIC X(1).
  24.   01 tmpIdx redefines tmpChar PIC 9(2) COMP-5.
  25.  
  26.   01 valor_XOR_AND            PIC X(1) VALUE X"FF".
  27.  
  28.   procedure division.
  29.  
  30.       perform chargeTable
  31.       perform getLen
  32.            
  33.       move 1 to idx-1
  34.       move 0 to crcNum
  35.            
  36.       perform until idx-1 > len
  37.               move cadena(idx-1:1) to tmpChar
  38.                
  39.               call "CBL_XOR" using crcNum tmpIdx by value 1
  40.               call "CBL_AND" using valor_XOR_AND tmpIdx by value 1
  41.                
  42.               move tbByte(tmpIdx + 1) to crc
  43.                
  44.               add 1 to idx-1
  45.       end-perform
  46.            
  47.       call "CBL_AND" using valor_XOR_AND crcNum by value 1
  48.            
  49.       move crcNum to crc_resultado      
  50.  
  51.       display crc_resultado      
  52.  
  53.       goback.
  54.  
  55.  chargeTable.
  56.       string X"00", X"07", X"0E", X"09", X"1C", X"1B", X"12",
  57.              X"15", X"38", X"3F", X"36", X"31", X"24", X"23",
  58.              X"2A", X"2D", X"70", X"77", X"7E", X"79", X"6C",
  59.              X"6B", X"62", X"65", X"48", X"4F", X"46", X"41",            
  60.              X"54", X"53", X"5A", X"5D", X"E0", X"E7", X"EE",
  61.              X"E9", X"FC", X"FB", X"F2", X"F5", X"D8", X"DF",
  62.              X"D6", X"D1", X"C4", X"C3", X"CA", X"CD", X"90",
  63.              X"97", X"9E", X"99", X"8C", X"8B", X"82", X"85",
  64.              X"A8", X"AF", X"A6", X"A1", X"B4", X"B3", X"BA",
  65.              X"BD", X"C7", X"C0", X"C9", X"CE", X"DB", X"DC",
  66.              X"D5", X"D2", X"FF", X"F8", X"F1", X"F6", X"E3",
  67.              X"E4", X"ED", X"EA", X"B7", X"B0", X"B9", X"BE",
  68.              X"AB", X"AC", X"A5", X"A2", X"8F", X"88", X"81",
  69.              X"86", X"93", X"94", X"9D", X"9A", X"27", X"20",
  70.              X"29", X"2E", X"3B", X"3C", X"35", X"32", X"1F",
  71.              X"18", X"11", X"16", X"03", X"04", X"0D", X"0A",
  72.              X"57", X"50", X"59", X"5E", X"4B", X"4C", X"45",
  73.              X"42", X"6F", X"68", X"61", X"66", X"73", X"74",
  74.              X"7D", X"7A", X"89", X"8E", X"87", X"80", X"95",
  75.              X"92", X"9B", X"9C", X"B1", X"B6", X"BF", X"B8",
  76.              X"AD", X"AA", X"A3", X"A4", X"F9", X"FE", X"F7",
  77.              X"F0", X"E5", X"E2", X"EB", X"EC", X"C1", X"C6",
  78.              X"CF", X"C8", X"DD", X"DA", X"D3", X"D4", X"69",
  79.              X"6E", X"67", X"60", X"75", X"72", X"7B", X"7C",
  80.              X"51", X"56", X"5F", X"58", X"4D", X"4A", X"43",
  81.              X"44", X"19", X"1E", X"17", X"10", X"05", X"02",
  82.              X"0B", X"0C", X"21", X"26", X"2F", X"28", X"3D",
  83.              X"3A", X"33", X"34", X"4E", X"49", X"40", X"47",
  84.              X"52", X"55", X"5C", X"5B", X"76", X"71", X"78",
  85.              X"7F", X"6A", X"6D", X"64", X"63", X"3E", X"39",
  86.              X"30", X"37", X"22", X"25", X"2C", X"2B", X"06",
  87.              X"01", X"08", X"0F", X"1A", X"1D", X"14", X"13",
  88.              X"AE", X"A9", X"A0", X"A7", X"B2", X"B5", X"BC",
  89.              X"BB", X"96", X"91", X"98", X"9F", X"8A", X"8D",
  90.              X"84", X"83", X"DE", X"D9", X"D0", X"D7", X"C2",
  91.              X"C5", X"CC", X"CB", X"E6", X"E1", X"E8", X"EF",
  92.              X"FA", X"FD", X"F4", X"F3"
  93.              delimited by size into CRC8-Table.
  94.  
  95.  getLen.
  96.  
  97.       move 88 to len
  98.  
  99.      *> Fujitsu: function stored-cahr-length
  100.     *> Otros: un bucle, unstring con x"00" o NOT = SPACES etc.
  101.             .
  102.  
  103.  end program CRC8.

El resultado en este caso debe ser 007 por tener otro string diferente, compruébalo en el ejemplo de Java, y así debe ser.

He comprobado los compiladores online, en ambos casos funciona correctamente.

Saludos y gracias.



Empresa de desarrollo de aplicaciones en COBOL.

DASIJE INFORMATICA, S.L.
C/ TOMAS BRETON 20
11406 JEREZ DE LA FRONTERA
CADIZ

Teléfono : 956 11 21 11
Web: http://www.dasije.es / DASIJE INFORMATICA
E-m@il: clientes(@)dasije.es
Dasije is offline   Responder Con Cita
  #22
Antiguo 3 de octubre de 2021, 23:03
Kuk
Administrador
Última Actividad 19.09.2026 20:11
Posts Posts: 2.500
Likes enviados Enviados: 1037
Likes recibidos Recibidos: 1207

@Dasije, en Java da 007 también



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 15:06.
Powered by: vBulletin, Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.