Você está na página 1de 111

Apostila de Treinamento:

SAS Programao I

- Introduo ao SAS: Data Step e Proc Step -


















Reviso: 2010

Universidade Estadual de Campinas

Centro Nacional de Processamento de Alto Desempenho - So Paulo
2
CONTEDO

1 - HISTRICO pag.05
2 - CURIOSIDADES pag.05
3 - DEFINIO BSICA pag.06
4 - COMERCIALIZAO pag.07
4.1 - Mdulos SAS pag.07
4.2 - Soluo de Negcios pag.08
5 - CONCEITOS BSICOS pag.09
6 - ARQUIVOS SAS pag.10
7 - ESTRUTURA DOS ARQUIVOS SAS pag.11
8 - NOMECLATURA PARA ARQUIVOS E VARIVEIS pag.12
9 - SINTAXE DOS COMANDOS pag.13
10 - EXECUO pag.14
10.1 - Modo Interativo (Ambiente WINDOWS) pag.14
10.2 - Modo No Interativo (Ambiente de COMANDOS) pag.21
11 - ESTRUTURA DATA STEP pag.22
11.1 - Introduo pag.22
11.2 - Comando LIBNAME pag.24
11.3 - Comando DATA pag.25
11.4 - Comando INFILE pag.26
11.5 - Comando SET pag.27
11.6 - Comando INPUT pag.28
11.6.1 - INPUT COLUNADO pag.29
11.6.2 - INPUT FORMATADO pag.30
11.6.3 - Descrio de um Campo Data pag.31
11.6.4 - Controles Especiais do Comando INPUT pag.33
11.6.5 - Detalhes do Comando INPUT pag.34
1 LABORATRIO pag.35
12 ESTRUTURA PROC STEP pag.36
12.1 - Introduo pag.36
12.1.1 - Comando VAR pag.37
12.1.2 - Comando BY pag.37
12.1.3 - Comando TITLE pag.38
12.1.4 - Comando FOOTNOTE pag.38
12.2 - Procedimento PRINT pag.39
12.3 - Procedimento SORT pag.41
13 - ARQUIVO DE MENSAGENS - "SAS Log" pag.43
2 LABORATRIO pag.45
14 - COMANDOS BSICOS DE PROGRAMAO SAS pag.47
14.1 - Comando de Atribuio (=) pag.47
14.2 - Comando RETAIN pag.49
14.3 - Comando IF-THEN/ELSE pag.50
14.4 - Comando WHERE pag.53
14.5 - Comando DO/END pag.54
14.6 - Comando LENGTH pag.55
14.7 - Comando DO/END Iterativo pag.56
3
14.8 - Comando DO/WHILE pag.57
14.9 - Comando DO/UNTIL pag.58
14.10 - Comandos DROP e KEEP pag.59
14.11 - Opes de Arquivos SAS pag.60
14.12 - Comando DELETE pag.61
14.13 - Comando OUTPUT pag.62
3 LABORATRIO pag.64
15 - FUNES DO SAS pag.67
15.1 - Introduo pag.67
15.2 - Funes de Tratamento de Caractere pag.68
15.2.1 - Funo UPCASE pag.68
15.2.2 - Funo LOWCASE pag.68
15.2.3 - Funo SUBSTR pag.69
15.2.4 - Funo COMPRESS pag.70
15.2.5 - Funo LENGTH pag.70
15.2.6 - Funo INDEX pag.71
15.3 - Funes de Truncamento pag.73
15.3.1 - Funo INT pag.73
15.3.2 - Funo ROUND pag.73
15.4 - Funes Estatsticas Descritivas pag.75
15.4.1 - Funo SUM pag.75
15.4.2 - Funo MEAN pag.75
15.5 - Funes de Tratamento de Data e Hora pag.77
15.5.1 - Funo MDY pag.77
15.5.2 - Funes: DAY, MONTH, YEAR pag.77
15.5.3 - Funo TODAY pag.78
15.5.4 - Funo TIME pag.78
15.5.5 - Funes: HOUR, MINUTE, SECOND pag.78
4 LABORATRIO pag.80
16 - COMANDOS DE CONFIGURAO pag.81
16.2 - Comando LABEL pag.83
16.3 - Comando FORMAT pag.84
16.4 - Comando ODS pag.85
17 - PROCEDIMENTOS ESTATSTICOS BSICOS pag.87
17.1 - Procedimento MEANS pag.87
17.2 - Procedimento FREQ pag.90
17.3 - Procedimento TABULATE pag.95
5 LABORATRIO pag.100
18 - RECURSO DE FORMATAO ESPECIAL pag.101
18.1 - Procedimento FORMAT pag.101
6 LABORATRIO pag.103
19 - COMBINAO DE ARQUIVOS SAS pag.104
19.1 - Concatenao pag.104
19.2 - Concatenao Ordenada pg.106
19.3 - Combinao Ordenada pg.108
7 LABORATRIO pag.110
20 - BIBLIOGRAFIA pag.111
4
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 informao no comando;

[ caracterstica ] opcional a informao no comando.



Exemplo: Utilizao de procedimentos SAS


PROC <tipo> [opo1 opo2 opo3 . . . opon] ;
[comando1] ;
[comando2] ;
[WHERE <expresso lgica>] ;
. . .
[comandon] ;
RUN ;
5
1 - HISTRICO


Dcada de 60;

North Caroline University;

Censo Agro-pecurio Norte-americano;

Conjunto de sub-rotinas (FORTRAN, IBM/370);

SAS Institute Inc. (1975);


2 - CURIOSIDADES

http://www.sas.com

http://v9doc.sas.com

45.000 Instalaes, em 118 paises;

92 das 100 maiores empresas do mundo utilizam SAS.
(Fortune 500 Global List - 2009);

Receita Bruta em 2009 - $2,31 bilhes;

2009 11.000 funcionrios em mais de 50 paises;

SAS a maior empresa de software do mundo de capital privado;

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, etc);

- Gerao de grficos;

- Gerao de relatrios;

- Gerao de aplicativos;

- Solues de negcios (Anlise de Risco,
Gerenciamento de Campanha, Data Mining);

um software de grande portabilidade, podendo operar
em diversos ambientes computacionais:

- Mainframes IBM ( CMS, MVS, OS, OS/390, Z/OS )

- DIGITAL ( VMS, OpenVMS )

- Micros PC ( DOS, Windows, OS/2, Apple )

- UNIX ( Solaris, AIX, HP-UX, Irix, Linux )
7
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 ambientes
operacionais heterogneos;

SAS/AF Mdulo para desenvolvimento de aplicaes;

SAS/FSP Mdulo para facilitar o acesso a arquivos com
programao de telas;
8
4.2 - Soluo de Negcios


Customer Relationship Management
http://www.sas.com/offices/latinamerica/brazil/solutions/crm/index.html

Financial Management
http://www.sas.com/offices/latinamerica/brazil/solutions/financial/index.html

Human Capital Management
http://www.sas.com/offices/latinamerica/brazil/solutions/hcm.html

Information Technology Management
http://www.sas.com/offices/latinamerica/brazil/solutions/itmgmt/index.html

Patent Discovery & Analysis
http://www.sas.com/offices/latinamerica/brazil/solutions/patent/index.html

Performance Management
http://www.sas.com/offices/latinamerica/brazil/solutions/spm/index.html

Quality Performance
http://www.sas.com/offices/latinamerica/brazil/solutions/quality/index.html

Risk Management
http://www.sas.com/offices/latinamerica/brazil/solutions/risk/index.html

Supplier Relationship Management
http://www.sas.com/offices/latinamerica/brazil/solutions/srm/index.html

Supply Chain Management
http://www.sas.com/offices/latinamerica/brazil/solutions/supplychain/index.html


9
5 - CONCEITOS BSICOS


DATA SET Arquivo de dados com estrutura SAS;


OBSERVAO Registro de um arquivo de dados SAS;


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);

OBS: A funcionalidade do Sistema SAS foi construda em
torno de quatro idias bsicas no tratamento de dados:

Acessar dados;
Administrar dados;
Analisar dados;
Apresentar dados;
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 ).












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.


DADO
BRUTO


DADO
SAS


DATA
STEP
11
7 - ESTRUTURA DOS ARQUIVOS SAS

O arquivo SAS um conjunto de dados organizados num
formato de tabela.

NOME SEXO IDADE ALTURA











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.768 caracteres 32.768 Bytes)
numrica (Representao IEEE - 8Bytes)

As linhas na tabela so chamadas de observaes (ou registros). 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.
CARLOS M 12 1.70
GILBERTO M 25 1.65
RICARDO M 30 1.80
. . . .
. . . .
. . . .
ALICE F 28 1.68
MARCIA F 22 1.75
12
8 - NOMECLATURA PARA ARQUIVOS E VARIVEIS



Todos os nomes de arquivos e variveis devero seguir as
seguintes regras:


- Possuir de 1 32 caracteres;

- Comear com letra (A-Z);

- Pode continuar com nmeros, letras ou o caractere
especial, grifo ou sublinhar _.



Ex.1:







DATA EXEMPLO1 ;
INFILE "C:\TEMP\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), 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:





DATA EXEMPLO1 ;
INFILE "C:\TEMP\DADOS.DAT" ;
INPUT NOME $ 1-8 SEXO $
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 janela windows ou, ative o
ambiente SAS, seguindo o roteiro abaixo:

Iniciar ==> Programas ==> SAS ==> SAS 9.1 (English)
15








16

JANELA DE OPES DE CONFIGURAO

Tools ==> Options ==> System...





17







18
OPES DE CONFIGURAO DO EDITOR

Tools ==> Options ==> Enhanced Editor...


19





20
CONFIGURAO DE TECLADO

Tools ==> Options ==> Keys

21
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 programa 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.
22
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
SAS/BASE e alguma lgica de processamento.

- A maioria dos comandos utilizados em DATA Step, s existem e
s podem ser executados nessa seo;

- Os comandos so posicionados em uma seqncia 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 seqencial, ou seja, registro aps registro;

- Internamente, o DATA Step representa um loop, que repete
todos os comandos a cada leitura de um novo registro do arquivo de
entrada, at encontrar o ltimo registro, finalizando o DATA Step e
seguindo para o prximo Step;

- A execuo de um programa SAS obedece a duas fases internas:
Compilao e Execuo;

- Os comandos em um DATA Step, podem ser divididos em:

Comandos de Declarao -Funcionalidade: durante a compilao;
Comandos de Execuo -Funcionalidade: durante a execuo.

OBS: Comandos de declarao no possuem nenhuma ao
durante a execuo.
23

Fluxo de Execuo
Abrir
arquivo
para gravar

Abrir
arquivo
para leitura

processa
registro

Ultimo
registro

Inicio do
DATA Step

Salvar
registro no
arquivo para
gravaao

SIM

Fim do
DATA Step

Ler novo
registro

NAO

24
11.2 - Comando LIBNAME

- Tipo: Comando de declarao;

- Uso: Livre;

- Comando opcional de configurao do processamento, que define 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
.: A primeira parte opcional, a biblioteca, a segunda parte
obrigatria, o nome do arquivo.

[biblioteca].<nome do arquivo>

- O comando LIBNAME, normalmente, colocado antes do comando
DATA, e s ser necessrio ser executa-lo uma nica vez durante uma
sesso SAS WINDOWS.

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 padro, temporria, de nome work,
que ser utilizada automaticamente se no for especificada a primeira
parte do nome do arquivo.

Ex.3:




LIBNAME IN "C:\ALUNO" ;
DATA IN.EXEMPLO ;
INFILE "A:\CADASTRO" ;
INPUT NOME $ 1-30 SEXO $ 31 END $ 32-60 ;

PROC PRINT DATA=IN.EXEMPLO NOOBS ;
VAR NOME ENDERECO ;
RUN ;
25
11.3 - Comando DATA

- Tipo: Comando de declarao;

- Uso: Data Step;

- Comando que sempre inicia um DATA Step;

- Abre um novo arquivo DATA Set, vazio, em uma biblioteca SAS.


DATA <biblioteca>.<nome do arquivo> ;



Ex.4:







OBS: No obrigatrio especificar a biblioteca, neste caso, o SAS ir
utilizar a biblioteca padro, tambm chamada de biblioteca temporria
(WORK ).
DATA ENDERECO ;

DATA ARQ1 ARQ2 ARQ3 ;

DATA ENT.CADASTRO ;

DATA ;

DATA _NULL_;
26
11.4 - Comando INFILE

- Tipo: Comando de execuo;

- Uso: Data Step;

- Comando que identifica e abre um arquivo externo de dados, somente
para leitura (no um arquivo no formato do SAS);

- Normalmente um arquivo de dados no formato texto (somente texto);

- Este comando deve ser posicionado aps o comando DATA e antes do
comando INPUT.

INFILE "<arquivo de dados>" [opes] ;

Opes: LRECL= Tamanho do registro;
PAD Completa de brancos os registros;
MISSOVER Previne o SAS de l um novo registro
para completar os dados de uma
varivel;
Ex.5:











INFILE "C:\DADOS\ARQ1.TXT" ;

INFILE "A:\CADASTRO.PRN" ;

INFILE 'C:\SAS\CAD.DAT' LRECL=380 PAD ;

DATA EXEMPLO ;
INFILE 'C:\TESTE\DADOS.TXT' MISSOVER;

