% PUT - печатать даты и время в формате из числовой макропеременной - PullRequest
0 голосов
/ 28 февраля 2019

У меня есть эта проблема, которая кажется такой простой.

У меня есть макрос вроде:

%macro test;

    /* I start from it */
    %let time_ = %sysfunc(time());
    %let date_ = %sysfunc(date());

    %let time1 = %sysfunc(time());
        data _null_;
            timedelay = sleep(5, 1);
        run;
    %let time2 = %sysfunc(time());

    %let diff = %sysevalf(&time2 - &time1);

    %put Timenow: &time_;
    %put DateNOw: &date_;
    %put TimeDifference: &diff;
    /*Above works as I want*/

    /* What I want to have */
    %put Timenow: %sysfunc(put(&time_, time13.)); /* Timenow: 22:06:00 */
    %put DateNOw: %sysfunc(put(&time_, date9.)); /* DateNOw: 27FEB2019 */
    %put TimeDifference: %sysfunc(put(&time_, time13.)); /* TimeDifference: 00:00:05 */


%mend;

%test;

В общем, например, вместо %sysfunc(put(&time_, time13.)); что-то похожее, что даст мне результат: 22:06:00 Есть ли простой и прямой способ сделатьэто?

Спасибо!

1 Ответ

0 голосов
/ 28 февраля 2019

SYSFUNC имеет опцию формата.Подумайте, полезно ли это вам.

%let time1 = %sysfunc(datetime());
   data _null_;
      timedelay = sleep(5, 1);
      run;
%let time2 = %sysfunc(datetime());

%let diff = %sysfunc(sum(&time2,-&time1),time13.);
%put NOTE: &=diff;

enter image description here

Или если вы хотите использовать функцию PUTN.

%put TimeDifference: %sysfunc(putN(%sysevalf(&time2-&time1),time,13));

enter image description here

...