2009-04-10 6 views
0

У меня есть приложение SAS, которое я тестирую с недавно выпущенным SAS 9.2. У меня есть вызов функции metadat_newobj, чтобы создать новую библиотеку объектов в хранилище метаданных SAS:Функция metadata_newobj в SAS 9.2 имеет ошибку?

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

В 9.1.3, когда функция выполняется успешно (гс = 0), переменная URI была заселена с URI вновь созданного объекта библиотеки.

В SAS 9.2, хотя возвращаемое значение равно 0 (успешно), и объект библиотеки создается (я проверил вручную с помощью консоли управления), переменная URI остается пустой, поэтому любые последующие операции по установке атрибутов и т. Д. Терпят неудачу.

Документация для обеих версий содержит URI в качестве выходного параметра этой функции.

Кто-нибудь знает об этом?

EDIT: код я использую следующим образом:

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 вместо этого, который, кажется, работать. : \

EDIT # 2: Я только что понял, что не упомянул, что это код SCL.

+0

Похож на вопрос для SAS .. Извините, но мы не можем больше помочь. – AFHood

+0

Да, я планирую открыть билет поддержки с ними в понедельник, но я решил, что я попробую здесь и посмотрю, скрываются ли люди SAS, или другие имеют аналогичную проблему. Благодарю. :) – Adnan

ответ

0

я не нашел ничего, что предполагает metadata_newobj изменилось в новой версии. Однако он просто отказался работать для меня. Поэтому я переработал свои функции для использования PROC METADATA, и теперь он работает в SAS 9.1.3 и SAS 9.2

Спасибо всем.

+0

можете ли вы опубликовать рабочий пример, который вы использовали? –

+0

Извините, я больше не работаю в том же месте, где и было, когда это было опубликовано, поэтому у меня больше нет доступа к реальному коду. Прошло некоторое время с тех пор, как я кодировал SAS, поэтому у меня нет рабочей среды SAS, чтобы воссоздать это: \ – Adnan

1

Это сработало для меня. Основываясь на примере, который вы дали, я предлагаю помещать кавычки вокруг NAME. Также возможно использовать оператор длины для настройки 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 
+0

Добавил мой фрагмент кода к вопросу. Мое «Имя» - это переменная, и URI был объявлен ранее. Кстати, я забыл упомянуть, что я использовал его в SCL-коде. – Adnan