LISTSERV at the University of Georgia
Menubar Imagemap
Home Browse Manage Request Manuals Register
Previous messageNext messagePrevious in topicNext in topicPrevious by same authorNext by same authorPrevious page (December 2002, week 2)Back to main SAS-L pageJoin or leave SAS-L (or change settings)ReplyPost a new messageSearchProportional fontNon-proportional font
Date:         Wed, 11 Dec 2002 11:24:02 -0500
Reply-To:     "Fehd, Ronald J. (PHPPO)" <rjf2@CDC.GOV>
Sender:       "SAS(r) Discussion" <SAS-L@LISTSERV.UGA.EDU>
From:         "Fehd, Ronald J. (PHPPO)" <rjf2@CDC.GOV>
Subject:      tip TextLine replace SYSDATE in TITLE1
Content-Type: text/plain

I developed this macro to return text for titles and footnotes NOTE can replace SYSDATE in title1 with current date and time in whatever format user desires

NOTE usage of mVarTime and default length of WEEKDATE

as always, commentary, critique or dialogue is welcomed

well, folks, this concludes my SAS-L stocking stuffers.

be on the lookout for The Really Big One my year-end reeeeeaally BigBox gift to SAS-L. :-)

as you each are my assets, so I am yours. Have Happy Hollandaise.

Ron Fehd the macro maven CDC Atlanta GA USA RJF2@cdc.gov

/*TEXTLINE macro function returns quoted strings justified in(left, center, right) usage: TITLE %TEXTLINE(LEFT = 'Left' ,CENTER = 'Centered' ,RIGHT = 'Right' );%*closure TITLE; TITLE1 %TEXTLINE(LEFT = 'project name' ,RIGHT = "%sysfunc(time(),time5.)%sysfunc(date(),weekdate29.)" ,RM = -4 );%*move RightMargin to left for page number; TITLE1 %TEXTLINE(LEFT = 'test of mvarTime' ,NOCENTER = 1 ,RIGHT ="%MVARTIME(RETURN=%nrstr(&TIMEAMPM)) %MVARTIME(RETURN=%nrstr(&WEEKDATE))" ,RM = -4 ); NOTE if placing current time and/or date in TITLE1 remember to set options nodate else SAS will put &SYSDATETIME in next empty TITLE line; see test data for use with MVARTIME /* . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . */ %MACRO TEXTLINE (LEFT = ' ' ,CENTER = ' ' ,RIGHT = ' ' ,NOCENTER = 0 /*use Center?*/ ,RM = 0 /*RightMargin: move left with negative value suggest: -4, for TITLE1: replace SYSDATE w/current time+datestamp */ ,LINESIZE = %sysfunc(getoption(linesize)) );/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -** RJF2 02Nov15 longest day : Wednesday, month: September time: HH is in 1:24 hh:mm Wednesday, September 31, 2002 15:29 Monday, November 18, 2002 123456789012345678901234567890 weekdate29. problem: need weekdate width to vary with Month, and WeekDay see mVars of DAY MONTH DD CCYY TIME_HH TIME_MM note: defaults values of LEFT CENTER and RIGHT are char1. BUT macro %length is 3, not 1 THEREFORE see fudge in repeat is not -1, but +1 RJF2 02Dec11 polishing for SAS-L stocking stuffer ;/* . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . */ &LEFT.

%IF &NOCENTER. %THEN %DO; "%sysfunc(repeat(%str( ),&LINESIZE.+3-%length(&LEFT. ) -%length(&RIGHT.) + (&RM. )))" %END;

%ELSE %IF not &NOCENTER. %THEN %DO; %local HALF LEN_CNTR; %LET LEN_CNTR = %length(&CENTER.); %LET HALF = %eval(&LINESIZE./2 -(&LEN_CNTR./2)); "%sysfunc(repeat(%str( ),&HALF. +1-%length(&LEFT. )))" &CENTER. "%sysfunc(repeat(%str( ),&HALF. +1-%length(&RIGHT.) + %eval(&LEN_CNTR. - 2*(&LEN_CNTR./2)) + (&RM.)))" %END;

&RIGHT. /* . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/ %MEND; /*TEST DATA ********************************************************** options symbolgen linesize = 66 nocenter;%*testing; options symbolgen linesize = 80 nocenter;%*need this for time+date; %*PUT LINESIZE<%sysfunc(getoption(linesize))>; TITLE1 'test of! center'; TITLE1 %TEXTLINE(LEFT = 'Text on left' ,CENTER = '.!.' ,RIGHT = 'Right --]' ); TITLE1 %TEXTLINE(LEFT = 'project name' ,RIGHT = "%sysfunc(time(),time5.)%sysfunc(date(),weekdate29.)" ,RM = -4 );%*move RightMargin to left for page number; TITLE2 %TEXTLINE(LEFT = '1234567890123456789012345678901234567890' ,NOCENTER = 1 ,RIGHT = "%sysfunc(time(),time5.)%sysfunc(date(),weekdate29.)" ); %LET DATESTMP = %MVARTIME(RETURN=%NRSTR(&TIMEAMPM)) %MVARTIME(RETURN=%NRSTR(&WEEKDATE)); %PUT DATESTMP<&DATESTMP.>;

TITLE3 %TEXTLINE(LEFT = 'test of mvarTime w/mVar' ,RIGHT = "&DATESTMP." ); TITLE4 %TEXTLINE(LEFT = 'test of mvarTime' ,CENTER ="%MVARTIME(RETURN=%nrstr(&TIMEAMPM)) %MVARTIME(RETURN=%nrstr(&WEEKDATE))" ); TITLE5 %TEXTLINE(LEFT = 'left' ,RIGHT = "%sysfunc(time(),time5.)%sysfunc(date(),weekdate28.)" ); TITLE6 %TEXTLINE(RIGHT = "%sysfunc(datetime(),dateampm18.)" ); %*note use of two TEXTLINEs in one TITLE linesize==div(linesize,2); TITLE7 %TEXTLINE(CENTER ='TEXT on left half' ,LINESIZE = %sysfunc(getoption(linesize))/2 ) %TEXTLINE(CENTER ='right half TEXT' ,LINESIZE = %sysfunc(getoption(linesize))/2 ); %*reference lines; TITLE8 "%sysfunc(repeat(. + !,(%sysfunc(getoption(linesize))/10) -1))"; TITLE9 "%sysfunc(repeat(1234567890,(%sysfunc(getoption(linesize))/10) -1))";

data _NULL_;file PRINT;put 'TEXTLINE test';stop;run; ;/*********************************************************************/


Back to: Top of message | Previous page | Main SAS-L page