//JOBNAME JOB (ACCT),'PGMR',CLASS=?,MSGCLASS=?,NOTIFY=&SYSUID //STEP1 EXEC MXGSAS //* SMF-INPUT DATASET BELOW. //SMF DD DISP=SHR,BUFNO=20,DSN=YOUR.SMF.INPUT.FILE //SYSIN DD DATA,DLM=ZZ * CHANGE MACRO VARS BELOW FOR DATASET AND EMAIL RECIPIENT. ; %LET USERPREF = uuuuuuu; /* your site DSN prefix value */ %LET OUTCSV = &USERPREF..MXG.SMFSTATS; %LET EMAILTO = "youremail@yourdomain.com"; %LET EMAILFROM = MXGADMIN@yourdomain.com; %LET INTVL = 5; /* generate 5-minute interval statistics */ %LET MACFILE = %QUOTE( IF ID NOT IN (2,3); /* NO INTEREST IN HEADER/TRAILER RECORDS */ ); %LET MACKEEP = %QUOTE( /* START -- MXG PDB PROCESSING - INSTREAM CODE OVERRIDE */ MACRO _KTYID /* ADD MXG PDB.ID VARIABLES TO KEEP= LIST */ SUBTYPE SMFTIME SMFRECLN % /* END -- MXG PDB PROCESSING - INSTREAM CODE OVERRIDE */ ); %INCLUDE SOURCLIB(TYPEID); RUN; %LET BY = SYSTEM SMFDATE; %LET XBY = ID_SUBTYPE SMFINTVL ; DATA ID ; SET ID; ATTRIB SMFDATE FORMAT=DATE9. LABEL='SMF DATE'; SMFDATE = DATEPART(SMFTIME); ATTRIB SMFINTVL FORMAT=TIME5. LABEL="SMF &INTVL-MIN INTVL"; SMFINTVL = INTNX("MINUTE&INTVL",TIMEPART(SMFTIME),0); LENGTH ID_SUBTYPE $8; ID_SUBTYPE = CATX('_',ID,SUBTYPE); ATTRIB SMFHOUR FORMAT=2. LABEL='SMF HOUR'; SMFHOUR = HOUR(SMFTIME); RUN; PROC SUMMARY NWAY MISSING DATA=ID; CLASS &BY &XBY; ID SMFHOUR; VAR SMFRECLN; OUTPUT OUT=ID_S (RENAME=(_FREQ_=RECCOUNT)) MIN(SMFRECLN) = MINSMFRECLN MEAN(SMFRECLN)= AVGSMFRECLN MAX(SMFRECLN) = MAXSMFRECLN ; RUN; * DELETE CSV FILE, IF IT EXISTS. ; FILENAME OUTDEL "&OUTCSV" DISP=(MOD,DELETE,DELETE) UNIT=SYSDA SPACE=(TRK,1) WAIT=60; FILENAME OUTDEL CLEAR; * ALLOCATE NEW FILE. ; FILENAME OUTCSV "&OUTCSV" DISP=(NEW,CATLG,DELETE) UNIT=SYSDA SPACE=(TRK,(500,200),RLSE) RECFM=VB LRECL=4092 BLKSIZE=0; ODS CSV TRANTAB=ASCII RS='0D'X FILE=OUTCSV; * ODS LISTING CLOSE; * GENERATE CSV-FORMAT FILE USING ODS AND PROC PRINT. ; OPTIONS NOCENTER MISSING=' '; PROC PRINT U NOOBS DATA=ID_S; VAR &BY &XBY SMFHOUR RECCOUNT MINSMFRECLN AVGSMFRECLN MAXSMFRECLN ; FORMAT MINSMFRECLN AVGSMFRECLN MAXSMFRECLN 8.0 ; LABEL SYSTEM = 'SYSTEM'; LABEL SMFDATE = 'DATE'; TITLE "SMF STATISTICS - &INTVL-MINUTE INTVL"; RUN; ODS CSV CLOSE; ODS LISTING; FILENAME OUTCSV CLEAR; * GENERATE EMAIL WITH CSV-FILE ATTACHED. ; FILENAME OUTMAIL EMAIL TO=(&EMAILTO) FROM="&EMAILFROM" SUBJECT="SMF STATISTICS - &INTVL-MINUTE INTVL" ATTACH=("&OUTCSV" EXT='CSV'); DATA _NULL_; FILE OUTMAIL; PUT 'SEE ATTACHED CSV.'; RUN; FILENAME OUTMAIL CLEAR; RUN; ZZ