Я думаю, что вы пытаетесь создать индекс для набора данных, кодировка которого отличается от текущей сессии EG.
proc options option=encoding;
run;
перечислит кодировку, используемую сеансом EG
proc contents data=mylib.table:
run;
покажет кодировку в наборе данных
Если они не совпадают, проще всего создать копию этого набора данных с кодировкой, соответствующей сеансу, и создать индекс длятот.
libname mylib '/location';
libname mylib2 '/location2' outencoding='UTF-8'; /* should match session encoding */
proc copy noclone in=mylib out=mylib2;
select table;
run;
Это может не сработать, если вам необходимо сохранить кодировку, чтобы избежать потери информации.В этом случае вам придется пройти через некоторые изменения конфигурации, чтобы EG вызывал сеанс SAS с правильной кодировкой.Это может помочь, но я сам этого не сделал:
http://support.sas.com/kb/51/586.html
Поскольку вы просто имеете дело с проблемой из-за разных ОС, я думаю, это будет:
libname mylib '/location';
libname mylib2 '/location2`;
proc copy noclone in=mylib out=mylib2;
select table;
run;
с последующим
proc datasets library=mylib2;
modify table;
index create names=(field1 field2 field3);
run;