He aquí el syntax en SPSS
******************************************************************************************************************************* SEPARAR RUT y DV en dos variables.
*DADA una variable TEXTO 'RUTDV' en la cual se encuentren registrados todos los rut, con el siguiente formato
[RUT]-[DV], ó '12345678-k'; este syntax puede crear el RUT y el DV por separado .
********************************************************************** CREA espacios para variables texto.
NUMERIC blank (F1) .
STRING RUT (a20) .
STRING DV (a1) .
COMPUTE blank = INDEX(RUTDV,'-' ).
EXECUTE .
COMPUTE RUT = SUBSTR(RUTDV,1,blank-1 ).
EXECUTE .
COMPUTE DV = SUBSTR(RUTDV,blank+1 ).
EXECUTE .
********************************************************************** CONVIERTE rut extraido en numerico .
ALTER TYPE RUT (F8) .
******************************************************************************************************************************* CALCULAR los DV a partir del RUT .
COMPUTE RUTtext = RUT .
EXECUTE .
ALTER TYPE RUTtext (A8) .
STRING i8 i7 i6 i5 i4 i3 i2 i1 (A1) .
EXECUTE .
COMPUTE i8 = SUBSTR(RUTtext,1,1).
COMPUTE i7 = SUBSTR(RUTtext,2,1).
COMPUTE i6 = SUBSTR(RUTtext,3,1).
COMPUTE i5 = SUBSTR(RUTtext,4,1).
COMPUTE i4 = SUBSTR(RUTtext,5,1).
COMPUTE i3 = SUBSTR(RUTtext,6,1).
COMPUTE i2 = SUBSTR(RUTtext,7,1).
COMPUTE i1 = SUBSTR(RUTtext,8,1).
EXECUTE .
RECODE
i8 i7 i6 i5 i4 i3 i2 i1
(''=0)
('0'=0)
('1'=1)
('2'=2)
('3'=3)
('4'=4)
('5'=5)
('6'=6)
('7'=7)
('8'=8)
('9'=9) INTO
n8 n7 n6 n5 n4 n3 n2 n1 .
EXECUTE .
COMPUTE RUTtot = n8*3+n7*2+n6*7+n5*6+n4*5+n3*4+n2*3+n1*2 .
EXECUTE .
COMPUTE DVc = 11 - mod(RUTtot,11) .
EXECUTE .
ALTER TYPE DVc (F2) .
STRING DVrut (a1) .
IF(DVc = 11) DVrut = '0' .
IF(DVc = 10) DVrut = 'K' .
IF(DVc = 9) DVrut = '9' .
IF(DVc = 8) DVrut = '8' .
IF(DVc = 7) DVrut = '7' .
IF(DVc = 6) DVrut = '6' .
IF(DVc = 5) DVrut = '5' .
IF(DVc = 4) DVrut = '4' .
IF(DVc = 3) DVrut = '3' .
IF(DVc = 2) DVrut = '2' .
IF(DVc = 1) DVrut = '1' .
EXECUTE .
VARIABLE LABELS DVrut 'DV calculado a partir de RUT numerico' .