<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: Exercício para encontrar o último dia útil in Forum em português</title>
    <link>https://communities.sas.com/t5/Forum-em-portugu%C3%AAs/Exerc%C3%ADcio-para-encontrar-o-%C3%BAltimo-dia-%C3%BAtil/m-p/870771#M1306</link>
    <description>&lt;P&gt;ola&amp;nbsp;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/441963"&gt;@reehfarias&lt;/a&gt;&amp;nbsp;,&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Modifiquei seu código (veja abaixo), não sei se seria o resultado que esperado, mas imagino, o que você esta querendo fazer precise estudar um pouco de MACRO SAS. Espero que tenha ajudado, embora acho que não tenha chegado ao resultado que você esperava.&lt;/P&gt;
&lt;P&gt;Abraços.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;---código que modifiquei---&lt;/P&gt;
&lt;P&gt;/* Defina a variável data como a data atual */&lt;BR /&gt;data _null_;&lt;BR /&gt;call symput('data_dia_util',today()); &lt;STRONG&gt;/* CRIEI COMO VARIAVEL MACRO */&lt;/STRONG&gt;&lt;BR /&gt;run;&lt;/P&gt;
&lt;P&gt;/* Defina a lista de feriados */&lt;BR /&gt;data feriados;&lt;BR /&gt;input feriado;&lt;BR /&gt;format feriado date9.;&lt;BR /&gt;informat feriado date9.; &lt;STRONG&gt;/* USEI INFORMAT PARA QUE A LEITURA FUNCIONASSE */&lt;/STRONG&gt;&lt;BR /&gt;datalines;&lt;BR /&gt;01JAN2023&lt;BR /&gt;15APR2023&lt;BR /&gt;21APR2023&lt;BR /&gt;01MAY2023&lt;BR /&gt;30MAY2023&lt;BR /&gt;09JUN2023&lt;BR /&gt;07SEP2023&lt;BR /&gt;12OCT2023&lt;BR /&gt;02NOV2023&lt;BR /&gt;15NOV2023&lt;BR /&gt;25DEC2023&lt;BR /&gt;;&lt;BR /&gt;run;&lt;/P&gt;
&lt;P&gt;/* Calcule a data do último dia útil */&lt;BR /&gt;data _null_;&lt;BR /&gt;/* Subtraia 1 dia da data atual */&lt;BR /&gt;set feriados;&lt;BR /&gt;%let data_dia_util = %eval(&amp;amp;data_dia_util-1); &lt;STRONG&gt;/* NOVAMENTE %let e %eval é SAS MACRO */&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;/* Enquanto a data não for um dia útil, subtraia 1 dia */&lt;BR /&gt;do while(weekday(&amp;amp;data_dia_util) in (1,7) or feriado=&amp;amp;data_dia_util); &lt;STRONG&gt;/* No loop aqui, uso macro substituição */&lt;/STRONG&gt;&lt;BR /&gt;%let data_dia_util = %eval(&amp;amp;data_dia_util-1);&amp;nbsp;&lt;STRONG&gt;/* NOVAMENTE %let e %eval é SAS MACRO */&lt;/STRONG&gt;&lt;BR /&gt;end;&lt;/P&gt;
&lt;P&gt;/* Exiba a data do último dia útil */&lt;BR /&gt;x=put(&amp;amp;data_dia_util,date9.);&lt;BR /&gt;y=put(x,$10.);&lt;BR /&gt;call symput('nome_tabela','tabela_' || y); &lt;STRONG&gt;/* gerei varíavel macro o nome da sua tabela, aproveitando o mesmo data step*/&lt;/STRONG&gt;&lt;BR /&gt;put x;&lt;/P&gt;
&lt;P&gt;run;&lt;/P&gt;
&lt;P&gt;/* Cria tabela vazia com nome tabela_aaaammdd */&lt;BR /&gt;data &amp;amp;nome_tabela;&amp;nbsp; &lt;STRONG&gt;/* fazendo a macro substituição */&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;run;&lt;/P&gt;</description>
    <pubDate>Thu, 20 Apr 2023 13:31:50 GMT</pubDate>
    <dc:creator>wilkoba</dc:creator>
    <dc:date>2023-04-20T13:31:50Z</dc:date>
    <item>
      <title>Exercício para encontrar o último dia útil</title>
      <link>https://communities.sas.com/t5/Forum-em-portugu%C3%AAs/Exerc%C3%ADcio-para-encontrar-o-%C3%BAltimo-dia-%C3%BAtil/m-p/870593#M1305</link>
      <description>&lt;P&gt;Bom dia/tarde/noite&amp;nbsp;&lt;/P&gt;&lt;P&gt;Tudo bem?&amp;nbsp;&lt;BR /&gt;Estava tentando fazer um exercício de encontrar o último dia útil através da data de hoje.&lt;/P&gt;&lt;P&gt;Acho que estou tendo dificuldade com a sintaxe dessa linguagem de programação.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Tentei o seguinte:&amp;nbsp;&lt;/P&gt;&lt;P&gt;/* Defina a variável data como a data atual */&lt;BR /&gt;data _null_;&lt;BR /&gt;&amp;nbsp; &amp;nbsp; data_dia_util = today();&lt;BR /&gt;run;&lt;/P&gt;&lt;P&gt;/* Defina a lista de feriados */&lt;BR /&gt;data feriados;&lt;BR /&gt;&amp;nbsp; &amp;nbsp; input feriado date9.;&lt;BR /&gt;&amp;nbsp; &amp;nbsp; format feriado date9.;&lt;BR /&gt;&amp;nbsp; &amp;nbsp; datalines;&lt;BR /&gt;&amp;nbsp; &amp;nbsp; 01JAN2023&lt;BR /&gt;&amp;nbsp; &amp;nbsp; 15APR2023&lt;BR /&gt;&amp;nbsp; &amp;nbsp; 21APR2023&lt;BR /&gt;&amp;nbsp; &amp;nbsp; 01MAY2023&lt;BR /&gt;&amp;nbsp; &amp;nbsp; 30MAY2023&lt;BR /&gt;&amp;nbsp; &amp;nbsp; 09JUN2023&lt;BR /&gt;&amp;nbsp; &amp;nbsp; 07SEP2023&lt;BR /&gt;&amp;nbsp; &amp;nbsp; 12OCT2023&lt;BR /&gt;&amp;nbsp; &amp;nbsp; 02NOV2023&lt;BR /&gt;&amp;nbsp; &amp;nbsp; 15NOV2023&lt;BR /&gt;&amp;nbsp; &amp;nbsp; 25DEC2023&lt;BR /&gt;;&lt;BR /&gt;run;&lt;/P&gt;&lt;P&gt;/* Calcule a data do último dia útil */&lt;BR /&gt;data _null_;&lt;BR /&gt;/* Subtraia 1 dia da data atual */&lt;BR /&gt;data_dia_util = intnx('day', data_dia_util, -1);&lt;/P&gt;&lt;P&gt;/* Enquanto a data não for um dia útil, subtraia 1 dia */&lt;BR /&gt;do while(weekday(data_dia_util) in (1,7) or feriados(feriado=data) ne 0);&lt;BR /&gt;&amp;nbsp; data_dia_util = intnx('day', data_dia_util, -1, 'EXCLUDE=feriados');&lt;BR /&gt;end;&lt;/P&gt;&lt;P&gt;/* Exiba a data do último dia útil */&lt;BR /&gt;put data_dia_util= date9.;&lt;BR /&gt;run;&lt;/P&gt;&lt;P&gt;/* Cria tabela vazia com nome tabela_aaaammdd */&lt;/P&gt;&lt;P&gt;data tabela_&amp;amp;data_dia_util.;&lt;/P&gt;&lt;P&gt;run;&lt;BR /&gt;&lt;BR /&gt;Estou tendo problema principalmente no while, acho que na parte de verificar se é feriado não coloquei a frase correta, mas n sei como fazer.&lt;/P&gt;</description>
      <pubDate>Wed, 19 Apr 2023 16:12:28 GMT</pubDate>
      <guid>https://communities.sas.com/t5/Forum-em-portugu%C3%AAs/Exerc%C3%ADcio-para-encontrar-o-%C3%BAltimo-dia-%C3%BAtil/m-p/870593#M1305</guid>
      <dc:creator>reehfarias</dc:creator>
      <dc:date>2023-04-19T16:12:28Z</dc:date>
    </item>
    <item>
      <title>Re: Exercício para encontrar o último dia útil</title>
      <link>https://communities.sas.com/t5/Forum-em-portugu%C3%AAs/Exerc%C3%ADcio-para-encontrar-o-%C3%BAltimo-dia-%C3%BAtil/m-p/870771#M1306</link>
      <description>&lt;P&gt;ola&amp;nbsp;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/441963"&gt;@reehfarias&lt;/a&gt;&amp;nbsp;,&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Modifiquei seu código (veja abaixo), não sei se seria o resultado que esperado, mas imagino, o que você esta querendo fazer precise estudar um pouco de MACRO SAS. Espero que tenha ajudado, embora acho que não tenha chegado ao resultado que você esperava.&lt;/P&gt;
