1
resposta

Duvida com format, put e input

Esse código é referente a aula 06, unidade 06... "Usando formatos a nosso favor"

data cliente_cep_aux;
 set alura.cadastro_cliente (obs=10 keep= nome cep);

/*  Esse tá ok... funciona */
 estado = input(substr(cep,1,2),estado_num_.);
 format estado estado_txt_.;

/* E porque esse não funciona... é o mesmo código, mas estruturado diferente. Se o SAS é estruturado, não deveria funcionar da mesma maneira que a variável anterior? */
 estado2 = substr(cep,1,2);
 estado2 = input(estado2, estado_num_.);
 format estado2 estado_txt_.;

/*  Aqui estava "brincando" com a linguagem, fazendo uns testes meio aleatórios... qual a explicação para esse código também não funcionar*/
 estado3 = input(substr(cep,1,2),estado_num_.);
 estado3 = put(estado3, estado_txt_.);

/*  Mais testes com format, input e put. No geral entendi como funciona, mas não ficou 100% claro sobre as propriedades e limitações de cada um*/
 estado4 = substr(cep,1,2);
 format estado4 estado_num_.;
run;
1 resposta

Boa noite,

Operações em que uma mesma variável é uma entrada e a própria saída dela costumam dar errado, principalmente quando elas envolvem a mudança do tipo da variável. Por exemplo, no caso:

 estado2 = substr(cep,1,2);
 estado2 = input(estado2, estado_num_.);

Na segunda linha, a variável estado2 é input e output da operação, que teria como saída uma variável numérica, sendo que na primeira linha ela foi criada como variável de texto. O trecho poderia funcionar se fosse usada uma variável temporária, por exemplo:

 estado2a = substr(cep,1,2);
 estado2 = input(estado2a, estado_num_.);

A variável estado2a seria criada como texto, e estado2 seria numérica.

Todos os caso que não funcionaram acabam caindo neste mesmo problema. O último, pelo que entendi, funciona, só é uma variável difícil de entender (textual com um formato numérico).