Ver Mensaje Individual
  #13
Antiguo 22 de enero de 2026, 22:39
Joseg
El Foro es mi casa
Activista del Foro: Activista del Foro - Issue reason: Por participación activa Innovación: Por aportar innovaciones - Issue reason: Por aportar soluciones innovadoras en varias ocasiones 
Última Actividad 17.09.2026 18:23
Posts Posts: 401
Likes enviados Enviados: 130
Likes recibidos Recibidos: 179

Citación del post de Kuk Ver Mensaje
@Joseg, nunca he sido un crack de las formulas y algoritmos la verdad, pero me acabo de dar cuenta de otra cosa que sabemos desde el cole y se nos ha escapado...

El cálculo lo hacemos así:

Código COBOL:
  1.      COMPUTE wsomamodelos = wsomamodelos + byte(idx-1) * idx-1

De esta manera, primero se hace la multiplicación.

Si lo hacemos así, con paréntesis, para que primero se haga la suma:
Código COBOL:
  1.      COMPUTE wsomamodelos = (wsomamodelos + byte(idx-1)) * idx-1

Entonces a mi me da 2 valores diferentes:
Código:
207.99.99;  --> 759816616914665856
247.97.99;  --> 257135248213769984
Ahhhhhhh, ok, ok,

Muchas gracias, Kuk. Cambiaré la fórmula. Sin embargo, chatGTP sugirió este ejemplo, lo que garantiza que siempre funciona, independientemente del orden de los dígitos/caracteres.

Código COBOL:
  1.        DATA DIVISION.
  2.        WORKING-STORAGE SECTION.
  3.        01 WS-TEXTO        PIC X(50)
  4.            VALUE "207.99.99;247.97.99;".
  5.        01 WS-CODE         PIC 9(9) VALUE 0.
  6.        01 WS-ASCII        PIC 9(3).
  7.        01 I               PIC 9(3).
  8.  
  9.        PROCEDURE DIVISION.
  10.            MOVE 0 TO WS-CODE
  11.  
  12.            PERFORM VARYING I FROM 1 BY 1
  13.              UNTIL I > FUNCTION LENGTH(WS-TEXTO)
  14.                COMPUTE WS-ASCII = FUNCTION ORD(WS-TEXTO(I:1))
  15.                COMPUTE WS-CODE = (WS-CODE * 31) + WS-ASCII
  16.                COMPUTE WS-CODE = FUNCTION MOD(WS-CODE, 999999999)
  17.            END-PERFORM
  18.  
  19.            DISPLAY "CODIGO = " WS-CODE
Joseg is offline   Responder Con Cita