&lt;P&gt;Abraços.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;---código que modifiquei---&lt;/P&gt;
&lt;P&gt;/* Defina a variável data como a data atual */&lt;BR /&gt;data _null_;&lt;BR /&gt;call symput('data_dia_util',today()); &lt;STRONG&gt;/* CRIEI COMO VARIAVEL MACRO */&lt;/STRONG&gt;&lt;BR /&gt;run;&lt;/P&gt;
&lt;P&gt;/* Defina a lista de feriados */&lt;BR /&gt;data feriados;&lt;BR /&gt;input feriado;&lt;BR /&gt;format feriado date9.;&lt;BR /&gt;informat feriado date9.; &lt;STRONG&gt;/* USEI INFORMAT PARA QUE A LEITURA FUNCIONASSE */&lt;/STRONG&gt;&lt;BR /&gt;datalines;&lt;BR /&gt;01JAN2023&lt;BR /&gt;15APR2023&lt;BR /&gt;21APR2023&lt;BR /&gt;01MAY2023&lt;BR /&gt;30MAY2023&lt;BR /&gt;09JUN2023&lt;BR /&gt;07SEP2023&lt;BR /&gt;12OCT2023&lt;BR /&gt;02NOV2023&lt;BR /&gt;15NOV2023&lt;BR /&gt;25DEC2023&lt;BR /&gt;;&lt;BR /&gt;run;&lt;/P&gt;
&lt;P&gt;/* Calcule a data do último dia útil */&lt;BR /&gt;data _null_;&lt;BR /&gt;/* Subtraia 1 dia da data atual */&lt;BR /&gt;set feriados;&lt;BR /&gt;%let data_dia_util = %eval(&amp;amp;data_dia_util-1); &lt;STRONG&gt;/* NOVAMENTE %let e %eval é SAS MACRO */&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;/* Enquanto a data não for um dia útil, subtraia 1 dia */&lt;BR /&gt;do while(weekday(&amp;amp;data_dia_util) in (1,7) or feriado=&amp;amp;data_dia_util); &lt;STRONG&gt;/* No loop aqui, uso macro substituição */&lt;/STRONG&gt;&lt;BR /&gt;%let data_dia_util = %eval(&amp;amp;data_dia_util-1);&amp;nbsp;&lt;STRONG&gt;/* NOVAMENTE %let e %eval é SAS MACRO */&lt;/STRONG&gt;&lt;BR /&gt;end;&lt;/P&gt;
&lt;P&gt;/* Exiba a data do último dia útil */&lt;BR /&gt;x=put(&amp;amp;data_dia_util,date9.);&lt;BR /&gt;y=put(x,$10.);&lt;BR /&gt;call symput('nome_tabela','tabela_' || y); &lt;STRONG&gt;/* gerei varíavel macro o nome da sua tabela, aproveitando o mesmo data step*/&lt;/STRONG&gt;&lt;BR /&gt;put x;&lt;/P&gt;
&lt;P&gt;run;&lt;/P&gt;
&lt;P&gt;/* Cria tabela vazia com nome tabela_aaaammdd */&lt;BR /&gt;data &amp;amp;nome_tabela;&amp;nbsp; &lt;STRONG&gt;/* fazendo a macro substituição */&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;run;&lt;/P&gt;</description>
      <pubDate>Thu, 20 Apr 2023 13:31:50 GMT</pubDate>
      <guid>https://communities.sas.com/t5/Forum-em-portugu%C3%AAs/Exerc%C3%ADcio-para-encontrar-o-%C3%BAltimo-dia-%C3%BAtil/m-p/870771#M1306</guid>
      <dc:creator>wilkoba</dc:creator>
      <dc:date>2023-04-20T13:31:50Z</dc:date>
    </item>
    <item>
      <title>Re: Exercício para encontrar o último dia útil</title>
      <link>https://communities.sas.com/t5/Forum-em-portugu%C3%AAs/Exerc%C3%ADcio-para-encontrar-o-%C3%BAltimo-dia-%C3%BAtil/m-p/870823#M1307</link>
      <description>&lt;P&gt;MUITO OBRIGADO! Consegue me dar só mais uma ajudinha?&lt;/P&gt;&lt;P&gt;O código estava criando a tabela com o nome tipo Tabela_19APR2023 então eu só fiz uma mudança no formato a fim de criar com o nome TABELA_20230419.&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;/* Defina a variável data como a data atual */&lt;BR /&gt;data _null_;&lt;BR /&gt;call symput('data_dia_util',today()); /* CRIEI COMO VARIAVEL MACRO */&lt;BR /&gt;run;&lt;/P&gt;&lt;P&gt;/* Defina a lista de feriados */&lt;BR /&gt;data feriados;&lt;BR /&gt;input feriado;&lt;BR /&gt;format feriado date9.;&lt;BR /&gt;informat feriado date9.; /* USEI INFORMAT PARA QUE A LEITURA FUNCIONASSE */&lt;BR /&gt;datalines;&lt;BR /&gt;01JAN2023&lt;BR /&gt;15APR2023&lt;BR /&gt;21APR2023&lt;BR /&gt;01MAY2023&lt;BR /&gt;30MAY2023&lt;BR /&gt;09JUN2023&lt;BR /&gt;07SEP2023&lt;BR /&gt;12OCT2023&lt;BR /&gt;02NOV2023&lt;BR /&gt;15NOV2023&lt;BR /&gt;25DEC2023&lt;BR /&gt;;&lt;BR /&gt;run;&lt;/P&gt;&lt;P&gt;/* Calcule a data do último dia útil */&lt;BR /&gt;data _null_;&lt;BR /&gt;/* Subtraia 1 dia da data atual */&lt;BR /&gt;set feriados;&lt;/P&gt;&lt;P&gt;/* Enquanto a data não for um dia útil, subtraia 1 dia */&lt;BR /&gt;do while(weekday(&amp;amp;data_dia_util) in (1,7) or feriado=&amp;amp;data_dia_util); /* No loop aqui, uso macro substituição */&lt;BR /&gt;%let data_dia_util = %eval(&amp;amp;data_dia_util-1); /* NOVAMENTE %let e %eval é SAS MACRO */&lt;BR /&gt;end;&lt;/P&gt;&lt;P&gt;/* Exiba a data do último dia útil */&lt;BR /&gt;x=put(&amp;amp;data_dia_util,yymmddn8.);&lt;BR /&gt;%let DATA_MOV=put(x,$10.);&lt;BR /&gt;call symput('nome_tabela','tabela_' || &amp;amp;DATA_MOV); /* gerei varíavel macro o nome da sua tabela, aproveitando o mesmo data step*/&lt;BR /&gt;put x;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;/* Cria tabela vazia com nome tabela_aaaammdd */&lt;BR /&gt;data &amp;amp;nome_tabela; /* fazendo a macro substituição */&lt;/P&gt;&lt;P&gt;run;&lt;BR /&gt;&lt;BR /&gt;Na parte final do código, quando ele cria a tabela eu tentei colocar data tabela_&amp;amp;DATA_MOV; em vez de usar a variavel criada &amp;amp;nome_tabela. Não deu certo, sabe me explicar pq? sendo que na linha de cima :&amp;nbsp;call symput('nome_tabela','tabela_' || &amp;amp;DATA_MOV) eu uso ela e ela me traz o resultado esperado.&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;Pergunto isso porque na verdade a tabela vazia era só pra testar a variável, o que eu preciso mesmo é dessa macro variável DATA_MOV com o valor de 20230419 (por exemplo)&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;</description>
      <pubDate>Thu, 20 Apr 2023 15:32:31 GMT</pubDate>
      <guid>https://communities.sas.com/t5/Forum-em-portugu%C3%AAs/Exerc%C3%ADcio-para-encontrar-o-%C3%BAltimo-dia-%C3%BAtil/m-p/870823#M1307</guid>
      <dc:creator>reehfarias</dc:creator>
      <dc:date>2023-04-20T15:32:31Z</dc:date>
    </item>
    <item>
      <title>Re: Exercício para encontrar o último dia útil</title>
      <link>https://communities.sas.com/t5/Forum-em-portugu%C3%AAs/Exerc%C3%ADcio-para-encontrar-o-%C3%BAltimo-dia-%C3%BAtil/m-p/870850#M1308</link>
      <description>&lt;P&gt;Você primeiro precisava criar a varíavel macro já com o valor ao qual gostaria de substituir numa etapa anterior. (dentro de um data step).&lt;/P&gt;
