Think of multiple field sorting as "importance level". It'll sort by the first field you give it then sort by the next field and so on till it's done all the fields you want.
I changed your code to uses only strings for first, middle, and last name. It has two with the same last name and sorts by last and middle names... notice how they are before sorting and after.
type MyType
First as string
Middle as string
Last as string
endtype
dim MyArray(5) as MyType
` Fill array here
MyArray(0).First = "Bob"
MyArray(0).Middle = "John"
MyArray(0).Last = "Smith"
MyArray(1).First = "Frank"
MyArray(1).Middle = "G"
MyArray(1).Last = "Cruz"
MyArray(3).First = "Marry"
MyArray(3).Middle = "Gene"
MyArray(3).Last = "Lamb"
MyArray(2).First = "Alyssa"
MyArray(2).Middle = "Vanessa"
MyArray(2).Last = "Armstrong"
MyArray(4).First = "Ali"
MyArray(4).Middle = "Marie"
MyArray(4).Last = "Jordan"
MyArray(5).First = "Harry"
MyArray(5).Middle = "Michael"
MyArray(5).Last = "Armstrong"
print "Unsorted:"
for t=0 to 5
print MyArray(t).First+", "+MyArray(t).Middle+", "+MyArray(t).Last
next t
print ""
` Sort by last name and middle name
sort array MyArray(),3,2
print "Sorted by Last Name then Middle Name:"
for t=0 to 5
print MyArray(t).First+", "+MyArray(t).Middle+", "+MyArray(t).Last
next t
wait key