. . .
. . .
. . .

27
11.5 - Comando SET

- Tipo: Comando de execuo;

- Uso: Data Step;

- Este comando abre um arquivo de dados DATA Set (formato SAS),
somente para leitura, e que j exista em alguma biblioteca SAS;

- 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.6:







OBS: No obrigatrio especificar a biblioteca, neste caso, o SAS ir
utilizar a biblioteca padro, tambm chamada de biblioteca temporria
(WORK ).
DATA EXEMPLO ;
SET CADASTRO ;
. . .
. . .
. . .

28
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 ir ler registro a registro (leitura seqencial) at
encontrar um registro especial que identifica o "fim de arquivo (EOF)", e
ir atribuir nomes (Variveis) para cada campo de um registro;


- Dois tipos bsicos de comando INPUT, so os mais utilizados:



- INPUT COLUNADO

- INPUT FORMATADO
29
11.6.1 - INPUT COLUNADO

- L os campos de dados, atribuindo-lhes um nome, e
especificando a sua posio inicial e final na linha de dados do
arquivo. Os campos de dados devem estar alinhados, fixos em
colunas, no arquivo.

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.
Ex.7:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
C A R L O S M 1 8 1 7 0 6 8 . 0
C A R L A F 2 6 1 7 8 7 2 . 0
S I L V I A F 2 1 1 6 5 6 0 . 5
M A R C I O M 3 2 1 8 2 8 5 . 4

DATA FICHA ;
INFILE "A:\CADASTRO.TXT";
INPUT NOME $ 1-8 SEXO $ 9 IDADE 11-12 ALTURA 14-16 .2 PESO 17-20 ;
RUN;
30
11.6.2 - INPUT FORMATADO

- L os campos de dados, atribuindo-lhes um nome, e
especificando o tamanho do campo, ou, um formato especfico,
para interpretar o dado contido na linha de dados.

- o tipo de INPUT mais poderoso e completo do SAS.

INPUT <varivel> [$] < w.d > ou [ formatow.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 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.

formatow.d Interpretao do campo. Nome de um formato especial de
leitura dos dados:

BINARYw.d 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.


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, e
armazenados como numricos;

- O valor numrico armazenado representa o nmero de dias em
relao a uma data base SAS.



- um campo que obrigatoriamente deve ser lido com um
formato de leitura para identificar a formatao da data.

Formatos: DATE9. ==> 01JAN1960
DDMMYY10. ==> 01/01/1960

Formato padro de uma constante data no SAS:

"ddmmyyyy"d "01JAN1960"d

32










Ex.8:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
C A R L O S M 1 8 1 7 0 6 8 . 0
C A R L A F 2 6 1 7 8 7 2 . 0

Ex.9:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
R J 2 0 4 5 6 3 0 0 6 , 7 3 9 , 9 9 2 8 8 F 1 . 2 E 5
S P 1 1 5 0 0 0 0 0 9 , 4 6 4 , 2 6 5 6 C C 1 2 5 E 5

DATA EXEMPLO2 ;
INFILE "A:\NUMEROS.PRN";
INPUT UF $ 2. CEP 8. POP COMMA9. VALOR1 HEX3. VALOR2 E5. ;
RUN;
PROC PRINT ; RUN ;

The SAS Syst em

Obs UF CEP POP VALOR1 VALOR2

1 RJ 20456300 6739992 2191 120000
2 SP 11500000 9464265 1740 12500000
DATA FICHA ;
INFILE "A:\CADASTRO.TXT";
INPUT NOME $ 8. SEXO $ 1. IDADE 3.
ALTURA 4.2 PESO 4. ;
RUN;
33
11.6.4 - Controles Especiais do Comando INPUT

Indicador de COLUNA ( @ )

@n Move a leitura para a coluna n ;

Indicador de LINHA ( / )

/ Avana a leitura em um registro;

Ex.10:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
1 1 1 1 1 B B B B C C C C
D D D D
E E E E F F
2 2 2 2 2 b b b b c c c c
d d d d
e e e e f f



DATA POSICAO ;
INFILE "C:\SAS\POS.DAT" ;
INPUT A $ 1-5 @10 B $ 4. @17 C $ 4. / D $ 1-4 / E $ 4. @8 F $ 2. ;
RUN;
PROC PRINT ; RUN ;

The SAS Syst em

OBS A B C D E F

1 11111 BBBB CCCC DDDD EEEE FF
2 22222 bbbb cccc dddd eeee f f

34
11.6.5 - Detalhes do Comando INPUT

- Em campos numricos, no so permitidos "brancos" entre os nmeros;

- Sinal (+ - ), ponto decimal (.) e notao cientfica para expoente ( E ),
so permitidos em campos numricos;

- Campos tipo caractere podem ter, no mximo, 32.768 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.

- Campos ou partes de um campo podem ser relidos.

- Dados caracteres sero armazenados alinhados pela esquerda, e os
dados numricos, alinhados pela direita;

- Todos os tipos de INPUT, podem ser combinados num nico
comando INPUT;

Ex.11: Detalhes de leitura com nomes repetitivos


INPUT PESO 17-20 NOME $ 1-8 IDADE 11-12 SEXO $ 9 ;
INPUT NOME $ 1-8 PREFIXO $ 1-3 ENDERECO $ 10-40 APT $ 38-40 ;
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.) ;

35
1 LABORATRIO

Montar um programa SAS que leia um arquivo de dados externo (no SAS) e gere um
arquivo no formato SAS (Data Set), permanente.

1- Criar um arquivo SAS, permanente, de nome CADASTRO, no diretrio c:\curso\sas
(Utilize os comandos LIBNAME e DATA );

2 - Abra o arquivo de dados externo de nome CADASTRO.DAT no diretrio c:\curso\sas
(Utilize o comando INFILE ). O Tamanho do registro de dados de 130 bytes;

3 - Leia os dados deste arquivo ( Utilize o comando INPUT, colunado ou formatado ).
Sabendo-se que o contedo do arquivo est dividido em diversos campos na seguinte
ordem:

Nome do
Campo
Tipo do
Campo
Tamanho do
Campo
Decimais Posio
Inicial
Detalhe
NOME Caractere 30 1
SEXO Caractere 1 31
IDADE Numrico 2 32
PESO Numrico 6 2 34
ALTURA Numrico 4 2 40
ANIVERSARIO Numrico 10 44 Campo formatado: Ex. 18/01/2005
ESTADO CIVIL Caractere 1 54
FILHOS Numrico 2 55
RG Caractere 15 57
CPF Caractere 11 72
EMPRESA Caractere 15 83
FUNCAO Caractere 12 98
ADMISSAO Numrico 9 110 Campo formatado: Ex 18JAN2005
SALARIO Numrico 12 2 119 Campo formatado: Ex. 3.548,25

4 - Releia parte do campo EMPRESA, na posio 89, defina a varivel TIPO DE
EMPRESA, com 9 caracteres;

5 - 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

36
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 seqncia lgica, ou seja,
podem ser colocados em qualquer ordem dentro da PROC;

PROC <rotina> [opes] ;
[comando1] ;
[comando2] ;
. . .
[comandon] ;
RUN ;

rotina Palavra-chave que identifica o procedimento a ser
executado.

opes Parmetros opcionais de configurao para execuo
do procedimento.

comando Comandos de detalhamento na execuo do
procedimento.

RUN Comando para execuo do procedimento SAS.
Necessrio no ltimo procedimento do programa
SAS.
37
12.1.1 - Comando VAR

- Tipo: Comando de declarao;

- Uso: Proc Step

- Comando comum maioria das PROCS. Especifica uma lista
de variveis do arquivo SAS, que sero processadas pelo
procedimento.


VAR <varivel1> <varivel2> ...<variveln> ;



12.1.2 - Comando BY

- Tipo: Comando de declarao;

- Uso: Data Step e Proc Step;

- Especifica uma lista de variveis que permitiro o
processamento em grupos;


BY <varivel1> <varivel2> ...<variveln> ;


OBS: Este comando exige que o arquivo esteja ordenado ou
indexado pelas variveis especificadas.


38
12.1.3 - Comando TITLE


- Tipo: Comando de declarao;

- Uso: Livre;

- Pode ser codificado em qualquer parte do programa. Determina
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. Determina
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;

39
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;

40
Ex.12:

Ex.13:



TITLE "Relatrio de Funcionrios" ;
PROC PRINT DATA=EXEMPLO1 NOOBS ;
VAR NOME FUNCAO ;
RUN ;


Rel at r i o de Funci onr i os

nome f uncao

Raul Anal i st a
Mar cel o Anal i st a
Paul a Anal i st a
Renat o Anal i st a
Car l os Pr ogr amador
Let i ci a Pr ogr amador
Si l vi o Pr ogr amador
Cel so Oper ador
Sandr a Oper ador

TITLE "Relatrio de Salrios" ;
FOOTNOTE " FONTE: DH " ;
PROC PRINT DATA=EXEMPLO1 ;
VAR NOME FUNCAO SALARIO ;
SUM SALARIO ;
RUN ;

Rel at r i o de Sal r i os

Obs nome f uncao sal ar i o

1 Raul Anal i st a 5688. 35
2 Mar cel o Anal i st a 4596. 96
3 Paul a Anal i st a 4978. 05
4 Renat o Anal i st a 3800. 88
5 Car l os Pr ogr amador 3544. 45
6 Let i ci a Pr ogr amador 3845. 30
7 Si l vi o Pr ogr amador 2998. 38
8 Cel so Oper ador 1587. 00
9 Sandr a Oper ador 1500. 00
========
32539. 37


FONTE: DH

41
12.3 - Procedimento SORT

- Procedimento do SAS que reordena os registros dos arquivos
por uma ou mais variveis, em ordem ascendente ou descendente;

- No possui sada impressa;

- Pode gerar arquivo ordenado.


PROC SORT [opes] ;
BY <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;

BY Especifica uma ou vrias variveis como chaves de
ordenao;


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.

42

Ex.14:



PROC SORT DATA=EXEMPLO1 OUT=ORDENA ;
BY FUNCAO ;
RUN ;
PROC PRINT DATA=ORDENA NOOBS ;
BY FUNCAO ;
VAR NOME SALARIO ;
SUM SALARIO ;
RUN ;

Rel at r i o de Sal r i os

- - - - - - - - - - - - - - - - - - - - - - - - f uncao=Anal i st a - - - - - - - - - - - - - - - - - - - - - - - -

nome sal ar i o

Raul 5688. 35
Mar cel o 4596. 96
Paul a 4978. 05
Renat o 3800. 88
- - - - - - - - - - - - - - -
f uncao 19064. 24


- - - - - - - - - - - - - - - - - - - - - - - - f uncao=Oper ador - - - - - - - - - - - - - - - - - - - - - - - -

nome sal ar i o

Cel so 1587
Sandr a 1500
- - - - - - - - - - - - -
f uncao 3087


- - - - - - - - - - - - - - - - - - - - - - f uncao=Pr ogr amador - - - - - - - - - - - - - - - - - - - - - - -

nome sal ar i o

Car l os 3544. 45
Let i ci a 3845. 30
Si l vi o 2998. 38
- - - - - - - - - - - - - - -
f uncao 10388. 13
========
32539. 37


FONTE: DH
43
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.15:


DATA DATA DATA DATA EXEMPLO1 ;
I NFI LE "D: \ kusel \ cur sos\ sas\ DADOS. TXT" ;
I NPUT NOME $1 11 1- 8 88 8 SEXO $10 10 10 10 FUNCAO $12 12 12 12- 23 23 23 23 SALARI O 25 25 25 25- 31 31 31 31 ;
RUN RUN RUN RUN;
PROC PROC PROC PROC PRI NT PRI NT PRI NT PRI NT DATA=EXEMPLO1 NOOBS ;
VAR NOME FUNCAO ;
RUN RUN RUN RUN ;

NOTE: Copyr i ght ( c) 2002- 2008 by SAS I nst i t ut e I nc. , Car y, NC, USA.
NOTE: SAS ( r ) Pr opr i et ar y Sof t war e 9. 2 ( TS2M0)
Li censed t o UNI VERSI DADE ESTADUAL DE CAMPI NAS UNI VERSI DADE ESTADUAL DE CAMPI NAS UNI VERSI DADE ESTADUAL DE CAMPI NAS UNI VERSI DADE ESTADUAL DE CAMPI NAS, Si t e 70005173.
NOTE: Thi s sessi on i s execut i ng on t he XP_PRO pl at f or m.

NOTE: SAS i ni t i al i zat i on used:
r eal t i me 1: 13. 65
cpu t i me 1. 03 seconds

1 DATA EXEMPLO1 ;
2 I NFI LE "D: \ kusel \ cur sos\ sas\ DADOS. TXT" ;
3 I NPUT NOME $1- 8 SEXO $10 FUNCAO $12- 23 SALARI O 25- 31 ;
4 RUN;

NOTE: The i nf i l e "D: \ kusel \ cur sos\ sas\ DADOS. TXT" i s:
Fi l ename=D: \ kusel \ cur sos\ sas\ DADOS. TXT,
RECFM=V, LRECL=256, Fi l e Si ze ( byt es) =297,
Last Modi f i ed=06 de Agost o de 2010 14h47mi n2,
Cr eat e Ti me=06 de Agost o de 2010 14h39mi n0

