Sorry just realized it was a result of incorrect indexing. I needed to create three seperate index for each possible input.
if tpp == 1
log(loggedsets).recordsraw(index).tpp = textscan(sample, '%s %s %s %s %n %s %s %n %n %n %n', 'delimiter',',');
if strcmp(log(loggedsets).recordsraw(index).tpp{:,3}, 'B')
log(loggedsets).recordsb(indexb).tpp = log(loggedsets).recordsraw(index).tpp
indexb = indexb +1
elseif strcmp(log(loggedsets).recordsraw(index).tpp{:,3}, 'C')
log(loggedsets).recordsc(indexc).tpp = log(loggedsets).recordsraw(index).tpp
indexc = indexc +1
elseif strcmp(log(loggedsets).recordsraw(index).tpp{:,3}, 'M')
log(loggedsets).recordsm(indexm).tpp = log(loggedsets).recordsraw(index).tpp
indexm = indexm +1
end
index = index + 1
end