ArrayLen() returns an integer, the length of the array. On the following lines...
<cfset colList=ArrayLen(cfData.COLUMNS)>
<cfset cityIdx=ListFind(colList, "City")>
You set colList to the return of ArrayLen() (an integer) and then try to reference it as a list. That's probably causing an error.