여기에 새로운 이름이 있습니다.조건 목록에있는 이름에 대한 SAS 매크로 기반
직장에서 우리 데이터베이스 중 하나를 검색하기 위해 한 쌍의 매크로를 작성했습니다.
%LET SVlist=%str(R_PAR_SV_2012_VER3 R_PAR_SV);
%LET ovlist=%str(R_PAR_OV_2012_VER3 R_PAR_OV);
%LET FILTER=
(DIAGNOS like 'S72%' or diagnos contains ' S72' or
DIAGNOS like 'I21%' or diagnos contains ' I21'
);
%LET OVSELECT=PNR,
PNRQ,
INDATUM,
OP,
DIAGNOS,
HDIA,
alder,
SJUKHUS;
%LET sVSELECT=&OVSELECT,UTDATUM,OPD1;
%macro ovsql(ovlist);
proc sql noprint;
%let n=%sysfunc(countw(&ovlist));
%do i=1 %to &n;
%let val = %scan(&ovlist,&i);
create table work.&val as
select &ovselect,
'SV' as souce
from r_par.&val
where pnrq='0';
%end;
quit;
%mend;
%macro svsql(svlist);
proc sql noprint;
%let n=%sysfunc(countw(&svlist));
%do i=1 %to &n;
%let val = %scan(&svlist,&i);
create table work.&val as
select &svselect,
'SV' as souce
from r_par.&val
where pnrq='0';
%end;
quit;
%mend;
%ovsql(&ovlist);
%svsql(&SVlist);
(가) 위의 잘 작동 : 당신이 볼 수 있듯이
, 내가 bsically 데이터 세트의이 개 약간 다른 유형을 다루는 매크로 두 가지를 가지고 이것은 내가 그것을 사용하는 방법에 대한 exemple입니다. 이 두 가지 목록을 사용합니다 :
내가 목록에있는 집합이 문자 OV 포함되어있을 때 "OV 매크로"프로그램을 실행할 수 있도록 매크로를 통합 할 수있는 방법이 궁금 무엇입니까 이름과 SV에는 목록의 집합에 문자 SV가 포함됩니다. 이 작업을 수행 할 수 있습니까?
일부 변형을 시도했지만 참조가 가능하지 않은 시도입니다.
options mprint;
%macro PSQL(list);
proc sql ;
%let n=%sysfunc(countw(&list));
%do i=1 %to &n;
%let val = %scan(&list,&i);
%let g=
%substr(&val,7,2);
;
%put(&g);
%if &g=:SV %then %do;
create table work._&val as
select &svselect,
'SV' as souce
from r_par.&val
where pnrq='0';
%end;
%else %if &g=:OV %then %do ;
create table work._&val as
select &ovselect,
'OV' as souce
from r_par.&val
where pnrq='0';
%end;
%end;
quit;
%mend;
%PSQL(R_PAR_SV_2012_VER3 R_PAR_OV_2012_VER3);
정말 도움이 될 것입니다. 저는 sas 매크로 언어에 관해서는 초보자입니다. 미리 감사드립니다.
'OPTIONS MPRINT;를 켜면 로그에 무엇을 넣을 수 있습니까? 특별한 오류가 있습니까? – mjsqu