Я пытаюсь превратить свой хэш-объект в макрос, чтобы я мог сопоставить несколько различных переменных анализа. Вот часть макроса с хеш-объектом. Я чувствую, что моя проблема должна заключаться в том, как я вызываю / цитирую макросы в хеше, потому что другая версия этого хеша работает без макроса. Мысли?
Я получаю следующие ошибки: ERROR: DATA STEP Component Object failure. Прервано на этапе КОМПИЛЯЦИИ. ОШИБКА 557-185: переменные данные не являются объектом. А затем в объекте ОШИБКА: файл 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;
Добавьте в свой код следующее и опубликуйте журнал с ошибками: options mprint symbolgen;
Также может помочь, если вы включите рабочий код перед преобразованием его в макрос.
У вас есть match_field и match_var в разных местах. Это намеренно? Вы также не показываете, как он установлен или как вызываете макрос.
добавьте образцы данных и значения ваших макропеременных, которые воспроизводят проблему. Как бы то ни было, я не думаю, что мы можем сказать вам, что происходит не так.