Página 3 de 3 PrimerPrimer 1 2 3
Resultados 21 al 22 de 22

Tema: Calcular CRC8 en Cobol

  1. #21
      Forero
    Avatar de Dasije

    Registrado
    noviembre de 2015
    Ubicación
    Jerez De La Frontera (cádiz)
    Mensajes
    182
    Última visita
    06.03.2022

    Agradecimientos
     
    Recibidos
    79
    Enviados
    1

    Citaciones y menciones
     
    Mentioned
    5 Post(s)
    Tagged
    0 Thread(s)
    Quoted
    0 Post(s)
    Poder de Reputación
    16

    Predeterminado

    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.

    COBOL Código:
    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.

    0 Not allowed!
    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

  2. #22
      Administrador
    Avatar de Kuk

    Registrado
    enero de 2015
    Ubicación
    Madrid
    Edad
    39
    Mensajes
    2,294
    Última visita
    Ayer a las 11:19

    Agradecimientos
     
    Recibidos
    1,040
    Enviados
    888

    Citaciones y menciones
     
    Mentioned
    106 Post(s)
    Tagged
    0 Thread(s)
    Quoted
    31 Post(s)
    Poder de Reputación
    10

    Predeterminado

    @Dasije, en Java da 007 también

    0 Not allowed!
    ¿Te han ayudado? NO TE OLVIDES de darle al botón
    ¿Quieres dirigirte a alguien en tu post? Notifícale con una mención, tienes 2 opciones:
    1. Haciendo clic en el icono al lado de su nick
    2. Haciendo clic en el botón en el editor y escribiendo su nick.

Página 3 de 3 PrimerPrimer 1 2 3

Información de Tema

Usuarios Viendo este Tema

Actualmente hay 1 usuarios viendo este tema. (0 miembros y 1 visitantes)

Temas Similares

  1. [Sintaxis] Calcular dias, meses y años entre dos fechas
    Por Roger en el foro Fujitsu COBOL
    Respuestas: 7
    Último Mensaje: 06.02.2020, 09:27

Etiquetas para este Tema

Marcadores

Marcadores

Permisos de Publicación

  • No puedes crear nuevos temas
  • No puedes responder temas
  • No puedes subir archivos adjuntos
  • No puedes editar tus mensajes
  •