sas apostila unicamp - cenapad

Upload: jose-chen-lee

Post on 07-Jul-2015

270 views

Category:

Documents


9 download

TRANSCRIPT

Universidade Estadual de Campinas

Centro Nacional de Processamento de Alto Desempenho - So Paulo

Apostila de Treinamento:

SAS Programao I- Introduo ao SAS: Data Step e Proc Step -

Reviso: 2010

CONTEDO1 - HISTRICO 2 - CURIOSIDADES 3 - DEFINIO BSICA 4 - COMERCIALIZAO4.1 - Mdulos SAS 4.2 - Soluo de Negcios pag.05 pag.05 pag.06 pag.07 pag.07 pag.08 pag.09 pag.10 pag.11 pag.12 pag.13 pag.14 pag.14 pag.21 pag.22 pag.22 pag.24 pag.25 pag.26 pag.27 pag.28 pag.29 pag.30 pag.31 pag.33 pag.34 pag.35 pag.36 pag.36 pag.37 pag.37 pag.38 pag.38 pag.39 pag.41 pag.43 pag.46 pag.47 pag.47 pag.49 pag.50 pag.53 pag.54 pag.55 pag.56 2

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

11 - ESTRUTURA DATA STEP11.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 1 LABORATRIO

12 ESTRUTURA PROC STEP12.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"2 LABORATRIO

14 - COMANDOS BSICOS DE PROGRAMAO SAS14.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

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

pag.57 pag.58 pag.59 pag.60 pag.61 pag.62 pag.64 pag.67 pag.67 pag.68 pag.68 pag.68 pag.69 pag.70 pag.70 pag.71 pag.73 pag.73 pag.73 pag.75 pag.75 pag.75 pag.77 pag.77 pag.77 pag.78 pag.78 pag.78 pag.80 pag.81 pag.83 pag.84 pag.85 pag.87 pag.87 pag.90 pag.95 pag.100 pag.101 pag.101 pag.103 pag.104 pag.104 pg.106 pg.108 pag.110 pag.111

15 - FUNES DO SAS15.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 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 4 LABORATRIO

16 - COMANDOS DE CONFIGURAO16.2 - Comando LABEL 16.3 - Comando FORMAT 16.4 - Comando ODS

17 - PROCEDIMENTOS ESTATSTICOS BSICOS17.1 - Procedimento MEANS 17.2 - Procedimento FREQ 17.3 - Procedimento TABULATE 5 LABORATRIO

18 - RECURSO DE FORMATAO ESPECIAL18.1 - Procedimento FORMAT 6 LABORATRIO

19 - COMBINAO DE ARQUIVOS SAS19.1 - Concatenao 19.2 - Concatenao Ordenada 19.3 - Combinao Ordenada 7 LABORATRIO

20 - BIBLIOGRAFIA

3

Tipografia utilizada na apostilaNa apresentao de alguns comandos do SAS, foram utilizados smbolos grficos que identificam, na sintaxe do comando, a caracterstica de ser opcional ou obrigatrio:

< caracterstica > [ caracterstica ]

obrigatrio a informao no comando; opcional a informao no comando.

Exemplo: Utilizao de procedimentos SAS

PROC [opo1 opo2 opo3 . . . opon] ; [comando1] ; [comando2] ; [WHERE ] ; ... [comandon] ; RUN ;

4

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 - CURIOSIDADEShttp://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.5

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

4 - COMERCIALIZAO 4.1 - Mdulos do SAS SAS/BASE Mdulo bsico, instalao; Mdulo estatstico; Mdulo grfico ( Histogramas, plots, ... ); Mdulo de anlise e pesquisa operacional (Programao linear, Anlise de Caminho Crtico); Mdulo para qualidade; anlise de controle de obrigatrio em toda

SAS/STAT SAS/GRAPH SAS/OR

SAS/QC

SAS/ETS

Mdulo de econometria (Sries Temporais, Modelagem de Equaes Simultneas); Mdulo para anlise e operao de matrizes; Mdulo para acesso aos diversos tipos de Banco de Dados; ambientes

SAS/IML SAS/ACCESS

SAS/CONNECT Mdulo para conexo entre operacionais heterogneos; SAS/AF SAS/FSP

Mdulo para desenvolvimento de aplicaes; Mdulo para facilitar o acesso a arquivos com programao de telas;7

4.2 - Soluo de Negcios

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

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

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

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

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

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

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

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

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

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

8

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;

9

6 - ARQUIVOS SAS

Todos os dados devem estar armazenados em arquivos com estrutura SAS (DATA Set's), para serem analisados pelos procedimentos do SAS ( PROC's ).

