In your loop to display the list items, keep a track of the starting letter of the previous entry. If it’s different from the one you are about to display, close the previous ul tag (if there was one open), and open a new one. Pseudo-code:
previous-start-letter = "";
opentag = false;
while (get-next-record) {
if (new-record-start-letter <> previous-start-letter) {
if (opentag) output closing ul tag
output opening ul tag
set opentag to true
}
display list item
set previous-start-letter to new-record-start letter
}
if (opentag) output closing ul tag