2014-09-03 5 views
2

Как разместить символ табуляции в инструкции PUT на шаге DATA?Как разместить символ табуляции в инструкции PUT на шаге DATA?

Я использую SAS для вывода журнала обработки:

if first.ref then 
    PUT 'PROCESSING: ' ref ; 

if InceptionDate > LossDate then 
    do; 
     if first.ref then 
      PUT 'WARNING: ' ref ' inception date prior to the loss date!'/ref=/InceptionDate=/LossDate=; 
      ... do some stuff... 
    end; 

Я хочу символ новой строки в PUT, после /, отступ. Как вставить символ табуляции?

ответ

3

Вот несколько возможных подходов:

data _null_; 
    ref = 001; 
    inceptiondate = '01jan1960'd; 
    lossdate = '01jun1960'd; 
    format inceptiondate lossdate yymmdd10.; 

    /*Without indent*/ 
    PUT 'WARNING: ' ref ' inception date prior to the loss date!'/ref=/InceptionDate=/LossDate=; 

    /*Move the pointer to the right by 1 before printing*/ 
    PUT 'WARNING: ' ref ' inception date prior to the loss date!'/+1 ref=/+1 InceptionDate=/+1 LossDate=; 

    /*Move the pointer to column 2 before printing*/ 
    PUT 'WARNING: ' ref ' inception date prior to the loss date!'/@2 ref=/@2 InceptionDate=/@2 LossDate=; 


    /*# of spaces seems to depend on where you put the tab characters in the line containing the put statement*/ 
    PUT 'WARNING: ' ref ' inception date prior to the loss date!'/' ' ref=/' ' InceptionDate=/' ' LossDate=; 

    /*Works in external text editor but not in the SAS log window*/ 
    PUT 'WARNING: ' ref ' inception date prior to the loss date!'/'09'x ref=/'09'x InceptionDate=/'09'x LossDate=; 

run; 

Примечания

Я не уверен, как получить этот сайт, чтобы отобразить символы табуляции правильно - третий метод включает в себя написание кода, который содержит вкладку символы в одинарных кавычках. Если вы скопируете и вставьте код, как показано выше, вместо этого вы получите пробелы. В SAS символы табуляции преобразуются в пробелы перед запуском кода, поэтому сумма, на которую вы отступаете в журнале, зависит от того, где ваша вкладка находится в коде, а журнал содержит пробелы, а не вкладки.

Если вы используете метод «09'x», это работает как ожидалось, если вы перенаправите журнал на внешний файл с помощью proc printto log = "c:\temp\my.log"; run; и просмотрите его в своем любимом текстовом редакторе, но окно журнала SAS (в 9.1.3 не менее) не поддерживает символы табуляции - они рассматриваются как одиночные непечатаемые символы, отображаемые в виде прямоугольников.

+0

Что такое '@ 2'? – JustinJDavies

+1

@ 2 перемещает указатель на позицию 2-го символа на линии. +1 перемещается с текущей позиции на 1 символ. – vasja

+1

Если вам действительно нужен символ табуляции, мне нравится метод '' 09x''. Если вы просто хотите отступать, мне нравится опция @ @. – Joe