Funções macro SAS fora do bloco macro ou etapa de dados

Bartłomiej Błaszczyk

Estou tendo problemas para pegar o jeito de usar funções no SAS, a sintaxe é confusa.

Estou tentando conseguir um nome sem data no final. Por exemplo, eu tenho algo assim: "MODEL_NAME_202101" e quero "MODEL_NAME".

Estou fazendo assim.

%let model_ds = 
%sysfunc(
    substr(
        %scan(&models_list, 12), 
        0, 
        %length(%scan(&models_list, 12)) - 7
    )
);

%put &model_ds;

E a única coisa que recebo é uma guerra que não me diz nada sobre os erros de sintaxe que estou cometendo.

WARNING: Argument 2 to function SUBSTR referenced by the %SYSFUNC or %QSYSFUNC macro function is out of range.

Não tenho ideia de como devo aninhar chamadas de função. Cada chamada deve ter %sysfuncantes da chamada, ou as funções de aninhamento dentro da função já chamada %sysfuncestão com a sintaxe correta.

Seria bom se alguém pudesse me consultar a explicação / documentação deste "recurso" específico,

obrigado

Joe

O ritmo provavelmente está correto sobre a melhor solução para você - mas o erro específico:

WARNING: Argument 2 to function SUBSTR referenced by the %SYSFUNC or %QSYSFUNC macro function is out of range.

É por isso:

substr(...,0,...)

Esse segundo argumento é "em que posição começar". SAS é baseado em 1, não baseado em 0 (você é um desenvolvedor Python originalmente? Isso pode ser um pouco desafiador então!), Então ele nunca precisa ser inferior a 1.

substr(...,1,...)

Este artigo é coletado da Internet.

Se houver alguma infração, entre em [email protected] Delete.

editar em
0

deixe-me dizer algumas palavras

0comentários
loginDepois de participar da revisão

Artigos relacionados

SAS: erro de procedimento de macro na etapa de dados

Chamar macro dinamicamente a partir da etapa de dados sas

Como usar uma macro SAS dentro da etapa de dados

SAS: macro de chamada de dentro de um loop de etapa de dados

Atribuir uma variável macro SAS com aspas a uma etapa de dados var

SAS: Utilizando variáveis macro como números na etapa de dados

Loop de macro SAS por data, como indicar a etapa correta?

Misturando macro-DO-loops com etapa de dados DO-loops

Fazendo referência à variável MACRO global de uma etapa de dados para um procedimento proc no SAS

Execução de macro dentro da etapa de dados

Variáveis macro dentro da etapa de dados

Função VBA de chamada de macro de dados de acesso de Ms fora da caixa

Lista de nomes de planilhas sem macro ou funções do Excel 4

Declaração de parada fora de uma etapa de dados SAS?

Declaração de parada fora de uma etapa de dados SAS?

Macro de filtro Sas

O bloco de macro retorna inesperadamente [do: valor de retorno]

Existe uma maneira de resolver instantaneamente a variável macro criada em uma etapa de dados na mesma etapa de dados?

Escrevendo a função Ackermann em uma etapa de dados SAS

O que a barra / faz na etapa de dados do SAS?

Escrevendo tag de script fora ou dentro do bloco?

Macro multilinhas C: do / while (0) vs bloco de escopo

Impressão de macro / documentos do Excel fora de ordem

Macro SAS para anexar conjuntos de dados com base no nome do conjunto de dados na biblioteca de trabalho

SAS Hash Merge Macro - produz vários conjuntos de dados

SAS: Como fazer referência a uma variável macro global para criar uma nova tabela ou conjunto de dados?

Resolução de variáveis macro em uma etapa de dados

SAS DO Loop com macro

Definir função fora do bloco de citação no elixir