&lt;P&gt;para efeitos didáticos talvez eu criasse um data step sozinho desta forma:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;data _null_;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;x=put(&amp;amp;data_dia_util,yymmddn8.);&amp;nbsp; /*convertendo o valor de data_dia_util para formato YYmmddn8. */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;%let DATA_MOV=put(x,$10.);&amp;nbsp; &amp;nbsp;/* convertando o valor do x (está como data/numérico) para caracter/string */&lt;/SPAN&gt;&lt;BR /&gt;call symput('nome_tabela','tabela_' || &amp;amp;DATA_MOV); /*&amp;nbsp; aqui vc concatena duas string 'tabela_' com o conteúdo da string DATA_MOV */&lt;BR /&gt;run;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;/* Somente no próximo data step vc já usa o conteúdo criado */&lt;/P&gt;
&lt;P&gt;data &amp;amp;nome_tabela;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; ...&lt;/P&gt;
&lt;P&gt;run;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Quando você fez "data tabela_&amp;amp;data_mov" --&amp;gt; ele ainda não entende que 'tabela_' é string e vc está substituindo uma parte.. e ainda faltou o || para concatenar as string. - Com certeza existe um jeito melhor de fazer do que eu fiz, mas isto é considerando o pouco que sei sobre SAS MACRO.&lt;/P&gt;
&lt;P&gt;Abaixo tem um material básico sobre SAS Macros, tem cursos oficiais também pelo SAS.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;A href="https://www.youtube.com/watch?v=ODq6V69IX2Y&amp;amp;list=PLVV6eZFA22QwrXd6nSDU18E6XgXSMOs87" target="_blank"&gt;SAS Tutorial | How to Create Macro Variables and Use Macro Functions - YouTube&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;A href="https://blogs.sas.com/content/sgf/2020/04/22/how-to-create-and-use-sas-macro-functions/" target="_blank"&gt;How to create and use SAS macro functions - SAS Users&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Estou aqui para tentar ajudar. A comunidade serve para isto.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 20 Apr 2023 17:43:37 GMT</pubDate>
      <guid>https://communities.sas.com/t5/Forum-em-portugu%C3%AAs/Exerc%C3%ADcio-para-encontrar-o-%C3%BAltimo-dia-%C3%BAtil/m-p/870850#M1308</guid>
      <dc:creator>wilkoba</dc:creator>
      <dc:date>2023-04-20T17:43:37Z</dc:date>
    </item>
  </channel>
</rss>

