Ver Mensaje Individual
  #4
Antiguo 29 de septiembre de 2021, 00:29
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 Dasije Ver Mensaje
como calcular el XOR
Fujitsu: Chapter 10 Logical Operator Routines > 10.6 CBL_XOR
MF: CBL_XOR

@Dasije, tienes algún ejemplo de lo que le pasas y qué tiene que dar en la salida?


Ya no tengo el Fujitsu Cobol instalado, pero esto funciona en MF y debe funcionar en Fujitsu:

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

Para la cadena "Hola amigo" en la salida tengo 023 o lo que es lo mismo X'17'



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