سؤال

لدي تطبيق SAS الذي أختبره مع SAS 9.2 صدر حديثا. لدي دعوة إلى وظيفة metadat_newobj لإنشاء كائن مكتبة جديد في مستودع بيانات التعريف SAS:

rc = metadata_newobj( "SASLibrary", URI, Name );

في 9.1.3، عندما يتم تنفيذ الوظيفة بنجاح (RC = 0)، تم ملء متغير URI مع URI لكائن مكتبة تم إنشاؤه حديثا.

في SAS 9.2، على الرغم من أن قيمة الإرجاع هي 0 (ناجحة) ويتم إنشاء كائن المكتبة (قمت بفحص وحدة التحكم بالإدارة يدويا)، فإن متغير URI يبقى فارغا لذا فإن أي عمليات لاحقة لتعيين السمات وما إلى ذلك تفشل.

يسرد الوثائق لكلا الإصدارين URI كمعلمة إخراج لهذه الوظيفة.

هل لدى أي شخص أي معرفة بهذا؟

تعديل: الرمز الذي كنت أستخدمه هو كما يلي:

put libraryName=;
rc = metadata_newobj("SASLibrary", libraryUri, libraryName);
if rc ne 0 then do;
  /* Error handler */
  return;
end;
put libraryUri=;

والإخراج:

libraryName=HRLIB10
libraryUri=

أحاول العمل حول هذا الاستخدام PROC METADATA بدلا من ذلك، يبدو أنه يعمل. :

تحرير رقم 2: لقد أدركت أنني لم أذكر أن هذا ضمن رمز SCL.

هل كانت مفيدة؟

المحلول 2

لم أجد أي شيء يقترح تغيير metadata_newobj في الإصدار الجديد. ومع ذلك، رفض فقط العمل بالنسبة لي. لذلك قمت بتحويل وظائف بلدي لاستخدام PROC METADATA والآن يعمل في SAS 9.1.3 و SAS 9.2.

شكرا لكم جميعا.

نصائح أخرى

عملت معي. بناء على المثال الذي قدمته، أقترح وضع علامات اقتباس حول الاسم. قد تستخدم أيضا عبارة طولها لإعداد URI قبل تشغيل Metadata_newobj. خلاف ذلك، في مصلحة المشاركة، اسمحوا لنا أن نعرف ما إذا كنت تحصل على حلها مع بعض التقنيات الأخرى.

إليك ما ران:

data _null_;
    length uri $256;
    rc=0;
    rc=metadata_newobj("SASLibrary",
                       uri,
                       "testlib");
    put uri=;
run;

هنا سجل بلدي:

NOTE: Variable uri is uninitialized.
uri=OMSOBJ:SASLibrary\A5M6IOB0.AZ000007
NOTE: DATA statement used (Total process time):
      real time           0.07 seconds
      cpu time            0.01 seconds
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top