DADO BRUTO

DATA STEP

DADO SAS

Os arquivos SAS podem ser temporrios ( armazenados em uma biblioteca definida pelo SAS - WORK) ou permanentes (bibliotecas definidas pelos usurios).

Em um nico programa SAS (Job SAS), vrios arquivos podem ser abertos e analisados.

Os arquivos SAS, depois de criados, podem ser analisados pelos procedimentos SAS.

10

7 - ESTRUTURA DOS ARQUIVOS SASO arquivo SAS um conjunto de dados organizados 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 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.

11

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;

12

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 ;

13

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)

14

15

JANELA DE OPES DE CONFIGURAO Tools ==> Options ==> System...

16

17

OPES DE CONFIGURAO DO EDITOR Tools ==> Options ==> Enhanced Editor...

18

19

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

20

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: .lst .log Possui os resultados do programa; 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.

21

11 - ESTRUTURA DATA STEP 11.1 - Introduo- a seo de um programa SAS, aonde se organizam e administram os dados, utilizando comandos de programao do 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 Comandos de Execuo -Funcionalidade: durante a compilao; -Funcionalidade: durante a execuo.

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

22

Fluxo de ExecuoInicio do DATA Step

Abrir arquivo para gravar

Abrir arquivo para leitura

Ler novo registro

processa registro

Salvar registro no arquivo para gravaao

NAO

Ultimo registro

SIM Fim do DATA Step

23

11.2 - Comando LIBNAME- Tipo: Comando de declarao; - Uso: Livre; - Comando opcional de configurao do processamento, que 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]. - 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 diretrioPalavra de no mnimo 1 e no mximo 8 caracteres, que ser utilizado na primeira parte, em um nome de arquivo. 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 VAR NOME ENDERECO ; RUN ; NOOBS ; 24

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

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

ENT.CADASTRO ;

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

25

11.4 - Comando 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 "" [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; . . . . . . . . .

26

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

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

27

11.6 - Comando INPUT- Tipo: Comando de execuo; - Uso: Data Step; - O comando INPUT serve para descrever ao SAS como esto armazenados e organizados os dados em arquivos textos que foram especificados pelo comando INFILE.

- Todo arquivo aberto pelo comando INFILE, sempre necessitar de um comando INPUT para ler o seu contedo;

- O comando INPUT 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

28

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 $ 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. Valor que indica a posio inicial da varivel na linha de dados. Valor que indica a posio final da varivel na linha de dados. Valor opcional, indica o nmero de posies decimais de uma varivel numrica.

[.decimal] ;

incio

fim

.decimal

Ex.7:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

C C S M

A A I A

R R L R

L L V C

O A I I

S

M F

1 2 2 3

8 6 1 2

1 1 1 1

7 7 6 8

0 8 5 2

6 7 6 8

8 2 0 5

. . . .

0 0 5 4

A O

F M

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

29

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 [$] < 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. Valor que indica o tamanho de um campo na linha de dados. O ponto no final obrigatrio. Valor que indica o tamanho de um campo numrico com casas decimais. Interpretao do campo. Nome de um formato especial de leitura dos dados: L campo numrico no formato binrio e o converte para decimal; COMMAXw.d L campo numrico com vrgula e a troca por ponto; Ew.d L campo numrico com notao cientfica; HEXw. L campo numrico em hexadecimal; DDMMYYw. L campo no formato padro de datas dd/mm/yyyy.BINARYw.d

w.

w.d

formatow.d

30

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

Ex.8:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

C C

A A

R R

L L

O A

S

M F

1 2

8 6

1 1

7 7

0 8

6 7

8 2

. .

0 0

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

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 S

J P

2 1

0 1

4 5

5 0

6 0

3 0

0 0

0 0

6 9

, ,

7 4

3 6

9 4

, ,

9 2

9 6

2 5

8 6

8 C

F C

1 1

. 2

2 5

E E

5 5

DATA EXEMPLO2 ; INFILE "A:\NUMEROS.PRN"; INPUT UF $ 2. CEP 8. POP COMMA9. VALOR1 HEX3. VALOR2 E5. ; RUN; PROC PRINT ; RUN ;The SAS System Obs 1 2 UF RJ SP CEP 20456300 11500000 POP 6739992 9464265 VALOR1 2191 1740 VALOR2 120000 12500000

32

11.6.4 - Controles Especiais do Comando INPUT Indicador de COLUNA ( @ )

@n

Move a leitura para a coluna n ;

Indicador de LINHA ( / )

/Ex.10:1 2 3 4 5 6 7 8

Avana a leitura em um registro;

9

10

11

12

13

14

15

16

17

18

19

20

1 D E 2 d e

1 D E 2 d e

1 D E 2 d e

1 D E 2 d e

1

B

B

B

B

C

C

C

C

F 2

F b b b b c c c c

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 System OBS 1 2 A 11111 22222 B BBBB bbbb C CCCC cccc D DDDD dddd E EEEE eeee F FF ff

33

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.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 com nomes repetitivosINPUT 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.) ;

