|
Imagine the following data set is the value of one macro variable as
it would look in SASHELP.VMACRO. I have shortened the length of value
from 200 to 60, to make it easier to "see" everything.
data work.offset;
infile cards;
attrib offset length=8;
attrib value length=$60 ;
input offset 5. +1 value $char60.;
cards;
0 D:\Program Files\SASOnlineDocV8\sasdoc\saspdf\win\a01.pdf|D:
60 \Program Files\SASOnlineDocV8\sasdoc\saspdf\win\a02.pdf|D:\P
120 rosgram Files\SASOnlineDocV8\sasdoc\saspdf\win\a03.pdf|D:\Pro
180 gram Files\SASOnlineDocV8\sasdoc\saspdf\win\a04.pdf|D:\Progr
240 am Files\SASOnlineDocV8\sasdoc\saspdf\win\a05.pdf|D:\Program
300 Files\SASOnlineDocV8\sasdoc\saspdf\win\c01.pdf|D:\Program F
360 iles\SASOnlineDocV8\sasdoc\saspdf\win\c02.pdf|D:\Program Fil
420 es\SASOnlineDocV8\sasdoc\saspdf\win\c03.pdf|D:\Program Files
480 \SASOnlineDocV8\sasdoc\saspdf\win\c04.pdf|D:\Program Files\S
540 ASOnlineDocV8\sasdoc\saspdf\win\c05.pdf|D:\Program Files\SAS
600 OnlineDocV8\sasdoc\saspdf\win\c06.pdf|D:\Program Files\SASOn
660 lineDocV8\sasdoc\saspdf\win\c07.pdf|D:\Program Files\SASOnli
720 neDocV8\sasdoc\saspdf\win\c08.pdf|D:\Program Files\SASOnline
780 DocV8\sasdoc\saspdf\win\c09.pdf|D:\Program Files\SASOnlineDo
840 cV8\sasdoc\saspdf\win\c10.pdf|D:\Program Files\SASOnlineDocV
900 8\sasdoc\saspdf\win\c11.pdf|D:\Program Files\SASOnlineDocV8\
960 sasdoc\saspdf\win\c12.pdf|D:\Program Files\SASOnlineDocV8\sa
1020 sdoc\saspdf\win\c13.pdf|D:\Program Files\SASOnlineDocV8\sasd
1080 oc\saspdf\win\c14.pdf|D:\Program Files\SASOnlineDocV8\sasdoc
1140 \saspdf\win\c15.pdf|D:\Program Files\SASOnlineDocV8\sasdoc\s
1200 aspdf\win\c16.pdf|D:\Program Files\SASOnlineDocV8\sasdoc\sas
1260 pdf\win\c17.pdf|D:\Program Files\SASOnlineDocV8\sasdoc\saspd
1320 f\win\c18.pdf|D:\Program Files\SASOnlineDocV8\sasdoc\saspdf\
1380 win\c19.pdf|D:\Program Files\SASOnlineDocV8\sasdoc\saspdf\wi
1440 n\c20.pdf|D:\Program Files\SASOnlineDocV8\sasdoc\saspdf\win\
1500 c21.pdf|D:\Program Files\SASOnlineDocV8\sasdoc\saspdf\win\c2
1560 2.pdf|D:\Program Files\SASOnlineDocV8\sasdoc\saspdf\win\c23.
1620 pdf|D:\Program Files\SASOnlineDocV8\sasdoc\saspdf\win\cae.pd
1680 f|D:\Program Files\SASOnlineDocV8\sasdoc\saspdf\win\idx.pdf|
1740 D:\Program Files\SASOnlineDocV8\sasdoc\saspdf\win\pdfidx.htm
;;;;
run;
I want to parse each | (pipe) delimited word and create one observation as...
D:\Program Files\SASOnlineDocV8\sasdoc\saspdf\win\a01.pdf
D:\Program Files\SASOnlineDocV8\sasdoc\saspdf\win\a02.pdf
<some lines omitted>
D:\Program Files\SASOnlineDocV8\sasdoc\saspdf\win\cae.pdf
D:\Program Files\SASOnlineDocV8\sasdoc\saspdf\win\idx.pdf
D:\Program Files\SASOnlineDocV8\sasdoc\saspdf\win\pdfidx.htm
I want to do it in such a way that I don't have to worry about the
length limitation of SAS character variables. I had programmed a
partial solution by loading "value" into a one long character variable
but if the macro variable is longer than 32767 then that doesn't work.
I know I can do this with macro "arrays" but I won't want that. I
want to go straight to data set.
I have written some code that gets close but I won't pollute the list
with that garbage.
Thanks in advance for your help. Let me know if I need to explain further.
|