Не совсем понятно, о чем вы спрашиваете;Вы конкретно упоминаете использование шага данных SAS, но тогда в вашем примере кода используется PROC SQL - имеет ли значение, какой из них используется?Также обратите внимание, что ваш ввод имеет | Поле № | Имя поля | 1 | A | 3 | B | 2 | C |но затем вы говорите, что вывод должен быть в порядке ABC - должны ли поля быть в порядке, указанном в Field_No, или нет?
В любом случае, вот очень простой код, который работает:
* Create the input data set;
data source_table;
field_no = 1; field_name = 'A'; output;
field_no = 3; field_name = 'B'; output;
field_no = 2; field_name = 'C'; output;
run;
* Derive the list of field/variable names, in the correct order;
proc sql noprint;
select field_name into :var_list separated by ' '
from source_table
order by field_no
;
quit;
* Create the output data set using the variable list created above;
data target_table;
length &var_list $ 30;
run;
Если есть дополнительные требования, которые означают, что этот простой подход не разрешен, пожалуйста, обновите вопрос, чтобы объяснить, почему нет.Этот код создает все указанные столбцы как символьные переменные длиной 30, но его можно легко расширить, чтобы тип, длина и метка для каждой переменной также указывались в source_table
- такого рода действия выполняются все время вмоя работа.