В настоящее время я работаю над проектом в sas. Мы составляем отчеты на основе данных за период с ноября 2010 года. Мне нужно импортировать этот файл, который имеет имя // потребительский учет/Reports/SAS Reports/20151130/M0ED1 для ноябрьских данных. В следующем месяце это будет // потребительский учет/Reports/SAS Reports/20151231/M0ED2, а затем в следующем месяце он будет таким же, а не будет иметь данные от 20160130 и M0ED3. Я пытаюсь написать код, который будет напрямую импортировать файл с правильным именем, так что мне не нужно писать имя файла вручную каждый раз, когда я пытаюсь подготовить отчет. Пожалуйста, предложите мне путь. Ваша помощь будет оценена по достоинству.SAS Код для динамической даты
0
A
ответ
0
здесь вы идете ...
/*Set How many months ago the data you are looking at is*/
%let numMonths = 6;
/*Set which Year and Month was report 1*/
%let firstReport = '15NOV2015'd;
data _null_;
/*Get Todays Date*/
format mydate myreportdate date9.;
myDate = today();
/*Go Back the number of months set in the Macro variable.
As you want the last day of that month, add back on 1 month and then remove a day*/
myReportDate = intnx('month',myDate,-&numMonths.+1)-1;
/*Calculate which report number this is using the INTCK Function to count the number of months ends crossed between 2 dates*/
myRunNumber = compress(put(INTCK('MONTH',&firstReport.,myReportDate)+1,best12.));
/*Create A String with the location and name of your report*/
myReportString = "//consumer accounting/Reports/SAS Reports/"||
put(year(myReportDate),z4.)||
put(month(myReportDate),z2.)||
put(day(myReportDate),z2.)||
"/M0ED"||myRunNumber;
/*Create a macro variable with the location and name of your report*/
call symputx('myReport',myReportString);
run;
/*Output the macro variable to the log*/
%put &myReport.;
Смежные вопросы
- 1. SAS код макроса проверить отсутствие даты
- 2. Преобразовать переменную Character Даты для SAS Даты
- 3. Обновить код SAS .sas для Sharepoint 2010
- 4. имя динамической переменной в sas
- 5. Расчет даты в SAS
- 6. Операции SAS и даты
- 7. Код SAS для решения динамических нелинейных моделей
- 8. sas формат даты для чтения yyyymmdd
- 9. Преобразование даты SAS
- 10. SAS Экспорт формат даты
- 11. SAS Даты Программно
- 12. Преобразование формата даты SAS
- 13. SAS - пользовательский формат даты
- 14. Извлечение «динамической» части из набора данных SAS
- 15. числовое значение для символа преобразование даты sas
- 16. Дата SAS для преобразования категории и даты
- 17. Как создать код SAS, запустив другой код SAS
- 18. Код SAS для определения всех столбцов в сценарии sas
- 19. SAS не распознающие формат даты
- 20. Мне нужен логический код для создания динамической динамической структуры json
- 21. конвертировать код Java в SAS
- 22. Флагинг Даты с intck (SAS)
- 23. SAS содержит весь код
- 24. Код SAS, сортировка дважды?
- 25. Создание динамической даты в MySQL
- 26. AngularUI Отключение динамической даты Datepicker
- 27. Группировка даты SAS на месяц
- 28. Программный код SAS SCL
- 29. SAS не обновляет код
- 30. Код выделения динамической памяти
Большое спасибо за ответ. Но все-таки у меня одна проблема. Когда я использую mydate = today(); и запустите другую, я получаю M0EOD1 по желанию. Когда я поставлю mydate = '15Jun2016'd; Я получаю M0EOD2 по желанию, но когда я ставлю mydate = '15Jul2016'd, я получаю M0EOD91, но я ожидал M0EOD3. Также, когда я ставлю mydate = '15Aug2016'd, я получаю M0EOD92. Может ли кто-нибудь сказать мне, где проблема? – shankar
Привет, Шанкар, боюсь, у меня не было SAS передо мной, когда я написал этот ответ, и, таким образом, ошибка закралась! Я изменил свой код, чтобы вместо этого использовать функцию intck, которая вычисляет разницу между двумя датами - в этом случае я установил ее для вычисления разницы в месяцах. Если это ответ на ваш вопрос, пожалуйста, дайте мне зеленый галочку! –