Date: Tue, 1 Oct 2002 12:39:17 +0100
Reply-To: Peter Crawford <peter.crawford@DB.COM>
Sender: "SAS(r) Discussion" <SAS-L@LISTSERV.UGA.EDU>
From: Peter Crawford <peter.crawford@DB.COM>
Subject: Re: Inserting blank lines into a dataset......
Content-type: text/plain; charset=iso-8859-1
Thank you Tom, that clarifies....
You may find some ProcReport experts on SAS-L have already
approached problems like yours and come up with different
solutions.. It is usually worth asking about the underlying issue..
To insert blank lines in the data at the points you need, your data
set must be rewritten, because the sql insert statement acts just
like proc append. (unless your data set has indexes that can deliver
rows in the order you want, and you can provide key values to insert
suitably). However, inserting entirely empty rows where you need
can be achieved without knowing anything about the record structure.
.... except that as this method uses variable and array names,
these names should not also be in your dataset.
************** beware that this has not been tested ;
*assumption 2:- Input dataset is your.dataset
and output dataset is your.extended_dataset;
data empty(label='empty observation, like your.dataset');
* define your inserts/after pairs here;
%let inserts = 3 31 3 62 4 93 5 100 2 110;
/* inserts after_row_number */
%let n_inserts = %eval( %nWords( &inserts /2 ) ) ;
* macro nWords should be available in sas-l archives;
array atno(2:&n_inserts ) _temporary_ (&inserts) ;
* First, deal with inserts ;
do case= 1 to &n_inserts;
do row = 1 to atno(2, case) ;
do row = 1 to atno(1,case);
* Next, deal with the rest or original, if any ;
do while( not eof_original);
* Having regenerated all the data, now ;
set your.dataset end = eof_original ;
set empty point=Empty_nobs nobs=Empty_nobs ;
* point avoids setting end-of-file;
* ensure process variables do not go into output;
drop case row ;
* other names used, to be aware of:-
eof_original, Empty_nobs, atno ;
************** beware that that has not been tested ;
Datum: 01/10/2002 10:40
An: Peter Crawford/Zentrale/DeuBaExt@Zentrale
Betreff: Re: Antwort: Inserting blank lines into a dataset......
We are struggling with SAS ODS RTF. Our client wants output in RTF no question.
Up till now we've been using DDE in SAS V6, but I've been assigned the task of the transition to ODS RTF.
Most problems have been surmounted, but the problem remains with ODS RTF having the inability to
count vertically. Say I've got a table that needs to portray 5 lots of summary stats - n, mean, median, SD, min, max
Q1 and Q2 - ie. 5 lots of blocks of 8 lines of data. If I can only fit 2 entire blocks on one page and having one block flowing
from one page onto the next is out of the question, then I either have create a page counting/breaking variable or I can
insert blank lines into my final dataset before ODS RTF and proc report to make my data fit the page.
In fact we have to do both as on occasion we have to retain information on order variables over more than one page.
Hope this clarifies the problem.
Peter Crawford wrote:
> Hi Tom
> please may I ask why you want to do this ?
> Datum: 01/10/2002 10:16
> An: SAS-L@LISTSERV.UGA.EDU
> Antwort an: Tom Ragan <tom.ragan@EUROPE.PPDI.COM>
> Betreff: Inserting blank lines into a dataset......
> Hello all,
> I've been trying to write a macro whereby I can insert any number of
> blank lines at any point in an input dataset - ie. my macro variables
> would ideally be:
> 1) Input dataset
> 2) Line at which blank lines need to be inserted
> 3) Number of blank lines to be inserted
> Due to my relative inexperience in SAS I am having some problems
> especially when it comes to the separate handling of numeric and
> character variables. Any suggestions would be very welcome.
> Thanks in advance,
Diese E-Mail enthält vertrauliche und/oder rechtlich geschützte Informationen. Wenn Sie nicht der richtige Adressat sind oder diese E-Mail irrtümlich erhalten haben, informieren Sie bitte sofort den Absender und vernichten Sie diese Mail. Das unerlaubte Kopieren sowie die unbefugte Weitergabe dieser Mail ist nicht gestattet.
This e-mail may contain confidential and/or privileged information. If you are not the intended recipient (or have received this e-mail in error) please notify the sender immediately and destroy this e-mail. Any unauthorized copying, disclosure or distribution of the material in this e-mail is strictly forbidden.