34

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

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\sas35

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 [opes] ; [comando1] ; [comando2] ; ... [comandon] ; RUN ; rotina Palavra-chave que identifica o procedimento a ser executado. Parmetros opcionais de configurao para execuo do procedimento. Comandos de procedimento. detalhamento na execuo do

opes

comando

RUN

Comando para execuo do procedimento SAS. Necessrio no ltimo procedimento do programa SAS.

36

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

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

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

37

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 "" ; TITLE1 "" ; ... TITLE10 "" ; 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 "" ; FOOTNOTE1 "" ; ... FOOTNOTE10 "" ; OBS: Um rodap permanece ativo at que seja modificado, ou eliminado com o comando: FOOTNOTE;

38

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 ; BY ; SUM ;opes DATA= DOUBLE NOOBS Nome do arquivo SAS; Espacejamento duplo; Suprime a coluna com o nmero de cada observao do arquivo; Imprime uma "descrio", das variveis; Insere uma linha em branco a cada n linhas de dados;

LABEL BLANKLINE= n

VAR

Especifica uma lista de variveis que sero impressas; Especifica a quebra ou agrupamento do relatrio, por uma ou mais variveis; Especifica uma ou mais variveis numricas que sero totalizadas;

BY

SUM

39

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

Relatrio de Funcionrios nome Raul Marcelo Paula Renato Carlos Leticia Silvio Celso Sandra funcao Analista Analista Analista Analista Programador Programador Programador Operador Operador

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 6 7 8 9 nome Raul Marcelo Paula Renato Carlos Leticia Silvio Celso Sandra funcao Analista Analista Analista Analista Programador Programador Programador Operador Operador salario 5688.35 4596.96 4978.05 3800.88 3544.45 3845.30 2998.38 1587.00 1500.00 ======== 32539.37

FONTE: DH

40

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 ;opes Nome do arquivo SAS para ser ordenado; 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;

DATA= OUT=

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.

41

Ex.14:PROC SORT DATA=EXEMPLO1 OUT=ORDENA ; BY FUNCAO ; RUN ; PROC PRINT DATA=ORDENA NOOBS ; BY FUNCAO ; VAR NOME SALARIO ; SUM SALARIO ; RUN ;Relatrio de Salrios ------------------------ funcao=Analista -----------------------nome Raul Marcelo Paula Renato ------funcao salario 5688.35 4596.96 4978.05 3800.88 -------19064.24

------------------------ funcao=Operador -----------------------nome Celso Sandra -----funcao salario 1587 1500 ------3087

---------------------- funcao=Programador ----------------------nome Carlos Leticia Silvio ------funcao salario 3544.45 3845.30 2998.38 -------10388.13 ======== 32539.37

FONTE: DH

42

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 "D:\kusel\cursos\sas\DADOS.TXT" ; INPUT NOME $1-8 SEXO $10 FUNCAO $12 23 SALARIO 25 31 ; 12-23 25-31 1 8 10 12 RUN; RUN PROC PRINT DATA=EXEMPLO1 NOOBS ; VAR NOME FUNCAO ; RUN ; NOTE: Copyright (c) 2002-2008 by SAS Institute Inc., Cary, NC, USA. NOTE: SAS (r) Proprietary Software 9.2 (TS2M0) Licensed to UNIVERSIDADE ESTADUAL DE CAMPINAS Site 70005173. CAMPINAS, NOTE: This session is executing on the XP_PRO platform. NOTE: SAS initialization used: real time 1:13.65 cpu time 1.03 seconds 1 2 3 4 DATA EXEMPLO1 ; INFILE "D:\kusel\cursos\sas\DADOS.TXT" ; INPUT NOME $1-8 SEXO $10 FUNCAO $12-23 SALARIO 25-31 ; RUN;

