SAS - 在宏中哈希

时间:2018-03-27 22:54:06

标签: sas hashtable sas-macro

我试图将我的哈希对象转换为宏,以便我可以对许多不同的分析变量进行匹配。这是带有哈希对象的宏的一部分。我觉得我的问题必须是我如何调用/引用哈希中的宏,因为这个哈希的不同版本在没有宏的情况下工作。想法?

我得到的错误是ERROR:DATA STEP组件对象失败。在COMPILATION阶段中止。错误557-185:可变数据不是对象。然后在对象中,ERROR:File DATA.TEST_BANK_ACCOUNT_ALL_REGS.DATA不存在。

data data.test_&match_field._all_regs;
if _N_ = 1 then do;
    if 0 then set = data.test_&match_field._match_srt;
    declare hash contractors(dataset:"data.test_&match_field._match_srt", multidata: 'yes');
    contractors.defineKey("&match_var.");
    contractors.defineData('fpds_duns',                 
                           'xxx_dod_contractor',
                           "&match_flag.",
                           'xxx_small_contractor',
                           'xxx_medium_contractor',
                           'xxx_large_contractor',
                           'xxx_reported_relationship',
                           'xxx_joint_venture_flag');                 
    contractors.defineDone();
end;
set data.test_xxx_200;
 rc = contractors.find(key:"&match_var.");
do while (rc=0);
if xxxx_duns =  xxx_hq_parent_duns_number or
   xxxx_duns = xxx_hq_parent_duns_number or
   xxxx_duns = xxx_global_parent_duns_number then xxx_reported_relationship = 'Y';   
else xxx_reported_relationship = 'N'; 
output data.test_&match_field._all_regs;
rc = contractors.find_next(key:"&match_var.");
end;

run;

0 个答案:

没有答案