credo che sia piuttosto ovvio il problema.

dichiari un vettore sm(1 to 10)

ma lo inserisci in un ciclo, dove il suo indice, kb, viene incrementato ad ogni passaggio... e il ciclo va da 0 a 100!

è ovvio che arrivato oltre il 10 salti fuori l'errore...

Boolean

P.S.: sembra stupido, ma l'indentazione del codice, soprattutto in presenza di molti cicli e condizioni, è vitale... cerca di impostarla meglio.