Необходимо заполнить пробелы в переменной SAS - PullRequest
0 голосов
/ 07 февраля 2012

Немного ошеломлен здесь.

У меня есть переменная SAS со значениями различной длины.

Если объем памяти, требуемый для переменной, ниже порогового значения (48 байт), я добавляю пробелы к переменной, чтобы она достигла этого выделения памяти.

Как бы я это сделал в SAS?

Что более важно, где я могу найти документацию, касающуюся памяти, занимаемой одним пробелом (или любым другим символом / типом) в SAS?

Edit: Ответ stevepastelan был идеальным на самом деле:)

Ответы [ 2 ]

2 голосов
/ 08 февраля 2012

Символьные переменные в SAS автоматически дополняются вправо, чтобы заполнить их длину, однако некоторые операторы, такие как оператор PUT, могут обрезать их при отображении.

Вы можете использовать форматы для принудительного вывода, например:

data test;
    length x $ 8;    

    x = "XX";   
    put "1) " x     "END"; /* Omitting the format will trim the printed variable value */    
    put "2) " x $8. "END"; /* Now it's shown as right-padded */


    x = "123456789";       /* The extra character is truncated from the variable */
    put "3) " x $8. "END";             
    put "4) " x $9. "END"; /* increasing format width will add extra right padding */
    put "5) " x $6. "END"; /* A shorter format will truncate the display */
run; 

Записывает в журнал SAS следующее:

1) XX END
2) XX      END
3) 12345678END
4) 12345678 END
5) 123456END
0 голосов
/ 08 февраля 2012

Я не могу думать ни о каких обстоятельствах, при которых вы хотели бы сделать это. Можете ли вы уточнить, почему просветить нас. Тем временем это должно предоставить вам то, что вам требуется:

http://support.sas.com/resources/papers/proceedings09/010-2009.pdf

Если я не прочитал это, значит, Иззи прав. Они являются переменными фиксированной длины, поэтому при хранении в памяти длина 20 байт займет 20 байт.

Если вам нужно добавить значение, вы можете использовать функцию повтора:

http://support.sas.com/documentation/cdl/en/lrdict/64316/HTML/default/viewer.htm#a000245939.htm

...