Hello, I have the following datasets "INPUT" and "IN2" data INPUT;
input hist $;
cards;
100
105
110
110
;
run;
data IN2; length hist $15.;
input hist $ label;
cards;
100-105,108 1
110 3
;
run; My goal is to get “label” of IN2 by matching "hist". "hist" of IN2 is given in a compact format with ranges and individual values. 100-105 means 100,101 ... 105. Inspired by another post, I was trying to use a DATA NULL step within a DATA step and convert "hist" into a list so I can check whether a value is in that list. Below is what I was trying to do after all things get resolved: if hist in (100-105,108) then label = IN2.label
if hist in (110) then label = IN2.label Here is my attempt: data test;
set input;
RC=dosubl(cats('data _null_; '
,' set in2; '
,'call symput("hist_list",hist);'
,'if ', hist, ' in (&hist_list) then do;'
,'call symputx("lab",label);'
,'stop;'
,'call symputx("lab"," ");'
,'run;'));
label=symget('lab');
run; Here's one piece (out of 4) of error message: ERROR 22-322: Syntax error, expecting one of the following: a name, a quoted string, a numeric constant, a datetime constant, a missing value, INPUT, PUT. ERROR 22-322: Syntax error, expecting one of the following: +, =. ERROR 202-322: The option or parameter is not recognized and will be ignored. ERROR: Undeclared array referenced: if110in. WARNING: Apparent symbolic reference HIST_LIST not resolved. ERROR: Variable if110in has not been declared as an array. Can someone help me troubleshoot this? Thanks!
... View more