Can';无法正确使用此SAS宏,需要建议吗

Can';无法正确使用此SAS宏,需要建议吗,sas,sas-macro,Sas,Sas Macro,下面是宏,以及底部的示例。当我试着运行它时,我会遇到很多错误,我认为这与我使用if-else语句的方式有关。示例应返回“口香糖和其他口腔”。谢谢 %Macro-cancerite(PrimSite,Hist); *现场重新编码:http://seer.cancer.gov/siterecode/icdo3_d01272003/ (自2010年以前的案例以来的旧版本); 组织学=输入(&Hist,4.); PrimarySite=&PrimSite; *口腔和咽部; 如果组织学不符合(9050:9

下面是宏,以及底部的示例。当我试着运行它时,我会遇到很多错误,我认为这与我使用if-else语句的方式有关。示例应返回“口香糖和其他口腔”。谢谢

%Macro-cancerite(PrimSite,Hist);
*现场重新编码:http://seer.cancer.gov/siterecode/icdo3_d01272003/ (自2010年以前的案例以来的旧版本);
组织学=输入(&Hist,4.);
PrimarySite=&PrimSite;
*口腔和咽部;
如果组织学不符合(9050:905591409590:9992),则进行;
如果主站点位于('C000'、'C001'、'C002'、'C003'、'C004'、'C005'、'C006'、'C007'、'C008'、'C009')
然后cancerite=‘Lip’;
否则,如果主站点位于('C030'、'C031'、'C032'、'C033'、'C034'、'C035'、'C036'、'C037'、'C038'、'C039',
‘C050’、‘C051’、‘C052’、‘C053’、‘C054’、‘C055’、‘C056’、‘C057’、‘C058’、‘C059’,
‘C060’、‘C061’、‘C062’、‘C063’、‘C064’、‘C065’、‘C066’、‘C067’、‘C068’、‘C069’)
然后Cancerite=‘口香糖和其他口腔’;
否则,如果主站点位于('C110','C111','C112','C113','C114','C115','C116','C117','C118','C119'))
然后Cancerite=‘鼻咽’;
否则,如果主站点位于('C090'、'C091'、'C092'、'C093'、'C094'、'C095'、'C096'、'C097'、'C098'、'C099')
然后Cancerite=‘扁桃体’;
结束;
%修补;
%Cancerite('C030',9057)

< /代码> 如果您按IIS和隔离的方式运行,它将构造一堆数据步语句,但如果没有其余的数据步骤,则需要在数据步的中间调用宏,使其正常工作。p> 例如


如果您按原样运行并隔离,它将构建一组数据步语句,但如果没有其余的数据步骤,则需要在数据步中间调用宏,使其正常工作。p> 例如

        %Macro CancerSite(PrimSite, Hist);
            * Site recoding: http://seer.cancer.gov/siterecode/icdo3_d01272003/ (old version since cases in years < 2010);
            Histology = input(&Hist, 4.);
            PrimarySite = &PrimSite;

            * Oral Cavity and Pharynx;
            if Histology not in (9050:9055, 9140, 9590:9992) then do;
                if PrimarySite in ('C000','C001','C002','C003','C004','C005','C006','C007','C008','C009')
                    then CancerSite = 'Lip';
                else if PrimarySite in ('C030','C031','C032','C033','C034','C035','C036','C037','C038','C039',
                    'C050','C051','C052','C053','C054','C055','C056','C057','C058','C059',
                    'C060','C061','C062','C063','C064','C065','C066','C067','C068','C069')
                    then CancerSite = 'Gum and Other Mouth';
                else if PrimarySite in ('C110','C111','C112','C113','C114','C115','C116','C117','C118','C119')
                    then CancerSite = 'Nasopharynx';
                else if PrimarySite in ('C090','C091','C092','C093','C094','C095','C096','C097','C098','C099')
                    then CancerSite = 'Tonsil';
            end;
        %mend;

%CancerSite('C030', 9057)
data output_dataset;
  set input_dataset;
  %CancerSite('C030', 9057)
run;