08-23-2012 09:44 AM
data l i am having a record in a table that data in that record is having with tab Ex: OBS_Data done this ok Now i want to split it in to obs Obs1 -Done Obs2- this obs3-ok or is there any way in the data that we can replace tab with | or ^ Ex: done^this^ok
08-23-2012 10:18 AM
Your question isn't very clear to me. If you have a string and want to replace the tab character with a | or ^, then you can just use the TRANSWRD function.
out = transwrd(in,'09'x,"|");
'09'x is the hex code for a tab in ASCII. If it is an EBCDIC code, you'll need to look it up.
08-23-2012 12:03 PM
You probably want the double trailing @@, which allow you to easily read multiple observations from a single input data line. I believe the tabs will just be treated as white space (so SAS will see each tab-deliminted value as a single variable), so you don't need any DLM stuff unless you have contiguous tabs:
input text : $10. @@;
done this ok
08-23-2012 12:21 PM
TABS are not treated the sames as spaces unless you tell it differently on the INFILE statement.
You could use DLM='2009'x to treate space and tab as delimiters
Or use EXPANDTABS to have it convert the tabs to spaces on the way into the input buffer.