NOTE: 9 r ecor ds wer e r ead f r omt he i nf i l e " D: NOTE: 9 r ecor ds wer e r ead f r omt he i nf i l e " D: NOTE: 9 r ecor ds wer e r ead f r omt he i nf i l e " D: NOTE: 9 r ecor ds wer e r ead f r omt he i nf i l e " D: \ \\ \ kusel kusel kusel kusel \ \\ \ cur sos cur sos cur sos cur sos\ \\ \ sas sas sas sas\ \\ \ DADOS. TXT" . DADOS. TXT" . DADOS. TXT" . DADOS. TXT" .
The mi ni mumr ecor d l engt h was 31. The mi ni mumr ecor d l engt h was 31. The mi ni mumr ecor d l engt h was 31. The mi ni mumr ecor d l engt h was 31.
The maxi mumr ecor d l engt h was 33. The maxi mumr ecor d l engt h was 33. The maxi mumr ecor d l engt h was 33. The maxi mumr ecor d l engt h was 33.
NOTE: The dat a set WORK. EXEMPLO1 has 9 obser vat i ons NOTE: The dat a set WORK. EXEMPLO1 has 9 obser vat i ons NOTE: The dat a set WORK. EXEMPLO1 has 9 obser vat i ons NOTE: The dat a set WORK. EXEMPLO1 has 9 obser vat i ons and 4 var i abl es. and 4 var i abl es. and 4 var i abl es. and 4 var i abl es.
NOTE: DATA st at ement used ( Tot al pr ocess t i me) :
r eal t i me 0. 01 seconds
cpu t i me 0. 01 seconds

5 PROC PRI NT DATA=EXEMPLO1 NOOBS ;
6 VAR NOME FUNCAO ;
7 RUN ;

NOTE: Ther e wer e 9 obser vat i ons r ead f r omt he dat a set WORK. EXEMPLO1.
NOTE: PROCEDURE PRI NT used ( Tot al pr ocess t i me) :
r eal t i me 0. 03 seconds
cpu t i me 0. 03 seconds
44
Ex.16:


DATA EXEMPLO1 ;
INFILE "D:\kusel\cursos\sas\DADOS.TXT" ;
INPUT NOME $1-8 SEXO $10 FUNCAO# $12-23 SALARIO 25-31 ;
RUN;
PROC PRINT DATA=EXEMPLO1 NOOBS ;
VAR NOME FUNCAO ;
RUN ;

