/* DIGCTRL.P Rutina de càlcul del dígit de control del banc + agencia + cc accepta el número a calcular, el número de dígit i torna el dígit. */ def input parameter num_input as char format "x(10)". def output parameter digit as integer. def var pesos as integer extent 10 no-undo. def var i as integer no-undo. def var j as integer no-undo. def var suma as integer no-undo. pesos[1] = 6. /* unitats */ pesos[2] = 3. /* desenes */ pesos[3] = 7. /* centenes */ pesos[4] = 9. /* milers */ pesos[5] = 10. /* 10-milers */ pesos[6] = 5. /* 100-milers */ pesos[7] = 8. /* milions */ pesos[8] = 4. /* 10-milions */ pesos[9] = 2. /* 100-milions */ pesos[10] = 1. /* 1000-milions */ digit = ?. suma = 0. j = 0. do i = 10 to 1 by -1: j = j + 1. suma = suma + integer (substring (num_input, i, 1)) * pesos[j]. end. digit = 11 - (suma mod 11).