Bueno me imagino que RUT debe ser igual a RUC(Perú) ó NIT
bueno yo tengo una rutina que valida RUC de 11 DIgitos Ahi Va.
*function VALRUC11
parameter xruc
private a, b, c, d, e, f, g, h, i, j, k
if empty(xruc)
return .T.
endif
if len(alltrim(xruc))<>11
return .F.
endif
store 0 to a, b, c, d, e, f, g, h, i, j, k
a = val(substr(xruc, 1, 1))*5
b = val(substr(xruc, 2, 1))*4
c = val(substr(xruc, 3, 1))*3
d = val(substr(xruc, 4, 1))*2
e = val(substr(xruc, 5, 1))*7
f = val(substr(xruc, 6, 1))*6
g = val(substr(xruc, 7, 1))*5
h = val(substr(xruc, 8, 1))*4
i = val(substr(xruc, 9, 1))*3
j = val(substr(xruc, 10, 1))*2
k = val(substr(xruc, 11, 1))
wsuma = a+b+c+d+e+f+g+h+i+j
wresto = mod(wsuma, 11)
wultimodig = 11-wresto
if wultimodig<>k
if .not. ((wresto=1 .and. k=0) .or. (wresto=0 .and. k=1))
return .F.
endif
endif
return .T.
Salu2
CesarZ