में% let स्टेटमेंट के बाद अनियमित किया गया है, मैं एसएएस में कुछ बनाना चाहता हूं जो एक्सेल लुकअप फ़ंक्शन की तरह काम करता है। असल में, मैंने मैक्रो चर var1
, var2
, के लिए मान सेट किया है ... और मैं ref
तालिका के अनुसार अपना इंडेक्स नंबर खोजना चाहता हूं। लेकिन मुझे डेटा चरण में निम्नलिखित संदेश मिलते हैं।मैक्रो वैरिएबल sas
NOTE: Variable A is uninitialized.
NOTE: Variable B is uninitialized.
NOTE: Variable NULL is uninitialized.
जब मैं चर &num1
, &num2
प्रिंट, मैं कुछ भी नहीं मिलता है। मेरा कोड यहाँ है।
data ref;
input index varname $;
datalines;
0 NULL
1 A
2 B
3 C
;
run;
%let var1=A;
%let var2=B;
%let var3=NULL;
data temp;
set ref;
if varname=&var1 then call symput('num1',trim(left(index)));
if varname=&var2 then call symput('num2',trim(left(index)));
if varname=&var3 then call symput('num3',trim(left(index)));
run;
%put &num1;
%put &num2;
%put &num3;
मैं, &num1
, &num2
के लिए सही मान प्राप्त कर सकते हैं .. अगर मैं if-then
बयान में varname='A'
टाइप करें। और यदि मैं बाद में कथन को varname=&var1
पर बदलता हूं, तो भी मुझे आवश्यक आउटपुट मिल सकता है। परन्तु ऐसा क्यों? मैं वास्तविक स्ट्रिंग मान इनपुट नहीं करना चाहता हूं और उसके बाद हर बार परिणाम प्राप्त करने के लिए इसे वापस मैक्रो चर में बदलना चाहता हूं।
मैं आप कोई खोज करते सुझाव देंगे कि यह एक प्रारूप
lookup
कहा जाता है बनाता है एसएएस में इस तरह की चीज करने के कई अलग-अलग तरीकों पर एसएएस पेपर खोजने के लिए http://www.lexjansen.com/ पर "लुकअप" के लिए। – DWal