Page 3 of 3 FirstFirst 1 2 3
Results 21 to 22 of 22

Thread: Calcular CRC8 en Cobol

  1. #21

    Default

    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 Code:
    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

  2. #22
    Administrador Kuk's Avatar
    Idade
    37
    Posts
    2,001
    Rep Power
    10

    Default

    @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

Page 3 of 3 FirstFirst 1 2 3

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Similar Threads

  1. [Sintaxis] Calcular dias, meses y años entre dos fechas
    By Roger in forum Fujitsu COBOL
    Replies: 7
    Last Post: 06-02-2020, 08:27

Tags for this Thread

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •