Você está na página 1de 114

Universidade Estadual de Campinas

SAS Programao I
Ricardo Almeida de Mendona Ksel
Verso: Maro/2008

Centro Nacional de Processamento de Alto Desempenho - SP

CONTEDO
1 - HISTRICO
2 - CURIOSIDADES
3 - DEFINIO BSICA
4 - COMERCIALIZAO
4.1 - Mdulos SAS
4.2 - Soluo de Negcios

5 - CONCEITOS BSICOS
6 - ARQUIVOS SAS
7 - ESTRUTURA DOS ARQUIVOS SAS
8 - NOMECLATURA PARA ARQUIVOS E VARIVEIS
9 - SINTAXE DOS COMANDOS
10 - EXECUO
10.1 - Modo Interativo (Ambiente WINDOWS)
10.2 - Modo No Interativo (Ambiente de COMANDOS)

11 - ESTRUTURA DATA STEP


11.1 - Introduo
11.2 - Comando LIBNAME
11.3 - Comando DATA
11.4 - Comando INFILE
11.5 - Comando SET
11.6 - Comando INPUT
11.6.1 - INPUT COLUNADO
11.6.2 - INPUT FORMATADO
11.6.3 - Descrio de um Campo Data
11.6.4 - Controles Especiais do Comando INPUT
11.6.5 - Detalhes do Comando INPUT

12 ESTRUTURA PROC STEP


12.1 - Introduo
12.1.1 - Comando VAR
12.1.2 - Comando BY
12.1.3 - Comando TITLE
12.1.4 - Comando FOOTNOTE
12.2 - Procedimento PRINT
12.3 - Procedimento SORT

13 - ARQUIVO DE MENSAGENS - "SAS Log"


1 LABORATRIO
2 LABORATRIO

14 - COMANDOS BSICOS DE PROGRAMAO SAS


14.1 - Comando de Atribuio (=)
14.2 - Comando RETAIN
14.3 - Comando IF-THEN/ELSE
14.4 - Comando WHERE
14.5 - Comando DO/END
14.6 - Comando LENGTH
14.7 - Comando DO/END Iterativo

pag.04
pag.04
pag.05
pag.06
pag.06
pag.07
pag.08
pag.09
pag.10
pag.11
pag.12
pag.13
pag.13
pag.20
pag.21
pag.21
pag.23
pag.24
pag.25
pag.26
pag.27
pag.28
pag.29
pag.30
pag.32
pag.33
pag.34
pag.34
pag.35
pag.35
pag.36
pag.36
pag.37
pag.39
pag.41
pag.44
pag.45
pag.46
pag.46
pag.48
pag.49
pag.52
pag.53
pag.54
pag.55
2

14.8 - Comando DO/WHILE


14.9 - Comando DO/UNTIL
14.10 - Comandos DROP e KEEP
14.11 - Opes de Arquivos SAS
14.12 - Comando DELETE
14.13 - Comando OUTPUT
3 LABORATRIO

15 - FUNES DO SAS
15.1 - Introduo
15.2 - Funes de Tratamento de Caractere
15.2.1 - Funo UPCASE
15.2.2 - Funo LOWCASE
15.2.3 - Funo SUBSTR
15.2.4 - Funo COMPRESS
15.2.5 - Funo LENGTH
15.2.6 - Funo SCAN
15.2.7 - Funo INDEX
15.3 - Funes de Truncamento
15.3.1 - Funo INT
15.3.2 - Funo ROUND
15.4 - Funes Estatsticas Descritivas
15.4.1 - Funo SUM
15.4.2 - Funo MEAN
15.5 - Funes de Tratamento de Data e Hora
15.5.1 - Funo MDY
15.5.2 - Funes: DAY, MONTH, YEAR
15.5.3 - Funo TODAY
15.5.4 - Funo TIME
15.5.5 - Funes: HOUR, MINUTE, SECOND
15.6 - Funes Macro
15.6.1 - Funo %SYSFUNC
4 LABORATRIO

16 - COMANDOS DE CONFIGURAO
16.2 - Comando LABEL
16.3 - Comando FORMAT
16.4 - Comando ODS

17 - PROCEDIMENTOS ESTATSTICOS BSICOS


17.1 - Procedimento MEANS
17.2 - Procedimento FREQ
17.3 - Procedimento TABULATE
5 LABORATRIO

18 - RECURSO DE FORMATAO ESPECIAL


18.1 - Procedimento FORMAT
6 LABORATRIO

19 - COMBINAO DE ARQUIVOS SAS


19.1 - Concatenao
7 LABORATRIO

20 - BIBLIOGRAFIA

pag.56
pag.57
pag.58
pag.59
pag.60
pag.61
pag.63
pag.66
pag.66
pag.67
pag.67
pag.67
pag.68
pag.69
pag.69
pag.71
pag.72
pag.75
pag.75
pag.75
pag.77
pag.77
pag.77
pag.79
pag.79
pag.79
pag.80
pag.80
pag.80
pag.81
pag.81
pag.83
pag.84
pag.86
pag.87
pag.88
pag.90
pag.90
pag.93
pag.98
pag.103
pag.105
pag.105
pag.107
pag.109
pag.109
pag.113
pag.114

1 - HISTRICO

Dcada de 60;
North Caroline University;
Censo Agro-pecurio Norte-americano;
Conjunto de sub-rotinas (FORTRAN, IBM/370);
SAS Institue Inc. (1975);

2 - CURIOSIDADES

40.000 Instalaes, em 110 paises;


96 das 100 maiores empresas do mundo utilizam SAS.
(Fortune 500 List - 2005);
SAS a maior empresa de software do mundo de capital
privado;
Idiomas:

Chins, Francs, Alemo, Hebreu, Italiano, Japons,


Russo, Espanhol, Polons, Hungaro, Sueco,
Coreano, etc.

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
Gerenciamento de Campanha, Data Mining);

Risco,

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

4 - COMERCIALIZAO
4.1 - Mdulos do SAS
SAS/BASE

Mdulo bsico,
instalao;

obrigatrio

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

anlise

de

em

controle

SAS/CONNECT Mdulo para conexo entre


operacionais heterogneos;

toda

de

ambientes

SAS/AF

Mdulo para desenvolvimento de aplicaes;

SAS/FSP

Mdulo para facilitar o acesso a arquivos com


programao de telas;
6

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

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;

6 - ARQUIVOS SAS

Todos os dados devem estar armazenados em arquivos com


