| Date: | Thu, 21 Oct 2004 09:19:56 -0500 |
| Reply-To: | "Brown, James R. (Mktg)" <JBr3e@ALLSTATE.COM> |
| Sender: | "SAS(r) Discussion" <SAS-L@LISTSERV.UGA.EDU> |
| From: | "Brown, James R. (Mktg)" <JBr3e@ALLSTATE.COM> |
| Subject: | Re: Output for datasets with no observations |
| Content-Type: | text/plain; charset="iso-8859-1" |
This will work only if the data set exists and is empty. It might not
be bullet-proof.
Regards,
Jim
-------------------------------------------------------------------
James R. Brown
Marketing Measurement and Consumer Insights
Phone: 847-402-2244
mailto:jbr3e@allstate.com
-------------------------------------------------------------------
/**********************************************************************/
/* */
/* PROGRAM: SMNOTHIN */
/* SYSTEM: */
/* COMPILER SAS */
/* MODULE TYPE: SAS MACRO */
/* */
/* FUNCTION: MACRO GENERATE 'NOTHING TO REPORT' FOR EMPTY SAS */
/* DATASET */
/* */
/* INCLUDES: NONE */
/* */
/* SAMPLE INVOCATION: (CONTAINS ITS OWN DATASTEP) */
/* */
/* %SMNOTHIN(DATA=RPT210,OUT=PRINT); */***********************************************************************/
%MACRO SMNOTHIN(DATA=SASDATA /* SAS DATAFILE */
,OUT=PRINT /* LOG, PRINT OR FILE 'XXXXX' */
,ABORT=NO /* NO, RETURN, ABEND, ENDSAS (IF EMPTY) */
,CODE=012 /* RETURN CODE FOR RETURN OR ABEND */
,MSG1=NOTHING TO REPORT
,MSG2=
,MSG3=
);
/*************************************
FORCE TO UPPER CASE
*************************************/
%LET ABORT= %UPCASE(&ABORT);
/*************************************
DECLARE, INITIALIZE LOCAL VARIABLES
*************************************/
%LOCAL SMNOTHIX;
%LOCAL SMENDSAS;
%LET SMENDSAS=;
/*************************************
CHECK FILESIZE AND EXISTENCE
*************************************/
DATA _NULL_;
IF 0 THEN SET &DATA NOBS=SMNOTHIX;
CALL SYMPUT('SMNOTHIX',LEFT(PUT(SMNOTHIX,8.)));
STOP;
RUN;
/*************************************
IF NO RECORDS, END NOW
*************************************/
DATA _NULL_;
%IF &SMNOTHIX=0 %THEN
%DO;
FILE &OUT;
PUT 72*'*';
PUT "* &MSG1";
%IF "&MSG2" ^= "" %THEN PUT "* &MSG2";;
%IF "&MSG3" ^= "" %THEN PUT "* &MSG3";;
PUT 72*'*';
%IF &ABORT=RETURN %THEN ABORT RETURN &CODE;;
%IF &ABORT=ABEND %THEN ABORT ABEND &CODE;;
/*************************************
PUT MESSAGE IN LOG
DO NOT ENDSAS IF WORKING ONLINE
*************************************/
%IF &ABORT=ENDSAS %THEN
%DO;
%LET SMENDSAS=ENDSAS;
%PUT ****************************************;
%PUT * SMNOTHIN.MSG010 - ENDSAS GENERATED;
%PUT ****************************************;
%END;
%END;
RUN;
/*************************************
'ENDSAS' OR NULL
*************************************/
&SMENDSAS;
%MEND SMNOTHIN;
/**********************************************************************/
/* END SMNOTHIN */
/**********************************************************************/
|