| Date: | Fri, 12 Sep 2003 16:29:26 -0400 |
| Reply-To: | Mark Lamias <Mark.Lamias@GRIZZARD.COM> |
| Sender: | "SAS(r) Discussion" <SAS-L@LISTSERV.UGA.EDU> |
| From: | Mark Lamias <Mark.Lamias@GRIZZARD.COM> |
| Subject: | Re: Data with Carriage return where I don't want it. |
|
| Content-Type: | text/plain; charset="iso-8859-1" |
|---|
Can't you simply compress the ASCII text character for the carriage return
('OD'x) out of the variable after reading in the file?
Sincerely yours,
Mark J. Lamias
-----Original Message-----
From: Ian Whitlock [mailto:WHITLOI1@WESTAT.COM]
Sent: Friday, September 12, 2003 4:25 PM
To: SAS-L@LISTSERV.UGA.EDU
Subject: Re: Data with Carriage return where I don't want it.
Howard,
Thanks for the needed correction.
Ian
-----Original Message-----
From: Howard Schreier [mailto:Howard_Schreier@ITA.DOC.GOV]
Sent: Friday, September 12, 2003 4:15 PM
To: SAS-L@LISTSERV.UGA.EDU; Ian Whitlock
Subject: Re: Data with Carriage return where I don't want it.
I was thinking along the same lines. I suggest the following modifications
to the first DATA step, to avoid duplicate observations, to handle wrapping
beyond a second line, and to pick up the last observation:
Code END=DONE on the INFILE statement. This precludes the use of inline
(CARDS;) data. Instead the records must be in an external file.
Eliminate the first PUT statement.
Insert the statements
if done then put line;
run;
at the end.
On Fri, 12 Sep 2003 15:04:19 -0400, Ian Whitlock <WHITLOI1@WESTAT.COM>
wrote:
>jsl,
>
>I would make it a two step process, one to fix the file and one t read
>the fixed file. This works with the data given. You may need to
>change
lengths
>when more data is considered. If one logical record is more than two
>lines then the first step will need more changes.
>
>filename temp temp ;
>data _null_ ;
> length line $ 200 ;
> retain line ;
> infile cards firstobs = 2 ;
> input ;
> file temp ;
> if substr(_infile_,1,2) ^= " " then
> do ;
> line = trim(line) || _infile_ ;
> put line ;
> end ;
> else
> do ;
> if _n_ > 1 then put line ;
> line = left(_infile_) ;
> end ;
>cards ;
>..........
>;
>
>data w ;
> infile temp dsd dlm = "/" ;
> input name :$30. age :5. title :$70. remuneration :$20. ; run ;
>
>IanWhitlock@westat.com
>-----Original Message-----
>From: jsl [mailto:nospam@NOSPAM.COM]
>Sent: Friday, September 12, 2003 2:44 PM
>To: SAS-L@LISTSERV.UGA.EDU
>Subject: Data with Carriage return where I don't want it.
>
>
>I have a very large "text file" data set that has a bunch of pockets of
>information that looks like the attached text file. I have been able
>to read it just fine for the most part keying off words in the first
>line, but I can't figure out the easiest way to deal with the unwanted
>hard return. That is, given the source of the data, I have no control
>over the unwanted carriage return within a record. However, I do know
>that the first two columns are always blank unless it's a record that
>wrapped. Anybody have simple suggestion on how to keep those lines
>together? Thanks, Jim
|