1
resposta

SAS - Criação de Variáveis via Condicional

Preciso automatizar uma rotina e as bases possuem em sua nomenclatura a data a qual se referem. Exemplo: Clientes_202008 = (Clientes_ANOMES). A base principal é gerada apenas após o fechamento das informações, após o dia 20 de cada mês, portanto a base que será consultada será -1 ou -2 conforme a data da consulta.

Estou tentando atribuir essas informações à condicional que considere a particularidade da base. mas sempre obtenho o retorno "The quoted string currently being processed has become more than 262 characters long. You might have unbalanced quotation marks.". Entendo que está indicando que há algum erro de lógica, mas não consegui identificar até o momento.


%let dia = %sysfunc(day(%sysfunc(today())));
%let mes = %sysfunc(month(%sysfunc(today())));
%let ano = %sysfunc(year(%sysfunc(today())));

%macro AJUSTA_MES;
    %IF &dia. < 20 %THEN %DO;
        %IF &mes. = 1 %or &mes. = 2 %THEN %let mes = &mes - 2 %and ano = &ano - 1; %ELSE
        %let mes = &mes - 2;
    %END;
    %IF &dia. > 20 %THEN %DO;
        %IF &mes. = 1 %THEN %let mes = &mes -1 %and ano = &ano - 1; %ELSE
        %let mes = &mes - 1;
    %END;
%mend AJUSTA_MES;
%AJUSTA_MES;

%put &dia.  &mes.  &ano.;



1 resposta

Olá Jeniffer!

Peço desculpas pela demora em obter um retorno.

O erro em questão geralmente ocorre quando há um problema de concatenação de strings. Pelo trecho de código que você compartilhou, o erro pode estar relacionado a linha %let mes = &mes - 2 %and ano = &ano - 1;. Verifique se separar as instruções de atribuição em linhas diferentes e também ajustar a sintaxe correta para a atualização das variáveis resolve o problema, como por exemplo: %let mes = &mes - 2; %let ano = &ano - 1;.

Tente fazer essa correção e veja se o erro persiste. Caso ainda tenha problemas, fico à disposição.

Tenha um bom dia e bons estudos.