Universidade Estadual de Campinas
Centro Nacional de Processamento de Alto Desempenho - So Paulo
Apostila de Treinamento:
SAS Programao I
- Introduo ao SAS: Data Step e Proc Step -
Reviso: 2015
CONTEDO
1 - HISTRICO
2 - CURIOSIDADES
3 - DEFINIO BSICA
4 - COMERCIALIZAO
4.1 - Mdulos SAS
4.2 - Solues Propostas
5 - CONCEITOS BSICOS
6 - ARQUIVOS SAS
7 - ESTRUTURA DOS ARQUIVOS SAS
8 - NOMECLATURA PARA ARQUIVOS E VARIVEIS
Ex.1: Nomeclatura
9 - SINTAXE DOS COMANDOS
Ex.2: Sintaxe
10 - EXECUO
10.1 - Modo Interativo (Ambiente WINDOWS)
10.2 - Modo No Interativo (Ambiente de COMANDOS)
10.3 - Programa SAS
11 - ESTRUTURA DATA STEP
11.1 - Introduo
11.2 - Comando LIBNAME
Ex.3: Declaraes de Bibliotecas
11.3 - Comando DATA
Ex.4: Declarao de arquivo SAS para Gravao de Dados
11.4 - Comando SET
Ex.5: Declarao de arquivo SAS para Leitura de Dados
11.5 - Comando INFILE
Ex.6: Declarao de arquivos textos sem formatao SAS
11.6 - Comando INPUT
11.6.1 - INPUT COLUNADO
Ex.7: Leitura de dados com o INPUT colunado
11.6.2 - INPUT FORMATADO
11.6.3 - Descrio de um Campo Data
Ex.8: Leitura de dados com o INPUT formatado
Ex.9: Leitura de dados especiais com o INPUT formatado
11.6.4 - Controle de Posio de Leitura do INPUT
Ex.10: INPUT formatado com indicador de coluna para leitura
11.6.5 - Detalhes do Comando INPUT
11.7 - Comando RUN
1 LABORATRIO
12 - ESTRUTURA PROC STEP
12.1 - Introduo
12.1.1 - Comando VAR
12.1.2 - Comando BY
12.1.3 - Comando TITLE
12.1.4 - Comando FOOTNOTE
12.2 - Procedimento PRINT
Ex.11:Procedimento PRINT 1
Ex.12:Procedimento PRINT 2
12.3 - Procedimento SORT
Ex.13:Procedimento SORT
13 - ARQUIVO DE MENSAGENS - "SAS Log"
Ex.14: Exemplo de LOG sem problemas na execuo 1
Ex.15: Exemplo de LOG com problemas na execuo 2
Ex.16: Exemplo de LOG com problemas na execuo 3
2 LABORATRIO
pag.06
pag.06
pag.07
pag.08
pag.08
pag.09
pag.10
pag.11
pag.12
pag.13
pag.13
pag.14
pag.14
pag.15
pag.15
pag.20
pag.21
pag.22
pag.22
pag.24
pag.24
pag.25
pag.25
pag.26
pag.26
pag.27
pag.27
pag.28
pag.29
pag.30
pag.31
pag.32
pag.33
pag.34
pag.35
pag.35
pag.36
pag.37
pag.38
pag.39
pag.39
pag.40
pag.41
pag.42
pag.42
pag.43
pag.44
pag.44
pag.45
pag.46
pag.47
pag.47
pag.48
pag.49
pag.50
2
14 - COMANDOS BSICOS DE PROGRAMAO SAS
14.1 - Comando de Atribuio (=)
Ex.17: Comando de Alocao
14.2 - Comando RETAIN
Ex.18: Comando RETAIN
14.3 - Comando IF-THEN/ELSE
Ex.19: Comando IF (Somente Selecionar de Dados)
Ex.20: Comando IF (Operadores de Comparao)
Ex.21: Comando IF (Operadores Lgicos)
Ex.22: Comando IF (Operadores Lgicos)
14.4 - Comando WHERE
Ex.23: Comando WHERE
14.5 - Comando DO/END
Ex.24: Comando DO/END
14.6 - Comando LENGTH
Ex.25: Comando LENGTH
14.7 - Comando DO/END Iterativo
Ex.26: Comando DO/END Iterativo
14.8 - Comando DO WHILE
Ex.27: Comando DO WHILE
14.9 - Comando DO UNTIL
Ex.28: Comando DO UNITIL
14.10 - Comandos DROP e KEEP
Ex.29: Comandos DROP e KEEP
14.11 - Opes de Arquivos SAS
Ex.30: Opes: DROP= e KEEP=
14.12 - Comando DELETE
Ex.31: Comando DELETE
14.13 - Comando OUTPUT
Ex.32: Comando OUTPUT: Salvar Registros
Ex.33: Comando OUTPUT: Direcionar e Salvar Registros
3 LABORATRIO
15 - FUNES DO SAS
15.1 - Introduo
15.2 - Funes de Tratamento de Caractere
15.2.1 - Funo UPCASE e LOWCASE
15.2.2 - Funo SUBSTR
15.2.3 - Funo FIND
Ex.34: Funes Caracteres: FIND
Ex.35: Funes Caracteres: UPCASE, SUBSTR, FIND
15.3 - Funes Numricas
15.3.1 - Funo INT
15.3.2 - Funo ROUND
Ex.36: Funes Numricas
15.4 - Funes Estatsticas Descritivas
15.4.1 - Funo SUM
15.4.2 - Funo MEAN
Ex.37: Funes Estatsticas Descritivas
15.5 - Funes de Tratamento de Data
15.5.1 - Funo MDY
15.5.2 - Funes: DAY, MONTH, YEAR
15.5.3 - Funo TODAY e DATE
Ex.38: Funes de Tratamento de Data
4 LABORATRIO
16 - COMANDOS DE CONFIGURAO
16.1 - Comando OPTIONS
Ex.39: Comando OPTIONS 1
Ex.40: Comando OPTIONS 2
16.2 - Comando LABEL
16.3 - Comando FORMAT
Ex.41: Comando LABEL
pag.51
pag.51
pag.52
pag.53
pag.53
pag.54
pag.55
pag.56
pag.57
pag.57
pag.58
pag.59
pag.60
pag.60
pag.61
pag.61
pag.62
pag.63
pag.64
pag.64
pag.65
pag.65
pag.66
pag.67
pag.68
pag.68
pag.69
pag.69
pag.70
pag.71
pag.71
pag.72
pag.75
pag.75
pag.76
pag.76
pag.76
pag.77
pag.78
pag.79
pag.80
pag.80
pag.80
pag.81
pag.82
pag.82
pag.82
pag.83
pag.84
pag.84
pag.84
pag.84
pag.85
pag.86
pag.87
pag.87
pag.88
pag.88
pag.89
pag.90
pag.91
3
Ex.42: Comando FORMAT
16.4 - Comando ODS
Ex.43: Comando ODS
5 LABORATRIO
17 - PROCEDIMENTOS ESTATSTICOS BSICOS
17.1 - Procedimento MEANS
Ex.44: Procedimento MEANS (Padro)
Ex.45: Procedimento MEANS (Com Opes)
Ex.46: Procedimento MEANS (Comando CLASS)
Ex.47: Procedimento MEANS (Comando BY)
17.2 - Procedimento FREQ
Ex.48: Procedimento FREQ (Sem Cruzamento)
Ex.49: Procedimento FREQ (Com Cruzamento)
Ex.50: Procedimento FREQ (Cruzamento Listado)
Ex.51: Procedimento FREQ (Opes do Comando TABLE)
17.3 - Procedimento TABULATE
Ex.52: Procedimento TABULATE (Concatenao de Elementos)
Ex.53: Procedimento TABULATE (Cruzamento de Elementos)
Ex.54: Procedimento TABULATE (Trs Dimenses 1)
Ex.55: Procedimento TABULATE (Rotulao de Elementos: = )
Ex.56: Procedimento TABULATE (Formatao de Elementos: *f= )
Ex.57: Procedimento TABULATE (Elemento ALL e PCTN)
Ex.58: Procedimento TABULATE (Trs Dimenses 2)
18 - RECURSO DE FORMATAO ESPECIAL
18.1 - Procedimento FORMAT
Ex.59: Procedimento FORMAT
6 LABORATRIO
19 - COMBINAO DE ARQUIVOS SAS
19.1 - Concatenao de Arquivos
Ex.60: Concatenao de Arquivos
19.2 - Combinao Ordenada de Arquivos (Match-Merging)
Ex.61: Combinao Ordenada de Arquivos
7 LABORATRIO
20 - DADOS MICROSOFT EXCEL
20.1 - Modo Assistente: Import Wizard ou Export Wizard
20.2 - Modo Programao: PROC IMPORT ou PROC EXPORT
Ex.62: Procedimento IMPORT
Ex.63: Procedimento EXPORT
20.3 - Principais Problemas
21 - REFERNCIAS
pag.91
pag.92
pag.93
pag.94
pag.95
pag.95
pag.96
pag.96
pag.97
pag.98
pag.99
pag.100
pag.101
pag.102
pag.102
pag.103
pag.105
pag.105
pag.106
pag.107
pag.108
pag.109
pag.110
pag.111
pag.111
pag.112
pag.113
pag.115
pag.115
pag.116
pag.117
pag.118
pag.119
pag.120
pag.120
pag.123
pag.123
pag.123
pag.124
pag.125
Tipografia utilizada na apostila
Na apresentao de alguns comandos do SAS, foram utilizados smbolos
grficos que identificam, na sintaxe do comando, a caracterstica de ser
opcional ou obrigatrio:
< caracterstica >
obrigatrio a caracterstica, no comando;
[ caracterstica ]
opcional a caracterstica, no comando.
Exemplo: Utilizao de procedimentos SAS
PROC <tipo> [opo1 opo2 opo3 . . . opon] ;
[comando1] ;
[comando2] ;
[WHERE <expresso lgica>] ;
...
[comandon] ;
RUN ;
1 - HISTRICO
Dcada de 60;
North Caroline University;
Conjunto de sub-rotinas (FORTRAN, IBM/370);
Censo Agro-pecurio Norte-americano;
SAS Institute Inc. (1975);
2 - CURIOSIDADES
http://www.sas.com
http://v9doc.sas.com
SAS University - Edio acadmica disponvel para download, sem custos;
http://www.sas.com/en_us/software/university-edition.html
Mais de 75.000 Instalaes, em 139 paises;
93 das 100 maiores empresas do mundo utilizam SAS.
(Fortune 500 Global List - 2014);
Receita Bruta em 2014 - $3,09 bilhes;
2014 mais de 13.660 funcionrios;
SAS a maior empresa de software do mundo de capital privado;
SAS is the world's largest privately held software company
O SAS adaptou o software para alguns idiomas: Chins, Francs, Alemo,
Hebreu, Italiano, Japons, Russo, Espanhol, Polons, Hngaro, Sueco,
Coreano, etc.
6
3 - DEFINIO BSICA
O SAS um software integrado para anlise de dados, que consiste de
vrios produtos que permitem:
- Recuperao de dados;
- Gerenciamento de arquivos;
- Anlise estatstica;
- Acesso a Banco de Dados (ORACLE, DB2, TERADATA, etc);
- Gerao de grficos (gif, jpg, bmp, etc);
- Gerao de relatrios (html, pdf, ps, etc);
- Gerao de aplicativos;
- Solues de negcios (Anlise de Risco, Data Mining).
um software de grande portabilidade, podendo operar em diversos
ambientes computacionais:
- Mainframes IBM ( CMS, MVS, OS, OS/390, Z/OS );
- Micros PC ( DOS, Windows, OS/2 );
- UNIX ( Solaris, AIX, HP-UX, Irix, Linux ).
4 - COMERCIALIZAO
4.1 - Mdulos do SAS
SAS/BASE
Mdulo bsico, obrigatrio em toda instalao;
SAS/STAT
Mdulo estatstico;
SAS/GRAPH
Mdulo grfico ( Histogramas, plots, ... );
SAS/OR
Mdulo de anlise e pesquisa operacional
(Programao linear, Anlise de Caminho
Crtico);
SAS/QC
Mdulo para anlise de controle de qualidade;
SAS/ETS
Mdulo de econometria (Sries Temporais,
Modelagem de Equaes Simultneas);
SAS/IML
Mdulo para anlise e operao de matrizes;
SAS/ACCESS
Mdulo para acesso aos diversos tipos de
Banco de Dados;
SAS/CONNECT Mdulo para conexo entre
operacionais heterogneos;
ambientes
SAS/AF
Mdulo para desenvolvimento de aplicaes;
SAS/FSP
Mdulo para facilitar o acesso a arquivos com
programao de telas.
4.2 Solues Propostas
Analytics
Business Analytics
SAS Cloud
Customer Intelligence
Fraud & Security Intelligence
Performance Management
Risk Management
ndice de Produtos de A-Z
5 - CONCEITOS BSICOS
A funcionalidade do Sistema SAS foi construda em torno de quatro
ideias bsicas no tratamento de dados:
Acessar dados;
Administrar dados;
Analisar dados;
Apresentar dados.
JOB SAS
Arquivo com um programa SAS ( um
conjunto de DATA Step's e PROC Step's);
DATA STEP
Diviso lgica de um programa SAS, no qual
se cria e altera um, ou vrios arquivos SAS
(Data Set's);
PROC STEP
Diviso lgica de um programa SAS, no qual
se analisa e manipula os dados contidos num
arquivo SAS (Data Set's);
DATA SET
Arquivo de dados com estrutura SAS,
contendo diversos registros (linhas de dados);
OBSERVAO
Registro de um arquivo de dados SAS.
10
6 - ARQUIVOS SAS
Todos os dados devem estar armazenados em arquivos com estrutura
SAS (DATA Set's), para serem analisados pelos procedimentos do SAS
( PROC's ).
DADO
BRUTO
DATA
STEP
DADO
SAS
Os arquivos SAS podem ser temporrios ( armazenados em uma
biblioteca definida pelo SAS - WORK) ou permanentes (bibliotecas
definidas pelos usurios).
Em um nico programa SAS (Job SAS), vrios arquivos podem ser
abertos e analisados.
Os arquivos SAS, depois de criados, podem ser analisados pelos
procedimentos SAS.
11
7 - ESTRUTURA DOS ARQUIVOS SAS
O arquivo SAS um conjunto de dados organizados num formato de tabela.
NOME
CARLOS
GILBERTO
RICARDO
.
.
.
ALICE
MARCIA
SEXO
M
M
M
.
.
.
F
F
IDADE
ALTURA
12
25
30
.
.
.
28
22
1.70
1.65
1.80
.
.
.
1.68
1.75
As colunas nas tabelas so chamadas de variveis:
- Variveis correspondem aos campos de dados;
- Cada varivel recebe um nome;
- Para o SAS, s existem dois tipos de variveis:
caractere (at 32.767 caracteres 32.767 Bytes)
numrica (Representao IEEE - 8Bytes)
As linhas na tabela so chamadas de observaes (ou registros, ou linhas). No
existe limite para o nmero de observaes.
Um Arquivo SAS dividido em duas partes:
Descritora
Contm a descrio do arquivo: Tamanho do arquivo,
nmero de registros, nome, tipo, tamanho e formato de
variveis, etc;
Dados
Contm os dados do arquivo.
12
8 - NOMECLATURA PARA ARQUIVOS E VARIVEIS
Todos os nomes de arquivos e variveis devero seguir as seguintes
regras:
- Possuir de 1 a 32 caracteres;
- Comear com letra (A-Z ou a-z, indiferente);
- Pode continuar com nmeros, letras (maisculas ou
minsculas) ou o caractere especial: _ (grifo, sublinhar).
Variveis no SAS, podem possuir at 6 atributos, sendo:
Obrigatrios: Nome(NAME), Tipo(TYPE), Tamanho(LENGTH);
Opcionais:
Rtulo(LABEL), Formato de leitura(INFORMAT), Formato de
impresso(FORMAT);
Ex.1: Nomeclatura
DATA EXEmPLO1 ;
INFILE "C:\curso\sas\CADASTRO.TXT";
INPUT primeiro_nome $ 1-8 Sexo $ 10 Idade 13-14 ALTURA 16-19 ;
RUN;
13
9 - SNTAXE DOS COMANDOS
Todo comando SAS comea com uma palavra-chave (identificao,
colorido em azul no ambiente Windows do SAS), e termina com o
ponto e virgula (;).
- Os comandos podem comear e terminar em qualquer parte
da linha;
- Um comando pode se estender por diversas linhas;
- Vrios comandos podem ficar na mesma linha.
Ex.2: Sintaxe
DATA EXEMPLO1 ;
INFILE " C:\curso\sas\CADASTRO.TXT" ;
INPUT NOME $ 1-8 SEXO $ 10
IDADE $ 13-14 ALTURA 16-19 ;
RUN;
PROC PRINT DATA=EXEMPLO1 ;
RUN;
PROC FREQ DATA=EXEMPLO1 ; TABLES IDADE*ALTURA ; RUN ;
14
10 - EXECUO
Um programa SAS pode ser executado de trs maneiras diferentes:
- Modo interativo (Ambiente Windows);
- Modo no interativo;
- Modo batch.
10.1 - Modo Interativo (Ambiente WINDOWS)
Localize o cone do SAS na console windows ou, ative o ambiente
SAS, seguindo o roteiro abaixo:
Iniciar Programas SAS 64bits SAS 9.3_64bits (English)
15
SAS Explorer Libraries
View Explorer
SAS Explorer New Library
Tools New library
16
JANELA DE OPES DE CONFIGURAO
Tools Options System...
17
OPES DE CONFIGURAO DO EDITOR
Tools Options Enhanced Editor
18
CONFIGURAO DE TECLADO
Tools Options Keys
RELATRIOS NO FORMATO TEXTO E/OU HTML
Tools Options Preferences ... Results
19
10.2 - Modo No Interativo (Ambiente de COMANDOS)
uma maneira simples e rpida de execuo de um programa SAS. O
programa pode ser editado em qualquer editor, mas dever ser e salvo
em modo texto. Para execut-lo, basta ativar a janela de comandos do
windows (Executar ou cmd):
Iniciar ==> Executar...
No diretrio do executvel SAS, sero gerados dois arquivos com o
mesmo nome do programa:
<programa>.lst
Possui os resultados do programa;
<programa>.log
Possui mensagens da execuo do programa.
OBS: Sempre analise o arquivo com extenso log. Se no for criado o
arquivo com a extenso lst, com certeza existiro erros no programa,
que podero ser identificados no arquivo log.
20
10.3 Programa SAS
Um programa SAS uma combinao do uso de comandos das estruturas de
programao bsica do SAS e comandos especiais:
- Comandos livres - Utilizados em qualquer parte do programa;
- Comandos genricos - Utilizados em DATA e PROC Steps;
- Comandos da estrutura DATA Step - Utilizados somente dentro de
uma estrutura DATA Step;
- Comandos da estrutura PROC Step - Utilizados somente dentro de
uma estrutura PROC Step;
- Comandos de MACRO SAS;
- Comandos de Orientao ao Objeto SAS.
A submisso de um programa SAS para execuo, obedece a duas fases internas:
1 Compilao:
Anlise da sintaxe dos comandos, busca e definio
de bibliotecas e arquivos, definio de variveis,
2 Execuo:
Execuo do programa, por Step, obedecendo a
uma sequncia lgica. Todos os steps sero
executados. Um step com erro, para de
processar, e d sequncia ao prximo step.
Os comandos de um programa SAS, se dividem em:
Comandos de Declarao
Comandos cuja funcionalidade estabelecida
durante a fase de compilao, uma nica vez;
Comandos de Execuo
Comandos cuja funcionalidade estabelecida
durante a fase de execuo, e podem ser
executados mais de uma vez.
21
11 - ESTRUTURA DATA STEP
11.1 - Introduo
- a seo de um programa SAS aonde se organizam e administram os
dados, utilizando comandos de programao do modulo SAS/BASE e
alguma lgica de processamento;
- A maioria dos comandos utilizados em uma estrutura DATA Step, s
existem e, s podem ser executados, nessa estrutura;
- Os comandos so posicionados em uma sequncia lgica, ou seja, a
execuo de um determinado comando pode depender da execuo do
comando anterior (lgica de processamento);
- Os arquivos processados em um DATA Step, normalmente, so
processados de maneira sequencial, ou seja, a leitura dos dados feita
registro aps registro;
- Quando se utiliza um DATA Step para ler um arquivo de dados,
internamente ele representa um ciclo, um loop, que repete todos os
comandos do DATA Step para cada leitura de um novo registro do arquivo,
at encontrar o ltimo registro, finalizando o DATA Step e seguindo para o
prximo step;
DATA ... ;
... ;
... ;
... ;
... ;
... ;
... ;
RUN ;
DO
primeiro registro
AT
ltimo registro
22
Fluxo de Execuo
Inicio do
DATA Step
Abrir
arquivo
para gravar
Abrir
arquivo
para leitura
Ler novo
registro
processa
registro
Salvar
registro no
arquivo para
gravaao
NAO
Ultimo
registro
SIM
Fim do
DATA Step
23
11.2 - Comando LIBNAME
- Tipo: Comando de declarao;
- Uso: Livre;
- Comando opcional de configurao do processamento, que declara uma
ou mais reas de trabalho e armazenamento (bibliotecas), para os
arquivos SAS (Data Set's);
- O nome de um arquivo SAS composto por duas partes, separadas por
um .. A primeira parte opcional, o nome da biblioteca, a segunda
parte obrigatria, o nome do arquivo.
[biblioteca.]<nome do arquivo>
- O comando LIBNAME, normalmente, colocado no incio de um
programa SAS. S ser necessrio execut-lo uma nica vez durante uma
sesso SAS para a definio da biblioteca.
LIBNAME <biblioteca> "<diretrio>" ;
biblioteca
Palavra de no mnimo 1 e no mximo 8 caracteres, que ser
utilizado na primeira parte, em um nome de arquivo.
diretrio
Nome de um diretrio que j exista no seu ambiente, entre
aspas.
OBS: O SAS define uma biblioteca, temporria, de nome work, que ser utilizada
automaticamente se no for especificada a primeira parte do nome do arquivo.
Ex.3: Declaraes de bibliotecas
LIBNAME IN "C:\ALUNO" ;
libname teste "d:\" ;
LibName a 'G:\dados' ;
libname _all_ clear ; /* Limpa todas as declaraes de bibliotecas */
Libname _all_ list;
/* Lista, no log, todas as bibliotecas disponveis */
24
11.3 - Comando DATA
- Tipo: Comando de declarao;
- Uso: Data Step;
- Comando que sempre inicia um DATA Step;
- Comando que declara e abre um, ou vrios novos arquivos SAS (DATA
Sets), vazios, somente para gravao de dados.
DATA [biblioteca.]<nome do arquivo> . . . ;
Ex.4: Declarao de arquivos SAS para gravao de dados.
DATA
" C:\curso\sas\cadastro.sas7bdat" ;
DATA endereco ;
DATA
ARQ1
arq2
ARQ3 ;
libname ENT " C:\curso\sas" ;
data ent.cadastro ;
DATA ;
/* O nome do arquivo ser gerado automaticamente pelo SAS: DATA001,DATA002,... */
DATA _NULL_ ;
/* No ser gerado um novo arquivo SAS */
OBS: No obrigatrio especificar a biblioteca, neste caso, o SAS ir utilizar a
biblioteca padro, tambm chamada de biblioteca temporria (WORK ).
25
11.4 - Comando SET
- Tipo: Comando de declarao e execuo;
- Uso: Data Step;
- Durante a fase de compilao, este comando abre um ou vrios
arquivos de dados, DATA Sets (formato SAS), somente para leitura, e
que j existam em alguma biblioteca SAS.
- Durante a fase de execuo, o comando l os registros de maneira
sequencial, um aps o outro;
- O comando deve ser posicionado, na maioria das vezes, no incio de um
Data Step, para permitir ao compilador ler a estrutura do arquivo
especificado e armazen-la na memria.
SET [biblioteca.]<nome do arquivo> . . . ;
Ex.5: Declarao de arquivos SAS para leitura de dados.
set "c:\curso\sas\treinamento.sas7bdat";
set tab1 tab2 ;
SET cadastro ;
SET arq.dados ;
libname ab "c:\curso\sas";
DATA EXEMPLO ;
SET ab.TREINAMENTO ;
.
.
.
.
.
.
.
.
.
OBS: No obrigatrio especificar a biblioteca, neste caso, o SAS ir utilizar a
biblioteca padro, tambm chamada de biblioteca temporria (WORK ).
26
11.5 - Comando INFILE
- Tipo: Comando de declarao e execuo;
- Uso: Data Step;
- Comando que identifica e abre um arquivo externo de dados, somente
para leitura (no um arquivo no formato do SAS);
- Abre qualquer tipo de arquivo e interpreta todos os dados simplesmente
como texto;
- Este comando deve ser posicionado aps o comando DATA e necessita,
sempre e explicitamente, de um comando para leitura dos registros, o
comando INPUT.
INFILE <"arquivo de dados"> [opes] ;
Opes:
LRECL=
Tamanho do registro;
MISSOVER Previne o SAS de l um novo registro
para completar os dados de uma
varivel;
Ex.6: Declarao de arquivos textos sem formatao SAS
INFILE "C:\DADOS\ARQ1.TXT" ;
INFILE "A:\CADASTRO.PRN" missover;
infile 'C:\SAS\CAD.DAT' LRECL=3280 ;
DATA EXEMPLO ;
INFILE 'C:\TESTE\DADOS.TXT' lrecl=450 MISSOVER ;
.
.
.
.
.
.
.
.
.
27
11.6 - Comando INPUT
- Tipo: Comando de execuo;
- Uso: Data Step;
- O comando INPUT serve para descrever ao SAS como esto
armazenados e organizados os dados em arquivos textos que foram
especificados pelo comando INFILE;
- Todo arquivo aberto pelo comando INFILE, sempre necessitar de um
comando INPUT para ler o seu contedo;
- O comando INPUT pode ler um, ou vrios registros, de maneira
sequencial, registro aps registro, at encontrar um registro especial, que
identifica o fim de arquivo, EOF (End Of File), e ir atribuir nomes
(Variveis) para cada campo de um registro;
- Junto com o comando INPUT, todos os comandos que vierem em
seguida, sero executados at o registro que indica o fim de arquivo,
EOF ( o ciclo do DATA Step, mencionado na pag.22);
- Dois tipos bsicos de comando INPUT, so os mais utilizados:
- INPUT COLUNADO
- INPUT FORMATADO
28
11.6.1 - INPUT COLUNADO
- L os campos de dados, atribuindo-lhes um nome (NAME), um tipo
(TYPE), e especificando a sua posio inicial e final na linha de dados
do arquivo, o tamanho (LENGTH). Os campos de dados no arquivo
devem estar alinhados, fixos em colunas, para permitir a leitura correta
dos dados.
INPUT <varivel> [$] <incio>-<fim>
[.decimal] . . . ;
varivel
Nome do campo de dados.
Caractere opcional que indica que a varivel s ir conter
dados alfanumricos. Sem o $, significa que a varivel ser
numrica.
incio
Valor que indica a posio inicial da varivel na linha de
dados.
fim
Valor que indica a posio final da varivel na linha de
dados.
.decimal
Valor opcional, indica o nmero de posies decimais de
uma varivel numrica.
OBS: Durante a fase de compilao, atravs da anlise do comando INPUT, o
SAS ir definir o NOME, o TIPO e o TAMANHO (pelas informaes de coluna
inicial e final) das variveis.
29
Ex.7:Leitura de dados com o INPUT colunado
Arquivo: CADASTRO2.DAT
1
10
11
12
13
14
15
16
17
18
19
20
DATA FICHA ;
INFILE "C:\curso\sas\CADASTRO2.DAT";
input nome $ 1-8 sexo $ 9 idade 10-12 altura 13-16 .2 peso 17-20 ;
RUN;
proc print;run;
The SAS System
Obs
NOME
1
2
3
4
CARLOS
CARLA
SILVIA
MARCIO
SEXO
M
F
f
m
IDADE
18
26
21
32
11:33 Tuesday, June 3, 2014
ALTURA
PESO
1.70
1.78
1.65
1.82
68.0
72.0
60.5
.
DATA FICHA2 ;
INFILE "C:\curso\sas\CADASTRO2.dat";
INPUT ALTURA 13-16 .2 IDADE 10-12 NOME $ 1-8
PESO $ 17-20 SEXO $ 9 ;
RUN;
proc print;run;
The SAS System
Obs
ALTURA
1
2
3
4
1.70
1.78
1.65
1.82
IDADE
18
26
21
32
11:33 Tuesday, June 3, 2014
NOME
PESO
SEXO
CARLOS
CARLA
SILVIA
MARCIO
68.0
72.0
60.5
85,4
M
F
f
m
30
11.6.2 - INPUT FORMATADO
- L os campos de dados, atribuindo-lhes um nome (NAME), um tipo
(TYPE), e especificando o tamanho do campo (LENGTH), ou, um
formato de leitura (INFORMAT) com o tamanho do campo, para
interpretar o dado;
- O formato de leitura um recurso do SAS, para entender e armazenar
corretamente o dado que possui alguma caracterstica especial;
- o tipo de INPUT mais completo do SAS.
INPUT <varivel> [$] < w.d > ou [ informatw.d ] . . . ;
varivel
Nome do campo de dados.
Caractere opcional que indica que a varivel s ir conter
dados alfanumricos. Sem o $, significa que a varivel ser
numrica.
w.
Valor que indica o tamanho (width) de um campo na linha
de dados. O ponto no final obrigatrio.
w.d
Valor que indica o tamanho de um campo numrico com
casas decimais.
informatw.d
Interpretao do campo. Nome de um formato especial de
leitura dos dados:
L campo numrico no formato binrio e o
converte para decimal;
COMMAXw.d L campo numrico com vrgula e a troca
por ponto;
Ew.d
L campo numrico com notao cientfica;
HEXw.
L campo numrico em hexadecimal;
DDMMYYw.
L campo no formato padro de datas
dd/mm/yyyy.
BINARYw.d
31
11.6.3 - Descrio de um Campo Data
- Campos que representam datas necessitam que sejam identificados
pelo SAS atravs de um formato de leitura de datas, e armazenados
como numricos;
- O valor numrico armazenado representa o nmero de dias em
relao a data base SAS (01/01/1960);
- um campo que deve ser lido com um formato especial de leitura
para identificar a formatao da data e para ser armazenado como
numrico, possibilitando manipular a data em expresses e funes
aritmticas (clculos com datas);
Formatos de leitura:
DATE9.
L dados no formato:
01JAN1960
DDMMYY10.
L dados no formato:
01/01/1960
Formato padro de uma constante data no SAS:
"ddmmmyyyy"d
"01JAN1960"d
32
Ex.8: Leitura de dados com o INPUT formatado
Arquivo: CADASTRO2.DAT
1
10
11
12
13
14
15
16
17
18
19
20
DATA FICHA ;
INFILE "C:\curso\sas\CADASTRO2.dat";
INPUT NOME $ 8. SEXO $ 1. IDADE 3. ALTURA 4.2 PESO 4. ;
RUN;
proc print;run;
The SAS System
Obs
NOME
1
2
3
4
CARLOS
CARLA
SILVIA
MARCIO
SEXO
M
F
f
m
IDADE
18
26
21
32
11:33 Tuesday, June 3, 2014
ALTURA
PESO
1.70
1.78
1.65
1.82
68.0
72.0
60.5
.
DATA FICHA2 ;
INFILE "C:\curso\sas\CADASTRO2.dat";
INPUT NOME $ 8. SEXO $ 1. IDADE 3.
ALTURA 4.2 PESO commax4.1 ;
RUN;
proc print;run;
The SAS System
Obs
NOME
1
2
3
4
CARLOS
CARLA
SILVIA
MARCIO
SEXO
M
F
f
m
IDADE
18
26
21
32
11:33 Tuesday, June 3, 2014
ALTURA
PESO
1.70
1.78
1.65
1.82
68.0
72.0
60.5
85.4
10
33
Ex.9: Leitura de dados especiais com o INPUT formatado
Arquivo: NUMEROS2.PRN
1
10 11
12 13
14 15
16
17 18
19 20
21
22 23
24 25
26 27
28
29 30
31 32
33
34
DATA exemplo9a ;
INFILE "numeros2.prn";
INPUT cpf commax14. aniversario ddmmyy10. salario commax7.2
aumento percent3. ;
RUN;
PROC PRINT ; RUN ;
Datas armazenadas em nmero
de dias desde 01/01/1960.
The SAS System
11:33 Tuesday, June 3, 2014
Obs
cpf
aniversario
salario
aumento
1
2
3
23456755510
33349910014
98633311222
957
8364
9287
6683.58
8845.45
5632.55
0.10
0.15
0.12
17
34
11.6.4 Controle de Posio de Leitura do INPUT
Indicador de COLUNA ( @ )
@n
Move a leitura para a coluna n ;
Ex.10: INPUT formatado com indicador de coluna para leitura
Arquivo: CADASTRO2.DAT
1
11
12
F
A
O
10
13
14
15
16
17
18
19
20
DATA FICHA2 ;
INFILE "C:\curso\sas\CADASTRO2.dat";
INPUT @14 ALTURA 3.2 @11 IDADE 2. @1 NOME $ 8.
@17 PESO commax4.1 @9 SEXO $ 1. ;
RUN;
proc print;run;
The SAS System
Obs
ALTURA
1
2
3
4
1.70
1.78
1.65
1.82
IDADE
18
26
21
32
11:40 Wednesday, March 4, 2015
NOME
PESO
SEXO
CARLOS
CARLA
SILVIA
MARCIO
68.0
72.0
60.5
85.4
M
F
f
m
35
11.6.5 - Detalhes do Comando INPUT
- Em campos numricos, no so permitidos "brancos" entre os digitos do
nmeros;
- Sinal (+ - ), ponto decimal (.) e notao cientfica para expoente ( E ), so
permitidos em campos numricos;
- Campos tipo caractere podem ter, no mximo, 32.767 caracteres;
- So permitidos caracteres "brancos", em qualquer posio, em campos do tipo
caractere;
- Campos em branco (sem informao) so considerados como "missing value"
(valor perdido). O SAS ir armazenar o caractere branco, em campos caracteres,
e o caractere ponto, em campos numricos;
- Os campos de um registro de dados podem ser lidos em qualquer ordem.
INPUT
PESO 17-20
NOME $ 1-8
IDADE 11-12
SEXO $ 9 ;
- Campos ou partes de um campo podem ser relidos.
INPUT
NOME $ 1-8
PREFIXO $ 1-3 ENDERECO $ 10-40 APT $ 38-40 ;
- Dados caracteres sero armazenados alinhados pela esquerda, e os dados
numricos, alinhados pela direita;
- Os tipos de INPUT, colunado ou formatado, podem ser combinados num
nico comando INPUT;
- Detalhes de leituras com nomes e formatos repetitivos;
INPUT JAN 3. FEV 3. MAR 3. ABR 3. MAI 3. JUN 3. ;
INPUT (JAN FEV MAR ABR MAI JUN) (3.) ;
INPUT (MES1 MES2 MES3 MES4 MES5 MES6) (3.) ;
INPUT (MES1-MES6) (3.) ;
36
11.7 - Comando RUN
- Tipo: Comando de execuo;
- Uso: Data Step e Proc Step;
- Comando que identifica o fim de uma estrutura Data Step e Proc Step e
indica ao SAS que o step deve ser executado imediatamente;
- apenas necessrio no ltimo step;
37
1 LABORATRIO
Montar um programa SAS que leia um arquivo de dados externo ( no um arquivo
SAS ) e gere um arquivo no formato SAS (Data Set), permanente.
Passos do programa:
1-Criar uma biblioteca SAS indicando a pasta c:\curso\sas para armazenar os arquivos SAS de maneira
permanente. Utilize o comando: LIBNAME ;
2-Inicie um DATA Step e abra um arquivo SAS de nome CADASTRO, para gravao dos dados,
utilizando a biblioteca criada no passo anterior. Utilize o comando DATA ;
3-Abra o arquivo de dados externo de nome CADASTRO.DAT que est na pasta c:\curso\sas. O tamanho
do registro de dados de 130 bytes. Utilize o comando INFILE ;
4-Leia os dados deste arquivo, sabendo-se que o contedo do arquivo est dividido em diversos campos de
acordo com a descrio abaixo. Utilize o comando INPUT, colunado ou formatado ou, ambos ;
Nome do
Campo
NOME
Tipo do
Campo
Caractere
Tamanho do
Campo
30
SEXO
Caractere
31
IDADE
Numrico
32
PESO
Numrico
34
ALTURA
Numrico
40
ANIVERSARIO
Numrico
10
44
ESTADO CIVIL
Caractere
54
FILHOS
Numrico
55
RG
Caractere
15
57
CPF
Caractere
11
72
EMPRESA
Caractere
15
83
FUNCAO
Caractere
12
98
ADMISSAO
Numrico
110
Campo formatado: Ex 18JAN2005
SALARIO
Numrico
12
119
Campo formatado: Ex. 3.548,25
Decimais
Posio
Inicial
1
Detalhe
Campo formatado: Ex. 18/01/2005
5-Continuando o comando INPUT, leia novamente parte do campo EMPRESA, na posio 89, defina uma
nova varivel, TIPO DE EMPRESA, com 9 caracteres. Utilize o posicionamento de coluna para ler o
campo;
6-Gere um relatrio com os resultados da leitura do arquivo de dados, com os comandos abaixo:
PROC PRINT;RUN;
OBS: Salve os seus programas! Faa-o sempre, no diretrio c:\curso\sas
38
12 - ESTRUTURA PROC Step
12.1 - Introduo
- a seo de um programa SAS aonde se analisam os dados de um arquivo
SAS, utilizando-se procedimentos especficos para cada tipo de anlise.
- A maioria dos procedimentos SAS, geram relatrios tcnicos;
- Todos os procedimentos iniciam com a palavra PROC seguida do nome
especfico do procedimento ou rotina desejada;
- Os comandos em uma PROC no seguem uma sequncia lgica, ou seja,
podem ser colocados em qualquer ordem dentro da PROC;
PROC <rotina> [opes] ;
[comando1] ;
[comando2] ;
...
[comandon] ;
RUN ;
RUN
rotina
Palavra-chave que identifica o procedimento a ser
executado.
opes
Parmetros opcionais de configurao para execuo
do procedimento.
comando
Comandos de
procedimento.
detalhamento
na
execuo
do
Comando para execuo do procedimento SAS.
Necessrio no ltimo procedimento do programa
SAS.
39
12.1.1 - Comando VAR
- Tipo: Comando de declarao;
- Uso: Proc Step
- Comando comum vrias PROCS (PRINT, MEANS, SUMMARY,
TABULATE, etc), mas que pode possuir caractersticas especficas
da PROC utilizada; no geral, especifica uma lista de variveis do
arquivo SAS que sero processadas pelo procedimento.
VAR <lista de variveis> ;
lista de variveis
varivel varivel varivel ... varivel ;
x1-xn ; (variveis numeradas)
varLXP--varB8T ; (todas as variveis entre)
var: ; (todas as variveis com o mesmo prefixo)
_numeric_ ; (todas as variveis numricas)
_character_ ; (todas as variveis caracteres)
40
12.1.2 - Comando BY
- Tipo: Comando de declarao;
- Uso: Data Step e Proc Step;
- Especifica uma lista de variveis que permitiro o processamento de
grupos, determinados pelos valores das variveis.
BY data step
- Sempre utilizado associado aos comandos: SET, MERGE,
MODIFY e UPDATE, para controlar a leitura dos dados por
agrupamento de valores.
BY [descending] <varivel1> [descending] <varivel2> ... ;
BY proc step
- Utilizado para permitir a anlise dos dados por grupos, e
gerar relatrios com os dados em ordem ascendente ou
descendente.
BY [descending] <varivel1> [descending] <varivel2> ... ;
- Exemplo de variveis que permitem o processamento por grupo:
SEXO, EMPRESA, ESTADO, IDADE.
OBS: Muito importante! Este comando, seja utilizado em Data step
ou em Proc step, exige que o arquivo que ser processado, esteja
ordenado ou indexado pelas variveis especificadas, ou seja, antes do
processamento, ser necessrio ordenar ou indexar os dados. Nesta
apostila, veja o item sobre ordenao de dados 12.3 - Procedimento
SORT, pag. 44.
41
12.1.3 - Comando TITLE
- Tipo: Comando de declarao;
- Uso: Livre;
- Pode ser codificado em qualquer parte do programa. Especifica de 1 at
10 ttulos para o relatrio a ser gerado pelo procedimento.
TITLE "<cabealho>" ;
TITLE1 "<cabealho>" ;
...
TITLE10 "<cabealho>" ;
OBS: Um ttulo permanece ativo at que seja modificado, ou eliminado
com o comando: TITLE;
12.1.4 - Comando FOOTNOTE
- Tipo: Comando de declarao;
- Uso: Livre;
- Pode ser codificado em qualquer parte do programa. Especifica de 1 at
10 rodaps para o relatrio a ser gerado pelo procedimento.
FOOTNOTE "<rodap>" ;
FOOTNOTE1 "<rodap>" ;
...
FOOTNOTE10 "<rodap>" ;
OBS: Um rodap permanece ativo at que seja modificado, ou eliminado
com o comando: FOOTNOTE;
42
12.2 - Procedimento PRINT
- Procedimento do SAS que imprime, na sada padro, os dados contidos nos
arquivos SAS;
- A sada padro , normalmente, a janela OUTPUT em uma sesso SAS
Windows.
PROC PRINT [opes] ;
VAR <lista de variveis> ;
BY <lista de variveis> ;
SUM <lista de variveis> ;
opes
DATA=
Nome do arquivo SAS;
DOUBLE
Espacejamento duplo;
NOOBS
Suprime a coluna com o nmero de cada
observao do arquivo;
LABEL
Imprime uma "descrio", das variveis;
BLANKLINE= n
Insere uma linha em branco a cada n linhas
de dados;
VAR
Especifica uma lista de variveis que sero
impressas;
BY
Especifica a quebra ou agrupamento do
relatrio, por uma ou mais variveis;
SUM
Especifica uma ou mais variveis
numricas que sero totalizadas;
43
Ex.11:Procedimento PRINT 1
libname tre "c:\curso\sas";
title "Relatrio de Funcionrios" ;
PROC PRINT DATA=tre.exemplo1 noobs ;
var NOME FUNCAO ;
RUN ;
Relatrio de Funcionrios
11:33 Tuesday, June 3, 2014
nome
funcao
PAULO MOUA
MARIA MOUA
PAULO GUEDES
CARLA CERTO
CARLA APARECIDO
ROSANE YATAKA
CARLA MARQUES
CARLA MILIA
MARCELO SUNAY
MARCO MOUA
MADALENA MOUA
MONICA MOUA
ELIANE MOUA
JOAO MOUA
ANALISTA
GERENTE
PROGRAMADOR
PROGRAMADOR
PROGRAMADOR
PROGRAMADOR
PROGRAMADOR
PROGRAMADOR
PROGRAMADOR
ANALISTA
ANALISTA
ANALISTA
ANALISTA
GERENTE
68
Ex.12: Procedimento PRINT 2
libname tre "c:\curso\sas";
title "Relatrio de Funcionrios" ;
footnote "FONTE: RH" ;
PROC PRINT DATA=tre.exemplo1 noobs ;
var NOME FUNCAO SALARIO ;
sum salario ;
RUN ;
Relatrio de Funcionrios
nome
funcao
PAULO MOUA
MARIA MOUA
PAULO GUEDES
CARLA CERTO
CARLA APARECIDO
ROSANE YATAKA
CARLA MARQUES
CARLA MILIA
MARCELO SUNAY
MARCO MOUA
MADALENA MOUA
MONICA MOUA
ELIANE MOUA
JOAO MOUA
MIRIAM MOUA
ANALISTA
GERENTE
PROGRAMADOR
PROGRAMADOR
PROGRAMADOR
PROGRAMADOR
PROGRAMADOR
PROGRAMADOR
PROGRAMADOR
ANALISTA
ANALISTA
ANALISTA
ANALISTA
GERENTE
GERENTE
11:33 Tuesday, June 3, 2014
69
salario
9548.36
19303.66
3828.77
3972.30
1557.69
3080.18
3233.49
1698.51
1530.04
9988.53
14821.37
12568.82
13694.19
20611.56
13075.91
=========
132513.38
FONTE: RH
44
12.3 - Procedimento SORT
- Procedimento do SAS que ordena os registros dos arquivos por uma
ou mais variveis, em ordem ascendente ou descendente;
- No possui sada impressa;
- possvel gerar um novo arquivo ordenado.
PROC SORT [opes] ;
<BY/KEY> [descending] <lista de variveis> ;
opes
DATA=
Nome do arquivo SAS para ser ordenado;
OUT=
Nome do arquivo SAS, aonde sero armazenado os
dados ordenados. Se no for utilizada essa opo, a
ordenao ser feita em cima do arquivo original;
NODUPKEY Opo que elimina os registros com chaves
duplicadas;
DUPOUT= Nome para arquivo que ir armazenar os registros
duplicados;
SORTSIZE= Especifica o limite para o uso de memria.
Inicialmente em 256MBytes;
BY ou KEY
Comando obrigatrio, especifica uma ou mais
variveis que iro determinar a ordenao dos
dados. S pode existir um comando BY dentro de
uma proc sort;
OBS: A ordenao sempre feita na ordem ascendente. Para ordenar na
ordem descendente necessrio colocar o parmetro descending, antes
da varivel a ser ordenada no comando BY.
45
Ex.13: Procedimento SORT
title "Relatrio de Funcionrios" ;
footnote;
PROC SORT DATA=TRE.EXEMPLO1 OUT=ORDENA ;
BY FUNCAO ;
RUN ;
PROC PRINT DATA=ORDENA NOOBS ;
BY FUNCAO ;
VAR NOME SALARIO ;
SUM SALARIO ;
RUN ;
Relatrio de Funcionrios
12:00 Monday, June 16, 2014
--------------------------------------- funcao=ANALISTA --------------------------------------nome
MARCO MOUA
LIGIA MOUA
TANIA MOUA
MADALENA MOUA
CARLA MOUA
MONICA MOUA
------------funcao
salario
9988.53
5047.05
5418.33
14821.37
7221.58
12568.82
-------55065.68
--------------------------------------- funcao=GERENTE ---------------------------------------nome
JOAO MOUA
LUIS MOUA
LICIA MOUA
MIRIAM MOUA
----------funcao
salario
20611.56
17414.14
17260.69
13075.91
-------68362.30
------------------------------------- funcao=PROGRAMADOR -------------------------------------nome
PAULO GUEDES
MARCO SONTAS
PAULO HORTA
CARLA CERTO
ROSANE PISCO
CARLA APARECIDO
ROSANE YATAKA
ELIANE MARUEL
--------------funcao
salario
3828.77
5098.46
3101.32
3972.30
3045.33
1557.69
3080.18
3024.76
--------26708.81
=========
150136.79
46
13 - ARQUIVO DE MENSAGENS - "SAS Log"
- Ao se executar um programa SAS, gerado um relatrio de mensagens com
notificaes e erros da execuo do programa (janela LOG).
- Muito til, deve ser sempre analisado, principalmente quando no aparecer o
relatrio com os resultados na janela OUTPUT, ou, quando esse relatrio
aparecer com problemas.
Ex.14: Exemplo de LOG sem problemas na execuo 1
DATA LOG1 ;
INFILE "C:\curso\sas\DADOS.TXT" ;
INPUT NOME $1-8 SEXO $10 FUNCAO $12-23 SALARIO 25-31 ;
RUN;
PROC PRINT DATA=LOG1 NOOBS ;
VAR NOME FUNCAO ;
RUN;;
88
89
90
91
DATA LOG1 ;
INFILE "C:\curso\sas\DADOS.TXT" ;
INPUT NOME $1-8 SEXO $10 FUNCAO $12-23 SALARIO 25-31 ;
RUN;
ltima posio lida do registro.
NOTE: The infile "C:\curso\sas\DADOS.TXT" is:
Filename= C:\curso\sas\DADOS.TXT,
RECFM=V,LRECL=256,File Size (bytes)=297,
Last Modified=06 de Agosto de 2010 15h34min0,
Create Time=16 de Junho de 2014 14h28min15
Esses nmeros indicam coerncia na leitura e gravao dos dados. Quando existir apenas um
comando INPUT e sem avano de linha, os nmeros, geralmente, so iguais.
NOTE: 9 records were read from the infile
"C:\curso\sas\DADOS.TXT ".
The minimum record length was 31.
ATENO! Registros de tamanho varivel podem ocasionar erros de
The maximum record length was 33.
leitura. Talvez haja necessidade da opo MISSOVER no comando
INFILE.
NOTE: The data set WORK.LOG1 has 9 observations and 4 variables.
NOTE: DATA statement used (Total process time):
real time
0.05 seconds
cpu time
0.01 seconds
92
93
94
PROC PRINT DATA=LOG1 NOOBS ;
VAR NOME FUNCAO ;
RUN;
NOTE: There were 9 observations read from the data set WORK.LOG1.
NOTE: PROCEDURE PRINT used (Total process time):
real time
0.01 seconds
cpu time
0.00 seconds
47
Ex.15: Exemplo de LOG com problemas na execuo 2
DATA LOG2 ;
INFILE "C:\curso\sas\DADOS.TXT" ;
INPUT NOME $1-8 SEXO $10 FUNO $12-23 SALARIO 25-31 ;
RUN;
PROC PRINT DATA=LOG2 NOOBS
VAR NOME FUNO ;
RUN;
123 DATA LOG2 ;
124
INFILE "C:\curso\sas\DADOS.TXT" ;
125
INPUT NOME $1-8 SEXO $10 FUNO $12-23 SALARIO 25-31 ;
ERROR: The name FUNO is not a valid SAS name
*** No permitido caracteres especiais ou
acentuados em nomes de arquivos e variveis
126
RUN;
NOTE: The SAS System stopped processing this step because of errors.
WARNING: The data set WORK.LOG2 may be incomplete. When this step was stopped there were 0
observations and 3 variables.
WARNING: Data set WORK.LOG2 was not replaced because this step was stopped.
NOTE: DATA statement used (Total process time):
real time
0.00 seconds
cpu time
0.00 seconds
*** Faltou finalizar com ; O comando
PROC PRINT. O erro ocorre no prximo
comando, neste caso, o comando VAR foi
tratado como uma opo do comando PROC
PRINT; como essa opo no existe,
ocorre o erro.
127
128
PROC PRINT DATA=LOG2 NOOBS ???
VAR NOME FUNO ;
--22
202
ERROR 22-322: Syntax error, expecting one of the following: ;, BLANKLINE, DATA, DOUBLE,
HEADING, LABEL, N, NOOBS, OBS, ROUND, ROWS, SPLIT, STYLE, SUMLABEL, UNIFORM,
WIDTH.
ERROR 202-322: The option or parameter is not recognized and will be ignored.
129
RUN;
NOTE: The SAS System stopped processing this step because of errors.
NOTE: PROCEDURE PRINT used (Total process time):
real time
0.00 seconds
cpu time
0.00 seconds
48
Ex.16: Exemplo de LOG com detalhes e problemas na execuo 3
DATA LOG3 ;
INFILE "C:\curso\sas\DADOS.TXT" ;
INPUT NOME $1-8 SEXO $10 FUNCAO $12-23 SALARIO $25-33 ;
RUN;
PROC PRINT DATA=LOG3 NOOBS ;
VAR NOME CARGO ;
SUM SALARIO ;
RUN;
40
41
42
43
DATA LOG3 ;
INFILE "C:\curso\sas\DADOS.TXT" ;
INPUT NOME $1-8 SEXO $10 FUNCAO $12-23 SALARIO $25-33 ;
RUN;
NOTE: The infile "C:\curso\sas\DADOS.TXT" is:
Filename=C:\curso\sas\DADOS.TXT,
RECFM=V,LRECL=256,File Size (bytes)=297,
Last Modified=06 de Agosto de 2010 15h34min0,
Create Time=16 de Junho de 2014 14h28min15
Este
NOTE,
indica
que
o
SAS
precisou ler um novo registro para
completar a leitura de dados de
uma varivel. Indica a necessidade
de
usar
a
opo
MISSOVER
no
comando INFILE.
Nove registros lidos
NOTE: 9 records were read from the infile
"C:\curso\sas\DADOS.TXT".
The minimum record length was 31.
The maximum record length was 33.
NOTE: SAS went to a new line when INPUT statement reached past the end of a line.
NOTE: The data set WORK.LOG3 has 5 observations and 4 variables.
NOTE: DATA statement used (Total process time): Cinco registros gravados ???
real time
0.02 seconds
cpu time
0.01 seconds
No
existe
a
44
PROC PRINT DATA=LOG3 NOOBS ;
varivel
CARGO
no
45
VAR NOME CARGO ;
arquivo.
ERROR: Variable CARGO not found.
46
SUM SALARIO ;
ERROR: Variable SALARIO in list does not match type prescribed for this list.
47
RUN;
NOTE: The SAS System stopped processing this step because of errors.
NOTE: PROCEDURE PRINT used (Total process time):
real time
0.04 seconds
A varivel SALARIO foi
originalmente criada no
cpu time
0.01 seconds
comando
INPUT
como
sendo
do
tipo
caractere.
O
comando
SUM da PROC PRINT exige
que a varivel seja do
tipo numrica.
49
2 LABORATRIO
Manipular os procedimentos de impresso e ordenao.
Em todos os programas, utilize o arquivo SAS gerado no 1 laboratrio.
1 Monte um programa SAS que gere um relatrio:
- com as variveis: NOME, EMPRESA, FUNCAO e SALARIO;
- com opes para: espacejamento DUPLO e para no aparecer a coluna com o nmero de registros (OBS);
(Utilize o procedimento PRINT )
2 Monte um programa SAS que ordene os dados e gere um relatrio:
- crie, primeiro, um novo arquivo SAS ordenado por EMPRESA;
- um relatrio com todos os dados, agrupados por EMPRESA;
(Utilize os procedimentos SORT e PRINT)
3 Utilizando o arquivo ordenado do item anterior, monte um programa SAS:
- gere um relatrio agrupado por EMPRESA;
- com as variveis: NOME, FUNCAO e SALARIO;
- que possua um somatrio da varivel SALARIO;
- com uma linha em branco a cada 3 linhas de dados;
- com o ttulo "Relatrio de Salrios por Empresa";
- coloque o rodap "FONTE: Fundao Getlio Vargas";
(Utilize o procedimento PRINT)
4 Monte um programa SAS que gere um relatrio:
- com as variveis: NOME, FUNCAO e SALARIO;
- em ordem ascendente por EMPRESA e descendente por SALARIO.
(Utilize os procedimentos SORT e PRINT)
5 Monte um programa SAS que gere um relatrio:
- esteja ordenado por EMPRESA, mas sem agrupamento;
- com as variveis: NOME, EMPRESA e SALARIO;
- tenha espacejamento DUPLO;
- sem ttulo e sem rodap;
- com o somatrio da varivel SALARIO;
(Utilize o procedimento PRINT)
6 Monte um programa SAS que gere um relatrio com apenas os funcionrios que mais ganham por funo, de cada empresa.
A - Primeiro passo:
- Execute um PROC SORT, por EMPRESA, FUNCAO e ordem descendente de SALARIO;
- Verifique os resultados com a PROC PRINT, com as variveis: NOME, EMPRESA, FUNCAO, SALARIO;
B - Segundo passo:
- Execute um PROC SORT, mas gerando um NOVO ARQUIVO temporrio, por EMPRESA e FUNCAO;
- Elimine as duplicatas de EMPRESA e FUNCAO, desse novo arquivo, atravs de um opo do PROC SORT;
- Verifique os resultados com a PROC PRINT, com as variveis: NOME, EMPRESA, FUNCAO, SALARIO;
- Verifique se os resultados esto de acordo com o que foi solicitado no enunciado do exerccio.
50
14 - COMANDOS BSICOS DE PROGRAMAO SAS
14.1 - Comando de Alocao (=)
- Tipo: Comando de execuo;
- Uso: Data Step;
- Comando caractere utilizado para criar novas variveis e editar as j existentes em um Data Step.
<varivel> = <expresso> ;
varivel
expresso
Nome com no mximo 32 caracteres.
Expresses do tipo:
- Operaes aritmticas simples: + - * / **
x2=x ;
soma=x+y ;
dif=x-y ;
dobro=x*2 ;
met=x/2 ;
cubo=x**3 ;
y=-x ;
Move valor;
Adio;
Subtrao;
Multiplicao;
Diviso;
Potenciao;
Mudana de sinal;
- Constantes :
N=0 ;
Constante numrica;
SEXO="F" ;
Constante caractere;
- Concatenao de caracteres : ||
A=PAULO || ANTUNES;
B=PAULO || || ANTUNES;
A=PAULOANTUNES
B=PAULO ANTUNES
- Prioridade de execuo em expresses aritmticas:
1- O operador com maior prioridade executado primeiro;
2- Se os operadores possurem a mesma prioridade ser executado o que vier primeiro, da
esquerda para direita;
3- Parntesis dentro de parntesis, o mais interno executado primeiro;
1
( )
funo
**
*/
+-
Maior prioridade
Menor prioridade
A=X+Y+Z ;
A=X+Y*Z ;
A=X/(Y/Z) ;
S=SQRT(X) ;
A=INT(X) ;
Z=ABS(SQRT(X)-2) ;
- Funes:
51
Ex.17: Comando de Alocao
01
9
9
9
9
02
4
5
6
7
03
04
5
6
8
Arquivo: NUMEROS.TXT
05
06
07
08
6
5
0
2
8
0
4
5
0
09
1
1
2
1
10
0
1
4
5
11
5
4
5
0
12
0
0
0
0
LIBNAME ARQ "C:\curso\sas" ;
DATA ARQ.LUCROS ;
INFILE "C:\curso\sas\NUMEROS.TXT";
INPUT ANO 1-2 RECEITA 4-7 DESPESAS 9-12;
VAL_DOL = 0.98 ;
ANO = ANO + 1900 ;
LUCRO = RECEITA - DESPESAS ;
DOLLAR = ( RECEITA - DESPESAS ) / VAL_DOL ;
RUN;
PROC PRINT DATA=ARQ.LUCROS NOOBS ;
TITLE "Analise Contbil" ;
VAR ANO RECEITA DESPESAS LUCRO DOLLAR ;
SUM RECEITA DESPESAS LUCRO DOLLAR ;
RUN ;
Analise Contbil
11:17 Friday, June 27, 2014
ANO
RECEITA
DESPESAS
LUCRO
DOLLAR
1994
1995
1996
1997
5650
6280
8450
.
=======
20380
1050
1140
2450
1500
========
6140
4600
5140
6000
.
=====
15740
4693.88
5244.90
6122.45
.
========
16061.22
ATENO!!! Qualquer operao
com missing value ter como
resultado, missing value.
Leitura de pginas de dados do disco
numeros.txt
MEMRIA
Pginas de dados de leitura
----------
Leitura sequencial dos registros
-----------------------
Input Buffer = 256 Bytes
Distribuio dos dados no vetor de dados do programa
ANO
N
RECEITA
N
DESPESAS
N
VAL_DOL
N
LUCRO
N
DOLLAR
N
PDV
Gravao sequencial dos registros
---------------------------------- Pginas de dados de gravao
ARQ.LUCROS
Gravao de pginas de dados no disco
52
14.2 - Comando RETAIN
- Tipo: Comando de declarao;
- Uso: Data Step;
- Normalmente o SAS inicia todas as variveis criadas no DATA Step, pelo
comando INPUT ou pelos comandos de alocao, com o valor missing, a cada
iterao do DATA Step;
- O Comando RETAIN define uma varivel com um valor inicial, e determina que
ela no seja reinicializada a cada iterao do DATA Step;
- Deve ser posicionado sempre antes do comando que ir utilizar a varivel definida;
RETAIN <varivel1> [valor inicial]
...
...
<variveln> [valor inicial] ;
Ex.18: Comando RETAIN
LIBNAME ARQ "C:\curso\sas" ;
DATA ARQ.LUCROS ;
RETAIN TOTAL 0;
INFILE "C:\curso\sas\NUMEROS.TXT";
INPUT ANO 1-2 RECEITA 4-7 DESPESAS 9-12;
ANO = ANO + 1900 ;
LUCRO = RECEITA - DESPESAS ;
TOTAL = TOTAL + LUCRO ;
DOLLAR = LUCRO / 0.98 ;
RUN;
PROC PRINT DATA=ARQ.LUCROS NOOBS;
TITLE "Analise Contbil" ;
VAR RECEITA DESPESAS LUCRO DOLLAR TOTAL ;
SUM RECEITA DESPESAS LUCRO DOLLAR ;
RUN ;
Analise Contbil
11:17 Friday, June 27, 2014
RECEITA
DESPESAS
LUCRO
DOLLAR
TOTAL
5650
6280
8450
.
=======
20380
1050
1140
2450
1500
========
6140
4600
5140
6000
.
=====
15740
4693.88
5244.90
6122.45
.
========
16061.22
4600
9740
15740
.
53
14.3 - Comando IF-THEN/ELSE
- Tipo: Comando de Execuo;
- Uso: Data Step;
- Comando que condiciona a execuo de outro comando SAS, de
acordo com uma expresso lgica;
- Se a expresso, que determina a condio for verdadeira (ou o
valor 1), ser executado o comando que vier aps o THEN. Se a
condio for falsa (ou o valor 0), ser executado o comando que
vier aps o ELSE. Somente um comando, aps o THEN e do
ELSE
IF
<expresso>
[THEN] <comando> ;
[ELSE] <comando> ;
expresso Combinao de variveis com operadores de comparao e/ou
operadores lgicos que determinam uma condio.
comando Comando do SAS que ser executado de acordo com o resultado
da condio.
Operadores de Comparao
GT
LT
EQ
LE
GE
NE
NL
NG
IN
>
<
=
<=
>=
~=
maior que
menor que
igual a
menor ou igual a
maior ou igual a
no igual (diferente)
no menor
no maior
est no conjunto
Operadores Lgicos
AND & e, ambos
OR
| ou, um ou outro
NOT ~ no, negao
54
Ex.19: Comando IF (Somente Selecionar de dados)
LIBNAME DAD "C:\curso\sas";
DATA DAD.DADOS86 ;
INFILE "C:\curso\sas\CADASTRO.TXT" LRECL=50 MISSOVER;
INPUT NOME $8. @21 EMP $15. @37 ANO 4. ;
IF ANO=1986 ;
RUN;
PROC PRINT;RUN;
Log
91
92
93
94
95
DATA DAD.DADOS86 ;
INFILE "A:\DADOS\CADASTRO.TXT" LRECL=50 MISSOVER ;
INPUT NOME $8. @21 EMP $15. @37 ANO 4. ;
IF ANO=1986 ;
RUN;
NOTE: The infile "A:\DADOS\CADASTRO.TXT" is:
Filename=A:\DADOS\CADASTRO.TXT,
RECFM=V,LRECL=50,File Size (bytes)=22752,
Last Modified=01 de Julho de 2014 12h34min43,
Create Time=01 de Julho de 2014 12h28min44
NOTE: 550 records were read from the infile
"A:\DADOS\CADASTRO.TXT".
The minimum record length was 37. Indicativo para uso da opo MISSOVER
The maximum record length was 40.
NOTE: The data set DAD.DADOS86 has 8 observations and 3 variables.
NOTE: DATA statement used (Total process time):
real time
0.02 seconds
cpu time
0.03 seconds
96
97
PROC PRINT;RUN;
NOTE: There were 8 observations read from the data set DAD.DADOS86.
NOTE: PROCEDURE PRINT used (Total process time):
real time
0.03 seconds
cpu time
0.00 seconds
The SAS System
Obs
NOME
1
2
3
4
5
6
7
8
JOAO
LUIS
LICIA
MIRIAM
MARIA
RENATO
MARCIO
ROSANE
EMP
MALTA
ATLAS
ATLAS
MALTA
PARIS
MALTA
ATLAS
MALTA
08:46 Monday, June 30, 2014
ANO
LTDA
S.A.
S.A.
LTDA
INSTITUTO
LTDA
S.A.
LTDA
1986
1986
1986
1986
1986
1986
1986
1986
55
Ex.20: Comando IF (Operadores de Comparao)
Arquivo: NOTAS.TXT
DATA
01
02
03
04
05
06
07
09
10
11
08
NOTA ;
INFILE "C:\curso\sas\NOTAS.TXT" ;
INPUT NOME $ 1-8 NOTA 9-11;
IF NOTA LT 3
THEN CONCEITO="E"
IF 3 <= NOTA < 5 THEN CONCEITO="D"
IF 5 LE NOTA LT 7 THEN CONCEITO="C"
IF 7 LE NOTA LT 9 THEN CONCEITO="B"
ELSE CONCEITO="A"
;
;
;
;
;
RUN;
PROC PRINT NOOBS ;
RUN;
The SAS System
NOME
NOTA
VIVIANE
LIDIA
PAULO
CLAUDIO
LUIZ
12:12 Wednesday, July 2, 2014
CONCEITO
2.5
9.5
6.8
6.8
4.9
A
A
A
A
A
O que est errado ???
DATA
NOTA ;
INFILE "C:\curso\sas\NOTAS.TXT" ;
INPUT NOME $ 1-8 NOTA 9-11;
IF NOTA LT 3 THEN CONCEITO="E" ;
ELSE IF 3 <= NOTA < 5
THEN CONCEITO="D" ;
ELSE IF 5 LE NOTA LT 7 THEN CONCEITO="C" ;
ELSE IF 7 LE NOTA LT 9 THEN CONCEITO="B" ;
ELSE CONCEITO="A" ;
RUN;
PROC PRINT NOOBS ;
RUN;
The SAS System
NOME
VIVIANE
LIDIA
PAULO
CLAUDIO
LUIZ
NOTA
2.5
9.5
6.8
6.8
4.9
12:12 Wednesday, July 2, 2014
CONCEITO
E
A
C
C
D
56
Ex.21: Comando IF (Operadores Lgicos)
LIBNAME TESTE "C:\curso\sas" ;
DATA TESTE.CLASSE ;
INFILE "C:\curso\sas\CLASSE.TXT";
INPUT NOME $ 1-7 SEXO $ 8 IDADE 10-11 @13 ALTURA 4.2 ;
IF (SEXO="1" AND ALTURA<1.55) OR (SEXO="1" AND IDADE<12)
THEN CLASSE="100" ;
ELSE IF (SEXO="2" AND ALTURA<1.55) OR (SEXO="2" AND IDADE<12)
THEN CLASSE="200" ;
ELSE CLASSE="300" ;
RUN;
Arquivo: CLASSE.TXT
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
PROC PRINT NOOBS ;
VAR NOME CLASSE ;
RUN ;
The SAS System
NOME
CLASSE
PAULA
FLAVIA
MARCOS
LUIS
100
300
200
300
12:41 Monday, January 26, 2015
Ex.22: Comando IF (Operadores Lgicos)
IF ESTADO="RJ" OR ESTADO="SP" THEN REGIAO="SUDESTE" ;
IF ESTADO="SP" AND CIDADE="CAMPINAS" THEN CEP="13000-000" ;
57
14.4 - Comando WHERE;
- Tipo: Comando de execuo;
- Uso: Data Step, Proc Step e Opo de arquivos;
- Comando que possui como nica ao, selecionar registros, se uma
expresso for verdadeira;
- A expresso do comando WHERE s pode conter variveis que j
existam em arquivos SAS, ou seja, no podem ser utilizadas variveis que
esto sendo criadas no DATA Step, por comandos de atribuio (=), ou
pelo comando INPUT;
- Alm dos operadores de comparao e lgicos do comando IF, existem
alguns operadores especiais no comando WHERE.
WHERE <expresso> ;
expresso
Combinao de variveis com operadores de comparao,
operadores lgicos e/ou operadores especiais, que
determinam uma condio. Se for verdadeira, o registro
selecionado, processado e salvo. Se for falso o registro
descartado.
Alguns operadores especiais:
BETWEEN-AND
CONTAINS
entre um e outro
contm
58
Ex.23: Comando WHERE
DATA TESTE;
SET ARQ.CADASTRO;
WHERE SALARIO BETWEEN 5000 AND 10000;
RUN;
PROC PRINT data=teste;
var nome salario;
RUN;
The SAS System
12:41 Monday, January 26, 2015
Obs
nome
salario
1
2
3
4
5
6
7
8
9
10
11
12
MOUA,PAULO
MOUA,MARCO
SONTAS,MARCO
MEREDITE,JOAO
MARUEL,MARCO
ANJOA,MONICA
LUILA,CARLA
MEREDITE,LUIS
MOUA,LIGIA
MOUA,TANIA
MOUA,CARLA
MOUA,LAURA
9548.36
9988.53
5098.46
5023.91
5157.09
5066.22
5178.65
5123.16
5047.05
5418.33
7221.58
7402.21
19
PROC PRINT DATA=ARQ.CADASTRO;
var nome;
WHERE NOME CONTAINS "SILVA";
RUN;
The SAS System
Obs
nome
17
21
40
44
197
213
278
283
376
383
399
411
423
440
450
453
463
468
498
502
505
508
532
YATAKA,SILVANA
SILVA,MADALENA
SILVA,CECILIA
SILVA,MARCO
SILVA,TANIA
SILVA,CARLA
SILVA,MARIA
SILVA,LICIA
SILVA,ROSANE
SILVA,MARCIO
SILVA,LAURA
SILVA,JOAO
SILVA,EDUARDO
SILVA,MONICA
SILVA,RENATO
SILVA,LIGIA
SILVA,MARCELO
SILVA,LUIS
SILVA,MIRIAM
SILVA,FRANCISCA
SILVA,FLAVIA
SILVA,ELIANE
SILVA,PAULO
12:41 Monday, January 26, 2015
29
59
14.5 - Comandos DO/END
- Tipo: Comando de execuo;
- Uso: Data Step
- Comando que define a execuo de um bloco de comandos do SAS;
- Todos os comandos existentes entre o comando DO e o comando END,
devero ser executados imediatamente;
- Comandos DO e END podem ser usados para executar um grupo de
comandos quando se encontra uma condio, normalmente, para ampliar
o comando IF-THEN/ELSE.
IF <expresso> THEN DO;
<comando1> ;
<comando2> ;
...
<comandon> ;
END ;
Ex.24: Comando DO/END
DATA TRABALHO ;
INFILE "C:\curso\sas\EMPRESA.DAT" ;
INPUT NOME $ 1-8 DEP_NO $ 10-12 COM 14-17 SALARIO 19-23 ;
IF DEP_NO="201" THEN DO ;
DEP="VENDAS" ;
SAL=COM+SALARIO ;
END ;
ELSE DO ;
DEP="ADMINISTRATIVO" ;
SAL=SALARIO ;
END ;
RUN;
PROC PRINT NOOBS ;
RUN ;
The SAS System
NOME
DEP_NO
COM
SALARIO
CARLOS
ELIANE
ALVARO
FATIMA
201
101
101
201
1500
.
.
500
1500
1800
3800
1500
12:41 Monday, January 26, 2015
DEP
VENDAS
ADMINI
ADMINI
VENDAS
30
SAL
3000
1800
3800
2000
60
14.6 - Comando LENGTH
- Tipo: Comando de declarao;
- Uso: Data Step;
- Comando que define uma varivel, o tipo e o tamanho em bytes. Deve
ser posicionado sempre antes da utilizao da varivel.
LENGTH
varivel [$] <tamanho>
...
varivel [$] <tamanho> ;
varivel Nome da varivel que deseja definir;
$
Caractere opcional, que indica que a varivel ser
alfanumrica;
tamanho Tamanho, em bytes, da varivel.
Ex.25: Comando LENGTH
DATA TRABALHO ;
INFILE "C:\curso\sas\EMPRESA.DAT" ;
INPUT NOME $ 1-8 DEP_NO $ 10-12 COM 14-17 SALARIO 19-23 ;
LENGTH DEP $ 14 ;
IF DEP_NO="201" THEN DO ;
DEP="VENDAS" ;
SAL=COM+SALARIO ;
END ;
ELSE DO ;
DEP="ADMINISTRATIVO" ;
SAL=SALARIO ;
END ;
RUN;
PROC PRINT NOOBS ;
RUN ;
The SAS System
NOME
DEP_NO
COM
SALARIO
CARLOS
ELIANE
ALVARO
FATIMA
201
101
101
201
1500
.
.
500
1500
1800
3800
1500
12:41 Monday, January 26, 2015
dep
VENDAS
ADMINISTRATIVO
ADMINISTRATIVO
VENDAS
31
SAL
3000
1800
3800
2000
61
14.7 - Comando DO/END Iterativo
- Tipo: Comando de execuo;
- Uso: Data Step;
- Comando utilizado para repetir um grupo de comandos n vezes.
DO <ndice> = <valor1> , <valor2> , ... , <valorn> ;
DO <ndice> = <incio> TO <fim> [BY <passo>]
[WHILE/UNTIL <(expresso)>];
ndice
Varivel auxiliar que armazena o valor da contagem do
"loop".
incio
Valor inicial do "loop".
fim
Valor final do "loop".
passo
Valor opcional que indica o incremento do "loop".
expresso
Campo opcional que representa uma combinao de
variveis que determinam uma condio para execuo do
"loop". A expresso deve vir entre parnteses.
62
Ex.26: Comando DO/END Iterativo
DO
MES="JAN","FEV","MAR" ; (3 vezes) ;END;
DO
I = 1 TO 120 ; (120 vezes)
DO
I = 1 TO 120 BY 2 ; (60 vezes) ;END;
DO
I = 120 TO 1 BY -1 ; (120 vezes) ;END;
DO
I = 1 TO 10
WHILE
DO
I = 2 TO 20
BY 2 UNTIL ((X/3)>Y) ; (10 vezes ou at (X/3)>Y) ;END;
DO
I = 10 TO 0
BY -1 WHILE (MES="JAN");(11 vezes ou enquanto o MES=JAN);END;
;END;
(X < Y) ; (10 vezes ou enquanto X < Y) ;END;
data teste;
set arq.cadastro;
where salario between 2000 and 2100;
novosal=salario;
do i=1 to 10 while (novosal<2200);
novosal=novosal*1.05;
end;
run;
proc print data=teste;
var nome salario novosal i;
run;
The SAS System
Obs
1
2
3
4
5
6
7
8
9
10
12:41 Monday, January 26, 2015 113
nome
salario
novosal
SUNAY,FRANCISCA
MENDES,ELIANE
GUEDES,CARLA
LONAS,FLAVIA
HORTA,MONICA
MENDES,CARLA
APARECIDO,PAULO
BENTES,MARCO
BENTES,JOAO
YATAKA,PAULO
2070.60
2071.18
2076.92
2020.77
2098.94
2095.91
2037.42
2025.92
2026.52
2056.53
2282.84
2283.48
2289.80
2227.90
2203.89
2200.71
2246.26
2233.58
2234.24
2267.32
3
3
3
3
2
2
3
3
3
3
63
14.8 - Comando DO WHILE
- Tipo: Comando de execuo;
- Uso: Data Step;
- Comando que repete um grupo de comandos enquanto uma expresso
for verdadeira;
- A expresso validada no incio do loop. Se a expresso for falsa, os
comandos dentro do loop, nunca sero executados;
- ATENO! Este tipo de loop pode incorrer em ciclo infinito, se os
valores da expresso no se alterarem dentro do loop.
DO WHILE <(expresso)> ; <== ( Validao no incio )
...
END;
expresso
Combinao de variveis que determina uma condio para
a execuo do "loop", entre parnteses.
Ex.27: Comando DO WHILE
DATA ;
X=0; N=0;
DO WHILE (N LE 5) ; <== ( Validao no incio. Executa 6 vezes )
X=X+N**2 ;
N=N+1 ;
END ;
RUN;
O N, que valida a expresso, est sendo alterado no loop.
PROC PRINT;RUN;
The SAS System
Obs
55
64
14.9 - Comando DO UNTIL
- Tipo: Comando de execuo;
- Uso: Data step;
- Comando que repete um grupo de comandos at a expresso ser
verdadeira;
- A expresso validada no fim do loop. Se a expresso for falsa, os
comandos dentro do loop, sero executados, pelo menos, uma vez.
- ATENO! Este tipo de loop pode incorrer em ciclo infinito, se os
valores da expresso no se alterarem dentro do loop.
DO UNTIL <(expresso)> ;
...
END;<== ( Validao no fim )
expresso
Combinao de variveis que determina uma condio para
a execuo do "loop", entre parnteses.
Ex.28: Comando DO UNTIL
DATA ;
X=0; N=0;
DO UNTIL (N GT 5) ;
X=X+N**2 ;
N=N+1 ;
O N, que valida a expresso, est sendo alterado
END ; <== ( Validao no fim. Executa 6 vezes )
RUN;
no loop.
PROC PRINT;RUN;
The SAS System
Obs
55
65
14.10 - Comandos DROP e KEEP
- Tipo: Comandos de declarao;
- Uso: Data step e Opo de arquivos;
- O comando DROP, determina que algumas variveis, no sejam salvas
em um arquivo SAS;
- O comando KEEP, determina que somente algumas variveis, sejam
salvas em um arquivo SAS;
- Pode ser posicionado em qualquer lugar de um Data Step;
- Esses dois comandos so exclusivos, ou se usa o comando DROP, ou se
usa o comando KEEP, na lgica de um programa SAS.
DROP <varivel1> <varivel2> . . . <variveln>;
varivel
Nome de uma varivel que, no ser salva em um arquivo
SAS (Data Set).
KEEP <varivel1> <varivel2> . . . <variveln>;
varivel
Nome de uma varivel que ser salva em um arquivo SAS
(Data Set).
66
Ex.29: Comandos DROP e KEEP
data dados;
infile "c:\curso\sas\dados.dat";
input nome $ 1-30 sexo $ 31 idade 32-33 peso 34-39 .2
altura 40-43 .2 ecivil $ 54 rg $ 57-71
cpf $ 72-82 funcao $ 98-109 ;
run;
proc contents short;run;
14:33 Monday, February 2, 2015
The CONTENTS Procedure
Alphabetic List of Variables for WORK.DADOS
altura cpf ecivil funcao idade nome peso rg sexo
DATA SUBARQ1 ;
SET DADOS ;
DROP PESO ALTURA ECIVIL ;
RUN;
proc contents short;run;
14:33 Monday, February 2, 2015
The CONTENTS Procedure
Alphabetic List of Variables for WORK.SUBARQ1
cpf funcao idade nome rg sexo
DATA SUBARQ2 ;
SET DADOS ;
KEEP NOME RG CPF ;
RUN;
proc contents short;run;
14:33 Monday, February 2, 2015
The CONTENTS Procedure
Alphabetic List of Variables for WORK.SUBARQ2
cpf nome rg
67
14.11 - Opes de Arquivos: DROP= e KEEP=
- Todo arquivo com estrutura SAS, possui diversas opes de configurao, que so
especificados direita do nome de cada arquivo, entre parnteses;
- So opes do arquivo, que tem sua ao vinculada ao comando no qual o arquivo
est sendo especificado;
- Normalmente quando se faz referncia a um arquivo em um programa SAS, a ao,
ou ser de leitura dos dados, ou ser de gravao dos dados.
<arquivo SAS> [( <opo1> <opo2> . . . <opon>)] ;
Opes KEEP e DROP
<arquivo SAS> (DROP=<varivel> <varivel> . . .) ;
<arquivo SAS> (KEEP=<varivel> <varivel> . . .) ;
- Ao vinculada ao comando DATA (gravao de dados)
DROP No grava
KEEP Somente grava
- Ao vinculada ao comando SET (Leitura de dados)
DROP No leia
KEEP Somente leia
Ex.30: Opes: DROP= e KEEP=
data dados;
infile "c:\curso\sas\dados.dat";
input nome $ 1-30 sexo $ 31 idade 32-33 peso 34-39 .2
altura 40-43 .2 ecivil $ 54 rg $ 57-71
cpf $ 72-82 funcao $ 98-109 ;
run;
DATA SUBARQ1 (DROP= PESO ALTURA ECIVIL);
SET DADOS ;
RUN;
DATA SUBARQ2 ;
SET DADOS (KEEP= NOME RG CPF) ;
RUN;
68
14.12 - Comando DELETE
- Tipo: Comando de execuo;
- Uso: Data Step;
- Comando que informa ao SAS, que deve ser parado o processamento do
registro atual; no gravar os dados do registro no arquivo e retornar
imediatamente para o incio do Data Step para uma nova iterao;
- O objetivo do comando de no permitir a gravao do registro lido, no novo
arquivo SAS, mas permite trabalhar com os dados lidos;
- Normalmente esse comando utilizado junto com o comando IF/THEN/ELSE,
que determina uma condio para execuo do comando DELETE.
IF <expresso> THEN DELETE ;
Ex.31:Comando DELETE
DATA PRODUTO ;
INFILE "C:\curso\sas\PRODUTO.TXT";
INPUT DEP $ 1-2 UNIDADE 4-5 CUSTO 7-9 ;
IF UNIDADE <= 0 OR CUSTO <= 0 THEN DELETE ;
CUSTOUNI=CUSTO/UNIDADE ;
RUN;
Arquivo: PRODUTO.TXT
01
02
03
04
05
3
2
07
08
09
06
0
3
PROC PRINT NOOBS ;
RUN ;
14:33 Monday, February 2, 2015
DEP
UNIDADE
CUSTO
CUSTOUNI
17
31
51
10
5
1
525
100
5
52.5
20.0
5.0
69
14.13 - Comando OUTPUT
- Tipo: Comando de execuo;
- Uso: Data Step;
- O SAS automaticamente codifica um comando OUTPUT (implcito), no final
do Data step, para salvar os dados que foram processados.
DATA ... ;
... ;
<output>
RUN ;
- A codificao explcita de um comando OUTPUT, funciona de duas formas:
1 - Especifica ao SAS que o registro que est sendo processado deve
ser gravado no arquivo, imediatamente, e no, ao final do Data Step
(OUTPUT implcito).
2 - Especifica para qual arquivo SAS deve ser gravado o registro que
est sendo processado.
- Normalmente utilizado junto com o comando IF-THEN/ELSE de acordo
com uma condio;
ATENO! Ao se codificar um comando OUTPUT no programa, o SAS
desabilita o OUTPUT implcito ao final do DATA Step. A ao de salvar o
dado fica por conta da lgica do programa; da posio do comando OUTPUT.
OUTPUT [arquivo1 arquivon];
IF <expresso> THEN OUTPUT [arquivo1 arquivon];
expresso
Combinao de variveis e valores que determinam uma
condio a ser testada.
arquivo
Opcional, nome de um arquivo SAS, especificado e
criado pelo comando DATA.
70
Ex.32: Comando OUTPUT: Salvar Registro
LIBNAME K1 "C:\curso\sas" ;
DATA K1.VARIACAO ;
INFILE "C:\curso\sas\SAIDA.TXT";
INPUT NOME $ 1-7 NIVEL $ 8-9 VAL 10-13 SALARIO 14-18;
SAL=0;
IF NIVEL="10" THEN DO I=1 TO 2 ;
SAL=SAL+SALARIO*VAL ;
OUTPUT ;
END ;
DROP I VAL;
RUN;
Arquivo: SAIDA.TXT
01
02
03
04
05
06
07
08
09
10
11
12
15
16
17
18
13
14
PROC PRINT ; RUN ;
14:33 Monday, February 2, 2015
Obs
1
2
3
4
5
6
NOME
PAULO
PAULO
MARIA
MARIA
CLAUDIA
CLAUDIA
NIVEL
10
10
10
10
10
10
SALARIO
1000
1000
800
800
750
750
12
SAL
1100
2200
920
1840
900
1800
Ex.33: Comando OUTPUT: Direcionar e Salvar Registro
LIBNAME A "C:\curso\sas" ;
DATA A.HOMENS A.MULHERES ;
SET A.CADASTRO ;
IF SEXO="F" THEN OUTPUT A.MULHERES ;
ELSE OUTPUT A.HOMENS ;
RUN;
PROC PRINT DATA=A.MULHERES ; VAR NOME ; RUN ;
PROC PRINT DATA=A.HOMENS ; VAR NOME ; RUN ;
71
3 LABORATRIO
Utilizao dos comandos de programao em DATA Step
Em todos os programas, utilize o arquivo SAS, gerado no 1 laboratrio:
1 - Monte um programa que crie um novo arquivo SAS, somente com os dados das pessoas do sexo
feminino e casadas. Gere um relatrio com os dados desse arquivo. A varivel que representa o ESTADO
CIVIL, est codificada por nmeros, que representam:
1 = solteiro
2 = casado
3 = separado.
Comandos possveis: DATA, SET, IF/THEN/ELSE ou WHERE, PROC PRINT
2 - Monte um programa que crie um novo arquivo SAS :
- Analisando a varivel FILHOS, crie uma nova varivel, DEP e altere a varivel SALARIO :
Se possui filhos:
DEP ="COM DEPENDENTES";
SALARIO = SALARIO * 1.1;
Se no possui filhos:
DEP="NO POSSUI DEPENDENTES";
- Gere um relatrio com os dados deste arquivo.
Comandos possveis: DATA, SET, IF/THEN/ELSE, DO/END, = , PROC PRINT
OBS: Utilize o comando de atribuio (=) para criar e alterar as variveis. Utilize o comando IFTHEN/ELSE, para se distinguir se possui ou no filhos, e o comando DO/END para permitir a
execuo de mais de um comando. Preste ateno aos resultados; verifique se est tudo correto.
72
3 - Monte um programa que crie um novo arquivo SAS:
- Selecione as pessoas, empregadas, que ganham menos de R$ 3.000,00;
- Aumente o valor do salrio dessas pessoas em 10%, em at 12 vezes (relativos a 12 meses), ou,
at o salrio atingir um valor superior a R$ 5.000,00.
Para aumentar o valor do salrio, utilize a equao: SALARIO=SALARIO*1.1
- Salve os valores incrementados, um a um;
- O arquivo s dever conter as variveis: NOME, EMPRESA, FUNCAO e SALARIO ;
- Gere um relatrio com os dados deste arquivo;
Comandos possveis: DATA, SET, IF/THEN/ELSE ou WHERE, DO iterativo/END com
opo WHILE ou UNTIL, ou DO WHILE, ou DO UNTIL, =, OUTPUT, DROP ou KEEP,
PROC PRINT.
OBS: Utilize o comando IF-THEN/ELSE ou WHERE para selecionar as pessoas. Utilize o
comando DO/END Iterativo para aumentar o salrio. Utilize o comando OUTPUT para salvar os
dados e utilize o comando KEEP ou DROP para determinar quais as variveis que sero
arquivadas.
4 - Monte um programa que crie trs novos arquivos SAS, com os nomes: SA, LTDA e INSTITUTO :
- Elimine as pessoas que ocupam FUNCAO de "DIRETOR" e "GERENTE";
- Selecione os dados, de maneira que, cada arquivo s possua os dados referentes a cada TIPO DE
EMPRESA.
- Gere um relatrio para cada um dos arquivos;
Comandos possveis: DATA, SET, IF/THEN/ELSE ou WHERE, OUTPUT, PROC PRINT
OBS: Utilize o comando DATA, para criar os arquivos. Utilize o comando IF/THEN/ELSE, para
selecionar e eliminar os dados. Utilize o comando OUTPUT para direcionar a gravao dos
registros para os arquivos definidos no comando DATA.
73
5 - Monte um programa com um nico DATA Step que crie sete novos arquivos SAS, permanentes,
(PESSOAL , TRABALHO , FAMILIA, SOLTEIRO, CHEFE, SUB e DESEMPREGADOS) no
diretrio c:\curso\sas ;
- Cada arquivo dever conter os seguintes dados:
PESSOAL
Somente as variveis: NOME, SEXO, IDADE, PESO, ALTURA,
ANIVERSARIO, ESTADO CIVIL, FILHOS, RG e CPF , e todos os
registros;
TRABALHO
Somente as variveis: NOME, RG, CPF, EMPRESA, FUNCAO,
ADMISSAO, SALARIO e TIPO DE EMPRESA e pessoas que possuam
emprego ;
FAMILIA
Todas as variveis e somente as pessoas que possuam filhos;
SOLTEIRO
Todas as variveis e somente as pessoas solteiras;
CHEFE
Todas as variveis e somente as pessoas que ocupam cargo de chefia:
GERENTE ou DIRETOR;
SUB
Todas as variveis e somente as pessoas que no ocupam cargos de chefia;
DESEMPREGADOS Todas as variveis e somente as pessoas desempregadas;
- Gere relatrios para ver o contedo de cada arquivo;
Comandos possveis: DATA, SET, IF/THEN/ELSE, OUTPUT, PROC PRINT
74
15 - FUNES DO SAS
15.1 - Introduo
- Toda funo representa a execuo de uma determinada rotina que ir retornar
um determinado valor.
- Toda funo SAS recursiva. Funo pode ser executada dentro de outra
funo, como parmetro da funo;
- As funes no SAS, normalmente, fazem parte de um comando de atribuio,
durante a criao ou alterao de uma varivel no DATA Step, mas tambm
podem ser utilizadas para formar uma expresso lgica, em um comando IF ou
WHERE.
<varivel> = <funo>([OF] arg1, arg2, . . . , argn ) ;
varivel
Nome at no mximo 32 caracteres, aonde ser armazenado
o valor retornado da execuo da funo.
funo
Palavra-chave que identifica a funo a ser processada.
arg
Parmetros de entrada para processamento da funo:
varivel, expresso aritmtica, valor constante.
OF
Parmetro opcional especial para as funes estatsticas,
que indica o processamento num intervalo de argumentos.
Tipos de funes:
- Funes de Tratamento de Caractere;
- Funes de Tratamento de Data e Hora;
- Funes Matemticas;
- Funes de Estatsticas Descritivas;
- Funes Trigonomtricas e Hiperblicas;
- Funes de Truncamento;
- Funes para Gerao de Nmeros Randmicos;
- Funes de Probabilidade;
- Funes Financeiras;
- Funes de Macro;
75
15.2 - Funes de Tratamento de Caractere
15.2.1 - Funes UPCASE e LOWCASE
- Funo que converte o contedo de uma varivel ou expresso, para caracteres
maisculos (UPCASE), ou minsculos (LOWCASE).
<varivel>=UPCASE (arg) ;
<varivel>=LOWCASE (arg) ;
varivel
Nome at 32 caracteres que armazenar o resultado.
arg
Varivel ou expresso caractere, cujo contedo ser
convertido para letras maisculas ou minsculas.
15.2.2 - Funo SUBSTR
- Funo que efetua a manipulao do contedo de uma varivel do tipo
caractere.
<varivel>=SUBSTR (arg1, arg2, [arg3]) ;
varivel
Nome at 32 caracteres que armazenar o resultado.
arg1
Varivel ou expresso caractere cujo contedo ser
manipulado.
arg2
Valor que indica a posio inicial do contedo da varivel
que ser manipulado.
arg3
Opcional, determina o nmero de caracteres do contedo
da varivel que se deseja manipular. Se no for
especificado, a funo pegar todos os caracteres do valor
do segundo argumento at o final.
76
15.2.3 - Funo FIND
- Funo que retorna um valor numrico que representa a primeira posio de um
determinado caractere dentro do argumento.
<varivel>=FIND(arg1, arg2[,arg3][,arg4]) ;
varivel
Nome at 32 caracteres que armazenar o resultado.
arg1
Varivel ou expresso caractere cujo contedo ser manipulado.
arg2
Caracteres, entre aspas, que se deseja localizar no arg1.
arg3
Caractere que configura um recurso de busca:
i ou I
t ou T
arg4
Ignora se maisculas ou minsculas;
Remove brancos esquerda do arg1 e arg2.
Determina a posio inicial de busca no arg1:
1
-1
Valor padro. Incio de busca na coluna 1, para a direita;
Incio de busca na coluna 1, para esquerda.
OBS: Se os caracteres especificados no forem encontrados, a funo FIND
retornar o valor zero.
77
Ex.34:Funes Caracteres: FIND
DATA POSICAO;
REGIAO="FRANA#ALEMANHA#ESPANHA#ITLIA";
LOCAL=FIND(REGIAO,"Espanha"); OUTPUT ;
LOCAL=FIND(REGIAO,"Espanha","i"); OUTPUT ;
LOCAL=FIND(REGIAO,"nha","I"); OUTPUT ;
LOCAL=FIND(REGIAO,"nha","I",-30);OUTPUT;
LOCAL=FIND(REGIAO,"I"); OUTPUT ;
LOCAL=FIND(REGIAO,"ING"); OUTPUT ;
RUN;
PROC PRINT;
VAR LOCAL;
RUN ;
The SAS System
Obs
LOCAL
1
2
3
4
5
6
0
17
13
21
25
0
15:16 Monday, February 9, 2015
32
78
Ex.35: Funes Caracteres: UPCASE, SUBSTR, FIND
DATA RGSSP (DROP=AUX);
INFILE " C:\curso\sas\RG.TXT";
INPUT RG $ 18. ;
RG=UPCASE(RG);
AUX=FIND(RG,"SSP");
IF AUX=0 THEN DELETE;
RG_NUM=SUBSTR(RG, 1, AUX-1) ;
RG_SSP=SUBSTR(RG,AUX);
RUN;
Arquivo: RG.TXT
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
PROC PRINT DATA=RGSSP NOOBS ;
VAR RG_NUM RG_SSP;
RUN ;
The SAS System
RG_NUM
RG_SSP
584166
234
22397488
123456
SSP/DF
SSP/SP
SSP/RS
SSP/GO
15:16 Monday, February 9, 2015
44
79
15.3 - Funes Numricas
15.3.1 - Funo INT
- Funo que retorna com o valor inteiro de uma varivel ou de uma expresso.
<varivel> = INT ( arg ) ;
varivel
Nome at 32 caracteres que armazenar o resultado.
arg
Varivel ou expresso numrica, cujo contedo se deseja
obter o valor inteiro (sem decimais e sem arredondar).
15.3.2 - Funo ROUND
- Funo que retorna um valor arredondado de uma varivel ou expresso numrica.
<varivel> = ROUND ( arg1, [arg2] ) ;
varivel
Nome at 32 caracteres que armazenar o resultado.
arg1
Varivel ou expresso numrica cujo contedo se deseja
arredondar.
arg2
Opcional, especifica o mltiplo do arredondamento e a
posio numrica aonde ser feita o arredondamento ( 1 ,
10 , . . . ou 0.1 , 0.01 , . . . ). Se no for especificado, a
funo arredondar para um valor inteiro (1).
OBS: Analisando os valores da esquerda para direita, ao se determinar qual a posio
numrica que ser arredondada, analisa-se a posio posterior ( direita), de acordo com
as regras de arredondamento no SAS:
0,00 at 4,99
5,00 at 9,99
Ex.: 542,86 540
(arredonda para baixo, mas no altera a posio numrica).
(arredonda para cima e adiciona +1 posio numrica).
542,86 543
542,86 542,9
80
Ex.36: Funes Numricas
DATA DADOS ;
INFILE "C:\cursos\sas\arredondamento.txt";
INPUT X 7.;
TRUNCA = INT ( X ) ;
INTEIRO = ROUND ( X , 1 ) ;
DEZENA = ROUND ( X , 10 ) ;
CENTENA = ROUND ( X , 100 ) ;
DECIMO = ROUND ( X , 0.1 ) ;
CENTES = ROUND ( X , 0.01 ) ;
MULT5
= ROUND ( X , 5 ) ;
RUN;
Arquivo: ARREDONDAMENTO.TXT
01
02
03
04
05
06
07
PROC PRINT DOUBLE;
RUN ;
The SAS System
Obs
TRUNCA
INTEIRO
DEZENA
15:16 Monday, February 9, 2015
CENTENA
DECIMO
CENTES
MULT5
326.54
326
327
330
300
326.5
326.54
325
1977.09
1977
1977
1980
2000
1977.1
1977.09
1975
558.88
558
559
560
600
558.9
558.88
560
1588.29
1588
1588
1590
1600
1588.3
1588.29
1590
50
81
15.4 - Funes Estatsticas Descritivas
15.4.1 - Funo SUM
- Funo que efetua um somatrio de valores, no missing, entre
variveis numricas, para cada registro de dados.
<varivel> = SUM ( [OF] var1, . . . varn ) ;
Varivel
Nome at 32 caracteres que armazenar o
resultado.
var1, . . . varn
Nome das variveis numricas que se deseja
efetuar um somatrio.
OF
Opcional; identifica um intervalo de variveis.
15.4.2 - Funo MEAN
- Funo que efetua uma mdia aritmtica entre os valores, no
missing, de variveis numricas, para cada registro de dados.
<varivel> = MEAN ( [OF] var1, . . . varn) ;
varivel
Nome at 32 caracteres que armazenar o
resultado.
var1, . . . varn
Nome das variveis numricas que se deseja
efetuar uma mdia.
OF
Opcional; identifica um intervalo de variveis.
82
Ex.37: Funes Estatsticas
LIBNAME T " C:\curso\sas" ;
DATA T.TEMP ;
INFILE " C:\curso\sas\TEMP.DAT";
INPUT (T1-T6)(4.) ;
TEMPSOMA = SUM( OF T1-T6 ) ;
TEMPMED = MEAN( OF T1-T6 ) ;
/* ALTERNATIVA */
TEMPSOMA2=T1+T2+T3+T4+T5+T6;
TMPMED2=(T1+T2+T3+T4+T5+T6)/6;
RUN;
Arquivo: TEMP.DAT
1
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
PROC PRINT DATA=T.TEMP DOUBLE NOOBS ;
RUN ;
The SAS System
15:16 Monday, February 9, 2015
T1
T2
T3
T4
T5
T6
TEMPSOMA
TEMPMED
TEMPSOMA2
TMPMED2
23.5
25.2
24.8
25.7
25.8
22.0
147
24.5000
147
24.5000
18.5
17.4
18.9
18.9
20.5
20.8
115
19.1667
115
19.1667
10.0
12.0
15.0
18.0
12.0
67
13.4000
52
83
15.5 - Funes de Tratamento de Data
15.5.1 - Funo MDY
- Funo que gera uma data SAS, a partir de valores de dia, ms e ano.
<varivel>=MDY(mm, dd, yyyy);
varivel
Nome at 32 caracteres que armazenar o resultado;
mm
Valor numrico que representa o ms;
dd
Valor numrico que representa o dia;
yyyy ou yy Valor numrico que representa o ano.
15.5.2 - Funes DAY, MONTH , YEAR
- Funes que extraem de uma data SAS, o dia, o ms e o ano
respectivamente.
<varivel>=DAY(data sas);
<varivel>=MONTH(data sas);
<varivel>=YEAR(data sas);
varivel
Nome at 32 caracteres que armazenar o resultado;
data
Valor que representa uma data SAS.
15.5.3 - Funes TODAY ou DATE
- Funes que retornam a data atual do sistema, do ambiente de
processamento. No possui argumentos.
<varivel>=TODAY();
<varivel>=DATE();
84
Ex.38: Funes de Tratamento de DATA
DATA ANIVERSARIO;
INFILE "C:\curso\sas\aniversario.txt";
INPUT DIA 1-2 MES 4-5 ANO 7-10;
ANIV=MDY(MES,DIA,ANO);
DIA_SEMANA_NASCIMENTO=WEEKDAY(ANIV);
IDADE_EM_ANOS=INT((TODAY()-ANIV)/365.25);
DIAS_ATE_2000="01jan2000"d - ANIV;
RUN;
Arquivo: ANIVERSARIO.TXT
1
10
TITLE1 "Relatrio de Idades";
PROC PRINT;RUN;
Relatrio de Idades
Obs
DIA
MES
ANO
1
2
3
4
5
10
25
14
8
3
11
4
8
1
3
1976
2000
1934
1967
1955
ANIV
6158
14725
-9271
2564
-1765
DIA_SEMANA_
NASCIMENTO
4
3
3
1
5
15:16 Monday, February 9, 2015
IDADE_
EM_ANOS
38
14
80
48
59
60
DIAS_
ATE_2000
8452
-115
23881
12046
16375
85
4 LABORATRIO
Utilizar as funes do SAS.
1 - A partir dos dados do arquivo gerado no 1 laboratrio, monte um programa que crie um novo arquivo
SAS, temporrio, somente com as pessoas que possuem emprego e com o sobrenome Mendes ou
Silva. Defina novas variveis de acordo com as especificaes abaixo:
Varivel
PNOME
SNOME
CP
DV
SALINT
BONUS
Descrio
Primeiro nome
Sobrenome
Nmero principal do CPF
Dgitos verificadores
Salrio arredondado
Bnus sobre o salrio
SALNOVO
Novo salrio
T_EMP
Tempo de empresa
APOSANOS Idade na aposentadoria
Observao
Parte da varivel NOME depois da vrgula.
Parte da varivel NOME antes da vrgula.
Os 9 primeiros dgitos da varivel CPF.
Os dois ltimos dgitos da varivel CPF.
Arredondar a varivel SALARIO para um valor inteiro.
3,5% do valor da varivel SALARIO arredondado, com
duas casas decimais.
Aumento de 7,58% sobre o valor da varivel SALARIO
arredondado, com duas casas decimais e mltiplo de 5.
O tempo do funcionrio na empresa, em anos, a partir da
varivel DATA ADMISSO.
Com quantos anos possuir quando se aposentar?
OBS: Aposentadoria dada ao se completar 45 anos de
trabalho.
Gere um relatrio para verificar os resultados;
Possveis funes: FIND, SUBSTR, INT, ROUND, YEAR, TODAY|.
2 - A partir dos dados do arquivo do 1 laboratrio, monte um programa que crie um arquivo SAS,
temporrio, somente com as pessoas que possuem emprego. Definir as novas variveis de acordo com as
especificaes abaixo:
Varivel
SALFAM
Descrio
Salrio famlia
SALCOM
Salrio comissionado
SALTOTAL
SALMEDIO
Salrio total
Salrio Mdio
Observao
Para cada filho, acrescentar 5% do salrio, ao salrio:
SALARIO*(1+(FILHOS*0.05))
Cargo de chefia (GERENTE ou DIRETOR), acrescentar
20% do salrio, ao salrio:
SALARIO*1.2
Soma do SALRIO, SALFAM e SALCOM
Mdia do SALRIO, SALFAM e SALCOM
Possveis funes: SUM e MEAN|.
86
16 - COMANDOS DE CONFIGURAO
16.1 - Comando OPTIONS
- Tipo: Comando de declarao;
- Uso: Livre;
- Comando de definio que altera e configura opes de performance, de
impresso, de visualizao do ambiente SAS, de comunicao, etc.
OPTIONS opt1 opt2 . . . optn ;
Algumas opes:
COMPRESS=NO
Opo que especifica a compactao dos dados na gerao de um arquivo
SAS, Data set ( YES ou CHAR, BINARY, NO );
OBS=MAX
Opo que especifica qual ser o ltimo registro a ser processado;
FIRSTOBS=1
Opo que especifica qual ser o primeiro registro a ser processado;
DATE/NODATE
Opo que determina a impresso ou no, da data nos relatrios;
NUMBER/NONUMBER
Opo que determina a impresso ou no, do nmero da pgina;
PAGENO=
Opo que especifica a numerao inicial das paginas de OUTPUT, para
cada execuo;
LINESIZE=
Opo que especifica o tamanho da linha de impresso do relatrio texto
(nmero de colunas). Valores de 65 at 256;
PAGESIZE=
Opo que especifica o tamanho da pagina de impresso do relatrio texto
(nmero de linhas). Valor padro de 24;
REPLACE/NOREPLACE
Opo que determina a sobreposio ou no, dos dados de um arquivo;
SORTSIZE=
Opo que especifica a quantidade de memria que o procedimento SORT
poder utilizar (em bytes). No windows: 256MBytes;
MEMSIZE=
Opo que especifica a quantidade de memria que o sistema SAS poder
utilizar para qualquer processamento. No windows: 2GBytes;
OBS: Para verificar as opes padres, execute o proc step:
PROC OPTIONS; RUN;
87
Ex.39: Comando OPTIONS 1
LIBNAME ARQ "C:\SAS" ;
OPTIONS COMPRESS=YES OBS=100 PS=66 LS=132 NODATE ;
DATA ARQ.OPT ;
SET ARQ.DADOS ;
<comando>
<comando>
. . .
. . .
. . .
;
RUN;
PROC PRINT ;
RUN ;
Ser gerado um arquivo compactado com apenas 100 registros; Ser gerado
um relatrio texto na janela OUTPUT com 66 linhas e 132 colunas por pgina, e sem a
impresso da data no cabealho.
Ex.40: Comando OPTIONS 2
LIBNAME ARQ "C:\ALUNO" ;
OPTIONS SORTSIZE=750M COMPRESS=BINARY PS=60 LS=132;
PROC SORT DATA=ARQ.CADASTRO; BY FUNCAO; RUN;
PROC PRINT DATA=ARQ.CADASTRO ; BY FUNCAO; RUN;
O procedimento SORT poder utilizar at 750Mbytes de memria para
processar; o arquivo ordenado ser compactado no modo binrio e ser gerado um
relatrio com 60 linhas e 132 colunas por pgina, na tela OUTPUT da sesso
Windows.
88
16.2 - Comando LABEL
- Tipo: Comando de declarao;
- Uso: Data Step e Proc Step;
- Comando de definio, utilizado para atribuir rtulos descritivos as
variveis;
- Utilizado para melhorar a aparncia de um relatrio. Os rtulos podem
ter no mximo 256 caracteres;
DATA Step
O LABEL permanente, ser armazenado na
estrutura do arquivo;
PROC Step
O LABEL temporrio, existir apenas para a
execuo do procedimento.
LABEL
<varivel> = "rtulo" . . .
<varivel> = "rtulo" . . .
<varivel> = "rtulo" . . . ;
varivel
Nome da varivel na qual ser associado um rtulo
descritivo.
rtulo
Descrio, at 256 caracteres, que ser associada a
varivel.
89
16.3 - Comando FORMAT
- Tipo: Comando de declarao;
- Uso: Data Step e Proc Step;
- Comando de definio que serve para formatar as variveis e melhorar a
aparncia dos dados num relatrio;
DATA Step
O FORMAT permanente, ser armazenado
na estrutura do arquivo;
PROC Step
O FORMAT temporrio, existir apenas
para a execuo do procedimento.
FORMAT <varivel> <formatow.d> . . .
<varivel> <formatow.d> . . .
<varivel> <formatow.d> . . . ;
varivel
Nome da varivel que ser formatada.
formatow.d Nome especial do formato com o tamanho do campo (w) e,
em casos de formatao numrica, o nmero de casas
decimais (d). Os formatos podem ser criados pelo prprio
usurio ou da biblioteca de formatos do SAS:
COMMAXw.d
Formata com pontos e vrgula;
DDMMYYw.
Formata um campo data com /;
90
Ex.41: Comando LABEL
DATA ROTULO ;
INFILE "C:\curso\sas\ROTULO.DAT";
INPUT NOME $6. @8 ALT 4.1 @13 PES 4.1 ;
LABEL ALT = "ALTURA EM POLEGADAS"
PES = "PESO EM LIBRAS" ;
RUN;
OPTIONS LS=65 NODATE NONUMBER;
TITLE;
PROC PRINT NOOBS SPLIT=" " ;
RUN ;
NOME
ALTURA
EM
POLEGADAS
PESO
EM
LIBRAS
PAULO
MARCIO
SONIA
59.0
57.3
51.3
99.5
83.0
50.5
Ex.42: Comando FORMAT
LIBNAME ARQ "C:\curso\sas";
OPTIONS OBS=10 LS=100 NODATE NONUMBER;
TITLE;
PROC PRINT DATA=ARQ.CADASTRO SPLIT="*" ;
VAR NOME ANIVERSARIO SALARIO;
LABEL NOME="Sobrenome,Nome"
ANIVERSARIO="Data de*Aniversrio"
SALARIO="Salrio*Bruto";
FORMAT ANIVERSARIO DDMMYY10.
SALARIO COMMAX12.2 ;
RUN;
Obs
Sobrenome,Nome
Data de
Aniversrio
1
2
3
4
5
6
7
8
9
10
MARKO,PAULO
MOUA,MARCO
SANTOS,PAULO
GUEDES,PAULO
SONTAS,MARCO
HORTA,PAULO
CERTO,CARLA
PISCO,ROSANE
MALA,ELIANE
APARECIDO,CARLA
18/10/1980
03/07/1969
01/11/1986
11/01/1977
18/07/1979
02/08/1976
12/11/1979
23/02/1977
02/02/1979
15/05/1985
Salrio
Bruto
.
9.988,53
.
3.828,77
5.098,46
3.101,32
3.972,30
3.045,33
.
1.557,69
91
16.4 - Comando ODS
- Tipo: Comando de declarao;
- Uso: Livre;
- Output Delivery System (ODS), um recurso especial para a
manipulao dos resultados gerados pelos procedimentos SAS,
permitindo a escolha de padres de impresso e visualizao, gerao de
arquivos e gerao de documentos.
ODS <padro> [opes] ;
...
ODS <padro> CLOSE ;
Padres mais utilizados:
HTML
PDF
PS
RTF
Gera os resultados no padro html;
Gera os resultados no padro Adobe;
Gera os resultados no padro PostScript;
Gera os resultados no padro Rich Text;
file=
Determina a localizao e o nome do arquivo gerado com o
padro.
style=
Somente para o padro HTML: default, statdoc, minimal,
education, festival, journal, ocean, normal, sasweb,
science, seaside, theme, . . ., etc
opes:
OBS: Todo relatrio criado dentro de uma estrutura ODS (ODS
<padro>/ODS CLOSE), sair no padro especificado. Cada padro de
visualizao possui suas prprias opes;
92
Ex.43: Comando ODS
LIBNAME ARQ "C:\curso\sas";
ODS HTML FILE="C:\temp\teste.html" STYLE=statdoc;
OPTIONS OBS=10;
PROC PRINT DATA=ARQ.CADASTRO SPLIT="*" ;
VAR NOME ANIVERSARIO SALARIO;
LABEL NOME="Sobrenome,Nome"
ANIVERSARIO="Data de*Aniversrio"
SALARIO="Salrio*Bruto";
FORMAT ANIVERSARIO DDMMYY10.
SALARIO COMMAX12.2 ;
RUN;
ODS HTML CLOSE;
Analise Contbil
Obs
Sobrenome,Nome
Data de
Aniversrio
Salrio
Bruto
MARKO,PAULO
18/10/1980
MOUA,MARCO
03/07/1969
9.988,53
SANTOS,PAULO
01/11/1986
GUEDES,PAULO
11/01/1977
3.828,77
SONTAS,MARCO
18/07/1979
5.098,46
HORTA,PAULO
02/08/1976
3.101,32
CERTO,CARLA
12/11/1979
3.972,30
PISCO,ROSANE
23/02/1977
3.045,33
MALA,ELIANE
02/02/1979
APARECIDO,CARLA
15/05/1985
1.557,69
10
93
5 LABORATRIO
Configurar a aparncia de relatrios
1 - Acrescente ao programa criado no 1 exerccio do laboratrio anterior, rtulos descritivos para todas as
variveis relacionadas abaixo, e formatos adequados para os valores numricos. Defina essas caractersticas
de maneira permanente. Gere um relatrio, sem ttulos, rodaps, datas e numerao de pgina, no formato
HTML.
Rtulos:
pnome
snome
salint
bonus
salnovo
t_emp
apos
aposanos
dv
cpf
salario
aniversario
admissao
Primeiro Nome
Sobrenome
Valor do Salrio (INTEIRO)
Bonus (3,5% do Salrio)
Novo Salrio (Aumento de 7,58%)
Tempo do Funcionrio na Empresa (Em anos)
Qual o ano da aposentadoria?
Quantos anos ter na aposentadoria?
Dgito Verificador do CPF
CPF
Salrio Original
Data de Aniversrio
Data de Admisso
Formatos:
aniversario, admissao
salario, salint, bonus, salnovo
Formato de datas no padro dd/mm/yyy
Formato numrico com a vrgula separando as decimais
2 - Acrescente ao programa criado no 2 exerccio do laboratrio anterior, rtulos descritivos para todas as
variveis relacionadas abaixo, e formatos adequados para os valores numricos. Defina essas caractersticas
de maneira temporria, apenas para o relatrio do exerccio. Gere um relatrio, sem ttulos, rodaps e
datas, no formato PDF, somente com as pessoas que possuam emprego.
Rtulos:
saltotal
salmedio
nome
salfam
salcom
filhos
salario
funo
Salrio Total
Salrio Mdio
Nome
Salrio Famlia
Salrio com Comisso
Nmero de Filhos
Salrio
Funo
OBS: Quebre os rtulos na posio que achar melhor, para o relatrio no ficar muito extenso na largura.
Formatos:
salario, salfam, salcom, saltotal, salmedio
Formato numrico com a vrgula separando as
decimais.
94
17 - PROCEDIMENTOS ESTATSTICOS BSICOS
17.1 - Procedimento MEANS
Procedimento que produz relatrios com estatsticas descritivas simples,
somente para variveis numricas. O relatrio gerado possui uma formatao
padro que, a princpio, possui apenas algumas estatsticas: Frequncia (N),
Mdia (MEAN), Desvio Padro (STD), valor mximo (MAX) e o valor mnimo
(MIN).
PROC MEANS [opes] [estatsticas];
CLASS <lista de variveis> ;
VAR <lista de variveis> ;
BY <lista de variveis> ;
RUN;
opes:
DATA=
MAXDEC=
estatsticas:
mean sum max min median n mode std etc
Nome do arquivo SAS para ser processado;
Especifica o nmero de casas decimais (mximo 8);
CLASS
Especifica uma ou mais variveis que possibilitam o agrupamento
de dados. OBS: No necessrio executar um PROC SORT,
antes;
VAR
Especifica as variveis numricas que sero analisadas pelo
procedimento;
BY
Especifica uma ou mais variveis que possibilitam o agrupamento
de dados. OBS: necessrio executar um PROC SORT, antes;
95
Ex.44: Procedimento MEANS (Padro)
LIBNAME ARQ "C:\CURSO\SAS" ;
PROC MEANS DATA=ARQ.CADASTRO ;
RUN ;
The SAS System
08:55 Tuesday, February 24, 2015
The MEANS Procedure
Variable
N
Mean
Std Dev
Minimum
Maximum
idade
550
26.3618182
7.4751560
20.0000000
78.0000000
peso
550
79.3567273
12.6820018
41.9000000
111.5000000
altura
550
1.8381273
0.1027400
1.6000000
2.0600000
aniversario
550
7357.50
2737.25
-11481.00
9846.00
filhos
550
2.5200000
1.4531418
0
5.0000000
admissao
434
15682.62
1112.21
2345.00
16068.00
salario
434
3332.21
2693.34
1500.73
25377.28
Ex.45: Procedimento MEANS (Com Opes)
LIBNAME ARQ "C:\CURSO\SAS" ;
OPTIONS NODATE NONUMBER;
PROC MEANS DATA=ARQ.CADASTRO MAXDEC=2 MIN MAX MEAN MEDIAN SUM N ;
VAR IDADE PESO ALTURA SALARIO ;
RUN ;
The SAS System
The MEANS Procedure
Variable
Minimum
Maximum
Mean
Median
Sum
N
idade
20.00
78.00
26.36
25.00
14499.00
550
peso
41.90
111.50
79.36
78.50
43646.20
550
altura
1.60
2.06
1.84
1.84
1010.97
550
salario
1500.73
25377.28
3332.21
3080.41
1446180.53
434
96
Ex.46: Procedimento MEANS (Comando CLASS)
LIBNAME ARQ "C:\CURSO\SAS" ;
OPTIONS NODATE NONUMBER ;
PROC MEANS DATA=ARQ.CADASTRO MAXDEC=2 SUM MEAN ;
CLASS EMPRESA SEXO ;
VAR SALARIO ;
RUN ;
The SAS System
The MEANS Procedure
Analysis Variable : salario
N
empresa
sexo
Obs
Sum
Mean
ATLAS S.A.
F
58
179480.78
3094.50
MALTA LTDA
PARIS INSTITUTO
39
117757.21
3019.42
101
377653.28
3739.14
73
293684.98
4023.08
112
337886.16
3016.84
M
51
139718.12
2739.57
97
Ex.47: Procedimento MEANS (Comando BY)
LIBNAME ARQ "C:\CURSO\SAS" ;
OPTIONS NODATE NONUMBER LS=100 PS=200;
PROC SORT DATA= ARQ.CADASTRO ; BY EMPRESA SEXO ;
PROC MEANS DATA=ARQ.CADASTRO MAXDEC=2 SUM MEAN ;
WHERE SALARIO IS NOT MISSING ;
BY EMPRESA SEXO ;
VAR SALARIO ;
RUN ;
The SAS System
------------------------------------ empresa=ATLAS S.A. sexo=F ------------------------------------The MEANS Procedure
Analysis Variable : salario
Sum
Mean
179480.78
3094.50
------------------------------------ empresa=ATLAS S.A. sexo=M ------------------------------------Analysis Variable : salario
Sum
Mean
117757.21
3019.42
------------------------------------ empresa=MALTA LTDA sexo=F ------------------------------------Analysis Variable : salario
Sum
Mean
377653.28
3739.14
------------------------------------ empresa=MALTA LTDA sexo=M ------------------------------------Analysis Variable : salario
Sum
Mean
293684.98
4023.08
---------------------------------- empresa=PARIS INSTITUTO sexo=F ---------------------------------Analysis Variable : salario
Sum
Mean
337886.16
3016.84
---------------------------------- empresa=PARIS INSTITUTO sexo=M ---------------------------------Analysis Variable : salario
Sum
Mean
139718.12
2739.57
98
17.2 - Procedimento FREQ
Procedimento que produz tabelas simples e tabelas cruzadas, da
frequncia de uma ou vrias variveis numricas e caracteres.
PROC FREQ [opes1] ;
BY <lista de variveis> ;
TABLES <variveis> / [opes2] ;
opes1:
DATA=
NLEVELS
BY
Especifica uma ou mais variveis que possibilitam o agrupamento de
dados. OBS: necessrio executar um PROC SORT, antes;
Nome de um arquivo SAS;
Indica o nmero de valores distintos das variveis que esto sendo
analisadas;
TABLES Especifica as variveis e a regra de formao da tabela de frequncia.
Utiliza-se o caractere * para cruzar as variveis.
Ex.: (tables a*b y*x peso*altura sexo*peso*altura).
opes2:
LIST
Os resultados sairo num formato listado, ao
invs de uma tabela cruzada;
MISSING
Inclui os valores "missing" na tabela;
NOCUM
No gera as colunas de frequncia e percentual
acumulativo;
NOPERCENT
No gera as colunas com percentuais.
NOFREQ
No gera a coluna de frequncia.
99
Ex.48: Procedimento FREQ (Sem Cruzamento)
LIBNAME ARQ "C:\CURSO\SAS" ;
PROC FREQ DATA=ARQ.CADASTRO NLEVELS COMPRESS;
TABLES SEXO IDADE ;
RUN ;
The SAS System
The FREQ Procedure
Number of Variable Levels
Variable
Levels
sexo
2
idade
31
Cumulative
Cumulative
sexo
Frequency
Percent
Frequency
Percent
F
350
63.64
350
63.64
M
200
36.36
550
100.00
Cumulative
Cumulative
idade
Frequency
Percent
Frequency
Percent
20
39
7.09
39
7.09
21
53
9.64
92
16.73
22
41
7.45
133
24.18
23
49
8.91
182
33.09
24
47
8.55
229
41.64
25
51
9.27
280
50.91
26
45
8.18
325
59.09
27
62
11.27
387
70.36
28
53
9.64
440
80.00
29
44
8.00
484
88.00
30
44
8.00
528
96.00
35
1
0.18
529
96.18
36
1
0.18
530
96.36
37
1
0.18
531
96.55
38
1
0.18
532
96.73
41
1
0.18
533
96.91
45
2
0.36
535
97.27
49
1
0.18
536
97.45
50
1
0.18
537
97.64
54
1
0.18
538
97.82
57
1
0.18
539
98.00
58
1
0.18
540
98.18
61
1
0.18
541
98.36
67
2
0.36
543
98.73
68
1
0.18
544
98.91
69
1
0.18
545
99.09
71
1
0.18
546
99.27
73
1
0.18
547
99.45
74
1
0.18
548
99.64
77
1
0.18
549
99.82
78
1
0.18
550
100.00
100
Ex.49: Procedimento FREQ (Com Cruzamento)
LIBNAME ARQ "C:\CURSO\SAS" ;
PROC FREQ DATA=ARQ.CADASTRO ;
TABLES SEXO*EMPRESA ;
RUN ;
The SAS System
The FREQ Procedure
Table of sexo by empresa
sexo
empresa
Frequency
Percent
Row Pct
Col Pct ATLAS S.MALTA LTPARIS IN Total
A.
DA
STITUTO
58
101
112
271
13.36 23.27 25.81 62.44
21.40 37.27 41.33
59.79 58.05 68.71
39
73
51
163
8.99 16.82 11.75 37.56
23.93 44.79 31.29
40.21 41.95 31.29
Total
97
174
163
434
22.35
40.09
37.56
100.00
Frequency Missing = 116
101
Ex.50: Procedimento FREQ (Cruzamento Listado)
LIBNAME ARQ "C:\CURSO\SAS";
PROC FREQ DATA=ARQ.CADASTRO ;
TABLES SEXO*EMPRESA / LIST;
RUN ;
The SAS System
The FREQ Procedure
Cumulative
Cumulative
sexo
empresa
Frequency
Percent
Frequency
Percent
F
ATLAS S.A.
58
13.36
58
13.36
F
MALTA LTDA
101
23.27
159
36.64
F
PARIS INSTITUTO
112
25.81
271
62.44
M
ATLAS S.A.
39
8.99
310
71.43
M
MALTA LTDA
73
16.82
383
88.25
M
PARIS INSTITUTO
51
11.75
434
100.00
Frequency Missing = 116
Ex.51: Procedimento FREQ (Opes do comando TABLE)
LIBNAME ARQ "C:\CURSO\SAS" ;
OPTIONS NODATE NUMBER PAGENO=1;
PROC FREQ DATA=ARQ.CADASTRO ;
TABLE SEXO*EMPRESA / MISSING NOCUM NOPERCENT FORMAT=commax6.2;
RUN;
The SAS System
The FREQ Procedure
Table of sexo by empresa
sexo
empresa
Frequency
Row Pct
Col Pct
ATLAS S.MALTA LTPARIS IN Total
A.
DA
STITUTO
F
79,00 58,00 101,00 112,00 350,00
22.57 16.57 28.86 32.00
68.10 59.79 58.05 68.71
M
37,00 39,00 73,00 51,00 200,00
18.50 19.50 36.50 25.50
31.90 40.21 41.95 31.29
Total
116,00
97,00
174,00
163,00
550,00
102
17.3 - Procedimento TABULATE
O procedimento TABULATE monta relatrios com estatsticas descritivas num
formato tabular.
PROC TABULATE [opes1] ;
CLASS <variveis> ;
VAR <variveis> ;
BY <variveis> ;
TABLE <pgina , linha , coluna> / [opes2] ;
opes1
DATA=
FORMAT=
CLASS
Especifica uma ou mais variveis, numricas ou caracteres, que possibilitam o
agrupamento de dados, e que sero utilizadas como variveis classificatrias no
comando TABLE. OBS: No necessrio executar um PROC SORT, antes;
VAR
Especifica somente variveis numricas que iro participar de uma anlise
estatstica, e que sero utilizadas no comando TABLE;
BY
Especifica uma ou mais variveis que possibilitam o agrupamento de dados,
com quebra da tabela. OBS: necessrio executar um PROC SORT, antes;
TABLE
Especifica a regra de formao da tabela:
pgina
linha
coluna
opes2
OBS:
Nome do arquivo SAS;
Formata todos os valores de todas as clulas da tabela;
Especifica uma varivel ou expresso que ir definir a regra de
formao das pginas;
Especifica uma varivel ou expresso que ir definir a regra de
formao das linhas da tabela;
Especifica uma varivel ou expresso que ir definir a regra de
formao das colunas da tabela;
CONDENSE Especifica que seja gerado o mximo de tabelas
possveis em cada pgina de relatrio;
BOX=
Especifica o texto que aparecer na caixa vazia da
tabela;
Regras de formao:
elemento*elemento cruzamento
elemento elemento concatenao
(elemento elemento) agrupamento
Elementos: variveis, funes estatsticas (mean, sum, max, min, median, n,
mode, std, pctn, pctsum, etc), ALL (totalizador).
Todos os elementos de uma dimenso cruzam com os elementos de outra dimenso.
103
ATLAS S.A.
MALTA LTDA
PARIS INSTITUTO
Dimenso COLUNA
Dimenso LINHA
PARIS INSTITUTO
Mdia de
N
%
Salrio
Sexo
Funo
F
GERENTE
1 0,18
19.303,66
PROGRAMADOR
111 20,18
2.870,11
M
ANALISTA
1 0,18
9.548,36
PROGRAMADOR
50 9,09
2.603,40
Total
163 29,64
2.930,09
104
Ex.52: Procedimento Tabulate (Concatenao de Elementos)
PROC TABULATE DATA=ARQ.CADASTRO ;
CLASS SEXO ; Varivel de agrupamento.
VAR IDADE PESO; Variveis de anlise (para clculo).
TABLE SEXO , (IDADE PESO) * MEAN / BOX="TABELA 1";
RUN ;
Estatstica que ser utilizada para anlise
dos dados,
anlise.
Cruzamento entre elementos
das dimenses.
cruzando
com
as
variveis
de
Concatenao dos resultados da anlise estatstica
das variveis de anlise.
The SAS System
TABELA 1
idade
peso
Mean
Mean
sexo
26.33
76.48
26.42
84.40
Ex.53: Procedimento Tabulate (Cruzamento de Elementos)
PROC TABULATE DATA=ARQ.CADASTRO FORMAT=COMMAX8.2;
CLASS SEXO EMPRESA ;
VAR PESO;
TABLE SEXO, EMPRESA*PESO*MEAN;
RUN ;
The SAS System
empresa
PARIS
ATLAS MALTA INSTITU-
S.A. LTDA
TO
peso peso peso
Mean Mean Mean
sexo
77,67
77,44
75,42
83,87
84,24
83,77
105
Ex.54: Procedimento Tabulate (Trs Dimenses 1)
PROC TABULATE DATA=ARQ.CADASTRO ;
CLASS SEXO EMPRESA ;
VAR ALTURA;
TABLE SEXO
/* Dimenso Pgina */
,
EMPRESA ALL
/* Dimenso Linha */
,
ALTURA * MEAN /* Dimenso Coluna */
/ CONDENSE BOX=_PAGE_;
RUN ;
The SAS System
sexo F
altura
Mean
empresa
ATLAS S.A.
1.83
MALTA LTDA
1.81
PARIS INSTITUTO
1.78
All
1.80
sexo M
altura
Mean
empresa
ATLAS S.A.
1.89
MALTA LTDA
1.91
PARIS INSTITUTO
1.90
All
1.90
106
Ex.55: Procedimento Tabulate (Rotulao de Elementos: = )
PROC TABULATE DATA=ARQ.CADASTRO ;
CLASS filhos e_civil sexo;
TABLE sexo*e_civil*filhos all="Total", n pctn;
RUN ;
Permite inserir um label (rtulo) para o
elemento.
The SAS System
PctN
sexo
e_civilfilhos
F
1
1
31.00
5.64
72.00
13.09
75.00
13.64
38.00
6.91
2
1
38.00
6.91
28.00
5.09
41.00
7.45
3
0
27.00
4.91
M
1
1
22.00
4.00
40.00
7.27
48.00
8.73
11.00
2.00
2
1
24.00
4.36
25.00
4.55
13.00
2.36
3
0
17.00
3.09
Total
550.00
100.00
107
Ex.56: Procedimento Tabulate (Formatao de Elementos: *f=)
TITLE1 "Relatrio com a Mdia de Salrio";
TITLE2 "e a Distribuio Percentual dos Funcionrios por Empresa";
OPTIONS LS=130;
PROC TABULATE DATA=ARQ.CADASTRO MISSING;
CLASS SEXO EMPRESA;
VAR SALARIO ;
TABLE SEXO="Sexo"*EMPRESA="Empresa"
ALL="Total"
,
=
100
N
PCTN="%"
SALARIO=""*(MEAN="Mdia de Salrio" MAX="Salrio Mximo")*f=commax12.2;
RUN ;
Permite formatar os dados de linhas e
colunas, especificamente, para um ou
mais elementos.
Relatrio com a Mdia de Salrio
e a Distribuio Percentual dos Funcionrios por Empresa
Mdia de Salrio
%
Salrio
Mximo
Sexo
Empresa
79.00
14.36
.
.
ATLAS S.A.
58.00
10.55
3.094,50
17.260,69
MALTA LTDA
101.00
18.36
3.739,14
20.336,22
PARIS
INSTITUTO
112.00
20.36
3.016,84
19.303,66
37.00
6.73
.
.
ATLAS S.A.
39.00
7.09
3.019,42
17.414,14
MALTA LTDA
73.00
13.27
4.023,08
25.377,28
PARIS
INSTITUTO
51.00
9.27
2.739,57
9.548,36
Total
550.00
100.00
3.332,21
25.377,28
numerador
Total Geral
denominador
PERGUNTA:
1 - Que tal gerar uma tabela com um subtotal por sexo...???
2 - E um percentual em relao ao subtotal por sexo...???
RESPOSTA:
1 - Ser necessrio acrescentar, regra do comando TABLE, mais um elemento ALL. Aonde???
2 - Ser necessrio alterar o denominador da estatstica PCTN. Como???
108
Ex.57: Procedimento Tabulate (Elementos ALL e PCTN)
ods html file="c:\curso\sas\teste.html" style=minimal;
TITLE1 "Relatrio com a Mdia de Salrio";
TITLE2 "e a Distribuio Percentual dos Funcionrios por Empresa";
A
Utilizao
correta
dos
PROC TABULATE DATA=ARQ.CADASTRO MISSING;
parntesis permite o cruzamento
CLASS SEXO EMPRESA;
com grupos de elementos e criar
o subtotal.
VAR SALARIO ;
TABLE SEXO="Sexo"*(EMPRESA="Empresa" ALL="Subtotal") ALL="Total"
,
N*f=6.
O denominador alterado quando se
especifica elementos da tabela, colocados
PCTN="%"*f=commax6.2
PCTN < EMPRESA ALL > ="% Sexo"*f=commax6.2
entre < e > na estatstica PCTN. Neste
caso so, exatamente, os mesmos elementos
que criaram o subtotal.
que criam o subtotal,
SALARIO=""*(MEAN="Mdia de Salrio" MAX="Salrio Mximo")*f=commax12.2;
RUN ;
ods html close;
Relatrio com a Mdia de Salrio
e a Distribuio Percentual dos Funcionrios por Empresa
Sexo
% Sexo
Mdia de Salrio
Salrio Mximo
Empresa
79
14,36
22,57
ATLAS S.A.
58
10,55
16,57
3.094,50
17.260,69
MALTA LTDA
101
18,36
28,86
3.739,14
20.336,22
PARIS INSTITUTO
112
20,36
32,00
3.016,84
19.303,66
Subtotal
350
63,64
100,00
3.302,66
20.336,22
Empresa
37
6,73
18,50
ATLAS S.A.
39
7,09
19,50
3.019,42
17.414,14
MALTA LTDA
73
13,27
36,50
4.023,08
25.377,28
PARIS INSTITUTO
51
9,27
25,50
2.739,57
9.548,36
200
36,36
100,00
3.381,35
25.377,28
550
100,00
100,00
3.332,21
25.377,28
Subtotal
Total
109
Ex.58: Procedimento Tabulate (Trs Dimenses 2)
OPTIONS NONUMBER LS=110;
PROC TABULATE DATA=ARQ.CADASTRO MISSING;
CLASS SEXO EMPRESA FUNCAO;
VAR SALARIO ;
TABLE EMPRESA="" , SEXO="Sexo"*FUNCAO="Funo" ALL="Total" ,
N*f=6. PCTN="%"*f=commax6.2 SALARIO="Salrio"*MEAN="Mdia de Salrio"*f=commax12.2
/ CONDENSE;
RUN ;
The SAS System
Salrio
Mdia de
N
%
Salrio
Sexo
Funo
F
DESEMPREGADO
79 14,36
.
M
DESEMPREGADO
37 6,73
.
Total
116 21,09
.
ATLAS S.A.
Salrio
Mdia de
N
%
Salrio
Sexo
Funo
F
ANALISTA
4 0,73
6.272,29
GERENTE
1 0,18
17.260,69
PROGRAMADOR
53 9,64
2.587,38
M
GERENTE
2 0,36
14.121,42
PROGRAMADOR
37 6,73
2.419,31
Total
97 17,64
3.064,31
MALTA LTDA
Salrio
Mdia de
N
%
Salrio
Sexo
Funo
F
ANALISTA
3 0,55
13.694,79
GERENTE
2 0,36
16.706,07
PROGRAMADOR
96 17,45
3.157,88
M
ANALISTA
1 0,18
9.988,53
DIRETOR
1 0,18
25.377,28
GERENTE
2 0,36
20.534,46
PROGRAMADOR
69 12,55
3.148,55
Total
174 31,64
3.858,27
PARIS INSTITUTO
Salrio
Mdia de
N
%
Salrio
Sexo
Funo
F
GERENTE
1 0,18
19.303,66
PROGRAMADOR
111 20,18
2.870,11
M
ANALISTA
1 0,18
9.548,36
PROGRAMADOR
50 9,09
2.603,40
Total
163 29,64
2.930,09
110
18 - FORMATAO ESPECIAL
18.1 - Procedimento FORMAT
O procedimento FORMAT permite que o usurio crie os seus prprios formatos de leitura e
impresso, para variveis numricas e caracteres.
PROC FORMAT ;
VALUE <nome> [( opes )]
<intervalo> = "<descrio>" ;
VALUE
Comando que define um formato diferente para os valores de uma
varivel numrica ou caractere.
nome
-Nome do formato com at 32 caracteres;
-Nomes de formatos que sero aplicados em variveis
caracteres, obrigatoriamente, devero iniciar com $;
-Nomes de formato no podem terminar com nmeros.
intervalo -Especifica um valor, ou intervalos de valores, que uma varivel
poder assumir durante a formatao.
-Valores ou intervalos de valores de variveis caracteres devero
vir entre aspas.
-Parmetros especiais so utilizados para definir limites de
intervalos:
LOW
HIGH
OTHER
<
Menor valor encontrado;
Maior valor encontrado;
Qualquer outro valor no identificado;
No inclui o valor do intervalo.
descrio -Valor, no qual a varivel formatada, assumir no momento de
sua utilizao;
- No mximo 32.767 caracteres, entre aspas;
111
Ex.59: Procedimento FORMAT
OPTIONS PS=30 NODATE NONUMBER;
PROC FORMAT ;
VALUE $EC
VALUE ALT
"1"="SOLTEIRO"
"2"="CASADO"
"3"="SEPARADO"
OTHER="???"
;
LOW-<1.50="At 1,50"
1.50-<1.70="De 1,50 at 1,70"
1.70-HIGH="Mais de 1,70"
;
RUN;
PROC FREQ DATA=ARQ.CADASTRO
FORMAT E_CIVIL $EC.
ALTURA ALT. ;
TABLE E_CIVIL ALTURA;
RUN ;
The SAS System
The FREQ Procedure
Cumulative
Cumulative
e_civil
Frequency
Percent
Frequency
Percent
SOLTEIRO
337
61.27
337
61.27
CASADO
169
30.73
506
92.00
SEPARADO
44
8.00
550
100.00
Cumulative
Cumulative
altura
Frequency
Percent
Frequency
Percent
At 1,50
6
1.09
6
1.09
De 1,50 at 1,70
38
6.91
44
8.00
Mais de 1,70
506
92.00
550
100.00
112
6 LABORATRIO
Utilizao dos procedimentos estatsticos bsicos.
Utilizando o arquivo SAS gerado no 1 LABORATRIO:
1 - Gere um relatrio com a mdia, o valor mximo, o valor mnimo e o desvio padro das variveis
PESO e ALTURA, classificados por SEXO e com apresentao dos resultados com duas casas decimais.
2 - Gere um relatrio apenas coma a mdia e somatrio de todas as variveis numricas ordenados por
EMPRESA.
3 - Gere um relatrio com as tabelas de frequncia de SEXO, IDADE, ESTADO CIVIL, FILHOS,
EMPRESA e FUNCAO.
4 - Gere um relatrio com uma tabela de frequncia de SEXO versus IDADE.
5 - Gere um relatrio com duas tabelas de frequncia de ESTADO CIVIL versus FILHOS e SEXO
versus EMPRESA na mesma PROC.
6 - Utilizando o procedimento TABULATE, crie uma tabela que apresente a mdia das variveis IDADE e
PESO, classificadas pela varivel SEXO.
- A varivel SEXO, dever formar as linhas;
- As variveis IDADE e PESO, devero formar as colunas;
- Dever ser utilizada a opo MEAN para formar as colunas;
7 - Utilizando o procedimento TABULATE, crie uma tabela que apresente a mdia e o somatrio da
varivel SALARIO, classificados por SEXO e EMPRESA.
- A expresso SEXO versus EMPRESA dever formar as linhas;
- A varivel SALARIO dever formar as colunas;
- Devero ser utilizadas as opes MEAN e SUM para formar as colunas
- Tamanho da pgina de 55 linhas por 80 colunas;
8 - Acrescente a tabela do relatrio anterior:
- Um totalizador na linha, para criar um total geral. Adicionar o elemento ALL;
- Um subtotal por EMPRESA. Adicionar mais um elemento ALL;
- Rotule todos os elementos: variveis, estatsticas e totalizadores;
- Formate os resultados numricos com pontos, vrgula e duas decimais;
- Ttulo: Apresentao do Salrio por Sexo e Empresa;
- Sem a data, e a paginao iniciando do 1;
- Gere a tabela no padro HTML e PDF.
113
9 - Criar um programa que gere formatos especiais para os valores das variveis: IDADE e SALARIO .
Criar rtulos para varivel IDADE:
15-25 = "At a 25 anos"
26-50 = "26 a 50 anos"
51-HIGH = "Mais de 50 anos"
Criar faixas para varivel SALARIO:
do menor at 2000, no incluso = "Iniciante"
de 2000 at 4000, no incluso = "Junior"
de 4000 at 7000, no incluso = "Senior"
de7000 at 10000, no incluso = "Gerente"
acima de 10000, no incluso = "Diretor"
missing=Desempregado;
10 Utilizando o procedimento TABULATE, crie uma tabela que mostre a classificao das pessoas com
relao a EMPRESA, IDADE e SALARIO. Utilize o formato especial definido no item anterior, para
IDADE e SALARIO.
- As variveis, EMPRESA versus SALARIO, devero formar as linhas;
- A varivel IDADE, dever formar as colunas;
- Dever ser utilizada a opo N nas colunas para contar o nmero de pessoas;
- Adicione um totalizador na dimenso coluna;
114
19 - COMBINAO DE ARQUIVOS SAS
19.1 - Concatenao de Arquivos
Concatenao a unio sem critrios, de dois ou mais arquivos SAS, um
aps o outro, originando um nico arquivo. Utiliza-se o comando SET.
SET <arquivo1> <arquivo2> . . . <arquivon> ;
ARQ1
ARQ2
DATA ARQ3;
SET ARQ1 ARQ2;
RUN;
ARQ3
ARQ1
ARQ2
115
Ex.60: Concatenao de Arquivos
LIBNAME IN "C:\CURSO\SAS" ;
DATA IN.ARQ1 ;
INFILE "C:\CURSO\SAS\ARQ1.TXT" ;
INPUT NOME $ 1-6 @8 CPF $11. ;
RUN ;
ARQ1.TXT
01
02
03
04
05
06
M
S
P
C
A
A
A
E
R
N
U
L
C
D
L
S
I
R
A
O
O
A
07
08
09
10
11
12
13
14
15
16
17
18
8
2
4
8
1
3
5
5
8
2
6
8
1
3
3
5
8
2
2
4
1
3
1
3
8
2
7
4
1
3
8
3
8
2
9
2
1
3
5
1
0
0
5
1
DATA IN.ARQ2 ;
INFILE "C:\CURSO\SAS\ARQ2.TXT";
INPUT CPF $ 1-11 SALARIO COMMAX8.2 ;
RUN ;
ARQ2.TXT
01
02
03
04
05
06
07
08
09
10
11
8
2
4
8
1
3
5
5
8
2
6
8
1
3
3
5
8
2
2
4
1
3
1
3
8
2
7
4
1
3
8
3
8
2
9
2
1
3
5
1
0
0
5
1
12
13
1
1
14
15
16
17
18
19
20
8
0
6
1
7
5
4
6
6
6
3
7
5
7
2
8
,
,
,
,
5
4
1
8
5
0
0
9
DATA IN.CONCAT ;
SET IN.ARQ1 IN.ARQ2 ;
RUN;
PROC PRINT DATA=IN.CONCAT ;
RUN ;
The SAS System
Obs
NOME
CPF
SALARIO
1
2
3
4
5
6
7
8
MARCIO
SANDRA
PAULA
CELSO
81818181810
23232323230
45632178955
85854343211
81818181810
23232323230
45632178955
85854343211
.
.
.
.
8765.5
10567.4
6432.1
11678.8
116
19.2 - Combinao Ordenada de Arquivos ( Match-Merging )
Combinao ordenada a unio de dois ou mais arquivos SAS em um
nico arquivo, combinado e ordenado por uma ou mais variveis comum. Os
arquivos devero estar ordenados, antes do "Match-Merging", pela varivel
comum.
MERGE <arquivo1> . . . <arquivon> ;
BY <varivel comum> ;
ARQ1
ARQ2
PROC SORT DATA=ARQ1; BY <varivel comum>;RUN;
PROC SORT DATA=ARQ2; BY <varivel comum>;RUN;
DATA ARQ3 ;
MERGE ARQ1 ARQ2 ;
BY <varivel comum>;
RUN;
ARQ3
ARQ1
ARQ2
117
Ex.61: Combinao de Arquivos
LIBNAME IN "C:\CURSO\SAS" ;
PROC SORT DATA=IN.ARQ1 ; BY CPF ;
PROC SORT DATA=IN.ARQ2 ; BY CPF ;
DATA IN.ORD ;
MERGE IN.ARQ1 IN.ARQ2 ;
BY CPF ;
RUN;
PROC PRINT DATA=IN.ORD ;
RUN ;
The SAS System
Obs
NOME
CPF
SALARIO
1
2
3
4
SANDRA
PAULA
MARCIO
CELSO
23232323230
45632178955
81818181810
85854343211
10567.4
6432.1
8765.5
11678.8
118
7 LABORATRIO
Utilizao da combinao de arquivos SAS
1 - Monte um programa que gere um novo arquivo SAS (JUSTA) que ser a justaposio
ordenada dos dados dos arquivos: PESSOAL e TRABALHO por uma varivel em comum,
o CPF. Gere um relatrio com os dados do arquivo JUSTA para visualizar os resultados.
(Utilize os comandos DATA, MERGE e BY)
OBS: Os arquivos devem estar ordenados pela varivel comum.
119
20 Dados Microsoft EXCEL
O SAS possui meios para importar e exportar dados de/para o EXCEL da Microsoft. necessrio o
licenciamento do produto SAS/Access Interface to PC Files para permitir ativar esse recurso.
20.1 - Modo Assistente: Import Wizard ou Export Wizard
A partir do menu principal do SAS:
File Import Data ... ou Export Data ...
Uma boa e genrica opo:
Microsoft Excel 5 or 95 Workbook(*.xls)
Next >
120
Localize e selecione o arquivo com extenso .xls
Options...
O preenchimento automtico nessa janela. Se for necessrio, e existir mais de uma planilha no arquivo
xls, especificar a planilha e o intervalo de colunas para a importao. Importante! Assinalar que a
primeira linha da planilha possui o nome dos campos.
OK
Next >
Informar o nome do arquivo SAS que ir receber os dados importados do EXCEL; nome da biblioteca,
nome do arquivo.
Next >
121
O modo assistente pode criar um programa SAS, que exatamente a utilizao do procedimento IMPORT.
Muito til para futuras execues, bastando alterar o que for necessrio.
Informe um nome qualquer para armazenar o programa e assinale, se desejar, para sobrepor o
arquivo programa, caso j exista. O programa ser salvo na pasta do usurio do Windows, indicado
no rodap da janela SAS. Se desejar outro local, basta indic-lo junto com o nome do programa.
Finish
Verifique, na janela log, se a importao ocorreu com sucesso.
NOTE: WORK.TESTE data set was successfully created.
NOTE: The data set WORK.TESTE has 43 observations and 18 variables.
122
20.2 - Modo Programao: PROC IMPORT ou PROC EXPORT
Ex.62: Procedimento IMPORT
PROC IMPORT OUT= WORK.TESTE
DATAFILE= "C:\curso\sas\cadastro.xls"
DBMS=EXCEL5 REPLACE;
SHEET="Sheet1";
RANGE="<ENTIRE SHEET>";
GETNAMES=YES;
RUN;
NOTE: WORK.TESTE data set was successfully created.
NOTE: The data set WORK.TESTE has 43 observations and 18 variables.
Ex.63: Procedimento EXPORT
LIBNAME ARQ "C:\curso\sas";
PROC EXPORT DATA= ARQ.CADASTRO
OUTFILE= "C:\curso\sas\cad.xls"
DBMS=EXCEL5 REPLACE;
RUN;
NOTE: Load completed. Examine statistics below.
NOTE: Inserted (550) obs into cad.xls.
NOTE: Rejected (0) insert attempts see the log for details.
NOTE: "C:\curso\sas\cad.xls" file was successfully created.
123
20.3 - Principais problemas
1 - Incompatibilidade de sistema de representao de dados (32bits ou 64bits)
Sistema Operacional
32bits
64bits
64bits
64bits
64bits
Software SAS
32bits
32bits
64bits
32bits
64bits
Software EXCEL
32bits
32bits
32bits
64bits
64bits
OK
OK
ERRO
ERRO
OK
NOTE: WORK.TESTE data set was successfully created.
NOTE: The data set WORK.TESTE has 43 observations and 18 variables.
ERROR: Connect: Classe no registrada
ERROR: Error in the LIBNAME statement.
NOTE: Import Cancelled.
2 - Verses do Microsoft Excel.
O SAS importa/exporta alguns padres/verses de arquivos EXCEL:
Microsoft Excel Workbook ( *.xls *.xlsb *.xlsm *.xlsx )
Microsoft Excel Workbook on PC Files Server
Microsoft Excel 5 or 95 Workbook ( *.xls )
Microsoft Excel 4 Spreedsheet ( *.xls )
Ateno s mensagens de erro na janela de log, que podem indicar o problema com o padro/verso
escolhido e a verso original do arquivo EXCEL que est sendo importado/exportado.
ERROR: Database error. Examine fields and/or messages below.
The file specified is not an Excel 4, 5, or 7 (Excel 95) file.
ERROR: Database table must be entered first
ERROR: Database table must be entered first
ERROR: File WORK._IMEX_.DATA does not exist.
WARNING: The data set WORK.TTT may be incomplete. When this step was stopped there
were 0 observations and 0 variables.
ERROR: Import unsuccessful. See SAS Log for details.
Para corrigir o problema, pode-se modificar o padro/verso escolhido para importao/exportao ou,
acessar o programa EXCEL, carregar a planilha e salv-la com o padro/verso correto para o SAS.
124
21 - REFERNCIAS
SAS 9.4 Statements: Reference, Third Edition
SAS Institute Inc., 2014
Cary, NC, USA
Base SAS 9.4 Procedures Guide, Third Edition
SAS Institute Inc., 2014
Cary, NC, USA
SAS Guide to TABULATE Processing, Second Edition
SAS Institute Inc., 1990
Cary, NC, USA
ISBN 1-55544-416-4
Step-by-Step Programming with Base SAS Software
SAS Institute Inc., 2001
Cary, NC, USA
ISBN 978-1-58025-791-6
Curso de SAS/BSICO
Soft Consultoria
125