Создать серию дат между 2 датами в SAS - PullRequest
0 голосов
/ 24 апреля 2019

Итак, у меня есть следующий код:

%let mon_first=02Jan2018;
%let mon_last=02Mar2018;
%let start=%sysfunc(inputn(mon_first, Date9.), yymmn6.);
%let end=%sysfunc(inputn(mon_first, Date9.), yymmn6.);

%macro call(yrmon, yr, mon);

Макрос с именем %call будет выполнять определенные задачи с учетом месяцев между mon_first и mon_last в yymn6. формат. Поэтому я использовал следующий цикл:

%do i = &start. to &end.;
yrmon=put(i)
yr=substr(yrmon, 1,4);
mon=substr(yrmon,5,2);
%call(yrmon, yr, mon);
%end;

Я получаю сообщение об ошибке yrmon=put(i): Statement is not valid or it is used out of proper order. Любые предложения здесь, пожалуйста?

1 Ответ

3 голосов
/ 24 апреля 2019

Используйте целое число для счетчика цикла. Затем используйте целое число с intnx(), чтобы вычислить следующий месяц.

%let mon_first=02Jan2018;
%let mon_last=02Mar2018;
%do i=0 %to %sysfunc(intck(month,"&mon_first"d,"&mon_last"d));
  %let month=%sysfunc(intnx(month,"&mon_first"d,&i));
  %let yrmon=%sysfunc(putn(&month,yymmn6));
  %let yr=%sysfunc(year(&month),4);
  %let mon=%sysfunc(month(&month),z2);

...

%end;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...