Function in Soundex module doesn’t work

python

#1



This is one of the functions in a soundex module I'm running to deal with SPSS data. It used to work, years ago, but now it generates "Error Computing Case" for each case. Anyone have an idea why this might be happening??


def spssoundex(newvariablename,computingvariable):
    import spss
    varnames = []
    varcount = spss.GetVariableCount()
    for i in xrange(varcount):
        varnames.append(spss.GetVariableName(i))
    varindex = varnames.index(computingvariable)
    cursor = spss.Cursor(accessType = 'w')
    cursor.SetVarNameAndType([newvariablename],[4])
    cursor.CommitDictionary()
    for i in range(cursor.GetCaseCount()):
        indcursor = cursor.fetchone()
        try:
        	cursor.SetValueChar(newvariablename,get_soundex(indcursor[varindex]))
        	cursor.CommitCase()
        except:
            print "Error Computing Case"
            try:
                print casecursor[varnames.index("CASE")]
            except:
                print "CASE variable not in file"
    cursor.close


#2

def get_soundex(name):
"""name -> Soundex code, following Knuth Vol 3 Ed 2 pg 394.

The number of digits generated can be modified by setting the
module-level variable, NDIGITS (default 3).
"""

if not name:
    raise ValueError("soundex requires non-empty name argument")
coded = name.translate(_tran)
out = [name[0].upper()]
lastrealcode = coded[0]
ignore_same = 1
for thiscode in coded[1:]:
    if thiscode == "B":
        ignore_same = 0
        continue
    if thiscode == "I":
        continue
    if ignore_same and lastrealcode == thiscode:
        continue
    out.append(thiscode)
    lastrealcode = thiscode
    ignore_same = 1
    if NDIGITS and len(out) > NDIGITS:
        break
if len(out) < NDIGITS + 1:
    out.append("0" * (NDIGITS + 1 - len(out)))
return "".join(out)

This function may be the root of the above function's issues...