NOTE: The infile "D:\kusel\cursos\sas\DADOS.TXT" is: Filename=D:\kusel\cursos\sas\DADOS.TXT, RECFM=V,LRECL=256,File Size (bytes)=297, Last Modified=06 de Agosto de 2010 14h47min2, Create Time=06 de Agosto de 2010 14h39min0 NOTE: "D:\kusel\cursos\sas\ NOTE: 9 records were read from the infile "D:\kusel\cursos\sas\DADOS.TXT". The minimum record length was 31. The maximum record length was 33. NOTE: The data set WORK.EXEMPLO1 has 9 observations and 4 variables. NOTE: DATA statement used (Total process time): real time 0.01 seconds cpu time 0.01 seconds 5 6 7 PROC PRINT DATA=EXEMPLO1 NOOBS ; VAR NOME FUNCAO ; RUN ;

NOTE: There were 9 observations read from the data set WORK.EXEMPLO1. NOTE: PROCEDURE PRINT used (Total process time): real time 0.03 seconds cpu time 0.03 seconds

43

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 ;DATA EXEMPLO1 ; INFILE "D:\kusel\cursos\sas\DADOS.TXT" ; INPUT NOME $1-8 SEXO $10 FUNCAO# $12-23 SALARIO 25-31 ; 22 76 22constant, ERROR 22-322: Syntax error, expecting one of the following: a name, an integer constant, (. 76ignored. ERROR 76-322: Syntax error, statement will be ign 25 RUN; 22 23 24

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 observations 0 observations and 3 variables. WARNING: Data set WORK.EXEMPLO1 was not replaced because this step was stopped. NOTE: DATA statement used (Total process time): real time 0.01 seconds cpu time 0.01 seconds

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

26 27

44

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 46 47 48 DATA EXEMPLO1 ; INFILE "D:\kusel\cursos\sas\DADOS.TXT" ; INPUT NOME $1-8 SEXO $10 CARGO $12-23 SALARIO $25-31 ; $25RUN;

NOTE: The infile "D:\kusel\cursos\sas\DADOS.TXT" is: Filename=D:\kusel\cursos\sas\DADOS.TXT, RECFM=V,LRECL=256,File Size (bytes)=321, Last Modified=06 de Agosto de 2010 15h07min0, Create Time=06 de Agosto de 2010 14h39min0 NOTE: 10 records were read from the infile "D:\kusel\cursos\sas\DADOS.TXT". The minimum record length was 22. The maximum record length was 33. NOTE: SAS went to a new line when INPUT statement reached past the end of a line. NOTE: The data set WORK.EXEMPLO1 has 9 observations and 4 variables. NOTE: DATA statement used (Total process time): real time 0.01 seconds cpu time 0.01 seconds

49 PROC PRINT DATA=EXEMPLO1 NOOBS ; 50 VAR NOME FUNCAO salario; ERROR: Variable FUNCAO not found. 51 sum salario; ERROR: Variable SALARIO in list does not match type prescribed for this list. 52 RUN ; NOTE: The SAS System stopped processing this step because of errors. NOTE: PROCEDURE PRINT used (Total process time): real time 0.00 seconds cpu time 0.00 seconds

45

2 LABORATRIOManipular 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 temporrio, 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.

46

14 - COMANDOS BSICOS DE PROGRAMAO SAS14.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 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 ; - Constantes : N=0 ; Constante numrica; SEXO="F" ; Constante caractere; Move valor; Adio; Subtrao; Multiplicao; Diviso; Potenciao; Mudana de sinal;

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

47

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.TXT01 02 03 04 05 06 07 08 09 10 11 12

9 9 9

4 5 6

5 6 8

6 2 4

5 8 5

0 0 0

1 1 2

0 1 4

5 4 5

0 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 1994 1995 1996 RECEITA 5650 6280 8450 ======= 20380 DESPESAS 1050 1140 2450 ======== 4640 LUCRO 4600 5140 6000 ===== 15740 DOLLAR 4693.88 5244.90 6122.45 ======== 16061.22

48

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 [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.88 5244.90 6122.45 ======== 16061.22

49

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 [THEN] ; [ELSE] ;

expresso Combinao de variveis com operadores de comparao e/ou operadores lgicos que determinam uma condio. comando Comando do SAS que ser executado de acordo com o resultado da condio. Operadores de Comparao GT LT EQ LE GE NE NL NG IN > < = = ~= maior que menor que igual a menor ou igual a maior ou igual a no igual (diferente) no menor no maior est no conjunto Operadores Lgicos AND & e, ambos OR | ou, um ou outro NOT ~ no, negao

50

Ex.20: S o comando IFLIBNAME 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 ComparaoDATA NOTA ; INFILE "A:\NOTAS.TXT" ; INPUT NOME $ 1-8 NOTA 9-11; IF NOTA LT 3 THEN CONCEITO="E" IF 3