* Read text/2 v = array(24) f = array(24) tos = char(9) " " ;* break characters are both tab and space pat1 = break(tos) . dstamp pat2 = span(tos) break(tos) . *v[i] span(tos) (break(tos) | (len(1) rem)) . *f[i] rowcount = 0 hold_dstamp = "" num_bad_rows = 0 num_invalid_rows = 0 in0 row = input :f(endinput) rowcount = rowcount + 1 row ? pat1 = :f(invalid_row) * duplicated datestamp? * if dstamp = hold_dstamp then duplicated hold_dstamp = differ(hold_dstamp,dstamp) dstamp :s(nodup) output = dstamp ": datestamp at row " rowcount " duplicates datestamp at " rowcount - 1 nodup i = 1 in1 row ? pat2 = :f(invalid_row) i = lt(i,24) i + 1 :s(in1) * Is this a goodrow? * if any flag is < 1 then row has bad data c = 0 goodrow c = lt(c,24) c + 1 :f(goodrow2) num_bad_rows = lt(f[c],1) num_bad_rows + 1 :s(goodrow2)f(goodrow) goodrow2 :(in0) invalid_row num_invalid_rows = num_invalid_rows + 1 :(in0) endinput output = output = "Total number of rows : " rowcount output = "Total number of rows with invalid format: " num_invalid_rows output = "Total number of rows with bad data : " num_bad_rows output = "Total number of good rows : " rowcount - num_invalid_rows - num_bad_rows end