Меняем значение sequence в SAS Customer Intelligence Studio

 Всем привет!
В этой статье будет описан способ как изменить номер, с которой начинается последовательность кампаний в SAS Customer IntelligenceStudio.

К сожалению, в SAS не реализован программный метод создания последовательности или сиквенса, в отличие от того же Oracle. В SAS Customer IntelligenceStudio также не реализован какой-то красивый способ создания последовательности.  Реализована последовательность через SAS DATASET, который находится в папке программы: 
SASconfigLev1ApplicationsSASCustomerIntelligenceDataMAMiscsequence.sas7bdat
Таблица (DATASET) выглядит примерно так:
Количество позиций может отличаться, в зависимости от того каким функционалом пользуетесь. За значение последовательности отвечает SKCampaign, а точнее Number, значение которого стоит напротив SKCampaign
Создадим новую кампанию с существующими значениями:

Номер кампании 26. Если создать новую кампанию, то номер кампании уже будет 27.
Перед тем, чтобы изменять какие-либо значения рекомендую сделать бэкап файла Sequence.sas7bdat.
Поменяем у SKCampaign значение Number = 250.
Для того, чтобы эти изменения вступили в силу, необходимо перезапустить Web Application Server, на котором располагается SAS Customer Intelligence Studio. В моём случае – это Jboss Server 6.
 
Следующий пункт можно не делать, если при создании новой кампании всё отработало без ошибок.
Возможно понадобиться поменять User Rights для файла Sequence:

Заходим в SAS Customer Intelligence Studio и создаём новую кампанию:
Как видно порядковый номер изменился.
Интересно, что каждый раз, когда перезапускается Web Application Server, значение Number увеличивается до ближайшего числа, кратного 25 (+1). То есть, если крайнее значение кампании было 33, то после перезапуска начнётся с 51, если было 101, то после начнётся с 126.
Если же что-то сломалось и перестало работать, то восстановите бэкап файл. Если же такого файла нет, то простое удаление sequence.sas7bdat восстановит работоспособность системы, правда вся нумерация начнётся с 1.
На этом всё!

Искусственный вызов ошибки и вывод русского текста ошибки в SAS Customer Intelligence Studio

Всем привет!
В этой статье будет описан способ выводить сообщение об ошибке со своим русским текстом в SAS Customer Intelligence Studio (SAS CI).

В одной из предыдущих статей было описано, как обрабатывать ошибки в SAS Macro. Также в статье были упомянуты, какие переменные отвечают за  ошибки в SAS
Случается, что необходимо остановить работу программы и сообщить пользователю какое-то сообщение. Когда же речь идёт о SAS Customer IntelligenceStudio, то появляется ряд моментов как правильно это осуществить. 
Чтобы искусственно вызвать ошибку, требуется поменять значение автоматической макропеременной SYSCC на целое значение, которое больше 1.  
Например, присвоим значение 500:
 %let SYSCC = 500;
Создадим PROCESS NODE (узел процесс) в SAS Customer Intelligence Studio и посмотрим что получится:
Таким образом, значение SYSCC отображается в окне ошибки.
Макро переменная MAMsg отвечает за параметр текста ошибки. 
Присвоим следующее значение:
%let MAMsg = HELLO WORLD!;

Теперь видно и текст ошибки. И вроде бы ничего, но выглядит это немного странно – всё на русском, кроме сообщения. 
 
Попробуем присвоить значение переменной русские текст:
%let MAMsg = ПРИВЕТ!;
Попробуем разобраться, почему так происходит. Для этого возьмём функцию KCVT и преобразуем слово ПРИВЕТ в кодировку UTF-8.
Несложными манипуляциями можно выяснить, что слово ПРИВЕТ изначально в кодировке ANSI, но когда передаётся из SAS в Java программы, преобразуется в кодировку UTF8. 
Более того, если немного покопаться в исходниках программы, то можно обнаружить код, который отвечает за вывод этой ошибки. В принципе, можно сделать соответствующую доработку и перекомпилировать исходники, но сложность такой доработки очень высока.
Кстати, текст который стандартно отображается при любой ошибке также «зашит» в Java в качестве UTF кода и представлен в виде кодов букв. 
Например, слово ПРИВЕТ будет отображено в виде:
Но, к сожалению, если этот код подать в качестве ошибки, он так и останется в том же виде:
В итоге, после долгого времени экспериментирования был найден способ вывести русские буквы в тексте ошибки, используя функцию KCVT в макросе:

На этом всё!
Пользуйтесь на здоровье!