/**********************************************************************************/
/* Collect the list of files ending with ".cum" in delivery folder */
/**********************************************************************************/
%LET FROM_LOC = &directory;
%LET INPUT_PARAM = *.cum;
FILENAME deliv PIPE "dir &FROM_LOC\&INPUT_PARAM /b";
DATA _null_;
LENGTH filename $1000;
INFILE deliv;
INPUT filename $;
if _error_ ne 0 then do;
_error_=0;
delete;
put "Not processed: No file in delivery folder corresponds to &INPUT_PARAM";
end;
call symput ('INPUT_FILE',trim(left(filename)));
RUN;
%put Processing &INPUT_FILE.;
/**********************************************************************************/
/* PROTOCOL - MAKE SURE INPUT FILE IS PRESENT BEFORE PROCESSING DATA */
/**********************************************************************************/
%IF %SYSFUNC(FILEEXIST(&directory\&INPUT_FILE.)) %THEN %DO;
/********************************************************************************/
/* PROTOCOL - REASSIGN LOG AND LIS FILES TO NEW FILENAMES */
/********************************************************************************/
FILENAME OUTLOG "&directory\LOGLIS\&INPUT_FILE..LOG";
PROC PRINTTO LOG=OUTLOG NEW;
RUN;
FILENAME OUTLIS "&directory\LOGLIS\&INPUT_FILE..LIS";
PROC PRINTTO PRINT=OUTLIS NEW;
RUN;
/********************************************************************************/
/* PROTOCOL - ADD CODE FOR SAS7BDAT */
/********************************************************************************/
LIBNAME OUTLIB V8 "&directory";
/********************************************************************************/
/* PROTOCOL - BEGIN PROCESSING */
/********************************************************************************/
%PUT NOTE: Begin processing of file: %SCAN(&_files,1, ' ');
PROC IMPORT OUT= WORK.COUNTFILE
DATAFILE= "&directory\&INPUT_FILE."
DBMS=DLM;
GETNAMES=NO;
DATAROW=1;
GUESSINGROWS=32767;
RUN;
/********************************************************************************/
/* PROTOCOL - COUNT NUMBER OF RECORDS */
/********************************************************************************/
%global COUNTOBS;
%COUNT_RECORDS(_INPUT_DS=WORK.COUNTFILE,_COUNT=COUNTOBS);
%PUT CDMINFO: COUNTFILE CONTAINS &COUNTOBS RECORDS.;
/********************************************************************************/
/* PROTOCOL - PRINT DATA IN LIS */
/********************************************************************************/
%PRINT_CLIENT_DATA(
_TITLE= COVANCE CDM DEPT. PROTOCOL &INPUT_FILE.,
_DS=WORK.COUNTFILE,
_OBS_N=32);
/********************************************************************************/
/* PROTOCOL - RENAME TEXT FILE WITH NUMBER OF RECORDS */
/* ADDED BY F.TASSY 21JUL2016 */
/********************************************************************************/
/* Create the name using COUNTOBS macrovariable */
%LET NEWNAME = %SYSFUNC(TRANWRD(&INPUT_FILE.,RECCOUNT,&COUNTOBS.));
/* Rename the file */
%SYSEXEC %STR(rename "&directory\&INPUT_FILE." "&NEWNAME.");



雷达卡




我正在写一个用sas循例一个路径下所有文件并检测文件大小、最后修改时间然后自动删除老旧大文件的paper,等接受了再把code分享给你哈
京公网安备 11010802022788号