22 DATA EXEMPLO1 ;
23 I NFI LE "D: \ kusel \ cur sos\ sas\ DADOS. TXT" ;
24 I NPUT NOME $1- 8 SEXO $10 FUNCAO# $12- 23 SALARI O 25- 31 ;
- -- -
22 22 22 22
76 76 76 76
ERROR 22 ERROR 22 ERROR 22 ERROR 22- -- - 322: Synt ax er r or , expect i ng one of t he f ol l owi ng: a name, an i n 322: Synt ax er r or , expect i ng one of t he f ol l owi ng: a name, an i n 322: Synt ax er r or , expect i ng one of t he f ol l owi ng: a name, an i n 322: Synt ax er r or , expect i ng one of t he f ol l owi ng: a name, an i nt eger const ant , ( . t eger const ant , ( . t eger const ant , ( . t eger const ant , ( .

ERROR 76 ERROR 76 ERROR 76 ERROR 76- -- - 322: Synt ax er r or , st at ement wi l l be i gn 322: Synt ax er r or , st at ement wi l l be i gn 322: Synt ax er r or , st at ement wi l l be i gn 322: Synt ax er r or , st at ement wi l l be i gnor ed.

25 RUN;

NOTE: The SAS Syst emst opped pr ocessi ng t hi s st ep because of er r or s. NOTE: The SAS Syst emst opped pr ocessi ng t hi s st ep because of er r or s. NOTE: The SAS Syst emst opped pr ocessi ng t hi s st ep because of er r or s. NOTE: The SAS Syst emst opped pr ocessi ng t hi s st ep because of er r or s.
WARNI NG: The dat a set WORK. EXEMPLO1 may be i ncompl et e. When t hi s st ep was st opped t her e wer e WARNI NG: The dat a set WORK. EXEMPLO1 may be i ncompl et e. When t hi s st ep was st opped t her e wer e WARNI NG: The dat a set WORK. EXEMPLO1 may be i ncompl et e. When t hi s st ep was st opped t her e wer e WARNI NG: The dat a set WORK. EXEMPLO1 may be i ncompl et e. When t hi s st ep was st opped t her e wer e
0 obser vat i ons and 3 var i abl es. 0 obser vat i ons and 3 var i abl es. 0 obser vat i ons and 3 var i abl es. 0 obser vat i ons and 3 var i abl es.
WARNI NG: Dat a set WORK. EXEMPLO1 was not r epl aced because t hi s st ep was st opped. WARNI NG: Dat a set WORK. EXEMPLO1 was not r epl aced because t hi s st ep was st opped. WARNI NG: Dat a set WORK. EXEMPLO1 was not r epl aced because t hi s st ep was st opped. WARNI NG: Dat a set WORK. EXEMPLO1 was not r epl aced because t hi s st ep was st opped.
NOTE: DATA st at ement used ( Tot al pr ocess t i me) : NOTE: DATA st at ement used ( Tot al pr ocess t i me) : NOTE: DATA st at ement used ( Tot al pr ocess t i me) : NOTE: DATA st at ement used ( Tot al pr ocess t i me) :
r eal t i me 0. 01 seconds r eal t i me 0. 01 seconds r eal t i me 0. 01 seconds r eal t i me 0. 01 seconds
cpu t i me 0. 01 seconds cpu t i me 0. 01 seconds cpu t i me 0. 01 seconds cpu t i me 0. 01 seconds


26 PROC PRI NT DATA=EXEMPLO1 NOOBS
27 VAR NOME FUNCAO ;
- - - - - - - - - - - -
22 22 22 22
202 202 202 202
ERROR 22 ERROR 22 ERROR 22 ERROR 22- -- - 322: Synt ax er r or , expect i ng one of t he f ol l owi ng: ; , BLANKLI NE, DATA, DOUBLE, 322: Synt ax er r or , expect i ng one of t he f ol l owi ng: ; , BLANKLI NE, DATA, DOUBLE, 322: Synt ax er r or , expect i ng one of t he f ol l owi ng: ; , BLANKLI NE, DATA, DOUBLE, 322: Synt ax er r or , expect i ng one of t he f ol l owi ng: ; , BLANKLI NE, DATA, DOUBLE,
HEADI NG, LABEL, N, NOOBS, OBS, ROUND, ROWS, SPLI T, HEADI NG, LABEL, N, NOOBS, OBS, ROUND, ROWS, SPLI T, HEADI NG, LABEL, N, NOOBS, OBS, ROUND, ROWS, SPLI T, HEADI NG, LABEL, N, NOOBS, OBS, ROUND, ROWS, SPLI T, STYLE, SUMLABEL, UNI FORM, STYLE, SUMLABEL, UNI FORM, STYLE, SUMLABEL, UNI FORM, STYLE, SUMLABEL, UNI FORM,
WI DTH. WI DTH. WI DTH. WI DTH.
ERROR 202 ERROR 202 ERROR 202 ERROR 202- -- - 322: The opt i on or par amet er i s not r ecogni zed and wi l l be i gnor ed. 322: The opt i on or par amet er i s not r ecogni zed and wi l l be i gnor ed. 322: The opt i on or par amet er i s not r ecogni zed and wi l l be i gnor ed. 322: The opt i on or par amet er i s not r ecogni zed and wi l l be i gnor ed.
28 RUN ;

NOTE: The SAS Syst emst opped pr ocessi ng t hi s st ep because of er r or s. NOTE: The SAS Syst emst opped pr ocessi ng t hi s st ep because of er r or s. NOTE: The SAS Syst emst opped pr ocessi ng t hi s st ep because of er r or s. NOTE: The SAS Syst emst opped pr ocessi ng t hi s st ep because of er r or s.
NOTE: PROCEDURE PRI NT used ( Tot al pr ocess t i me) : NOTE: PROCEDURE PRI NT used ( Tot al pr ocess t i me) : NOTE: PROCEDURE PRI NT used ( Tot al pr ocess t i me) : NOTE: PROCEDURE PRI NT used ( Tot al pr ocess t i me) :
r eal t i me 0. 00 seconds r eal t i me 0. 00 seconds r eal t i me 0. 00 seconds r eal t i me 0. 00 seconds
cpu t i me 0. 00 seconds cpu t i me 0. 00 seconds cpu t i me 0. 00 seconds cpu t i me 0. 00 seconds



45
Ex.17:


DATA EXEMPLO1 ;
INFILE "D:\kusel\cursos\sas\DADOS.TXT" ;
INPUT NOME $1-8 SEXO $10 CARGO $12-23 SALARIO $25-31 ;
RUN;
PROC PRINT DATA=EXEMPLO1 NOOBS ;
VAR NOME FUNCAO SALARIO;
SUM SALARIO;
RUN ;

45 DATA EXEMPLO1 ;
46 I NFI LE "D: \ kusel \ cur sos\ sas\ DADOS. TXT" ;
47 I NPUT NOME $1- 8 SEXO $10 CARGO $12- 23 SALARI O $25 $25 $25 $25- -- - 31 31 31 31 ;
48 RUN;

NOTE: The i nf i l e "D: \ kusel \ cur sos\ sas\ DADOS. TXT" i s:
Fi l ename=D: \ kusel \ cur sos\ sas\ DADOS. TXT,
RECFM=V, LRECL=256, Fi l e Si ze ( byt es) =321,
Last Modi f i ed=06 de Agost o de 2010 15h07mi n0,
Cr eat e Ti me=06 de Agost o de 2010 14h39mi n0

NOTE: 10 r ecor ds wer e r ead 10 r ecor ds wer e r ead 10 r ecor ds wer e r ead 10 r ecor ds wer e r ead f r omt he i nf i l e "D: \ kusel \ cur sos\ sas\ DADOS. TXT".
The mi ni mumr ecor d l engt h was 22. The mi ni mumr ecor d l engt h was 22. The mi ni mumr ecor d l engt h was 22. The mi ni mumr ecor d l engt h was 22.
The maxi mumr ecor d l engt h was 33.
NOTE: SAS went t o a new l i ne when I NPUT st at ement r eached past t he end of a l i ne. NOTE: SAS went t o a new l i ne when I NPUT st at ement r eached past t he end of a l i ne. NOTE: SAS went t o a new l i ne when I NPUT st at ement r eached past t he end of a l i ne. NOTE: SAS went t o a new l i ne when I NPUT st at ement r eached past t he end of a l i ne.
NOTE: The dat a set WORK. EXEMPLO1 has 9 obser vat i ons The dat a set WORK. EXEMPLO1 has 9 obser vat i ons The dat a set WORK. EXEMPLO1 has 9 obser vat i ons The dat a set WORK. EXEMPLO1 has 9 obser vat i ons and 4 var i abl es.
NOTE: DATA st at ement used ( Tot al pr ocess t i me) :
r eal t i me 0. 01 seconds
cpu t i me 0. 01 seconds


49 PROC PRI NT DATA=EXEMPLO1 NOOBS ;
50 VAR NOME FUNCAO sal ar i o;
ERROR: Var i abl e FUNCAO not f ound. ERROR: Var i abl e FUNCAO not f ound. ERROR: Var i abl e FUNCAO not f ound. ERROR: Var i abl e FUNCAO not f ound.
51 sumsal ar i o;
ERROR: Var i abl e SALARI O i n l i st does not mat ch t ype pr escr i bed f or t hi s l i st . ERROR: Var i abl e SALARI O i n l i st does not mat ch t ype pr escr i bed f or t hi s l i st . ERROR: Var i abl e SALARI O i n l i st does not mat ch t ype pr escr i bed f or t hi s l i st . ERROR: Var i abl e SALARI O i n l i st does not mat ch t ype pr escr i bed f or t hi s l i st .
52 RUN ;

NOTE: The SAS Syst emst opped pr ocessi ng t hi s st ep because of er r or s.
NOTE: PROCEDURE PRI NT used ( Tot al pr ocess t i me) :
r eal t i me 0. 00 seconds
cpu t i me 0. 00 seconds


46
2 LABORATRIO

Manipular os procedimentos de impresso e ordenao.

Utilizando o arquivo SAS gerado no laboratrio anterior, monte programas SAS que:

1 - Gere um relatrio:
- com as variveis: NOME, EMPRESA, FUNCAO e SALARIO;
- dever ter espacejamento DUPLO;
- no poder aparecer a coluna com o nmero de registros ( OBS );

( Utilize o procedimento PRINT )

2 - Gere:
- um arquivo SAS permanente ordenado por EMPRESA;
- um relatrio com todos os dados, relacionados por EMPRESA;

(Utilize os procedimentos SORT e PRINT)

3 - Utilizando o arquivo ordenado do item anterior:
- gere um relatrio por EMPRESA;
- com os dados: NOME, FUNCAO e SALARIO;
- faa um somatrio da varivel SALARIO;
- Insira uma linha em branco a cada 3 linhas de dados;
- coloque o ttulo "Relatrio de Salrios por Empresa";
- coloque o rodap "FONTE: Fundao Getlio Vargas";

( Utilize o procedimento PRINT)

4 - Utilizando o arquivo SAS CADASTRO, gerado no laboratrio anterior, crie um programa SAS que emita um
relatrio com as variveis: NOME, FUNCAO e SALARIO, em ordem ascendente por EMPRESA e descendente
por SALARIO.

(Utilize o procedimento SORT e PRINT)

5 - Utilizando o arquivo SAS CADASTRO, gere um relatrio que:
- esteja ordenado por EMPRESA;
- com as variveis: NOME, EMPRESA e SALARIO;
- tenha espacejamento DUPLO;
- sem ttulo algum;
- com o somatrio da varivel SALARIO;

6 - Utilizando o arquivo SAS CADASTRO, gere um relatrio com apenas os funcionrios que mais ganham de cada
empresa, e apenas um funcionrio de cada funo da empresa.

1 - 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;

2 - Segundo passo:

- Execute um novo PROC SORT, MAS GERANDO UM NOVO ARQUIVO, por EMPRESA e FUNCAO;
- Elimine as duplicatas de EMPRESA e FUNCAO, desse novo arquivo;
- Verifique os resultados com a PROC PRINT e as variveis: NOME, EMPRESA, FUNCAO, SALARIO;
- Verifique se os resultados esto de acordo como o que foi solicitado no enunciado do exerccio.
47

14 - COMANDOS BSICOS DE PROGRAMAO SAS

14.1 - Comando de Atribuio (=)

- 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 Nome com no mximo 32 caracteres.
expresso Expresses do tipo:

- Operaes aritmticas simples: + - * / **

x2=x ; Move valor;
soma=x+y ; Adio;
dif=x-y ; Subtrao;
dobro=x*2 ; Multiplicao;
met=x/2 ; Diviso;
cubo=x**3 ; Potenciao;
y=-x ; Mudana de sinal;

- Constantes :

N=0 ; Constante numrica; SEXO="F" ; Constante caractere;

- Concatenao de caracteres : ||

A=PAULO || ANTUNES; ==> A=PAULOANTUNES
B=PAULO || || ANTUNES; ==> 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:

( ) funo ** * / + -
=========================>

A=X+Y+Z ;
A=X+Y*Z ;
A=X/(Y/Z) ;

- Funes:
S=SQRT(X) ;
A=INT(X) ;
Z=ABS(SQRT(X)-2) ;
48

Ex.18:








LIBNAME ARQ "C:\SAS\TESTE" ;
DATA ARQ.LUCROS ;
INFILE "C:\DADOS\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;
Arquivo: NUMEROS.TXT
01 02 03 04 05 06 07 08 09 10 11 12
9 4 5 6 5 0 1 0 5 0
9 5 6 2 8 0 1 1 4 0
9 6 8 4 5 0 2 4 5 0

PROC PRINT DATA=ARQ.LUCROS NOOBS DOUBLE ;
TITLE "Analise Contbil" ;
VAR ANO RECEITA DESPESAS LUCRO DOLLAR ;
SUM RECEITA DESPESAS LUCRO DOLLAR ;
RUN ;

Anal i se Cont bi l

ANO RECEI TA DESPESAS LUCRO DOLLAR

1994 5650 1050 4600 4693. 88

1995 6280 1140 5140 5244. 90

1996 8450 2450 6000 6122. 45

======= ======== ===== ========

20380 4640 15740 16061. 22
49

14.2 - Comando RETAIN

- Tipo: Comando de declarao;

- Uso: Data Step;

- Normalmente o SAS inicia todas as variveis criadas no DATA Step,
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 <varivel> [valor inicial] . . . ;

Ex.19:
LIBNAME ARQ "C:\SAS\TESTE" ;
DATA ARQ.LUCROS ;
RETAIN CONT 0;
INFILE "C:\DADOS\NUMEROS.TXT";
INPUT ANO 1-2 RECEITA 4-7 DESPESAS 9-12;
CONT=CONT+1 ;
ANO = ANO + 1900 ;
LUCRO = RECEITA - DESPESAS ;
DOLLAR = LUCRO / 0.98 ;
RUN;

PROC PRINT DATA=LUCROS NOOBS;
TITLE "Analise Contbil" ;
SUM RECEITA DESPESAS LUCRO DOLLAR ;
RUN ;


Anal i se Cont bi l

CONT ANO RECEI TA DESPESAS LUCRO DOLLAR

1 1994 5650 1050 4600 4693. 88
2 1995 6280 1140 5140 5244. 90
3 1996 8450 2450 6000 6122. 45
======= ======== ===== ========
20380 4640 15740 16061. 22
50

14.3 - Comando IF-THEN/ELSE

- Tipo: Comando de Execuo;

- Uso: Data Step;

- Comando que condiciona a execuo de um outro comando
SAS, de acordo com alguma expresso, que determinar essa
condio;

- Se a expresso, que determina a condio, for verdadeira, ser
executado o comando que vier aps o THEN. Se a condio for
falsa, 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 Operadores Lgicos

GT > maior que

AND & e, ambos
LT < menor que

OR | ou, um ou outro
EQ = igual a

NOT ~ no, negao
LE <= menor ou igual a

GE >= maior ou igual a

NE ~= no igual (diferente)

NL

no menor

NG

no maior

IN

est no conjunto


51

Ex.20: S o comando IF

Ex.21: Operador de Comparao




LIBNAME DAD "C:\CURSO\SAS" ;
DATA DAD.DADOS82 ;
INFILE "A:\DADOS\CADASTRO.TXT" LRECL=132;
INPUT NOME $ 30. END $ 30. ANO 4. ;
IF ANO=1982 ;
RUN;
DATA NOTA ;
INFILE "A:\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;
Arquivo: NOTAS.TXT
01 02 03 04 05 06 07 08 09 10 11
V I V I A N E 2 . 5
L I D I A 9 . 5
P A U L O 6 . 8
C L A U D I O 6 . 8
L U I Z 5 . 5

PROC PRINT NOOBS ;
RUN;
The SAS Syst em

NOME NOTA CONCEI TO

VI VI ANE 2. 5 A
LI DI A 9. 5 A
PAULO 6. 8 A
CLAUDI O 6. 8 A
LUI Z 5. 5 A
O que est errado ???

DATA NOTA ;
INFILE "A:\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;
The SAS Syst em

NOME NOTA CONCEI TO

VI VI ANE 2. 5 E
LI DI A 9. 5 A
PAULO 6. 8 C
CLAUDI O 6. 8 C
LUI Z 5. 5 C
52

Ex.22: Operador Lgico



























Ex.23: Operador Lgico



IF ESTADO="RJ" OR ESTADO="SP" THEN REGIAO="SUDESTE" ;

IF ESTADO="SP" AND CIDADE="CAMPINAS" THEN CEP="13000-000" ;
LIBNAME TESTE "A:\" ;
DATA TESTE.CLASSE ;
INFILE "C:\ESCOLA\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
P A U L A 1 1 1 1 . 6 0
F L A V I A 1 1 5 1 . 6 5
M A R C O S 2 1 1 1 . 6 0
L U I S 2 1 4 1 . 6 0



PROC PRINT NOOBS ;
VAR NOME CLASSE ;
RUN ;


The SAS Syst em

NOME CLASSE

PAULA 100
FLAVI A 300
MARCOS 200
LUI S 300
53

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
condio for verdadeira;

- Comando WHERE no pode ser utilizado com 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 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

entre um e outro
CONTAINS ? contm

Ex.24:


PROC PRINT DATA=ARQ.CADASTRO;
WHERE NOME CONTAINS "SILVA";
RUN;
DATA TESTE;
SET ARQ.CADASTRO;
WHERE SALARIO BETWEEN 1000 AND 3000;
RUN;
54

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.25:


DATA TRABALHO ;
INFILE "A:\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 Syst em

NOME DEP_NO COM SALARI O DEP SAL

CARLOS 201 1500 1500 VENDAS 3000
ELI ANE 101 . 1800 ADMI NI 1800
ALVARO 101 . 3800 ADMI NI 3800
FATI MA 201 500 1500 VENDAS 2000
55

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.26:
DATA TRABALHO ;
INFILE "A:\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 Syst em

NOME DEP_NO COM SALARI O DEP SAL

CARLOS 201 1500 1500 VENDAS 3000
ELI ANE 101 . 1800 ADMI NI STRATI VO 1800
ALVARO 101 . 3800 ADMI NI STRATI VO 3800
FATI MA 201 500 1500 VENDAS 2000
56

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> = <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.

Ex.27: Iterativo

DO MES="J AN", "FEV", "MAR" ; ( 3 33 3 vezes) ; END;

DO I = 1 11 1 TO 120 120 120 120 ; ( 120 120 120 120 vezes) ; END;

DO I = 1 11 1 TO 120 120 120 120 BY 2 22 2 ; ( 60 60 60 60 vezes) ; END;

DO I = 120 120 120 120 TO 1 11 1 BY - 1 11 1 ; ( 120 120 120 120 vezes) ; END;

DO I = 1 11 1 TO 10 10 10 10 WHI LE ( X < Y) ; ( 10 10 10 10 vezes ou enquant o enquant o enquant o enquant o X < Y) ; END;

DO I = 2 22 2 TO 20 20 20 20 BY 2 22 2 UNTI L ( ( X/ 3 33 3) >Y) ; ( 10 10 10 10 vezes ou at at at at ( X/ 3 33 3) >Y) ; END;

DO I = 10 10 10 10 TO 0 00 0 BY - 1 11 1 WHI LE ( MES="J AN") ; ( 11 11 11 11 vezes ou enquant o enquant o enquant o enquant o o MES=J AN) ; END;
57


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.


DO WHILE <(expresso)> ; <== ( Validao no incio )
. . .
END;


expresso Combinao de variveis que determina uma condio para
a execuo do "loop", entre parnteses.

Ex.28:

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;

PROC PRINT;RUN;
SAS System

X N

55 6

58


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.


DO UNTIL <(expresso)> ;
. . .
END;<== ( Validao no fim )

expresso Combinao de variveis que determina uma condio para
a execuo do "loop", entre parnteses.

Ex.29:

DATA ;
X=0; N=0;
DO UNTIL (N GT 5) ;
X=X+N**2 ;
N=N+1 ;
END ; <==( validao no fim. Executa 6 vezes )
RUN;

PROC PRINT;RUN;
SAS System

X N

55 6

59

14.10 - Comandos DROP e KEEP

- Tipo: Comandos de declarao;

- Uso: Data step e Opo de arquivos;

- O comando DROP, elimina as variveis de um arquivo SAS;

- O comando KEEP, mantm as variveis 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 <varivel> <varivel> . . . ;

KEEP <varivel> <varivel> . . . ;


varivel Nome de uma varivel que ser eliminada, ou ser mantida
em um arquivo SAS (Data Set).


Ex.30:
DATA CLASSE ;
INFILE "C:\ALUNOS\CADASTRO.DAT" ;
INPUT NOME $15. SEXO $1. ENDERECO $30. CEP $8. RG $10. CPF $11.
MAT $8. INST $10. PESO 3. ALT 3. ESTCIV $1. ;
RUN;

DATA SUBARQ1 ;
SET CLASSE ;
DROP PESO ALT ESTCIV ;
RUN;

DATA SUBARQ2 ;
SET CLASSE ;
KEEP NOME END CEP ;
RUN;
60


14.11 - Opes de Arquivos SAS

- Todos arquivos, com estrutura SAS, possuem opes de configurao
que so especificados aps 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 especifica um arquivo, 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.31:
DATA CLASSE ;
INFILE "C:\ALUNOS\CADASTRO.DAT" ;
INPUT NOME $15. SEXO $1. ENDERECO $30. CEP $8. RG $10.
CPF $11. MAT $8. INST $10. PESO 3. ALT 3. ESTCIV $1. ;
RUN;

DATA SUBARQ1 (DROP= PESO ALT ESTCIV);
SET CLASSE ;
RUN;

DATA SUBARQ2 ;
SET CLASSE (KEEP= NOME END CEP) ;
RUN;
61

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;

- 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.32:







DATA PRODUTO ;
INFILE "D:\DADOS\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 06 07 08 09
1 7 1 0 5 2 5
4 2 5 0 - 6
3 1 5 1 0 0
2 4 0 3
5 1 1 5
PROC PRINT NOOBS ;
RUN ;
The SAS Syst em

DEP UNI DADE CUSTO CUSTOUNI

17 10 525 52. 5
31 5 100 20. 0
5 1 15 15. 0
62

14.13 - Comando OUTPUT

- Tipo: Comando de execuo;

- Uso: Data Step;

- O comando OUTPUT funciona de duas formas:

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).

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
desliga o OUTPUT implcito ao final do DATA Step. A ao de salvar o
dado fica por conta do programador.


OUTPUT ;

IF <expresso> THEN OUTPUT ;

IF <expresso> THEN OUTPUT <arquivo> ;


expresso Combinao de variveis e valores que determinam uma
condio a ser testada.

arquivo Nome de um arquivo SAS, que j tenha sido especificado
e criado pelo comando DATA.

63

Ex.33:





































Ex.34:




LIBNAME ARQ "C:\ALUNOS" ;
DATA ARQ.HOMENS ARQ.MULHERES ;
SET ARQ.CADASTRO ;
IF SEXO="F" THEN OUTPUT ARQ.MULHERES ;
ELSE OUTPUT ARQ.HOMENS ;
RUN;

PROC PRINT DATA=ARQ.MULHERES ; VAR NOME ; RUN ;
PROC PRINT DATA=ARQ.HOMENS ; VAR NOME ; RUN ;
LIBNAME K1 "A:\" ;
DATA K1.VARIACAO ;
INFILE "A:\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 13 14 15 16 17 18
R O S A N A 5 0 1 5 0 0
P A U L O 1 0 1 . 1 0 1 0 0 0
M A R I A 1 0 1 . 1 5 8 0 0
C L A U D I A 1 0 1 . 2 0 7 5 0
C A R L O S 8 0 1 8 0 0

PROC PRINT ; RUN ;
The SAS Syst em

Obs NOME NI VEL SALARI O SAL

1 PAULO 10 1000 1100
2 PAULO 10 1000 2200
3 MARI A 10 800 920
4 MARI A 10 800 1840
5 CLAUDI A 10 750 900
6 CLAUDI A 10 750 1800
64

3 LABORATRIO

Utilizao dos comandos de programao em DATA Step

A partir do arquivo SAS CADASTRO, gerado no 1 laboratrio:

1 - Monte um programa que crie um novo arquivo SAS, temporrio, somente com
os dados das pessoas do sexo feminino e casadas. Gere um relatrio com os dados
desse arquivo. Significado dos cdigos do campo ESTADO CIVIL:

(1) solteiro
(2) casado
(3) separado.

OBS: Utilize o comando SET para abrir o arquivo de dados, e
IF/THEN/ELSE para fazer a seleo.

2 - Monte um programa que crie um novo arquivo SAS, temporrio;

- Crie trs variveis novas que serviro como acumuladoras do nmero de
pessoas casadas (CAS), solteiras (SOL) e separadas (SEP), a partir da
anlise da varivel ESTADO CIVIL;

- Gere um relatrio com os dados deste arquivo;

OBS: Utilize o comando RETAIN para permitir a acumulao. Utilize o
comando de atribuio (=) para criar as variveis e simular um contador.
Utilize o comando IF-THEN/ELSE para distinguir o ESTADO CIVIL das
pessoas. O ltimo registro processado ter o valor total da distribuio do
ESTADO CIVIL.

3 - Monte um programa que crie um novo arquivo SAS, temporrio;

- Crie uma varivel numrica constante (FAM) igual a 1.1;
- A partir da anlise da varivel FILHOS, crie uma nova varivel (DEP) e
altere a varivel SALARIO :

Se possui filhos: - DEP ="COM DEPENDENTES"
- SALARIO ter o resultado da multiplicao da varivel
SALARIO pela varivel FAM;
Se no possui filhos: - DEP="NO POSSUI DEPENDENTES"

- Gere um relatrio com os dados deste arquivo;
65


OBS: Utilize o comando de atribuio (=) para criar e alterar as variveis.
Utilize o comando IF-THEN/ELSE, interagindo com o comando DO/END
para se distinguir se possui ou no filhos e permitir a execuo de mais de
um comando. Preste ateno aos resultados, verifique se est tudo correto.

4 - Monte um programa que crie um novo arquivo SAS, temporrio;

- Selecione as pessoas que ganham menos de R$ 3.000,00;
- Aumente o valor do salrio dessas pessoas em 10% at 12 vezes (relativos
a 12 meses), ou at o salrio atingir um valor superior a R$ 5.000,00. Utilize
a equao:

SALARIO=SALARIO*1.1

- Salve os valores incrementados, um a um;
- O arquivo s deve conter as variveis: NOME, EMPRESA, FUNCAO e
SALARIO ;
- Gere um relatrio com os dados deste arquivo;

OBS: Utilize o comando IF-THEN/ELSE para selecionar as pessoas.
Utilize o comando DO/END Iterativo para aumentar o salrio. Utilize o
comando KEEP ou DROP para determinar quais as variveis que sero
arquivadas.

5 - Monte um programa que crie trs novos arquivos SAS, temporrios, (SA,
LTDA e INSTITUTO) ;

- Selecione os dados, de maneira que, cada arquivo s possua os dados
referentes a cada TIPO DE EMPRESA.

- Elimine dos trs arquivos as pessoas que ocupam FUNCAO de
"DIRETOR" e "GERENTE";

- Gere os relatrios desses trs arquivos;

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.

66

6 - Monte um programa com um nico DATA Step que crie seis novos arquivos
SAS, permanentes, (PESSOAL , TRABALHO , FAMILIA, SOLTEIRO,
CHEFE e SUB) no diretrio c:\curso\sas ;

- Cada arquivo dever conter os seguintes dados:

PESSOAL Variveis: NOME, SEXO, IDADE, PESO, ALTURA,
ANIVERSARIO, ESTADO CIVIL, FILHOS, RG e
CPF

TRABALHO Variveis: NOME, RG, CPF, EMPRESA, FUNCAO,
ADMISSAO, SALARIO e TIPO DE EMPRESA

FAMILIA Pessoas que possuam filhos;

SOLTEIRO Pessoas solteiras;

CHEFE Pessoas que ocupam cargo de chefia (GERENTE e
DIRETOR);

SUB Pessoas que no ocupam cargos de chefia;

- Gere relatrios para ver o contedo de cada arquivo;

7 - Com os dados do arquivo CADASTRO, monte um programa SAS que gere um
arquivo temporrio com as pessoas entre 20 e 30 anos, sendo que, cada pessoa
selecionada receber um bonus de R$ 3.500,00 ao salrio anual, at completar 30
anos. Crie uma varivel nova (BONUS) com o valor total de bonus recebido por cada
pessoa selecionada, e uma varivel (NUM) com o nmero de vezes que a pessoa
recebeu o bonus;

- Utilize o comando WHERE com um operador especial para selecionar
os dados;
- Utilize o comando DO WHILE ou UNTIL para processar a varivel
com o valor total de bonus recebido;
- No altere a varivel IDADE do arquivo. Crie novas variveis
auxiliares:

IDADE_INICIAL que ser igual a IDADE
IDADE_FINAL que ser a IDADE incrementada

- Gere um relatrio com as variveis: NOME, IDADE_INICIAL,
IDADE_FINAL, SALARIO, BONUS , NUM;

OBS: Ateno lgica do WHILE ou UNTIL, para que o programa no entre em
loop.
67

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;
68

15.2 - Funes de Tratamento de Caractere

15.2.1 - Funo UPCASE

- Funo que converte o contedo de uma varivel ou
expresso, para caracteres maisculos.

<varivel>=UPCASE (argumento) ;


varivel Nome at 32 caracteres que armazenar o resultado do
processamento da funo.


argumento Varivel ou expresso caractere, cujo contedo ser
convertido para letras maisculas.



15.2.2 - Funo LOWCASE

- Funo que converte o contedo de uma varivel ou
expresso, para caracteres minsculos.

<varivel>=LOWCASE (argumento) ;


varivel Nome at 32 caracteres que armazenar o resultado do
processamento da funo.


argumento Varivel ou expresso caractere, cujo contedo ser
convertido para letras minsculas.

69

15.2.3 - Funo SUBSTR

- Funo que efetua a manipulao do contedo de uma
varivel caractere.

<varivel>=SUBSTR (arg1, arg2, [arg3]) ;


varivel Nome at 32 caracteres que armazenar o resultado do
processamento da funo.

arg1 Primeiro argumento, determina a varivel ou expresso
caractere cujo contedo ser manipulado.

arg2 Segundo argumento, determina a posio inicial do
contedo da varivel, que ser manipulado.

arg3 Terceiro argumento, 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.


OBS: possvel manipular dados numricos. Estes sero
automaticamente convertidos para caractere, mas ateno,
todo campo numrico alinhado pela direita e possui um
formato padro de 12 dgitos, no mnimo, isso equivale a
12 caracteres resultantes, na converso.

Nmero:
3 5

Caractere:

3 5

70

15.2.4 - Funo COMPRESS

- Funo que retira caracteres, individualmente, de um
argumento.

<varivel>=COMPRESS(arg1,[arg2]);

varivel Nome at 32 caracteres que armazenar o resultado do
processamento da funo;

arg1 Primeiro argumento, determina a varivel ou expresso
caractere cujo contedo ser compactado;

arg2 Segundo argumento, opcional e entre aspas, determina um
ou mais caracteres que sero retirados, individualmente, do
primeiro argumento.

OBS:Se o segundo argumento no for especificado, a
funo assumir o branco como caractere padro a ser
retirado.


15.2.5 - Funo LENGTH

- Funo que informa o tamanho, em bytes, do argumento.

<varivel>=LENGTH(arg);

varivel Nome at 32 caracteres que armazenar o resultado,
numrico, do processamento da funo;

arg Argumento, determina a varivel ou expresso caractere
cujo contedo ser determinado o tamanho;


OBS: O Valor retornado pela funo LENGTH, sempre
ser numrico.

71

15.2.6 - Funo INDEX


- Funo que retorna um valor numrico que representa a
primeira posio de um determinado caractere dentro do
argumento.


<varivel>=INDEX (arg1, arg2) ;


varivel Nome at 32 caracteres que armazenar o resultado,
numrico, do processamento da funo.

arg1 Primeiro argumento, determina a varivel ou expresso
caractere cujo contedo ser manipulado.

arg2 Segundo argumento, determina o caractere, entre aspas,
que se deseja localizar no primeiro argumento.


OBS: Se o caractere especificado no for encontrado, a
funo index retornar o valor zero.

Ex.35:
DATA POSICAO;
REGIAO="FRANA#ALEMANHA#ESPANHA#ITLIA";
LOCAL=INDEX(REGIAO,"ESPANHA"); OUTPUT ;
LOCAL=INDEX(REGIAO,"NHA"); OUTPUT ;
LOCAL=INDEX(REGIAO,"I"); OUTPUT ;
LOCAL=INDEX(REGIAO,"ING"); OUTPUT ;
RUN;
PROC PRINT; VAR LOCAL; RUN;

The SAS Syst em

Obs LOCAL

1 17
2 13
3 25
4 0
72


Ex.36:

Exemplo que trabalha com o arquivo SAS, CADASTRO. Este arquivo
possui as variveis: NOME, ENDERECO, SEXO, RG, CIC. Deseja-se
separar da varivel RG o valor numrico do valor caractere que identifica a
Secretaria de Segurana Pblica, armazenado-os em duas novas variveis:
RG_NUM e RG_SSP.

DATA NOVO (DROP=AUX);
INFILE "C:\ID\RG.DAT";
INPUT RG $ 18. ;
RG=UPCASE(RG);
AUX=INDEX(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
5 8 4 1 6 6 s s p / d f
2 3 4 s s p / s p
2 2 3 9 7 4 8 8 s s p / r s

8 6 7 9 4 7 E X R C I T O
1 2 3 4 5 6 S S P / G O

PROC PRINT NOOBS ;
VAR RG_NUM RG_SSP ;
RUN ;

The SAS Syst em

RG_NUM RG_SSP

584166 SSP/ DF
234 SSP/ SP
22397488 SSP/ RS
123456 SSP/ GO
73

15.3 - Funes de Truncamento


15.3.1 - Funo INT

- Funo que retorna com o valor inteiro de uma varivel
ou de uma expresso.

<varivel> = INT ( argumento ) ;


varivel Nome at 32 caracteres que armazenar o resultado do
processamento da funo.

argumento Varivel ou expresso numrica, da qual se deseja obter o
valor inteiro.


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 do
processamento da funo.

arg1 Varivel ou expresso numrica da qual se deseja
arredondar.

arg2 Argumento 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.

74

Ex.37:




DATA DADOS ;
INFILE "A:\NUMEROS.DAT";
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: NUMEROS.DAT
01 02 03 04 05 06 07
3 2 6 . 5 4
1 9 7 7 . 0 9
5 5 8 . 8 8
1 5 8 8 . 2 9

PROC PRINT DOUBLE;
RUN ;

The SAS Syst em

Obs X TRUNCA I NTEI RO DEZENA CENTENA DECI MO CENTES MULT5

1 326. 54 326 327 330 300 326. 5 326. 54 325

2 1977. 09 1977 1977 1980 2000 1977. 1 1977. 09 1975

3 558. 88 558 559 560 600 558. 9 558. 88 560

4 1588. 29 1588 1588 1590 1600 1588. 3 1588. 29 1590
75

15.4 - Funes Estatsticas Descritivas

15.4.1 - Funo SUM

- Funo que efetua um somatrio de valores entre
variveis numricas, para cada registro de dados.

<varivel> = SUM ( [OF] var1, var2, . . . varn ) ;


varivel Nome at 32 caracteres que armazenar o
resultado do processamento da funo.

var1, var2, . . . 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 entre os valores de
variveis numricas, para cada registro de dados.

<varivel> = MEAN ( [OF] var1, var2, . . . varn) ;


varivel Nome at 32 caracteres que armazenar o
resultado do processamento da funo.

var1, var2, . . . varn Nome das variveis numricas que se deseja
efetuar uma mdia.

OF Opcional, identifica um intervalo de variveis.

76

Ex.38:


LIBNAME T "C:\" ;
DATA T.TEMP ;
INFILE "C:\REGIAO\TEMP.DAT";
INPUT (T1-T6)(4.) ;
TEMPSOMA = SUM( OF T1-T6 ) ;
TEMPMED = MEAN( OF T1-T6 ) ;
RUN;

Arquivo: TEMP.DAT
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
2 3 . 5 2 5 . 2 2 4 . 8 2 5 . 7 2 5 . 8 2 2 . 0
1 8 . 5 1 7 . 4 1 8 . 9 1 8 . 9 2 0 . 5 2 0 . 8
1 0 1 2 2 5 1 5 1 8 1 2

PROC PRINT DATA=T.TEMP DOUBLE NOOBS ;
RUN ;

The SAS Syst em

T1 T2 T3 T4 T5 T6 TEMPSOMA TEMPMED

23. 5 25. 2 24. 8 25. 7 25. 8 22. 0 147 24. 5000

18. 5 17. 4 18. 9 18. 9 20. 5 20. 8 115 19. 1667

10. 0 12. 0 25. 0 15. 0 18. 0 12. 0 92 15. 3333
77

15.5 - Funes de Tratamento de Data e Hora

15.5.1 - Funo MDY

- Funo que gera uma data a partir de valores de dia, ms
e ano.


<varivel>=MDY(mm, dd, yyyy);


varivel Nome at 32 caracteres que armazenar o resultado do
processamento da funo;

mm Valor numrico que representa o ms;

dd Valor numrico que representa o dia;

yyyy Valor numrico que representa o ano.


15.5.2 - Funes: DAY, MONTH , YEAR


- Funes que extraem de uma data o dia, o ms e o ano
respectivamente.


<varivel>=DAY(data);
<varivel>=MONTH(data);
<varivel>=YEAR(data);


varivel Nome at 32 caracteres que armazenar o resultado do
processamento da funo;

data Valor que representa uma data SAS.
78

15.5.3 - Funo TODAY

- Funo que retorna a data atual do ambiente de
processamento. No possui argumentos.

<varivel>=TODAY();


15.5.4 - Funo TIME

- Funo que retorna a hora atual do ambiente de
processamento. No possui argumentos.

<varivel>=TIME();


15.5.5 - Funes: HOUR, MINUTE e SECOND

- Funes que extraem de um valor tempo a hora, minuto e
segundo respectivamente.


<varivel>=HOUR(tempo);
<varivel>=MINUTE(tempo);
<varivel>=SECOND(tempo);


varivel Nome at 32 caracteres que armazenar o resultado do
processamento da funo;

tempo Valor que representa o tempo no formato SAS.



79

Ex.39: Tratamento de DATA

DATA ANIVERSARIO;
INFILE "C:\DADOS.TXT"
INPUT DIA 1-2 MES 4-5 ANO 7-10;
ANIV=MDY(MES,DIA,ANO);
IDADE_ANO=INT((TODAY()-ANIV)/365.25);
IDADE_DIA="01jan2000"d - ANIV;
RUN;

Arquivo: DADOS.TXT
1 2 3 4 5 6 7 8 9 10
1 0 1 1 1 9 7 6
2 5 0 4 2 0 0 0
1 4 0 8 1 9 3 4
0 8 0 1 1 9 6 7
0 3 0 3 1 9 5 5


TITLE1 "Relatrio de Idades";
PROC PRINT;RUN;

Rel at r i o de I dades

I DADE_ I DADE_
Obs DI A MES ANO ANI V ANO DI A

1 10 11 1976 6158 33 8452
2 25 4 2000 14725 10 - 115
3 14 8 1934 - 9271 75 23881
4 8 1 1967 2564 43 12046
5 3 3 1955 - 1765 55 16375
80

4 LABORATRIO

Utilizar as funes do SAS.

1 - A partir dos dados do arquivo CADASTRO, monte um programa que crie um novo arquivo
SAS, temporrio, somente com as pessoas que possuem o sobrenome Mendes, e as novas
variveis:

PNOME Conter a parte do NOME depois da vrgula;
SNOME Conter a parte do NOME antes da vrgula;
CP Conter os 9 primeiros dgitos da varivel CPF;
DV Conter os dois ltimos dgitos da varivel CPF;
INTEIRO Conter o valor inteiro da varivel SALARIO;
ARR1 Conter o arredondamento da expresso SALARIO*0.8235 para um valor
com duas casas decimais;
ARR2 Conter o arredondamento da expresso SALARIO*0.8235 para um valor
inteiro;
ARR3 Conter o arredondamento da expresso SALARIO*0.8235 para um valor
mltiplo de 5;
T_EMP Conter o tempo do funcionrio na empresa, em anos;
APOS Conter o nmero de anos que falta para o funcionrio se aposentar,
sabendo-se que a idade para solicitar aposentadoria com 65 anos;

- Gere um relatrio para verificar os resultados;

OBS: Utilize as funes: INDEX, SUBSTR, INT, ROUND, YEAR|.

2 - A partir dos dados do arquivo CADASTRO, monte um programa que crie um arquivo SAS,
temporrio, e as novas variveis novas:

SAL_FAM Salrio famlia, s para quem possui filhos. Ser o resultado do
SALARIO*(1+(FILHOS*0.05)) ;

SAL_COM Salrio comissionado, s para quem possui cargo de chefia. Ser o
resultado do SALARIO*1.2 ;

SAL_SOM Somatrio de salrios. Ser o resultado do somatrio entre as variveis:
SAL, SAL_FAM e SAL_COM;

SAL_MED Mdia dos salrios. Ser o resultado da mdia entre as variveis: SAL,
SAL_FAM e SAL_COM ;

- Gere um relatrio para visualizar os resultados;


OBS: Utilize as funes SUM e MEAN, para somar e tirar a mdias entre as variveis,
respectivamente.
81

16 - COMANDOS DE CONFIGURAO

16.1 - Comando OPTIONS

- Tipo: Comando de declarao;

- Uso: Livre;

- Comando 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
Data set ( YES ou CHAR, BINARY, NO );

DEVICE=WIN Opo que especifica um "driver" para impresso ou sada de relatrio;

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=1 Opo que especifica a numerao inicial das paginas de OUTPUT, para
cada execuo;

LINESIZE=65 Opo que especifica o tamanho da linha de impresso do relatrio
(nmero de colunas);

PAGESIZE=24 Opo que especifica o tamanho da pagina de impresso (nmero de
linhas);

ERRORS=20 Opo que especifica o nmero mximo de erros a serem exibidos no
LOG;

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: 66MBytes;

MEMSIZE= Opo que especifica a quantidade de memria que o sistema SAS poder
utilizar para qualquer processamento. No windows: livre;


82

Ex.40:


Ex.41:




LIBNAME ARQ "C:\SAS" ;
OPTIONS COMPRESS=YES OBS=100 DEVICE=WINPRTC 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; o relatrio
sair direto na impressora colorida do ambiente windows, com 66 linhas e 132
colunas por pgina, e sem a impresso da data no cabealho.
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.
83

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. Pode-se associar rtulos com
no mximo 256 caracteres;

- Utilizado no DATA Step O LABEL permanente, ser
armazenado na estrutura do arquivo;
- Utilizado em PROC Step O LABEL temporrio, existir apenas
para a execuo do procedimento.

LABEL <varivel> = "rtulo" . . . ;

varivel Nome da varivel na qual ser associado um rtulo
descritivo.
rtulo Descrio, at 256 caracteres, que ser associada a varivel.
Ex.42:


DATA ROTULO ;
INFILE "C:\CADASTRO\ROTULO.DAT";
INPUT NOME $6. @8 ALT 4.1 @13 PES 4.1 ;
LABEL ALT = "ALTURA EM POLEGADAS"
PES = "PESO EM LIBRAS" ;
RUN;
Arquivo: ROTULO.DAT
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16
P A U L O 5 9 . 0 9 9 . 5
M A R C I O 5 7 . 3 8 3 . 0
S O N I A 5 1 . 3 5 0 . 5

PROC PRINT NOOBS SPLIT=" " ;
RUN ;
Rel at r i o de I dades

ALTURA PESO
EM EM
NOME POLEGADAS LI BRAS

PAULO 59. 0 99. 5
MARCI O 57. 3 83. 0
SONI A 51. 3 50. 5
84

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;

- Utilizado no DATA Step O FORMAT permanente, ser
armazenado na estrutura do arquivo;
- Utilizado em PROC Step O FORMAT temporrio, existir
apenas para a execuo do procedimento.

FORMAT <varivel> <formatow.d> . . . ;

varivel Nome da varivel que ser formatada.
formatow.d Nome especial do formato com o tamanho do campo (w) e
nmero de casas decimais (d), criado pelo prprio usurio
ou da biblioteca de formatos do SAS:

COMMAXw.d Formata com pontos e vrgula;
DDMMYYw. Formata um campo data com /;
Ex.43:
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;
The SAS Syst em

Dat a de Sal r i o
Obs Sobr enome, Nome Ani ver sr i o Br ut o

1 MALA, ROSANE 17/ 04/ 1986 1. 662, 28
2 SI LVA, CECI LI A 29/ 07/ 1976 3. 612, 03
3 PI NTOTO, TANI A 15/ 03/ 1977 3. 133, 36
4 MARQUES, LI GI A 13/ 10/ 1983 1. 584, 08
5 SERPA, RENATO 14/ 06/ 1977 3. 317, 27
6 PI SCO, PAULO 27/ 06/ 1977 3. 900, 55
7 MARKO, MARCO 08/ 02/ 1984 2. 139, 16
8 GUEDES, CARLA 11/ 10/ 1985 2. 076, 92
9 YATAKA, CARLA 09/ 11/ 1986 1. 534, 09
10 MI LI A, FLAVI A 16/ 07/ 1985 1. 795, 60
85

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:

HTML Gera os resultados no padro html;
PDF Gera os resultados no padro Adobe;
PS Gera os resultados no padro PostScript;
RTF Gera os resultados no padro Rich Text;

opo genrica:

FILE= Determina a localizao e 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

OBS: Cada padro de visualizao possui suas prprias opes;

86

Ex.44:
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;




The SAS System

Obs Sobrenome,Nome Data de
Aniversrio
Salrio
Bruto
1 MALA,ROSANE 17/04/1986 1.662,28
2 SILVA,CECILIA 29/07/1976 3.612,03
3 PINTOTO,TANIA 15/03/1977 3.133,36
4 MARQUES,LIGIA 13/10/1983 1.584,08
5 SERPA,RENATO 14/06/1977 3.317,27
6 PISCO,PAULO 27/06/1977 3.900,55
7 MARKO,MARCO 08/02/1984 2.139,16
8 GUEDES,CARLA 11/10/1985 2.076,92
9 YATAKA,CARLA 09/11/1986 1.534,09
10 MILIA,FLAVIA 16/07/1985 1.795,60


87

17 - PROCEDIMENTOS ESTATSTICOS BSICOS

17.1 - Procedimento MEANS

Procedimento que produz relatrios com estatsticas
descritivas simples para variveis numricas. O relatrio gerado
possui uma formatao padro com algumas estatsticas:
Freqncia (N), Mdia (MEAN), Desvio Padro (STD), valor
mximo (MAX) e o valor mnimo (MIN).


PROC MEANS [opes] ;
CLASS <lista de variveis> ;
VAR <lista de variveis> ;
BY <lista de variveis> ;
RUN;

opes DATA= Nome do arquivo SAS para ser processado;
MAXDEC= 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;

88

Ex.45:

Ex.46:

LIBNAME ARQ "G:\KUSEL\SAS" ;
PROC MEANS DATA=ARQ.MEDIA ;
RUN ;
The SAS Syst em 08: 49 Tuesday, August 10, 2010 1

The MEANS Pr ocedur e

Var i abl e N Mean St d Dev Mi ni mum Maxi mum
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
i dade 550 26. 3618182 7. 4751560 20. 0000000 78. 0000000
peso 550 79. 3567273 12. 6820018 41. 9000000 111. 5000000
al t ur a 550 1. 8381273 0. 1027400 1. 6000000 2. 0600000
sal ar i o 434 3332. 21 2693. 34 1500. 73 25377. 28
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

LIBNAME ARQ "G:\KUSEL\SAS" ;
OPTIONS NODATE NONUMBER;
PROC MEANS DATA=ARQ.MEDIA MAXDEC=2 MEDIAN MEAN MAX MIN ;
RUN ;
The SAS Syst em

The MEANS Pr ocedur e

Var i abl e Medi an Mean Maxi mum Mi ni mum
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
i dade 25. 00 26. 36 78. 00 20. 00
peso 78. 50 79. 36 111. 50 41. 90
al t ur a 1. 84 1. 84 2. 06 1. 60
sal ar i o 3080. 41 3332. 21 25377. 28 1500. 73
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
89

Ex.47:
Ex.48:
LIBNAME ARQ "G:\KUSEL\SAS" ;
OPTIONS NODATE NONUMBER;
PROC MEANS DATA=ARQ.MEDIA MAXDEC=2 N MEAN MAX MIN;
CLASS SEXO;
VAR SALARIO;
RUN ;
The SAS Syst em

The MEANS Pr ocedur e

Anal ysi s Var i abl e : sal ar i o

N
sexo Obs N Mean Maxi mum Mi ni mum
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
F 350 271 3302. 66 20336. 22 1500. 73

M 200 163 3381. 35 25377. 28 1507. 53
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
LIBNAME ARQ "G:\KUSEL\SAS" ;
OPTIONS NODATE NONUMBER;
PROC SORT DATA=ARQ.MEDIA ; BY SEXO ;
PROC MEANS DATA=ARQ.MEDIA MAXDEC=2 N MEAN MAX MIN ;
BY SEXO ;
VAR SALARIO ;
RUN ;
The SAS Syst em

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - sexo=F - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

The MEANS Pr ocedur e

Anal ysi s Var i abl e : sal ar i o

N Mean Maxi mum Mi ni mum
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
271 3302. 66 20336. 22 1500. 73
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -


- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - sexo=M - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Anal ysi s Var i abl e : sal ar i o

N Mean Maxi mum Mi ni mum
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
163 3381. 35 25377. 28 1507. 53
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
90

17.2 - Procedimento FREQ

Procedimento que produz tabelas simples e tabelas
cruzadas, da freqncia de variveis numricas e caracteres.


PROC FREQ [opes] ;
BY <lista de variveis> ;
TABLES <variveis> / [opes] ;


opes DATA= Nome de um arquivo SAS;
NLEVELS Indica o nmero de valores distintos das variveis que esto sendo
analisadas;
PAGE Especifica que seja gerado uma tabela por pgina do relatrio;
COMPRESS Especifica que seja gerado o mximo de tabelas possveis em cada
pgina de relatrio;


BY Especifica uma ou mais variveis que possibilitam o agrupamento de
dados. OBS: necessrio executar um PROC SORT, antes;


TABLES Especifica as variveis e a regra de formao da tabela de freqncia.
Utiliza-se o caractere * para cruzar as variveis.
Ex.: (tables a*b y*x peso*altura).

opes 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 freqncia e
percentual acumulativo.
NOPERCENT No gera as colunas com percentuais.
NOFREQ No gera a coluna de freqncia.


91

Ex.49:
LIBNAME ARQ "G:\KUSEL\SAS" ;
PROC FREQ DATA=ARQ.MEDIA NLEVELS COMPRESS;
TABLES SEXO IDADE ;
RUN ;
The SAS Syst em

The FREQ Pr ocedur e

Number of Var i abl e Level s

Var i abl e Level s
- - - - - - - - - - - - - - - - - - - -
sexo 2
i dade 31

Cumul at i ve Cumul at i ve
sexo Fr equency Per cent Fr equency Per cent
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
F 350 63. 64 350 63. 64
M 200 36. 36 550 100. 00

Cumul at i ve Cumul at i ve
i dade Fr equency Per cent Fr equency Per cent
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
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
92

Ex.50:



LIBNAME ARQ "G:\KUSEL\SAS" ;
PROC FREQ DATA=ARQ.CADASTRO ;
TABLES SEXO*EMPRESA ;
RUN ;
The SAS Syst em

The FREQ Pr ocedur e

Tabl e of sexo by empr esa

sexo empr esa

Fr equency|
Per cent |
Row Pct |
Col Pct | ATLAS S. | MALTA LT| PARI S I N| Tot al
| A. | DA | STI TUTO |
- - - - - - - - - +- - - - - - - - +- - - - - - - - +- - - - - - - - +
F | 58 | 101 | 112 | 271
| 13. 36 | 23. 27 | 25. 81 | 62. 44
| 21. 40 | 37. 27 | 41. 33 |
| 59. 79 | 58. 05 | 68. 71 |
- - - - - - - - - +- - - - - - - - +- - - - - - - - +- - - - - - - - +
M | 39 | 73 | 51 | 163
| 8. 99 | 16. 82 | 11. 75 | 37. 56
| 23. 93 | 44. 79 | 31. 29 |
| 40. 21 | 41. 95 | 31. 29 |
- - - - - - - - - +- - - - - - - - +- - - - - - - - +- - - - - - - - +
Tot al 97 174 163 434
22. 35 40. 09 37. 56 100. 00

Fr equency Mi ssi ng = 116

93

Ex.51:



LIBNAME ARQ "G:\KUSEL\SAS" ;
PROC FREQ DATA=ARQ.CADASTRO ;
TABLES SEXO*EMPRESA / CROSSLIST ;
RUN ;
The SAS Syst em

The FREQ Pr ocedur e

Tabl e of sexo by empr esa

Row Col umn
sexo empr esa Fr equency Per cent Per cent Per cent
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
F ATLAS S. A. 58 13. 36 21. 40 59. 79
MALTA LTDA 101 23. 27 37. 27 58. 05
PARI S I NSTI TUTO 112 25. 81 41. 33 68. 71

Tot al 271 62. 44 100. 00
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
M ATLAS S. A. 39 8. 99 23. 93 40. 21
MALTA LTDA 73 16. 82 44. 79 41. 95
PARI S I NSTI TUTO 51 11. 75 31. 29 31. 29

Tot al 163 37. 56 100. 00
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Tot al ATLAS S. A. 97 22. 35 100. 00
MALTA LTDA 174 40. 09 100. 00
PARI S I NSTI TUTO 163 37. 56 100. 00

Tot al 434 100. 00
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Fr equency Mi ssi ng = 116

94

Ex.52:



TITLE;
OPTIONS NODATE NUMBER PAGENO=1;
PROC FREQ DATA=ARQ.CADASTRO ;
TABLE SEXO*EMPRESA / MISSING
NOCUM
NOPERCENT
FORMAT=commax6.2;
RUN;


1

The FREQ Pr ocedur e

Tabl e of sexo by empr esa

sexo empr esa

Fr equency|
Row Pct |
Col Pct | | ATLAS S. | MALTA LT| PARI S I N| Tot al
| | A. | DA | STI TUTO |
- - - - - - - - - +- - - - - - - - +- - - - - - - - +- - - - - - - - +- - - - - - - - +
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 |
- - - - - - - - - +- - - - - - - - +- - - - - - - - +- - - - - - - - +- - - - - - - - +
Tot al 116, 00 97, 00 174, 00 163, 00 550, 00
95

17.3 - Procedimento TABULATE

O procedimento TABULATE monta relatrios com estatsticas descritivas
num formato tabular.

PROC TABULATE [opes] ;
CLASS <variveis> ;
VAR <variveis> ;
BY <variveis> ;
TABLE <sub-tabela , linha , coluna> / [opes] ;

opes DATA= Nome do arquivo SAS;
FORMAT= Formata todos os valores de todas as clulas da tabela;

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 as 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;

sub-tabela Especifica uma varivel ou expresso que ir definir a regra de
formao das sub-tabelas;
linha Especifica uma varivel ou expresso que ir definir a regra de
formao das linhas da tabela;
coluna Especifica uma varivel ou expresso que ir definir a regra de
formao das colunas da tabela;

opes 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;

OBS: Regras de formao: elemento*elemento cruzamento
elemento elemento concatenao
(elemento elemento) agrupamento

Elementos: variveis, funes estatsticas (SUM, MEAN, N, PCTN, PCTSUM, etc),
ALL (totalizador).
96

Ex.53:
Ex.54:

Ex.55:
PROC TABULATE DATA=ARQ.CADASTRO ;
CLASS SEXO ;
VAR IDADE PESO;
TABLE SEXO, IDADE PESO ;
RUN ;
The SAS Syst em
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
| | i dade | peso |
| | - - - - - - - - - - - - +- - - - - - - - - - - - |
| | Sum | Sum |
| - - - - - - - - - - - - - - - - - - - - - +- - - - - - - - - - - - +- - - - - - - - - - - - |
| sexo | | |
| - - - - - - - - - - - - - - - - - - - - - | | |
| F | 9216. 00| 26766. 60|
| - - - - - - - - - - - - - - - - - - - - - +- - - - - - - - - - - - +- - - - - - - - - - - - |
| M | 5283. 00| 16879. 60|
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
PROC TABULATE DATA=ARQ.CADASTRO ;
CLASS SEXO ;
VAR IDADE PESO;
TABLE SEXO , (IDADE PESO)*MEAN ;
RUN ;
The SAS Syst em
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
| | i dade | peso |
| | - - - - - - - - - - - - +- - - - - - - - - - - - |
| | Mean | Mean |
| - - - - - - - - - - - - - - - - - - - - - +- - - - - - - - - - - - +- - - - - - - - - - - - |
| sexo | | |
| - - - - - - - - - - - - - - - - - - - - - | | |
| F | 26. 33| 76. 48|
| - - - - - - - - - - - - - - - - - - - - - +- - - - - - - - - - - - +- - - - - - - - - - - - |
| M | 26. 42| 84. 40|
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
PROC TABULATE DATA=ARQ.CADASTRO ;
CLASS SEXO EMPRESA ;
VAR PESO;
TABLE SEXO, EMPRESA*PESO*MEAN ;
RUN ;
The SAS Syst em
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
| | empr esa |
| | - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - |
| | | | PARI S |
| | ATLAS S. A. | MALTA LTDA | I NSTI TUTO |
| | - - - - - - - - - - - - +- - - - - - - - - - - - +- - - - - - - - - - - - |
| | peso | peso | peso |
| | - - - - - - - - - - - - +- - - - - - - - - - - - +- - - - - - - - - - - - |
| | Mean | Mean | Mean |
| - - - - - - - - - - - - - - - - - - - - - +- - - - - - - - - - - - +- - - - - - - - - - - - +- - - - - - - - - - - - |
| sexo | | | |
| - - - - - - - - - - - - - - - - - - - - - | | | |
| F | 77. 67| 77. 44| 75. 42|
| - - - - - - - - - - - - - - - - - - - - - +- - - - - - - - - - - - +- - - - - - - - - - - - +- - - - - - - - - - - - |
| M | 83. 87| 84. 24| 83. 77|
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
97

Ex.56:









PROC TABULATE DATA=ARQ.CADASTRO ;
CLASS SEXO EMPRESA ;
VAR ALTURA;
TABLE SEXO, EMPRESA ALL, ALTURA * MEAN / CONDENSE BOX=_PAGE_;
RUN ;
The SAS Syst em

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
| sexo F | al t ur a |
| | - - - - - - - - - - - - |
| | Mean |
| - - - - - - - - - - - - - - - - - - - - - +- - - - - - - - - - - - |
| empr esa | |
| - - - - - - - - - - - - - - - - - - - - - | |
| ATLAS S. A. | 1. 83|
| - - - - - - - - - - - - - - - - - - - - - +- - - - - - - - - - - - |
| MALTA LTDA | 1. 81|
| - - - - - - - - - - - - - - - - - - - - - +- - - - - - - - - - - - |
| PARI S I NSTI TUTO | 1. 78|
| - - - - - - - - - - - - - - - - - - - - - +- - - - - - - - - - - - |
| Al l | 1. 80|
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -


- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
| sexo M | al t ur a |
| | - - - - - - - - - - - - |
| | Mean |
| - - - - - - - - - - - - - - - - - - - - - +- - - - - - - - - - - - |
| empr esa | |
| - - - - - - - - - - - - - - - - - - - - - | |
| ATLAS S. A. | 1. 89|
| - - - - - - - - - - - - - - - - - - - - - +- - - - - - - - - - - - |
| MALTA LTDA | 1. 91|
| - - - - - - - - - - - - - - - - - - - - - +- - - - - - - - - - - - |
| PARI S I NSTI TUTO | 1. 90|
| - - - - - - - - - - - - - - - - - - - - - +- - - - - - - - - - - - |
| Al l | 1. 90|
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
98

Ex.57:
PROC TABULATE DATA=ARQ.CADASTRO ;
CLASS FILHOS E_CIVIL SEXO;
TABLE SEXO*E_CIVIL*FILHOS ALL, ALL;
RUN ;
The SAS Syst em

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
| | Al l |
| | - - - - - - - - - - - - |
| | N |
| - - - - - - - - - - - - - - - - - - - - - - - +- - - - - - - - - - - - |
| sexo | e_ci vi l | f i l hos | |
| - - - - - - - +- - - - - - - +- - - - - - - | |
| F | 1 | 1 | 31. 00|
| | | - - - - - - - +- - - - - - - - - - - - |
| | | 2 | 72. 00|
| | | - - - - - - - +- - - - - - - - - - - - |
| | | 3 | 75. 00|
| | | - - - - - - - +- - - - - - - - - - - - |
| | | 4 | 38. 00|
| | - - - - - - - +- - - - - - - +- - - - - - - - - - - - |
| | 2 | 1 | 38. 00|
| | | - - - - - - - +- - - - - - - - - - - - |
| | | 4 | 28. 00|
| | | - - - - - - - +- - - - - - - - - - - - |
| | | 5 | 41. 00|
| | - - - - - - - +- - - - - - - +- - - - - - - - - - - - |
| | 3 | 0 | 27. 00|
| - - - - - - - +- - - - - - - +- - - - - - - +- - - - - - - - - - - - |
| M | 1 | 1 | 22. 00|
| | | - - - - - - - +- - - - - - - - - - - - |
| | | 2 | 40. 00|
| | | - - - - - - - +- - - - - - - - - - - - |
| | | 3 | 48. 00|
| | | - - - - - - - +- - - - - - - - - - - - |
| | | 4 | 11. 00|
| | - - - - - - - +- - - - - - - +- - - - - - - - - - - - |
| | 2 | 1 | 24. 00|
| | | - - - - - - - +- - - - - - - - - - - - |
| | | 4 | 25. 00|
| | | - - - - - - - +- - - - - - - - - - - - |
| | | 5 | 13. 00|
| | - - - - - - - +- - - - - - - +- - - - - - - - - - - - |
| | 3 | 0 | 17. 00|
| - - - - - - - - - - - - - - - - - - - - - - - +- - - - - - - - - - - - |
| Al l | 550. 00|
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
99

Ex.58:



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"
,
N*f=6.
PCTN="%"*f=commax6.2
SALARIO=""*MEAN="Mdia de Salrio"*f=commax12.2 ;
RUN ;

OBS: *f= Formata o campo
*= Especifica um LABEL para o campo

Rel at r i o coma Mdi a de Sal r i o
e a Di st r i bui o Per cent ual dos Funci onr i os por Empr esa

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
| | | | Mdi a de |
| | N | % | Sal r i o |
| - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +- - - - - - +- - - - - - +- - - - - - - - - - - - |
| Sexo | Empr esa | | | |
| - - - - - - - - - - - - - - +- - - - - - - - - - - - - - - | | | |
| F | | 79| 14, 36| . |
| | - - - - - - - - - - - - - - - +- - - - - - +- - - - - - +- - - - - - - - - - - - |
| | ATLAS S. A. | 58| 10, 55| 3. 094, 50|
| | - - - - - - - - - - - - - - - +- - - - - - +- - - - - - +- - - - - - - - - - - - |
| | MALTA LTDA | 101| 18, 36| 3. 739, 14|
| | - - - - - - - - - - - - - - - +- - - - - - +- - - - - - +- - - - - - - - - - - - |
| | PARI S I NSTI TUTO| 112| 20, 36| 3. 016, 84|
| - - - - - - - - - - - - - - +- - - - - - - - - - - - - - - +- - - - - - +- - - - - - +- - - - - - - - - - - - |
| M | | 37| 6, 73| . |
| | - - - - - - - - - - - - - - - +- - - - - - +- - - - - - +- - - - - - - - - - - - |
| | ATLAS S. A. | 39| 7, 09| 3. 019, 42|
| | - - - - - - - - - - - - - - - +- - - - - - +- - - - - - +- - - - - - - - - - - - |
| | MALTA LTDA | 73| 13, 27| 4. 023, 08|
| | - - - - - - - - - - - - - - - +- - - - - - +- - - - - - +- - - - - - - - - - - - |
| | PARI S I NSTI TUTO| 51| 9, 27| 2. 739, 57|
| - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +- - - - - - +- - - - - - +- - - - - - - - - - - - |
| Tot al | 550| 100, 00| 3. 332, 21|
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
100

5 LABORATRIO

Utilizao dos procedimentos estatsticos bsicos.

Utilizando o arquivo SAS CADASTRO, 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 do
arquivo SAS, CADASTRO ordenados por EMPRESA.

3 - Gere um relatrio com as tabelas de freqncia de SEXO, IDADE, ESTADO CIVIL,
FILHOS, EMPRESA e FUNCAO.

4 - Gere um relatrio com uma tabela de freqncia de SEXO versus IDADE.

5 - Gere um relatrio com duas tabelas de freqncia de ESTADO CIVIL versus
FILHOS e SEXO versus EMPRESA na mesma PROC.

6 - Gere um relatrio com 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;

(Utilize o procedimento TABULATE)

7 - Gere um relatrio com uma tabela que apresente a mdia e o somatrio da varivel
SALARIO, classificado por SEXO versus 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 e 80 colunas;

(Utilize o procedimento TABULATE)

8 - Acrescente a tabela do relatrio anterior:
- Um totalizador na linha e na coluna: 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 paginao iniciando do 1;
- Gere a tabela no padro HTML e PDF.
101

18 - RECURSO DE 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, que os valores de uma
varivel poder assumir durante a formatao.
- Valores ou intervalos de variveis caracteres, devero vir entre
aspas.
- Parmetros especiais so utilizados para definir limites de
intervalos:

LOW Menor valor encontrado;
HIGH Maior valor encontrado;
OTHER 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.768 caracteres, entre aspas;


102

Ex.59:



OPTIONS PS=30 ;
PROC FORMAT ;
VALUE $TUR "1"="Turno da MANH"
"2"="Turno da TARDE"
OTHER="Turno NO EXISTE!" ;

VALUE ALT LOW-<1.50="Estatura BAIXA"
1.50-<1.70="Estatura MEDIANA"
1.70-HIGH="Estatura ALTA" ;
RUN;
PROC PRINT DATA=FORMATO ;
FORMAT TURNO $TUR.
ALTURA ALT. ;
RUN ;


The SAS Syst em

Obs NOME SEXO I DADE ALTURA PESO TURNO

1 Al f r edo M 25 Est at ur a ALTA 80 Tur no da MANH
2 Al i ci a F 22 Est at ur a ALTA 65 Tur no da MANH
3 Car ol F 22 Est at ur a MEDI ANA 65 Tur no da MANH
4 Paul o M 29 Est at ur a ALTA 90 Tur no da MANH
5 Mar i a F 20 Est at ur a MEDI ANA 70 Tur no da MANH
6 Ri car do M 35 Est at ur a ALTA 83 Tur no da MANH
7 Tomas M 26 Est at ur a ALTA 75 Tur no da MANH
8 J oao M 38 Est at ur a ALTA 90 Tur no NO EXI STE!
9 Mar ci a F 18 Est at ur a MEDI ANA 50 Tur no da MANH
10 Li gi a F 19 Est at ur a ALTA 80 Tur no da MANH
11 Laur a F 18 Est at ur a MEDI ANA 69 Tur no da MANH
12 Paul a F 21 Est at ur a MEDI ANA 58 Tur no da MANH
13 Car l os M 21 Est at ur a MEDI ANA 55 Tur no da TARDE
14 J ai me M 28 Est at ur a BAI XA 75 Tur no da TARDE
15 J oi ce F 25 Est at ur a BAI XA 60 Tur no da TARDE
16 Fi l i pe M 32 Est at ur a BAI XA 110 Tur no da TARDE
17 Rober t o M 33 Est at ur a BAI XA 89 Tur no da TARDE
18 Li a F 36 Est at ur a MEDI ANA 76 Tur no da TARDE
103

6 LABORATRIO

Criar, utilizar e manipular formatos (Procedimento FORMAT)

1 - Criar um programa que gere formatos especiais para os valores das variveis: IDADE, PESO,
ALTURA, ESTADO CIVIL e SALARIO . Gere vrios relatrios que utilize esses formatos.
Criar rtulos para varivel IDADE:
15-25 = "15 a 25 anos"
26-50 = "26 a 50 anos"
51-HIGH = "Mais de 50 anos"

Criar faixas para varivel PESO:
50-<70 = "50 a 69"
70-<80 = "70 a 79"
80-<100 = "80 a 99"

Criar rtulos para varivel ALTURA:
1.50-<1.66 = "1,50 a 1,65"
1.67-<1.80 = "1,66 a 1,79"
1.80-HIGH = "Mais de 1,80"

Criar rtulos para varivel ESTADO CIVIL:
"1" = "SOLTEIRO"
"2" = "CASADO"
"3" = "SEPARADO"

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;

2 - Gere um relatrio com tabelas de freqncia de IDADE, ALTURA, PESO e ESTADO
CIVIL com os dados formatados .

(Utilize o procedimento FREQ com o comando FORMAT)

3 - Gere um relatrio com uma tabela de freqncia de IDADE versus ESTADO CIVIL, com os
dados formatado.

(Utilize o procedimento FREQ com o comando FORMAT)

4 - Gere um relatrio com as pessoas classificadas por SEXO, EMPRESA e SALARIO, com os
dados de SALARIO formatados.

- Utilize o procedimento TABULATE;
- Comando FORMAT;

104

19 - COMBINAO DE ARQUIVOS SAS

19.1 - Concatenao

Concatenao a unio sem critrios, de dois ou mais arquivos
SAS, um aps o outro, na vertical, originando um nico arquivo.

SET <arquivo1> <arquivo2> . . . <arquivon> ;




ARQ1 ARQ2
ARQ1
ARQ2
DATA ARQ3;
SET ARQ1 ARQ2;
RUN;
ARQ3
105

Ex.60:


LIBNAME IN "A:\" ;
DATA IN.ARQ1 ;
INFILE "A:\ARQ1.TXT";
INPUT NOME $ 1-6 @8 SEXO $1. ;
RUN;

Arquivo: ARQ1.TXT
01 02 03 04 05 06 07 08
M A R C I O M
S A N D R A F
P A U L A F
C E L S O M


DATA IN.ARQ2 ;
INFILE "C:\ARQ2.TXT";
INPUT NOME $ 1-7 IDADE 2. ;
RUN ;

Arquivo: ARQ2.TXT
01 02 03 04 05 06 07 08 09
M A R C I O 2 5
C E L S O 2 2
P A U L A 1 8
S A N D R A 1 5


DATA IN.CONCAT ;
SET IN.ARQ1 IN.ARQ2 ;
RUN;

PROC PRINT DATA=IN.CONCAT ;
RUN ;

The SAS Syst em

Obs NOME SEXO I DADE

1 MARCI O M .
2 SANDRA F .
3 PAULA F .
4 CELSO M .
5 MARCI O 25
6 CELSO 22
7 PAULA 18
8 SANDRA 15
106


19.2 - Concatenao Ordenada

Concatenao ordenada a unio de dois ou mais arquivos SAS
em um nico arquivo, aonde os dados aparecem ordenados por uma ou
mais variveis comuns. Os arquivos devero estar ordenados, antes da
concatenao, pela varivel comum.

SET <arquivo1> <arquivo2> . . . <arquivon>;
BY <varivel comum> ;













PROC SORT DATA=ARQ1; BY <varivel comum>;RUN;
PROC SORT DATA=ARQ2; BY <varivel comum>;RUN;
DATA ARQ3 ;
SET ARQ1 ARQ2 ;
BY <varivel comum>
RUN ;


ARQ3

ARQ1 ARQ2
ARQ1 ARQ2
107

Ex.61:
LIBNAME IN "C:\KUSEL\CUR_SAS" ;

PROC SORT DATA=IN.ARQ1 ; BY NOME ;
PROC SORT DATA=IN.ARQ2 ; BY NOME ;

DATA IN.COORD ;
SET IN.ARQ1 IN.ARQ2 ;
BY NOME ;
RUN;

PROC PRINT DATA=IN.COORD ; RUN ;

The SAS Syst em

Obs NOME SEXO I DADE

1 CELSO M .
2 CELSO 22
3 MARCI O M .
4 MARCI O 25
5 PAULA F .
6 PAULA 18
7 SANDRA F .
8 SANDRA 15

108


19.3 - Combinao Ordenada ( 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> ;














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
ARQ1 ARQ2
109

Ex.62:



LIBNAME IN "C:\KUSEL\CUR_SAS" ;

PROC SORT DATA=IN.ARQ1 ; BY NOME ;
PROC SORT DATA=IN.ARQ2 ; BY NOME ;

DATA IN.ORD ;
MERGE IN.ARQ1 IN.ARQ2 ;
BY NOME ;
RUN;

PROC PRINT DATA=IN.ORD ; RUN ;

The SAS Syst em

Obs NOME SEXO I DADE

1 CELSO M 22
2 MARCI O M 25
3 PAULA F 18
4 SANDRA F 15
110

7 LABORATRIO

Utilizao da combinao de arquivos SAS

Utilizando os arquivos SAS gerados no 3 LABORATRIO item 6:


1 - Monte um programa que gere um arquivo SAS (CONCAT) que ser a
concatenao dos dados dos arquivos: PESSOAL e TRABALHO. Gere um
relatrio com os dados do arquivo CONCAT, para visualizar o resultado.

(Utilize os comandos DATA e SET)


2 - Monte um programa que gere um arquivo SAS (INTER) que ser a intercalao
ordenada dos dados dos arquivos: PESSOAL e TRABALHO por uma varivel
comum CPF. Gere um relatrio com os dados do arquivo INTER, para visualizar o
resultado.

(Utilize os comandos DATA, SET e BY)

OBS: Lembre-se os arquivos devem estar ordenados pela varivel comum.


3 - Monte um programa que gere um arquivo SAS (JUSTA) que ser a justaposio
ordenada dos dados dos arquivos: PESSOAL e TRABALHO por uma varivel
comum CIC. Gere um relatrio com os dados do arquivo JUSTA para visualizar os
resultados.

(Utilize os comandos DATA, MERGE e BY)

OBS: Lembre-se os arquivos devem estar ordenados pela varivel comum.

111

20 - BIBLIOGRAFIA

MANUAIS:

SAS Introductory Guide
SAS Institute Inc.
SAS Circle, Cary - NC
Terceira Edio

SAS Language Version 9
SAS Institute Inc.
SAS Circle, Cary - NC

SAS Procedures Guide Version 9
SAS Institute Inc.
SAS Circle, Cary - NC

SAS Guide to TABULATE Processing
SAS Institute Inc.
SAS Circle, Cary - NC
1987 Edition

Curso de SAS/BSICO
Soft Consultoria