estrutura SAS (DATA Set's), para serem analisados pelos
procedimentos do SAS ( PROC's ).

DADO
BRUTO

DATA
STEP

DADO
SAS

Os arquivos SAS podem ser temporrios (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.

7 - ESTRUTURA DOS ARQUIVOS SAS


O arquivo SAS um conjunto de dados arrumados num formato de
tabela.
NOME
CARLOS
GILBERTO
RICARDO
.
.
.
.
.
.
ALICE
MARCIA

SEXO IDADE
M
M
M
.
.
.
F
F

12
25
30
.
.
.
28
22

ALTURA
1.70
1.65
1.80

1.68
1.75

As colunas nas tabelas so chamadas de variveis:


- Variveis correspondem aos campos de dados;
- Cada varivel recebe um nome;
- Para o SAS, s existem dois tipos de variveis:
caractere (at 32K caracteres - 32KBytes)
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.

10

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

Ex.1:
DATA EXEMPLO1 ;
INFILE C:\TEMP\CADASTRO.TXT;
INPUT PRIMEIRO_NOME $ 1-8 SEXO $ 10 IDADE 13-14
RUN;

ALTURA 16-19 ;

11

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 ;

12

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)

13

14

JANELA DE OPES DE CONFIGURAO


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

15

16

OPES DE CONFIGURAO DO EDITOR


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

17

18

CONFIGURAO DE TECLADO
Tools ==> Options ==> Keys

19

10.2 - Modo No Interativo (Ambiente de COMANDOS)

uma maneira simples e rpida de execuo de um programa


SAS. O programa pode ser editado em qualquer editor, mas
dever ser e salvo em modo texto. Para execut-lo, basta ativar a
janela de comandos do windows (Executar ou cmd):
Iniciar ==> Executar...

No diretrio do 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 extenso lst, com certeza existiro erros
no programa, que podero ser identificados no arquivo log.

20

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 seguem uma hierarquia, 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 sequencialmente, 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
Comandos de Execuo

-Funcionalidade: durante a compilao;


-Funcionalidade: durante a execuo.

OBS: Comandos de declarao no possuem nenhuma ao


durante a execuo.
21

Fluxo de Execuo
Inicio do
DATA Step

Abrir
arquivo
para gravar

Abrir
arquivo
para leitura

Ler novo
registro

processa
registro

Salvar
registro no
arquivo para
gravaao

NAO

Ultimo
registro

SIM
Fim do
DATA Step

22

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 (diretrios), para os
arquivos SAS (Data Set's);
- Define o primeiro nvel de um nome de arquivo, a biblioteca SAS;
[biblioteca].<nome do arquivo>
- O comando LIBNAME, normalmente, colocado antes do comando
DATA, e s ser necessrio ser executado uma nica vez durante uma
sesso SAS WINDOWS.
LIBNAME <biblioteca> "<diretrio>" ;
Biblioteca

Palavra de no mnimo 1 e no mximo 8 caracteres,


que identifica o primeiro nvel em um nome de
arquivo.

diretrio

Nome de um diretrio que j exista no seu


ambiente.

OBS: O SAS define uma biblioteca padro, temporria, de nome work.


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

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 <bib>.<nome do arquivo> ;

Ex.4:
DATA ENDERECO ;
DATA ARQ1 ARQ2 ARQ3 ;
DATA ENT.CADASTRO ;
DATA ;
DATA _NULL_;

OBS: No obrigatrio especificar a biblioteca, neste caso, o SAS ir


utilizar a biblioteca padro, tambm chamada de biblioteca temporria
(WORK ).

24

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

.
.
.

25

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 <bib>.<nome do arquivo>;

Ex.6:
DATA EXEMPLO ;
SET CADASTRO ;
.
.
.

OBS: No obrigatrio especificar a biblioteca, neste caso, o SAS ir


utilizar a biblioteca padro, tambm chamada de biblioteca temporria
(WORK ).

26

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 sequncial) at


encontrar "fim de arquivo (EOF)", e ir atribuir nomes (Variveis) para
cada campo de um registro;

- Existem trs tipos bsicos de comando INPUT:

- INPUT LISTADO
- INPUT COLUNADO
- INPUT FORMATADO

27

11.6.1 - INPUT COLUNADO


- L as variveis especificando a sua posio na linha de dados
(posio inicial e posio final). As variveis devem estar
alinhadas e colunadas.
INPUT <varivel> [$] <incio>-<fim> [.decimal] ;
varivel

Nome da varivel, que ser associada a uma coluna 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

10

11

12

F
A
O

13

14

15

16

17

18

19

20

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

28

11.6.2 - INPUT FORMATADO


- L as variveis especificando o tamanho e, opcionalmente, o
formato do campo na linha de dados.
- o tipo de INPUT mais poderoso e complexo do SAS.
INPUT <varivel> [$] <w.d> ou [fomatow.d] ;
varivel

Nome da varivel, que ser associada a uma coluna 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.

w.d

Valor que indica o tamanho de um campo numrico com


casas decimais.

formatow.d

Campo opcional. Nome de um formato especial de leitura


de dados:
BINARYw.d L campo numrico no formato binrio e o
converte para decimal;
COMMAw.d L campo numrico com vrgulas e as
retira;
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.

29

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

==> 01JAN1960
==> 01/01/1960

Formato padro de uma constante data no SAS:


"ddmmyyyy"d

"01JAN1960"d
30

Ex.8:
1

10

11

12

13

14

15

16

17

18

19

20

DATA FICHA ;
INFILE A:\CADASTRO.TXT;
INPUT NOME $ 8. SEXO $ 1. IDADE 3.
ALTURA 4.2 PESO 4. ;
RUN;

Ex.9:
1

R J

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

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 ;
SAS
OBS

UF

CEP

POP

1
2

RJ
SP

20456300
11500000

6739992
9464265

VALOR1

VALOR2

2191
1740

120000
12500000

31

11.6.4 - Controles Especiais do Comando INPUT


Indicador de COLUNA ( @ , + )
@n
+n

Move a leitura para a coluna n ;


Move a leitura n colunas ;

Indicador de LINHA ( # , / )
#n
/

Move a leitura para a linha n ;


Avana a leitura em uma linha;

Ex.10:
1

11

12

13

14

15

16

17

18

19

20

10

DATA POSICAO ;
INFILE "C:\SAS\POS.DAT" ;
INPUT A $ @10 B $ 4. +3 C $ 4. / D $ 1-4 / E $ @8 F $ #2 D1 $ 4. ;
RUN;
PROC PRINT ; RUN ;
The SAS System

OBS
1
2

11111
22222

BBBB
bbbb

CCCC
cccc

DDDD
dddd

EEEE
eeee

F
FF
ff

D1
DDDD
dddd

32

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, 32K de caracteres;
- So permitidos "brancos", em qualquer posio, em campos do tipo
caractere;
- Campos em branco (sem informao) so considerados como "missing
value" (valor perdido).
- Os campos de um registro de dados podem ser lidos em qualquer
ordem.
INPUT PESO 17-20 NOME $ 1-8 IDADE 11-12 SEXO $ 9 ;

- Campos ou partes de um campo podem ser relidos.


INPUT NOME $ 1-8 PREFIXO $ 1-3 ENDERECO $ 10-40 APT $ 38-40 ;

- Dados caracteres sero armazenados, alinhados pela esquerda, e os


dados numricos, alinhados pela direita;
- Todos os tipos de INPUT, podem ser combinados num nico comando
INPUT;

Ex.11: Detalhes de leitura


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

33

12 - ESTRUTURA PROC Step


12.1 - Introduo
- a seo de um programa SAS aonde se analisa 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 hierarquia, ou seja,
podem ser colocados em qualquer ordem dentro da PROC;
PROC <rotina> [opes] ;
[comando] ;
[comando] ;
RUN ;

RUN

rotina

Palavra-chave que identifica o procedimento a ser


executado.

opes

Parmetros opcionais de
execuo do procedimento.

comando

Comandos de detalhamento na execuo do


procedimento.

configurao

para

Comando para execuo do procedimento SAS.


Necessrio no ltimo procedimento do programa
SAS.

34

12.1.1 - Comando VAR


- Tipo: Comando de declarao;
- Uso: Proc Step
- Comando comum maioria das PROCS. Determina as
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;
- Determina uma ou mais 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.

35

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;

36

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

UNIFORM

Formata todas as paginas uniformemente;

LABEL

Imprime os "label's" das variveis;

SPLIT=

Determina um caractere do label que ir


indicar a quebra da descrio;

VAR

Determina uma lista de variveis que sero


impressas;

BY

Determina a quebra ou agrupamento do


relatrio, por uma ou mais variveis;

SUM

Determina uma ou mais variveis


numricas que sero totalizadas;

37

Ex.12:
TITLE "Relatrio de Fucionarios" ;
PROC PRINT DATA=EXEMPLO1 NOOBS ;
VAR NOME FUNCAO ;
RUN ;

Relatrio de Funcionarios

NOME

FUNCAO

ANTUNES
TERESA
CLAUDIA
MARCOS
JULIO

ANALISTA
ANALISTA
PROG
PROG
OPER

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

OBS
1
2
3
4
5

NOME
ANTUNES
TERESA
CLAUDIA
MARCOS
JULIO

FUNCAO
ANALISTA
ANALISTA
PROG
PROG
OPER

SALARIO
1800
1650
1200
1200
850
=======
6700

FONTE: DH

38

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 com os registros duplicados;
BY

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

39

Ex.14:
PROC SORT DATA=EXEMPLO OUT=ORDENA ;
BY FUNCAO ;
RUN ;
PROC PRINT DATA=ORDENA NOOBS ;
BY FUNCAO ;
VAR NOME SALARIO ;
SUM SALARIO ;
RUN ;
The SAS System
----------------------------- FUNCAO=ANALISTA ----------------------------NOME

SALARIO

ANTUNES
TERESA

1800
1650
------3450

FUNCAO

------------------------------- FUNCAO=OPER ------------------------------NOME


JULIO

SALARIO
850

------------------------------- FUNCAO=PROG ------------------------------NOME SALARIO


CLAUDIA
MARCOS
FUNCAO

1200
1200
------2400
====
6700

40

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 EXEMPLO1 ;
INFILE "C:\DADOS.TXT" ;
INPUT NOME $1-8 SEXO $10 FUNCAO $11-17 SALARIO 18-23 ;
RUN;
PROC PRINT DATA=EXEMPLO1 NOOBS ;
VAR NOME FUNCAO ;
RUN ;
SAS Log
NOTE: Copyright(c) 1989 by SAS Institute Inc., Cary, NC USA.
NOTE: SAS (r) Proprietary Software Release 8.2
Licensed to UNIVERSIDADE ESTADUAL DE CAMPINAS, Site 0004267003.
1
2
3

DATA EXEMPLO1 ;
INFILE "C:\DADOS.TXT" ;
INPUT NOME $1-8 SEXO $10 FUNCAO $11-17 SALARIO 18-23 ;

NOTE: The infile "C:\DADOS.TXT" is:


FILENAME=C:\DADOS.TXT,
RECFM=V,LRECL=132
NOTE: 5 records were read from the infile "C:\DADOS.TXT".
The minimum record length was 16.
The maximum record length was 23.
NOTE: The data set WORK.EXEMPLO1 has 5 observations and 4 variables.
NOTE: The DATA statement used 2.68 seconds.
4
5
6

PROC PRINT DATA=EXEMPLO1 NOOBS ;


VAR NOME FUNCAO ;
RUN ;

NOTE: The PROCEDURE PRINT used 0.55 seconds.

41

Ex.16:
DATA EXEMPLO1 ;
INFILE 'C:\TEMP\LEITURA.DAT';

INPUT NOME $1-8 SEXO $10 FUNCAO# $11-17 SALARIO 18-23 ;


RUN;
PROC PRINT DATA=EXEMPLO1 NOOBS
VAR NOME FUNCAO ;
RUN ;
SAS Log
17 DATA EXEMPLO1 ;
18
INFILE 'C:\TEMP\LEITURA.DAT';
NOTE: SCL source line.
19
INPUT NOME $1-8 SEXO $10 FUNCAO# $11-17 SALARIO 18-23 ;
22
76
ERROR 22-322: Syntax error, expecting one of the following: a name, an integer constant, (.
ERROR 76-322: Syntax error, statement will be ignored.
20 RUN;
NOTE: The SAS System stopped processing this step because of errors.
WARNING: The data set WORK.EXEMPLO1 may be incomplete. When this step was stopped there were 0 observations and 3
variables.
WARNING: Data set WORK.EXEMPLO1 was not replaced because this step was stopped.
NOTE: DATA statement used:
real time
0.02 seconds
cpu time
0.01 seconds

21
22 PROC PRINT DATA=EXEMPLO1 NOOBS
NOTE: SCL source line.
23
VAR NOME FUNCAO ;
--- ---22 202
ERROR 22-322: Syntax error, expecting one of the following: ;, DATA, DOUBLE, HEADING, LABEL, N, NOOBS, OBS, ROUND,
ROWS, SPLIT, STYLE, UNIFORM, WIDTH.
ERROR 202-322: The option or parameter is not recognized and will be ignored.
24 RUN ;
NOTE: The SAS System stopped processing this step because of errors.
NOTE: PROCEDURE PRINT used:
real time
0.01 seconds
cpu time
0.01 seconds

42

Ex.17:
DATA EXEMPLO1 ;
INFILE 'C:\TEMP\LEITURA.DAT';

INPUT NOME $1-8 SEXO $10 CARGO $11-17 SALARIO $18-23 ;


RUN;
PROC PRINT DATA=EXEMPLO1 NOOBS ;
VAR NOME FUNCAO SALARIO ;
SUM SALARIO ;
RUN ;
SAS Log
58 DATA EXEMPLO1 ;
59
INFILE 'C:\TEMP\LEITURA.DAT';
60
INPUT NOME $1-8 SEXO $10 CARGO $11-17 SALARIO $18-23 ;
61 RUN;
NOTE: The infile 'C:\TEMP\LEITURA.DAT' is:
File Name=C:\TEMP\LEITURA.DAT,
RECFM=V,LRECL=256
NOTE: 5 records were read from the infile 'C:\TEMP\LEITURA.DAT'.
The minimum record length was 16.
The maximum record length was 23.
NOTE: SAS went to a new line when INPUT statement reached past the end of a line.
NOTE: The data set WORK.EXEMPLO1 has 4 observations and 4 variables.
NOTE: DATA statement used:
real time
0.02 seconds
cpu time
0.01 seconds

62
63 PROC PRINT DATA=EXEMPLO1 NOOBS;
64
VAR NOME FUNCAO SALARIO ;
ERROR: Variable FUNCAO not found.
65
SUM SALARIO;
ERROR: Variable SALARIO in list does not match type prescribed for this list.
66 RUN ;
NOTE: The SAS System stopped processing this step because of errors.
NOTE: PROCEDURE PRINT used:
real time
0.01 seconds
cpu time
0.01 seconds

43

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
NOME

Tipo do
Campo
Caractere

Tamanho do
Campo
30

Decimais

SEXO

Caractere

31

IDADE

Numrico

32

PESO

Numrico

34

ALTURA

Numrico

40

ANIVERSARIO

Numrico

10

44

ESTADO CIVIL

Caractere

54

FILHOS

Numrico

55

RG

Caractere

15

57

CPF

Caractere

11

72

EMPRESA

Caractere

15

83

FUNCAO

Caractere

12

98

ADMISSAO

Numrico

110

Campo formatado: Ex 18JAN2005

SALARIO

Numrico

12

119

Campo formatado: Ex. 3.548,25

Posio
Inicial
1

Detalhe

Campo formatado: Ex. 18/01/2005

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. Leia com ateno as
mensagens na janela LOG. Salve o seu programa!.
OBS: Salve os seus programas! Faa-o sempre, no diretrio c:\curso\sas
44

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

45

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
expresso

Nome com no mximo 32 caracteres.


Expresses do tipo:

- Operaes aritmticas simples: + - * / **


x2=x ;
soma=x+y ;
dif=x-y ;
dobro=x*2 ;
met=x/2 ;
cubo=x**3 ;
y=-x ;

Move valor;
Adio;
Subtrao;
Multiplicao;
Diviso;
Potenciao;
Mudana de sinal;

- Constantes :
N=0 ;

Constante numrica;

SEXO="F" ;

Constante caractere;

- Concatenao de caracteres : ||
A=PAULO || ANTUNES; ==> A=PAULOANTUNES
A=PAULO || || ANTUNES; ==> A=PAULO ANTUNES
- Expresses complexas com prioridade de avaliao:
( ) 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) ;

46

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

9
9
9

03

04

05

06

07

4
5

5
6

6
2

5
8

08

09

10

11

12

0
0

1
1

0
1

5
4

0
0

PROC PRINT DATA=ARQ.LUCROS NOOBS DOUBLE ;


TITLE "Analise Contbil" ;
VAR ANO RECEITA DESPESAS LUCRO DOLLAR ;
SUM RECEITA DESPESAS LUCRO DOLLAR ;
RUN ;

Analise Contbil
ANO RECEITA

DESPESAS

LUCRO

DOLLAR

1994

5650

1050

4600

4693.8775

1995

6280

1140

5140

5244.8979

1996

8450
=====
20380

2450
====
4640

6000
=====
15740

6122.4489
=========
16061.2240

47

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 ;

Analise Contbil
CONT
1
2
3

ANO
1994
1995
1996

RECEITA
5650
6280
8450
=====
20380

DESPESAS
1050
1140
2450
====
4640

LUCRO
4600
5140
6000
=====
15740

DOLLAR
4693.8775
5244.8979
6122.4489
=========
16061.2240

48

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
GT
LT
EQ
LE
GE
NE
NL
NG
IN

>
<
=
<=
>=
~=

maior que
menor que
igual a
menor ou igual a
maior ou igual a
no igual (diferente)
no menor
no maior
esta no conjunto

Operadores Lgicos
AND & e, ambos
OR
| ou, um ou outro
NOT ~ no, negao

49

Ex.20: S o comando IF
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;

Ex.21: Operador de Comparao


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
V

PROC PRINT NOOBS ;


RUN ;
The SAS System
NOME

NOTA

CONCEITO

VIVIANE
LIDIA
PAULO
CLAUDIO
LUIZ

2.5
9.5
4.5
6.8
5.5

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

50

Ex.22: Operador Lgico


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

PROC PRINT NOOBS ;


VAR NOME CLASSE ;
RUN ;
The SAS System
NOME

CLASSE

PAULA
FLAVIA
MARCOS
LUIS

100
300
200
300

Ex.23: Operador Lgico


IF ESTADO="RJ" OR ESTADO="SP" THEN REGIAO="SUDESTE" ;
IF ESTADO="SP" AND CIDADE="CAMPINAS" THEN CEP="13000-000" ;

51

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
CONTAINS

entre um e outro
contm

Ex.24:
DATA TESTE;
SET ARQ.CADASTRO;
WHERE SALARIO BETWEEN 1000 AND 3000;
RUN;

PROC PRINT DATA=ARQ.CADASTRO;


WHERE NOME CONTAINS SILVA;
RUN;
52

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;


<comandos> ;
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 ;
PROC PRINT NOOBS ;
RUN ;
The SAS System
NOME

DEP_NO

COM

SALARIO

DEP

SAL

CARLOS
ELIANE
ALVARO
FATIMA

201
101
101
201

1500
.
.
500

1500
1800
3800
1500

VENDAS
ADMINI
ADMINI
VENDAS

3000
1800
3800
2000

53

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 ;
PROC PRINT NOOBS ;
RUN ;
The SAS System
NOME
CARLOS 201
ELIANE
ALVARO
FATIMA 201

DEP_NO COM
1500
101
101

.
.
500

SALARIO

DEP

SAL

1500
1800
3800
1500

VENDAS
ADMINISTRATIVO
ADMINISTRATIVO
VENDAS

3000
1800
3800
2000

54

14.7 - Comando DO/END Iterativo


- Tipo: Comando de execuo;
- Uso: Data Step;
- Comando utilizado para repetir um grupo de comandos n vezes.

DO <indice>=<incio>TO<fim> [BY] <cont>


[WHILE/UNTIL] <(expresso)>;
indice

Varivel auxiliar que armazena o valor da contagem no


"loop".

incio

Valor inicial do "loop".

fim

Valor final do "loop".

cont

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", entre parnteses.

Ex.27: Iterativo
DO MES="JAN","FEV","MAR" ;

( 3 vezes )

DO I = 1 TO 120 ; ( 120 vezes )


DO I = 1 TO 120 BY 2 ; ( 60 vezes )
DO I = 120 TO 1 BY -1 ; ( 120 vezes )
DO I = 1 TO 10 WHILE (X < Y) ; ( 10 vezes ou enquanto X < Y )
DO I = 2 TO 20 BY 2 UNTIL ((X/3)>Y) ; ( 10 vezes ou at (X/3)>Y )
DO I = 10 TO 0 BY -1 WHILE (MES="JAN") ; ( 11 vezes ou enquanto o MES=JAN )

55

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

55

56

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

55

57

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. END $ 30. CEP $ 8. RG $ 10. CIC $ 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;
58

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> [( <opo> <opo> . . . )] ;
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. END $ 30. CEP $ 8. RG $ 10. CIC $ 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;
59

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;
- Este comando no permite gravar o registro lido no 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

04

05

07

08

09

03

06

0
3

PROC PRINT NOOBS ;


RUN ;
The SAS System
DEP
17
31
5

UNIDADE
10
5
1

CUSTO
525
100
15

CUSTOUNI
52.5
20.0
15.0
60

14.13 - Comando OUTPUT


- Tipo: Comando de execuo;
- Uso: Data Step;
- O comando OUTPUT funciona de duas formas:
Determina ao SAS que o registro que est sendo processado
deve ser gravado no arquivo, imediatamente, e no, ao
final do Data Step (OUTPUT implcito).
Determina 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.

61

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

PROC PRINT ; RUN ;


The SAS System
OBS

NOME

NIVEL

SALARIO

SAL

1
2
3
4

PAULO
PAULO
MARIA
MARIA

10
10
10
10

1000
1000
800
800

1100
2200
920
1840

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 ;

62

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"
63

- Gere um relatrio com os dados deste arquivo;

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.

64

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


(GERENTE e DIRETOR);

SUB

Pessoas que no ocupam cargos de chefia;

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 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 uma nova varivel auxiliar
com o valor da idade incrementada.
- Gere um relatrio com as variveis: NOME, IDADE, SALARIO, BONUS ,
NUM

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


loop.
65

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 e sempre so utilizadas em um DATA Step.
<varivel> = <funo>(OF argumento, argumento, . . . ) ;
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.

argumento

Parmetros de entrada para processamento da funo.

OF

Parmetro opcional que indica o processamento num


intervalo de argumentos. Somente para as funes
estatsticas.

Tipos de funes:
- Funes de Tratamento de Caractere;
- Funes de Tratamento de Data e Hora;
- Funes Matemticas;
- Funes de Estatsticas Descritivas;
- Funes Trigonomtricas;
- Funes Hiperblicas;
- Funes de Trucamento;
- Funes para gerao de Nmeros Randmicos;
- Funes de Probabilidade;
- Funes Financeiras;
- Funes de Macro;
66

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.

67

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

Caractere:

68

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 default para
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.
69

Ex.35:
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 ;
INFILE C:\ID\RG.DAT;
INPUT RG $ 18. ;
RG1=0 ; RG2=0 ;
AUX1=COMPRESS ( RG ) ;
AUX2=LENGTH ( AUX1 ) ;
DO I=1 TO AUX2 ;
AUX3=SUBSTR ( AUX1, I, 1 ) ;
IF ("0" LE AUX3 LE "9") THEN RG1=RG1+1 ;
ELSE RG2=RG2+1 ;
END ;
RG_NUM=SUBSTR ( AUX1, 1, RG1 ) ;
RG_SSP=SUBSTR ( AUX1, RG1+1, RG2 );
RG_SSP = UPCASE ( RG_SSP ) ;
DROP AUX1 AUX2 AUX3 I RG1 RG2 ;
RUN;
Arquivo: RG.TXT
01

02

03

04

05

06

07

08

09

10

11

12

13

14

15

16

17

18

PROC PRINT NOOBS ;


VAR RG_NUM RG_SSP ;
RUN ;
SAS
RG_NUM

RG_SSP

584166
234
22397488

SSP/DF
SSP/SP
SSP/RG

70

15.2.6 - Funo SCAN


- Funo que retorna caracteres de acordo com a posio
relativa de um caractere especfico.
<varivel>=SCAN (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 dos caracteres,


que se deseja, em relao a um caractere especfico;

arg3

Terceiro argumento, opcional e entre aspas determina o


caractere que servir como limite entre os caracteres
desejados. Se no for especificado, todos os caracteres
especiais sero limtrofes.(! @ # $ % & * - , ; branco).

OBS: O resultado da funo SCAN ser armazenado numa


varivel com o tamanho de 200 bytes, por default.
Ex.36:
DATA PALAVRA;
REGIAO=FRANA#ALEMANHA#ESPANHA#ITLIA;
PAIS=SCAN(REGIAO,1,#); OUTPUT ;
PAIS=SCAN(REGIAO,2,#); OUTPUT ;
PAIS=SCAN(REGIAO,3,#); OUTPUT ;
PAIS=SCAN(REGIAO,4,#); OUTPUT ;
RUN;
PROC PRINT; VAR PAIS; RUN;
The SAS System
PAIS
FRANA
ALEMANHA
ESPANHA
ITLIA

71

15.2.7 - 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.37:
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 System
LOCAL
17

13
25
0

72

Ex.38: Soluo Alternativa 1


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 ;
LENGTH AUX $ 6;
INFILE C:\ID\RG.DAT;
INPUT RG $ 18. ;
RG_NUM=SCAN( RG, 1,S ) ;
AUX=SCAN( RG, 2, / );
RG_SSP=SSP/ || UPCASE(AUX );
RUN;
Arquivo: RG.TXT
01

02

03

04

05

06

07

08

09

10

11

12

13

14

15

16

17

18

PROC PRINT NOOBS ;


VAR RG_NUM RG_SSP ;
RUN ;
SAS
RG_NUM

RG_SSP

584166
234
22397488

SSP/DF
SSP/SP
SSP/RG

73

Ex.39: Soluo Alternativa 2


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 ;
INFILE C:\ID\RG.DAT;
INPUT RG $ 18. ;
RG=UPCASE(RG);
IF INDEX(RG,S)>0;
RG_NUM=SUBSTR(RG, 1, INDEX(RG,S )-1) ;
RG_SSP=SUBSTR(RG, INDEX(RG,S));
RUN;
Arquivo: RG.TXT
01

02

03

04

05

06

07

08

09

10

11

12

13

14

15

16

17

18

PROC PRINT NOOBS ;


VAR RG_NUM RG_SSP ;
RUN ;
SAS
RG_NUM

RG_SSP

584166
234
22397488

SSP/DF
SSP/SP
SSP/RG

74

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.

75

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

PROC PRINT DOUBLE;


RUN ;

The SAS System


13:24 Monday, January 22, 1996
OBS

TRUNCA INTEIRO DEZENA CENTENA DECIMO

CENTES

MULT5

326.54

326

327

330

300

326.5

326.54

325

1977.09

1977

1977

1980

2000

1977.1

1977.09

1975

558.88

558

559

560

600

558.9

558.88

560

1588.29

1588

1588

1590

1600

1588.3

1588.29

1590

76

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.

77

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

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

PROC PRINT DATA=T.TEMP DOUBLE NOOBS ;


RUN ;
The SAS System
14:18 Monday, January 22, 1996
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

78

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.


79

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.

80

15.6 - Funes MACRO


15.6.1 - Funo %SYSFUNC
- Funo macro que permite executar funes de DATA
Step em qualquer parte do programa SAS.
%SYSFUNC(funo, [formato]);
funo

Funo de DATA Step que ser utilizada;

formato

Argumento opcional que especifica um formato para o


resultado da funo.

81

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

10

TITLE1 Relatrio de Idades;


TITLE2 Em relao a data de hoje: %SYSFUNC(TODAY(), ddmmyy10.);
PROC PRINT;RUN;
Relatrio de Idades
Em relao a data de hoje: 04/04/2006

Obs

DIA

MES

ANO

ANIV

IDADE_
ANO

IDADE_
DIA

1
2
3
4
5

10
25
14
8
3

11
4
8
1
3

1976
2000
1934
1967
1955

6158
14725
-9271
2564
-1765

29
5
71
39
51

8452
-115
23881
12046
16375

82

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, e as novas variveis:
DV
INTEIRO
ARR1
ARR2
ARR3
T_EMP
APOS
NO_INV

Conter os dois ltimos caracteres da varivel CPF;


Conter o valor inteiro da varivel SALARIO;
Conter o arredondamento da expresso SALARIO*0.8235 para um valor
com duas casas decimais;
Conter o arredondamento da expresso SALARIO*0.8235 para um valor
inteiro;
Conter o arredondamento da expresso SALARIO*0.8235 para um valor
mltiplo de 5;
Conter o tempo do funcionrio na empresa, em anos;
Conter a data que o funcionrio poder se aposentar, sabendo-se que a
idade para solicitar aposentadoria com 65 anos;
Conter a o formato nome sobrenome da varivel NOME, que
atualmente est como sobrenome,nome;

- Gere um relatrio para verificar os resultados;


OBS: Utilize as funes: SUBSTR, INT, ROUND, YEAR, MDY, INDEX ou SCAN e
o operador ||.
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.

83

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/BIN/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;

(NO)DATE

Opo que determina a impresso ou no, da data nos relatrios;

(NO)NUMBER

Opo que determina a impresso ou no, do nmero da pgina;

PAGENO=

Opo que especifica a numerao inicial das paginas de OUTPUT, para


cada execuo;

LINESIZE=

Opo que especifica o tamanho da linha de impresso do relatrio


(nmero de colunas);

PAGESIZE=

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;

(NO)REPLACE

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;

84

Ex.43:
LIBNAME ARQ "C:\SAS" ;
OPTIONS COMPRESS=YES DEVICE=WIN PS=66 LS=132 NODATE ;
DATA ARQ.OPT ;
SET ARQ.DADOS ;
<comando>
<comando>
.
.
.
PROC PRINT ;
RUN ;

SER GERADO UM ARQUIVO COMPACTADO E, UM RELATRIO COM 66 LINHAS


E 132 COLUNAS POR PGINA, SEM A IMPRESSO DA DATA NO CABEALHO, NO
AMBIENTE WINDOWS.

Ex.44:
LIBNAME ARQ "C:\ALUNO" ;
OPTIONS SORTSIZE=200M PS=60 LS=132 DEVICE=WINPRTM;
PROC SORT DATA=ARQ.CADASTRO; BY FUNCAO; RUN;
PROC PRINT DATA=ARQ.CADASTRO ; BY FUNCAO; RUN;

O PROCEDIMENTO SORT PODER UTILIZAR ATE 200MBYTES DE MEMRIA


PARA PROCESSAR E SER GERADO UM RELATRIO COM 60 LINHAS E 132 COLUNAS
POR PGINA, NA IMPRESSORA PADRO DO WINDOWS.

85

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;
- DATA Step Permanente, armazenado na estrutura do arquivo;
- PROC Step Temporrio, apenas para a execuo do
procedimento.
LABEL <varivel> = "rtulo" . . . ;
varivel

Nome da varivel na qual ser associado um rtulo


descritivo.
Descrio, at 256 caracteres, associada a varivel.

rtulo

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

13

14

15

16

12

PROC PRINT NOOBS SPLIT="" ;


RUN ;
The SAS System
NOME

PAULO
MARCIO
SONIA

ALTURA EM
POLEGADAS

PESO EM
LIBRAS

59.0
57.3
51.3

99.5
83.0
50.5
86

16.3 - Comando FORMAT


- Tipo: Comando de declarao;
- Uso: Data Step e Proc Step;
- Comando de definio que serve para formatar as variveis e melhorar a
aparncia dos dados num relatrio;
- DATA Step Permanente, armazenado na estrutura do arquivo;
- PROC Step Temporrio, apenas para a execuo do
procedimento.
FORMAT <varivel> <formatow.d> . . . ;
varivel
formatow.d

Nome da varivel que ser formatada.


Nome 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
DDMMYYw.

Formata com pontos e


vrgula (Padro Brasil);
Formata um campo data
com /;

Ex.46:
PROC PRINT DATA=ARQ.CADASTRO LABEL;
VAR NOME DATA_ANIV SALARIO;
LABEL DATA_ANIV=Data de Aniversrio
SAL=Salrio;
FORMAT DATA_ANIV DDMMYY10.
SALARIO COMMAX12.2 ;
RUN;
The SAS System

Obs
1
2
3
4
5
6
7
8
9
10

NOME

Data de
Aniversrio

SONTAS,MARCIO
SERPA,MARCO
LONAS,PAULO
CERTO,MARCO
BENTES,MARCO
MARUEL,PAULO
LUILA,ROSANE
APARECIDO,ELIANE
SAUL,ROSANE
PISCO,ROSANE

16/04/1985
06/02/1941
24/07/1930
03/07/1979
06/06/1967
18/07/1977
27/03/1950
17/03/1943
16/03/1957
04/09/1962

Salrio
3.240,05
26.540,67
55.211,27
3.121,80
9.452,31
3.288,80
25.628,72
.
24.949,40
9.710,13

87

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
PDF
PS
RTF

Gera os resultados no padro html;


Gera os resultados no padro Adobe;
Gera os resultados no padro PostScript;
Gera os resultados no padro Rich Text;

opo genrica:
FILE=

Determina a localizao e nome do arquivo gerado com o


padro.

OBS: Cada padro de visualizao possui suas prprias opes;

88

Ex.47:
ODS HTML FILE="C:\temp\teste.html" STYLE=minimal;
PROC PRINT DATA=ARQ.CADASTRO(OBS=10) LABEL ;
VAR NOME DATA_ANIVERSARIO SALARIO ;
LABEL DATA_ANIVERSARIO="Data de Aniversrio"
SALARIO="Salrio";
FORMAT DATA_ANIV DDMMYY10.
SAL COMMAX12.2 ;
RUN;
ODS HTML CLOSE;

The SAS System


Obs

NOME

Data de
Aniversrio
16/04/1985

3.240,05

2 SERPA,MARCO

06/02/1941

26.540,67

3 LONAS,PAULO

24/07/1930

55.211,27

4 CERTO,MARCO

03/07/1979

3.121,80

5 BENTES,MARCO

06/06/1967

9.452,31

6 MARUEL,PAULO

18/07/1977

3.288,80

7 LUILA,ROSANE

27/03/1950

25.628,72

8 APARECIDO,ELIANE

17/03/1943

9 SAUL,ROSANE

16/03/1957

24.949,40

10 PISCO,ROSANE

04/09/1962

9.710,13

1 SONTAS,MARCIO

Salrio

89

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=
MAXDEC=
NOPRINT

Nome do arquivo SAS para ser processado;


Especifica o nmero de casas decimais (mximo 8);
Opo para no gerar o relatrio;

CLASS

Determina uma ou mais variveis que possibilitam o


agrupamento de dados. OBS: No necessrio executar
um PROC SORT, antes;

VAR

Determina as variveis numricas que sero analisadas pelo


procedimento;

BY

Determina uma ou mais variveis que possibilitam o


agrupamento de dados. OBS: necessrio executar um
PROC SORT, antes;

90

Ex.48:
LIBNAME ARQ "G:\KUSEL\SAS" ;
PROC MEANS DATA=ARQ.MEDIA ;
RUN ;
The SAS System
Variable
N
Mean
Std Dev
Minimum
Maximum
--------------------------------------------------------------------------------------------IDADE
18 26.0000000 6.5079137 18.0000000 38.0000000
ALTURA
18
1.7227778 0.0769878
1.5800000
1.8500000
PESO
18 74.4444444 14.9123803 50.0000000 110.0000000
-----------------------------------------------------------------------------------------------

Ex.49:
LIBNAME ARQ "G:\KUSEL\SAS" ;
PROC MEANS DATA=ARQ.MEDIA MAXDEC=2 N MEAN MAX MIN ;
RUN ;
The SAS System
Variable
N
Mean
Maximum
Minimum
---------------------------------------------------------------------------IDADE
18
26.00
38.00
18.00
ALTURA 18
1.72
1.85
1.58
PESO
18
74.44
110.00
50.00
----------------------------------------------------------------------------

91

Ex.50:
LIBNAME ARQ "G:\KUSEL\SAS";
PROC MEANS DATA=ARQ.MEDIA MAXDEC=2 N MEAN MAX MIN ;
CLASS TURNO ;
VAR IDADE ;
RUN ;
The SAS System
Analysis Variable : IDADE
TURNO N Obs N
Mean
Maximum
Minimum
------------------------------------------------------------------------------1
12 12
24.42
38.00
18.00
2
6 6
29.17
36.00
21.00
-------------------------------------------------------------------------------

Ex.51:

LIBNAME ARQ "G:\KUSEL\SAS" ;


PROC SORT DATA=ARQ.MEDIA ; BY TURNO ;
PROC MEANS DATA=ARQ.MEDIA MAXDEC=2 N MEAN MAX MIN ;
BY TURNO ;
VAR IDADE ;
RUN ;

The SAS System


Analysis Variable : IDADE
---------------------------------- TURNO=1 -------------------------------N
Mean
Maximum
Minimum
------------------------------------------------------12
24.42
38.00
18.00
---------------------------------------------------------------------------------------- TURNO=2 -------------------------------N
Mean
Maximum
Minimum
------------------------------------------------------6
29.17
36.00
21.00
-------------------------------------------------------

92

17.2 - Procedimento FREQ


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

PROC FREQ [opes] ;


BY <lista de variveis> ;
TABLES <variveis> / [opes] ;
opes DATA=
PAGE
COMPRESS

BY

Nome de um arquivo SAS;


Determina que seja gerado uma tabela por pgina do relatrio.
Determina que seja gerado o mximo de tabelas possveis em cada
pgina do relatrio;

Determina uma ou mais variveis que possibilitam o agrupamento de


dados. OBS: necessrio executar um PROC SORT, antes;

TABLES Determina as variveis e a regra de formao da tabela de freqncia.


Utiliza-se o caractere * para cruzar as variveis.
Ex.: (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.
OUT=
Determina o arquivo SAS de sada.
NOPRINT No gera relatrio de sada.
NOCUM
No gera as colunas de freqncia e
percentual acumulativo.
NOPERCENT No gera as colunas com percentuais.
NOFREQ No gera a coluna de freqncia.

93

Ex.52:
LIBNAME ARQ "G:\KUSEL\SAS" ;
PROC FREQ DATA=ARQ.DADOS ;
TABLES SEXO IDADE ;
RUN ;
The SAS System

Cumulative Cumulative
SEXO Frequency Percent
Frequency Percent
--------------------------------------------------------------------F
9
50.0
9
50.0
M
9
50.0
18
100.0

Cumulative Cumulative
IDADE Frequency Percent
Frequency Percent
---------------------------------------------------------------------18
2
11.1
2
11.1
19
1
5.6
3
16.7
20
1
5.6
4
22.2
21
2
11.1
6
33.3
22
2
11.1
8
44.4
25
2
11.1
10
55.6
26
1
5.6
11
61.1
28
1
5.6
12
66.7
29
1
5.6
13
72.2
32
1
5.6
14
77.8
33
1
5.6
15
83.3
35
1
5.6
16
88.9
36
1
5.6
17
94.4
38
1
5.6
18
100.0

94

Ex.53:
LIBNAME ARQ "G:\KUSEL\SAS" ;
PROC FREQ DATA=ARQ.CADASTRO ;
TABLES SEXO*EMPRESA ;
RUN ;
The FREQ Procedure
Table of sexo by empresa
sexo

empresa

Frequency|
Percent |
Row Pct |
Col Pct |ATLAS S.|MALTA LT|PARIS IN| Total
|A.
|DA
|STITUTO |
---------+--------+--------+--------+
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 |
---------+--------+--------+--------+
Total
97
174
163
434
22.35
40.09
37.56
100.00
Frequency Missing = 116

95

Ex.54:
LIBNAME ARQ "G:\KUSEL\SAS" ;
PROC FREQ DATA=ARQ.DADOS ;
TABLES SEXO*IDADE / LIST ;
RUN ;

The SAS System


Cumulative Cumulative
SEXO IDADE Frequency Percent
Frequency Percent
-------------------------------------------------------------------------------F
18
2
11.1
2
11.1
F
19
1
5.6
3
16.7
F
20
1
5.6
4
22.2
F
21
1
5.6
5
27.8
F
22
2
11.1
7
38.9
F
25
1
5.6
8
44.4
F
36
1
5.6
9
50.0
M
21
1
5.6
10
55.6
M
25
1
5.6
11
61.1
M
26
1
5.6
12
66.7
M
28
1
5.6
13
72.2
M
29
1
5.6
14
77.8
M
32
1
5.6
15
83.3
M
33
1
5.6
16
88.9
M
35
1
5.6
17
94.4
M
38
1
5.6
18
100.0

96

Ex.55:
TITLE;
OPTIONS NODATE PAGENO=1;
PROC FREQ DATA=ARQ.CADASTRO ;
TABLE SEXO*EMPRESA / OUT=TESTE
MISSING
NOCUM
NOPERCENT;
RUN;

PROC PRINT DATA=TESTE; RUN:

sexo

The FREQ Procedure


Table of sexo by empresa
empresa

Frequency|
Row Pct |
Col Pct |
|ATLAS S.|MALTA LT|PARIS IN|
|
|A.
|DA
|STITUTO |
---------+--------+--------+--------+--------+
F
|
79 |
58 |
101 |
112 |
| 22.57 | 16.57 | 28.86 | 32.00 |
| 68.10 | 59.79 | 58.05 | 68.71 |
---------+--------+--------+--------+--------+
M
|
37 |
39 |
73 |
51 |
| 18.50 | 19.50 | 36.50 | 25.50 |
| 31.90 | 40.21 | 41.95 | 31.29 |
---------+--------+--------+--------+--------+
Total
116
97
174
163

Obs

sexo

1
2
3
4
5
6
7
8

F
F
F
F
M
M
M
M

empresa

ATLAS S.A.
MALTA LTDA
PARIS INSTITUTO
ATLAS S.A.
MALTA LTDA
PARIS INSTITUTO

Total

350

200

550

COUNT

PERCENT

79
58
101
112
37
39
73
51

14.3636
10.5455
18.3636
20.3636
6.7273
7.0909
13.2727
9.2727

97

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 <pgina , linha , coluna> / [opes] ;
opes DATA= Nome do arquivo SAS;
CLASS

Determina uma ou mais variveis, numricas ou caractere, 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

Determina as variveis numricas que iro participar de uma anlise


estatstica e que sero utilizadas no comando TABLE;

BY

Determina uma ou mais variveis que possibilitam o agrupamento de


dados, com quebra da tabela. OBS: necessrio executar um PROC
SORT, antes;

TABLE

Determina a regra de formao da tabela;


pgina
linha
coluna

opes
OBS:

Determina uma varivel ou expresso que ir definir a regra de


formao das pginas da tabela;
Determina uma varivel ou expresso que ir definir a regra de
formao das linhas da tabela;
Determina uma varivel ou expresso que ir definir a regra de
formao das colunas da tabela;
Opes do comando TABLE:

Regras de formao:

elemento*elemento cruzamento
elemento elemento concatenao
(elemento elemento) agrupamento

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

98

Ex.56:
LIBNAME ARQ "G:\KUSEL\SAS" ;
PROC TABULATE DATA=ARQ.DADOS ;
CLASS SEXO ;
VAR IDADE PESO;
TABLE SEXO , IDADE PESO ;
RUN ;
------------------------------------------------|
|
IDADE
|
PESO
|
|
|------------+------------|
|
|
Sum
|
Sum
|
|---------------------+------------+------------|
|SEXO
|
|
|
|---------------------|
|
|
|F
|
440.00|
939.00|
|---------------------+------------+------------|
|M
|
344.00|
919.88|
-------------------------------------------------

Ex.57:
LIBNAME ARQ "G:\KUSEL\SAS" ;
PROC TABULATE DATA=ARQ.DADOS ;
CLASS SEXO ;
VAR IDADE PESO;
TABLE SEXO , (IDADE PESO) * MEAN ;
RUN ;
------------------------------------------------|
|
IDADE
|
PESO
|
|
|------------+------------|
|
|
Mean
|
Mean
|
|---------------------+------------+------------|
|SEXO
|
|
|
|---------------------|
|
|
|F
|
31.43|
67.07|
|---------------------+------------+------------|
|M
|
31.27|
83.63|
-------------------------------------------------

Ex.58:
LIBNAME ARQ "G:\KUSEL\SAS" ;
PROC TABULATE DATA=ARQ.DADOS ;
CLASS SEXO EMPRESA ;
VAR PESO;
TABLE SEXO, EMPRESA* PESO * MEAN ;
RUN ;
------------------------------------------------|
|
EMPRESA
|
|
|-------------------------|
|
|
ATLAS
|
MANTAS
|
|
|------------+------------|
|
|
PESO
|
PESO
|
|
|------------+------------|
|
|
Mean
|
Mean
|
|---------------------+------------+------------|
|SEXO
|
|
|
|---------------------|
|
|
|F
|
65.80|
68.34|
|---------------------+------------+------------|
|M
|
88.45|
80.87|
-------------------------------------------------

99

Ex.59:
LIBNAME ARQ "G:\KUSEL\SAS" ;
PROC TABULATE DATA=ARQ.DADOS ;
CLASS SEXO EMPRESA ;
VAR ALTURA;
TABLE SEXO, EMPRESA ALL, ALTURA * MEAN / CONDENSE;
RUN ;
SEXO F
-----------------------------------|
|
ALTURA
|
|
|------------|
|
|
Mean
|
|---------------------+------------|
|EMPRESA
|
|
|---------------------|
|
|ATLAS
|
1.71|
|---------------------+------------|
|MANTAS
|
1.67|
|---------------------+------------|
|All
|
1.69|
-----------------------------------SEXO M
-----------------------------------|
|
ALTURA
|
|
|------------|
|
|
Mean
|
|---------------------+------------|
|EMPRESA
|
|
|---------------------|
|
|ATLAS
|
1.82|
|---------------------+------------|
|MANTAS
|
1.79|
|---------------------+------------|
|All
|
1.80|
------------------------------------

100

Ex.60:
LIBNAME ARQ "G:\KUSEL\SAS" ;
PROC TABULATE DATA=ARQ.DADOS ;
CLASS SEXO ALTURA ;
TABLE ALTURA , SEXO ALL;
RUN ;
-------------------------------------------------------------|
|
SEXO
|
|
|
|-------------------------|
|
|
|
F
|
M
|
All
|
|
|------------+------------+------------|
|
|
N
|
N
|
N
|
|---------------------+------------+------------+------------|
|ALTURA
|
|
|
|
|---------------------|
|
|
|
|1.58
|
1.00|
.|
1.00|
|---------------------+------------+------------+------------|
|1.6
|
2.00|
.|
2.00|
|---------------------+------------+------------+------------|
|1.63
|
1.00|
.|
1.00|
|---------------------+------------+------------+------------|
|1.65
|
1.00|
1.00|
2.00|
|---------------------+------------+------------+------------|
|1.67
|
1.00|
.|
1.00|
|---------------------+------------+------------+------------|
|1.68
|
1.00|
2.00|
3.00|
|---------------------+------------+------------+------------|
|1.7
|
1.00|
.|
1.00|
|---------------------+------------+------------+------------|
|1.72
|
1.00|
.|
1.00|
|---------------------+------------+------------+------------|
|1.75
|
2.00|
3.00|
5.00|
|---------------------+------------+------------+------------|
|1.78
|
1.00|
.|
1.00|
|---------------------+------------+------------+------------|
|1.8
|
1.00|
.|
1.00|
|---------------------+------------+------------+------------|
|1.81
|
1.00|
.|
1.00|
|---------------------+------------+------------+------------|
|1.85
|
.|
1.00|
1.00|
|---------------------+------------+------------+------------|
|1.86
|
.|
1.00|
1.00|
|---------------------+------------+------------+------------|
|1.88
|
.|
1.00|
1.00|
|---------------------+------------+------------+------------|
|1.9
|
.|
1.00|
1.00|
|---------------------+------------+------------+------------|
|2.05
|
.|
1.00|
1.00|
--------------------------------------------------------------

101

Ex.61:
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 SAL ;
TABLE SEXO="Sexo"*EMPRESA="Empresa" ALL="Total",
(N*f=6. PCTN="%"*f=commax6.2
SAL=""*MEAN="Mdia de Salrio"*f=commax12.2) ;
RUN ;
OBS:

*f=
*=

Formata a varivel
Especifica um LABEL para a varivel

Relatrio com a Mdia de Salrio


e a Distribuio Percentual dos Funcionrios por Empresa
----------------------------------------------------------|
|
|
| Mdia de |
|
| N
| %
| Salrio
|
|------------------------------+------+------+------------|
|Sexo
|Empresa
|
|
|
|
|--------------+---------------|
|
|
|
|F
|
|
79| 14,36|
.|
|
|---------------+------+------+------------|
|
|ATLAS S.A.
|
58| 10,55|
3.094,50|
|
|---------------+------+------+------------|
|
|MALTA LTDA
|
101| 18,36|
3.739,14|
|
|---------------+------+------+------------|
|
|PARIS INSTITUTO|
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|
|
|---------------+------+------+------------|
|
|PARIS INSTITUTO|
51| 9,27|
2.739,57|
|------------------------------+------+------+------------|
|Total
|
550|100,00|
3.332,21|
-----------------------------------------------------------

102

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 arquivo SAS, permanente, no diretrio c:\curso\sas, com a mdia , o
valor mximo e o valor mnimo da varivel IDADE, classificados por EMPRESA.
- Este programa no deve gerar relatrio;
- Dever gerar trs variveis referentes a mdia, o valor mximo e o valor
mnimo da idade: MED_ID, MAX_ID e MIN_ID;
3 - Com o arquivo gerado no item anterior, crie um programa que emita um relatrio
ordenado por EMPRESA.
- As variveis devero ser rotuladas:
MED_ID="Idade Mdia"
MAX_ID="Idade Mxima"
MIN_ID="Idade Mnima"
- Os resultados numricos devero aparecer formatados com pontos e
vrgula.e com no mximo duas casas decimais;
- Dever ser criado um ttulo: "Variao da Idade por Empresa"
4 - Gere um relatrio apenas coma a mdia e somatrio de todas as variveis
numricas do arquivo SAS, CADASTRO ordenados por EMPRESA.
5 - Gere um relatrio com as tabelas de freqncia de SEXO, IDADE, ESTADO
CIVIL, FILHOS, EMPRESA e FUNCAO.
6 - Gere um relatrio com uma tabela de freqncia de SEXO versus IDADE.
7 - Gere um relatrio com duas tabelas de freqncia de ESTADO CIVIL versus
FILHOS e SEXO versus EMPRESA na mesma PROC.

103

8 - 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)
9 - 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;
- Dever ser utilizado as opes MEAN e SUM para formar as colunas
- Tamanho da pgina de 55 linhas e 80 colunas;
(Utilize o procedimento TABULATE)
10 - 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.

104

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 caractere.
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 at 32 caracteres;


- Nome de formatos para serem aplicados em variveis caractere,
obrigatoriamente, devero iniciar com $ ;
- Nomes de formato no podem terminar com nmeros.

opes

MULTILABEL Permite sobreposio de intervalos;


NOTSORTED No ordenar as descries;

OBS: A opo MULTILABEL s funcionar em procedimentos que


possuem o comando CLASS (PROC MEANS, TABULATE e
SUMMARY), que permite ativar o uso do formato com sobreposio
atravs da sua opo MLF

CLASS <varivel> / MLF

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
HIGH
OTHER
<

descrio

Menor valor encontrado;


Maior valor encontrado;
Qualquer outro valor no identificado;
No inclui o valor do intervalo.

-Valor, no qual a varivel formatada, assumir no momento de sua


utilizao;
- No mximo 32K caracteres entre aspas;
105

Ex.62:
LIBNAME ARQ "G:\KUSEL\SAS" ;
OPTIONS PS=30 ;
PROC FORMAT ;
VALUE $TUR "1"="MANHA"
"2"="TARDE"
OTHER="DADO ERRADO" ;
VALUE ALT LOW-<1.50="BAIXO"
1.50-<1.70="MEDIO"
1.70-HIGH="ALTO" ;
PROC PRINT DATA=ARQ.DADOS ;
FORMAT TURNO $TUR.
ALTURA ALT. ;
RUN ;
The SAS System
15:01 Tuesday, January 30, 1996
OBS

NOME

SEXO

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

Alfredo
Alicia
Carol
Paulo
Maria
Ricardo
Tomas
Joao
Marcia
Ligia
Laura
Paula
Carlos
Jaime
Joice
Filipe
Roberto
Lia

M
F
F
M
F
M
M
M
F
F
F
F
M
M
F
M
M
F

IDADE
25
22
22
29
20
35
26
38
18
19
18
21
21
28
25
32
33
36

ALTURA
ALTO
ALTO
MEDIO
ALTO
MEDIO
ALTO
ALTO
ALTO
MEDIO
ALTO
MEDIO
MEDIO
MEDIO
ALTO
ALTO
ALTO
ALTO
MEDIO

PESO TURNO
80
65
65
90
70
83
75
90
50
80
69
58
55
75
60
110
89
76

MANHA
MANHA
MANHA
MANHA
MANHA
MANHA
MANHA
MANHA
MANHA
MANHA
MANHA
MANHA
TARDE
TARDE
TARDE
TARDE
TARDE
TARDE

106

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 a varivel PESO:
50-<70 = "50 a 69"
70-<80 = "70 a 79"
80-<100 = "80 a 99"
Criar rtulos para a 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 a varivel ESTADO CIVIL:
"1" = "SOLTEIRO"
"2" = "CASADO"
"3" = "SEPARADO"
Criar faixas para a 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"
Do menor ao maior valor, missing=Total
missing=Desempregado;
OBS: Os dois ltimos intervalos so uma sobreposio.

107

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 formatados
(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;
- Comando CLASS, com a opo MLF, apenas para o SALARIO.

108

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> . . . <arquivon> ;

ARQ1

ARQ2

DATA ARQ3;
SET ARQ1 ARQ2;
RUN;

ARQ3

ARQ1

ARQ2

109

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

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

DATA IN.CONCAT ;
SET IN.ARQ1 IN.ARQ2 ;
RUN;
PROC PRINT DATA=IN.CONCAT ;
RUN ;
SAS
OBS NOME

SEXO

IDADE

1
2
3
4
5
6
7
8

M
F
F
M

.
.
.
.
25
22
18
15

MARCIO
SANDRA
PAULA
CELSO
MARCIO
CELSO
PAULA
SANDRA

110

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

ARQ1

ARQ2

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


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

ARQ1

ARQ2

111

Ex.64:
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 ;
SAS
OBS

NOME

SEXO

IDADE

1
2
3
4

CELSO
MARCIO
PAULA
SANDRA

M
M
F
F

22
25
18
15

112

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.

113

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

114

Você também pode gostar