That works but I think I would have to modify what I already have. Is there a way work from right to left and check a value? For example, I know that a number must be in spot 67. I went ahead and attached what I have to parse this file. data Student_Degree_Audit; infile 'D:\temp\nick_tmp\Loaded_Degree_Audit\Semester\Degree_audit_1030.txt' length=len; input row $varying200. len; IF index(row, "Student...") = 1 then do; positionOfName=index(row,"("); positionOfEndName = index(row,")"); Studentid=substr(row,positionOfName+1,(positionOfEndName - positionOfName -1)); end; IF index(row, "Program...") = 1 then do; positionOfName=index(row,"("); positionOfEndName = index(row,")"); Program_Nm=substr(row,positionOfName+1,(positionOfEndName - positionOfName -1)); end; IF index(row, "Catalog...") = 1 then do; p=index(row,":"); Catalog_Yr=substr(row,p+2,4); end; a=substr(row,anydigit(scan(row,-1),-1)); cfind=input(scan(row,-1), ??16.); dfind=index(row,')'); IF index(row, '-')= 14 and ANYDIGIT(row)= 15 and index(row,')')NE 8 then /* not working. Picking up too much stuff. */ do Course_Nm= substr(row,findc(row, '-')-3,7); Term_Id_Cd=substr(row,findc(row,'/', "b")-2,6); Grade=substr(row,findc(row,'/',"b")+7, 1); credit=substr(row,62,5); credit=left(credit); newcredit= input(credit,5.); drop credit; rename newcredit=credit; /* revrow = reverse(trim(row)); credit=substr(revrow,1,index(revrow," ")); credit = reverse(trim(credit)); newcredit = input(credit,3.); drop credit; rename newcredit=Credit; */ end; run;
... View more