मैं एसएएस 9.2 उपयोग कर रहा हूँ ओपन VMS पर के तहत एसएएस में सॉकेट पर निपटने त्रुटि:ओपन VMS
filename extsrc SOCKET "extserver:port" recfm=v;
data foo;
infile extsrc;
input;
.... some statements to read stuff ...;
run;
यह काम करता है (जैसा कि होना चाहिए) 99 % समय की। हालांकि, थोड़ी देर में रिमोट पोर्ट पर जो प्रोग्राम सुनना है, वह नहीं है। वर्तमान में इस कार्यक्रम के एक त्रुटि के साथ बाहर निकलने के लिए कारण बनता है:
Error: Connection refused.
जो बाद हम फिर कोशिश करें, और यह आमतौर पर काम करता है। हालांकि, यह कठिन हो रहा है इसलिए मैं इस त्रुटि को प्रोग्राम में पहचानना चाहता हूं और वहां से निपटना चाहता हूं। क्या किसी को एसएएस में इस प्रकार की त्रुटि का पता लगाने के तरीके के बारे में पता है?
मैंने fileref() फ़ंक्शन का उपयोग करके fileref extsrc की वैधता की जांच करने का प्रयास किया है, लेकिन यह केवल -20005 देता है, जिसका अर्थ है कि fileref असाइन किया गया है लेकिन स्थानीय फ़ाइल (जो सत्य है) को इंगित नहीं करता है। त्रुटि केवल स्पष्ट हो जाता है जब मैं एक datastep में fileref उपयोग करते हैं, तो मैं की तर्ज पर कुछ करने के लिए करना चाहते हैं:
data _null_;
rc=infile extsrc;
if rc=0 then do;
//whatever I want to do;
end;
else do;
//throw some error and try again later;
end;
run;
[Update1] मैं नीचे दिए गए सुझावों किया कोशिश कर रहा हूँ, लेकिन सच में heisenbug फैशन पिछले कुछ दिनों में समस्या का सामना करने में विफल रहा है, इसलिए मुझे यकीन नहीं है कि अंतिम समाधान अभी तक क्या है। [/ अपडेट 1]
[अपडेट 2] अंत में त्रुटि फिर से उठी। Cmjohns उत्तर के अनुसार, इस त्रुटि के बाद syserr का मान 1012 है। अब मैं syserr का मान देखूंगा, और विफल होने पर निश्चित समय की कोशिश करूँगा। [/ अपडेट 2]
[अपडेट 3] मेरे पास कुछ दिनों के लिए कुछ कोड चल रहा है जो काम करता है। अतिरिक्त समस्या यह थी कि (बेशक) यदि &syserr
6 से अधिक मान प्राप्त करता है तो एक त्रुटि स्थिति उत्पन्न होती है, इसलिए आपके errorabend/noerrorabend
सेटिंग के आधार पर प्रोग्राम पूरी तरह खत्म हो जाता है, या यह प्रोग्राम को सिंटैक्सकेक मोड में obs=0
के साथ जारी रखने का कारण बनता है। दोनों अवांछनीय हैं। समाधान इस त्रुटि को उत्पन्न करने वाले डेटास्टेप से पहले options noerrorabend nosyntaxcheck
सेट करना है। इसके अतिरिक्त, अगर त्रुटि होती है तो मुझे फ़ाइल नाम extsrc को साफ़ करना होगा और इसे फिर से असाइन करना होगा। अंत में, कोड के इस टुकड़े को पूरा करने के बाद मैं त्रुटिबोध बहाल करता हूं। अगर मैं nosyntaxcheck को पुनर्स्थापित करता हूं तो यह एसएएस को पिछली त्रुटि स्थिति का पता लगाने और उस बिंदु पर वाक्यविन्यास मोड पर स्विच करने का कारण बनता है जो अवांछनीय भी है। [/ अपडेट 3]
आप एसएएस समाचार समूह में इस पूछा है http://groups.google.com/group:
यहाँ के लिए जब मैं शान से डीबी 2 से बंद-टेबल त्रुटियों को संभालने के लिए किया था कोड के प्रासंगिक बिट कर रहे हैं /comp.soft-sys.sas/topics –