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.