*GENERATE LIST OF FILES IN RAWDATA DIRECTORY;
FILENAME FILES PIPE "DIR ""&PATH.\RAWDATA"" /B";
DATA A_FILES B_FILES OTHER_FILES;
LENGTH FILE1 1$ 12 SOURCE $ 2 B_UNIT $ 5;
INFILE FILES TRUNCOVER;
INPUT FILE $12.; IF COMPRESS(FILE1) NE "" AND LENGTH(FILE1) GE 12; SOURCE = SUBSTR(COMPRESS(UPCASE(FILE1)),7,2);B_UNIT = SUBSTR(COMPRESS(UPCASE(FILE1)),1,5); IF COMPRESS(UPCASE(SOURCE)) EQ "AA" THEN OUTPUT A_FILES; ELSE IF COMPRESS(UPCASE(SOURCE)) EQ "BB" THEN OUTPUT B_FILES; ELSE OUTPUT OTHER_FILES;RUN;
*GENERATE A LIST OF GLOBAL REFERENCES TO THE FILE NAMES CONTIANED IN THE DATASET;
DATA _NULL_;
SET A_FILES;
CALL SYMPUT("FILE_NAME"COMPRESS(_N_),PUT(FILE1,$12.));
RUN;
%PUT _ALL_;
*FIND OUT HOW MANY FILES ARE IN THE DATASET;
PROC SUMMARY DATA = A_FILES NWAY;
OUTPUT OUT = RECORD_CNT_A (DROP=_TYPE_);
RUN;
*CREATE THE MAXIMUM COUNTER VALUE FOR THE MACRO DO LOOP;DATA _NULL_;S
ET RECORD_CNT_A;
CALL SYMPUT("RC",_FREQ_);
RUN;
*MAINTAIN APPEND PROCEDURE BASE DATASETS TO PREVENT DUPLICATION;
PROC DATASETS LIBRARY = WORK NOLIST; DELETE FILE_DATASET_ALL;
RUN;
QUIT;
MACRO IMPORT_XLS(FILE_NAME);
*IMPORT EXCEL REPORT IMAGE FILES;
PROC IMPORT OUT = READDATA
DATAFILE = "&PATH.\RAWDATA\&FILE_NAME." DBMS = EXCEL REPLACE; GETNAMES = NO; MIXED = YES;RUN;
%MEND;
*FEED ALL THE FILES IN THE DIRECTORY INTO THE MACRO;
%MACRO RUN_LOOP(X);
%DO I = 1 %TO &RC.;
%IMPORT_XLS(&&FILE_NAME&I.);
%END;
%MEND RUN_LOOP;
%RUN_LOOP(1);
*APPENDS THE MULTIPLE FILES FOR PROCESSING;
PROC APPEND BASE = FILE_DATASET_ALL DATA = FILE_DATASET FORCE; RUN;
***MACRO VARIABLE TO COUNT***;
PROC SQL NOPRINT; SELECT COUNT(*) INTO :NBR FROM &MAIN_DSIN.;QUIT;
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment