He tenido que hacer ésta función para un programa del curro. Si a alguien le viene bien, aquí lo tiene
PUBLIC FUNCTION calculadigito(entidad AS String, oficina AS String, cuenta AS String) AS String

DIM aPesos AS Array = [1, 2, 4, 8, 5, 10, 9, 7, 3, 6] 'Array de "pesos"
DIM cad AS String
DIM digito AS String = " "
DIM ad AS NEW Integer[]
DIM n, r AS Integer
DIM dc1 AS Integer = 0
DIM dc2 AS Integer = 0
DIM x AS Integer

IF Len(entidad) = 4 AND Len(oficina) = 4 AND Len(cuenta) = 10 THEN
cad = entidad & oficina
FOR x = 1 TO 8
ad.Add(Val(Mid(cad, x, 1)))
NEXT
FOR x = 0 TO 7
n = ad[x]
dc1 = dc1 + (aPesos[x + 2] * n)
NEXT
r = dc1 MOD 11
dc1 = 11 - r
IF dc1 = 10 THEN dc1 = 1
IF dc1 = 11 THEN dc1 = 0
cad = cuenta
ad.Clear
FOR x = 1 TO 10
ad.Add(Val(Mid(cad, x, 1)))
NEXT
FOR x = 0 TO 9
n = ad[x]
dc2 = dc2 + (aPesos[x] * n)
NEXT
r = dc2 MOD 11
dc2 = 11 - r
IF dc2 = 10 THEN dc2 = 1
IF dc2 = 11 THEN dc2 = 0
digito = Str(dc1) & Str(dc2)
ENDIF
RETURN digito

END