-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathRead_text_from_Program
More file actions
61 lines (51 loc) · 1.5 KB
/
Copy pathRead_text_from_Program
File metadata and controls
61 lines (51 loc) · 1.5 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
options nofmterr symbolgen mprint mlogic ls = 230 formdlim = '*' nocenter;
DM "Clear log";
DM "Clear output";
proc datasets memtype=data lib=work kill nolist;
quit;
%macro search(keyword=);
/** GETTING ALL THE SAS FILES FROM PROGRAMS DIRECTORY **/
Filename filelist pipe "dir /b /s C:\Users\kavitha.mullela\Desktop\Kavi\pgms\*.sas";
Data prog2;
Infile filelist truncover;
Input filename $200.;
Put filename=;
Run;
data progs;
set prog2;
if substr(filename,1,1)='.' or substr(filename,1,1)='#' then delete;
filename=compress(filename,"~*#%,");
run;
proc sql noprint;/*** LIST OF SAS FILES TO BE CHECKED ***/
select distinct filename into:txtname separated by '@'
from progs;
select count(distinct filename) into:tottxt
from progs;
quit;
%put &txtname;
%put &tottxt;
/*** FINDING THE PROGRAM THAT HAS KEYWORD ***/
%do i = 1 %to %eval(&tottxt);
%let progfile = %scan(&txtname,&i,'@');
filename progf "&progfile";
data d&i;
length extract $200;
infile progf lrecl = 200 pad;
input @1 linech $200.;
if prxmatch("m/&keyword./oi", upcase(strip(linech)))>0 then do;
extract = "&progfile";
output;
end;
run;
%end;
data finalrt;
set %do i = 1 %to %eval(&tottxt);
d&i
%end;
;
run;
proc sort data = finalrt;
by extract;
run;
%mend search;
%search(keyword=db.); /* multiple keywords should separated by '|' */