Wprowadzeni SAS by lp8qDqC

VIEWS: 0 PAGES: 12

									      WPROWADZENIE DO PROGRAMU STATYSTYCZNEGO SAS.


      Ćwiczenia polegają na zapoznaniu się z aplikacją SAS oraz poprawnym
wczytaniu danych tekstowych za pomocą interfejsu użytkownika.
      Kolejne zadania polegają na użyciu i omówieniu języka 4GL do procedur
poprawnego wczytywania danych.

      Wstęp

       SAS System został stworzony, po to by umożliwić użytkownikom pracę z danymi.
Narzędzie to ułatwia analizę, przekształcanie, oraz prezentację danych użyteczną dla
odbiorcy.

      Interfejs Systemu SAS
        Na ogół użytkownicy pracują z Systemem SAS w trybie interaktywnym korzystając z
interfejsu systemu SAS. Umożliwia on m.in. edycję i uruchamianie programów, uruchamianie
narzędzi i aplikacji SASa, przeglądanie rezultatów i zarządzanie bazą danych. Komunikacja
użytkownika z systemem SAS wykorzystuje okna, które otwierają się zaraz po starcie
systemu i są widoczne poniżej na rys.1.




        Podstawowym oknem jest okno SAS Explorera, za pomocą którego można zarządzać
strukturami Systemu SAS. Równolegle do Explorera istnieje okno Rezults, służące do
zarządzania wynikami działania programu.

Biblioteki

Co to jest biblioteka ?
Biblioteka jest odwołaniem do istniejącej struktury w systemie operacyjnym. Umożliwia
dostęp do różnych obiektów Systemu SAS.
Pojęcie biblioteki jest bardzo podobne do pojęcia „bazy danych" w systemach zarządzania
relacyjnymi bazami danych. Zarówno w jednym jak i w drugim przypadku w bibliotece
przechowywane są przede wszystkim dane w formie tabel.

Właściwości bibliotek

•     W Systemie SAS do bibliotek odwołuje się poprzez REFERENCJE (ang. libraries).
•     Biblioteka w Systemie SAS odpowiada pewnej strukturze systemu operacyjnego. W
      przypadku systemu DOS jest nią katalog (np. D:\KURS)
•     Z punktu widzenia Systemu SAS biblioteka jest tylko wskazaniem na taką strukturę.
•     Referencje są aktywne jedynie podczas trwania sesji Systemu SAS.




                                                                                       1
•      Istnieje możliwość zdefiniowania bibliotek, które będą wskazywać na kilka struktur
       (katalogów) systemu operacyjnego.

Każda biblioteka ma zdefiniowaną nazwę. Nazwa może mieć maksymalnie 8 znaków, nie
może zawierać znaków specjalnych, musi zaczynać się od litery lub znaku_.

     Właściwości bibliotek
Z powyższego wynikają następujące konsekwencje:
• Biblioteki nie są fizycznie tworzone w Systemie SAS. W Systemie SAS definiowana jest
   jedynie referencja do struktury systemu operacyjnego (katalogu).
• Biblioteka nie może zostać skasowana w Systemie SAS. Możemy jedynie anulować
  deklarację biblioteki. Oczywiście można niejako skasować bibliotekę kasując wszystkie jej
  elementy, ale wtedy pozostanie biblioteką bez zawartości. Innym sposobem jest też
  skasowanie katalogu komendą Systemu Operacyjnego.
• Zanim można zadeklarować nową bibliotekę musi istnieć miejsce w Systemie Operacyjnym
(katalog) na jej elementy. Zazwyczaj takie miejsce tworzymy przy pomocy narzędzi danego
SO.
• Ponieważ biblioteka jest jedynie REFERENCJĄ, pod tą samą nazwą mogą kryć się różne
   dane w różnych momentach czasu. Pozwala to np. na testowanie programów jedynie na
   próbkach danych przed ich uruchomieniem na danych docelowych.
• Ponieważ biblioteka jest REFERENCJĄ, te same fizycznie dane mogą być dostępne w
   bibliotekach o różnych nazwach wskazujących na tą samą strukturę SO.
• Przy każdym uruchomieniu należy zadbać o właściwe zadeklarowanie bibliotek z danymi.
   W Systemie SAS istnieje kilka mechanizmów pozwalających na automatyczne
   deklarowanie bibliotek przy starcie Systemu.

Tworzenie nowej biblioteki
Istnieje kilka sposobów na stworzenie nowej biblioteki:
 • wykorzystanie okna Explorer
• instrukcja LIBNAME w SAS-4GL.

Przykład: Z pomocą okna Explorer stworzyć bibliotekę DANE wskazującą na katalog
            D:\KURS\KURS_WST.
W tym celu należy:
1.W oknie Explorer zaznaczyć pozycję Libraries i z menu dostępnego pod prawym
klawiszem myszy wybrać New. Pojawia się wówczas okno New Library.
2. Podać DANE jako nazwę biblioteki, a pole Engine ustawić na wartość Default
3. Jeżeli opcja Enable at startup zostanie zaznaczona, biblioteka będzie tworzona za każdym
    razem, gdy uruchamiany będzie System SAS.
4. W polu Path należy podać ścieżkę do katalogu z danymi
5. Kliknąć OK.




                                                                                         2
Biblioteki systemowe w Systemie SAS

Każda sesja Systemu SAS wymaga istnienia trzech bibliotek systemowych SASHELP,
SASUSER i WORK.
• Deklarowane są one automatycznie przez System podczas startu.
• Ich definicje znajdują się w plikach konfiguracyjnych lub są podane w komendzie
   uruchamiającej system.
• Nie można zmienić ich definicji podczas trwania sesji Systemu SAS.
• Każda z nich ma specjalne przeznaczenie.
SASHELP
• Biblioteka tylko do odczytu (dla większości standardowych instalacji Systemu SAS).
• Zawiera elementy i moduły Systemu SAS napisane w języku SAS (m.in. Asystent,
SAS/EIS).
• Zawiera standardowe elementy umożliwiające działanie Systemu, jak również obiekty
  związane z konfiguracją Systemu.

SASUSER
• Zawiera konfigurację danej sesji Systemu SAS (m.in. wygląd okienek, definicje klawiszy,
   pasek narzędzi, biblioteki do automatycznego podłączenia).
• Wiele narzędzi Systemu korzysta z tej biblioteki do przechowywania informacji o swoich
  ustawieniach (np. Asystent).
• Narzędzia Systemu przeszukują ją domyślnie, gdy potrzebują pewnych informacji
  uzupełniających.
WORK
Biblioteka tymczasowa - jej zawartość jest automatycznie kasowana przy końcu sesji
   Systemu SAS. Jeżeli chcemy zachować wyniki zapisane w WORK, należy je przed
   końcem sesji skopiować do jednej z bibliotek stałych.
• Dla Systemu SAS jest biblioteką roboczą - tzn. narzędzia SAS tworzą tam swoje zbiory
   pomocnicze, pośrednie itp.
• Jeżeli w procedurach lub w 4GL nie zdefiniowano biblioteki to domyślnie wszelkie zbiory i
inne obiekty Systemu SAS tworzone w wyniku wykonywanego kodu umieszczane są w tej
bibliotece. Narzędzia Systemu przeszukują ją domyślnie, gdy potrzebują pewnych informacji
uzupełniających (podobnie zresztą jak bibliotekę SASUSER).


Import i export wizard
System SAS oferuje wiele różnorodnych metod dostępu do zbiorów i baz danych
zewnętrznych. Dodatkowo, w przypadku niektórych formatów przechowywania danych,
istnieje także możliwość prostego zaimportowania zbioru zewnętrznego lub też
wyeksportowania zbioru SASowego do pliku zewnętrznego. Aby umożliwić użytkownikowi
wykonanie tych czynności stworzono dwa Wizardy: do importu i eksportu danych.
Mechanizm ten jest dostępny tylko dla danych zapisanych w: • arkuszu kalkulacyjnym Excel
lub Lotus


                                                                                         3
• bazie DBASE
• bazie MS ACCESS
• plikach tekstowych
Przykład: Zaimportować plik z Excela
1. Z menu File wybrać pozycję Import Data
2. Pojawia się okno Import Wizard, pozwalające na zdefiniowanie wszystkich opcji
niezbędnych do importu danych. Jako źródło danych wybrać Microsoft Excel 97 or 2000
Spreadsheet (*.xls)
3. W kolejnym oknie podać, gdzie znajduje się arkusz, z którego dane mają być
zaimportowane. Ścieżkę dostępu można wpisać ręcznie lub wybrać korzystając z przycisku
Browse. Przycisk Options pozwala na podanie opcji dla importowanych danych. Opcje te
zależą od formatu, z jakiego importowane są dane. W przypadku arkusza kalkulacyjnego
można wybrać jaki zeszyt ma być zaimportowany, jak również jaki zakres z wybranego
zeszytu będzie wczytywany. Zaznaczenie opcji Column names in first row powoduje, że
pierwszy wiersz będzie definiował nazwy kolumn (w Systemie SAS zmiennych).
4. W kolejnym oknie wybrać bibliotekę i wpisać nazwę zbioru, gdzie zapisane będą dane.
5. Kolejne okno pozwala na zapamiętanie generowanego kodu. Można tutaj podać nazwę
    pliku tekstowego, w którym zostanie zapamiętany kod procedury wczytującej dane.

Po wybraniu przycisku Finish, dane zostaną zaimportowane. W oknie LOG wyświetlona
zostaje notka, że zbiór został stworzony. Korzystając z Explorera można sprawdzić, czy dane
zostały poprawnie zaimportowane.

Import Wizard
W analogiczny sposób można wyeksportować dowolny zbiór do arkusza kalkulacyjnego,
pliku tekstowego, bazy DBASE lub MS ACCESS.

Przykład: Wyeksportować zbiór DANE.KURS_1 do arkusza kalkulacyjnego Excel.

1. Z menu File wybrać Export. Ukaże się wówczas okno Export Wizard, w którym należy
wybrać zbiór do wyeksportowania.
2. W kolejnym oknie należy wybrać format, w którym mają być zapisane dane.
3. Kolejne okno pozwala na zdefiniowanie, gdzie tworzony plik ma być zapisany i jak ma się
    nazywać.
4. W następnym oknie można wybrać, czy wygenerowany kod ma zostać zapisany. Jeżeli tak,
    należy podać nazwę pliku tekstowego. Kliknięcie przycisku Finish spowoduje wykonanie
    wygenerowanego kodu. W oknie Log pojawią się informacje o eksporcie danych.


Instrukcja LIBNAME
System SAS pozwala na definiowanie nowych bibliotek interaktywnie, korzystając z okna
Explorera. Możliwe jest także definiowanie nowych bibliotek w programach SAS-4GL.
Służy do tego instrukcja LIBNAME.
Składnia instrukcji LIBNAME jest następująca:

LIBNAME nazwa <motor> ścieżka do biblioteki' <opcje> ;

motor definiuje sposób dostępu do danych (np. v6 - dostęp do danych z wersji 6, v8 - dostęp
       do danych z wersji 8, oracle - bezpośredni dostęp do zbiorów bazy ORACLE itd.)


                                                                                         4
opcje zależne od systemu operacyjnego i od wybranego motoru

Przykłady dla różnych systemów operacyjnych:

 OpenVMS                        libname     sasdata ' [progi] ' ;

 MS DOS, OS/2, WINDOWS libname              sasdata ' c : \progl' ;

 UNIX                           libname     sasdata '/users/progl';


Opcja CLEAR usuwa definicję biblioteki nie kasując zbiorów na dysku:


Co to jest 4GL i co to takiego STEP?
       4GL - to język czwartej generacji, który został stworzony z myślą o przetwarzaniu dużych
zbiorów. Jest językiem, który sam zajmuje się obsługą zbiorów - pozwala na dostęp do zbiorów,
odczytanie obserwacji, zapis obserwacji do wskazanego zbioru.
Program w języku 4GL składa się z bloków zwanych STEPami, które wykonywane są sekwencyjnie.
Najpierw linie kodu są interpretowane za pomocą kompilatora języka 4GL, a następnie wykonywane.
Kompilacja i wykonywanie programu jest wykonywane w sposób sekwencyjny. Komunikacja
pomiędzy poszczególnymi blokami (stepami) odbywa się albo za pomocą makrozmiennych,
makroprogramów lub z wykorzystaniem zbiorów danych tworzonych w poszczególnych blokach.
Bloki mogą być dwóch typów:

• DATA STEP blok zawierający instrukcje związane głównie z przetwarzaniem zbiorów danych
• PROC STEP blok zawierający wywołanie jednej, gotowej procedury Systemu SAS
Dodatkowo pomiędzy blokami mogą pojawić się dodatkowe instrukcje, takie jak LIBNAME,
FILENAME, OPTIONS, TITLEn, FOOTNOTEn i inne.
Od tej pory będę używał zamiennie nazwy bloki instrukcji i stepy, czyli po polsku kroki.
Każda instrukcja w DATA STEPie musi kończyć się średnikiem. Fizyczny podział na linie nie ma
znaczenia, gdyż interpretowana(e) jest linia do napotkania znaku średnika. Wielkość liter użytych w
kodzie programu (z wyjątkiem porównywania wartości zmiennych) jest bez znaczenia.




DATA STEP - wprowadzenie
DATA STEP jest logicznym blokiem składniowym programów w języku 4GL, składającym się z
instrukcji związanych głównie z przetwarzaniem zbiorów danych.
Typowy DATA STEP czyta dane z jednego lub wielu zbiorów danych lub plików tekstowych i
zapisuje przetworzone dane do jednego lub wielu zbiorów danych lub plików tekstowych. Oto kilka
podstawowych instrukcji, które pozwolą odczytywać dane, lub też je zapisywać do zbiorów
SASowych lub zewnętrznych.


Składnia DATA STEPU
Podstawowa składnia DATA STEPU:

DATA zbiór wynikowy (opcje-zb-1) ... zbiór wynikowy n(opcje-zbioru);
Ins trukcj e ;
RUN;



                                                                                                 5
Przykład:

data wynik;
set dane.zbior;
suma=x+y+z;
run;


Pętla główna
W obrębie poszczególnych kroków tworzona jest automatycznie pętla główna, w obrębie której
• czytana jest kolejna obserwacja z wejściowych zbiorów danych (lub wiersz z wejściowych plików
    tekstowych)
• wykonywane są instrukcje będące treścią danego kroku
• przekształcona obserwacja zapisywana jest do zbiorów wynikowych zdeimiowanych w tymże kroku
Pętla główna wykonywana jest tak długo, jak długo w zbiorach wejściowych są jeszcze nie
przeczytane obserwacje, czyli do ostatniej obserwacji zbioru.
W przykładzie powyżej:

 okre ślenie zbiorów wynikowych data wynik;

 okre ślesie zbiorów wejściowych set dane.zbior;

 instrukcje przetwarzania danych suma= x+y+z;

 Instrukcja kończąca step run;

Instrukcja przypisania
W omawianym DATA STEPie została użyta instrukcja przypisania. Jej postać jest następująca:

suma=x+y+z;


Zmiennej suma przypisany został wynik instrukcji dodawania wartości zmiennych x, y i z.
Dodatkowo, jeśli wcześniej w zbiorze wejściowym nie istniała taka zmienna, zostanie ona utworzona.
W SASie nie istnieje więc konieczność jawnej deklaracji wszystkich zmiennych, które w danym kroku
będą wykorzystywane. Pamiętać jednak należy, że będą one wówczas posiadały standardowe atrybuty
dla odpowiednich typów zmiennych.

DATA STEP może czytać dane ze zbiorów SAS za pomocą instrukcji:
SET zbiór wejściowy_1 (opcje_zbioru_l)... zbiór wejściowy_n
   (opcje_zbioru_n);
lub:
MERGE   zbiór  wejściowy_l              (opcje_zbioru_1)...            zbiór      wejściowy_n
(opcje_zbioru_n);

DATA STEP może także czytać dane ze zbiorów tekstowych za pomocą instrukcji:
INFILE zbiór tekstowy ;
INPUT lista zmiennych ;
oraz pisać do zbiorów tekstowych za pomocą instrukcji:
FILE zbiór tekstowy ;
PUT lista zmiennych ;



                                                                                                6
Odczyt danych tekstowych.
W każdym DATA STEPie czytającym dane testowe należy określić położenie obrabianych danych.
Mogą się one znajdować w zewnętrznym pliku tekstowym lub być wpisane bezpośrednio w treść
programu w języku 4GL.
Instrukcje pozwalające określić położenie danych wejściowych to:
• INFILE - określa lokalizację zewnętrznego pliku tekstowego
• CARDS - rozpoczyna ciąg danych tekstowych wpisanych bezpośrednio w program
Zbiór zewnętrzny
linia 1 linia 2

DATA zbiór wynikowy;
  INFILE zbiór zewnętrzny;
  INPUT ...;
RUN;
Dane wpisane w program
DATA zbiór wynikowy;
INPUT . . . ;
CARDS linia 1 linia 2;
RUN;

Zbiór wynikowy
Jedna z tych instrukcji musi pojawić się w DATA STEPie aby mógł on korzystać z instrukcji INPUT
bezpośrednio wczytującej dane.

Instrukcja INFILE.
Instrukcja INFILE pozwala określić lokalizację i format zewnętrznego pliku z danymi tekstowymi.
Podstawowa składnia
INFILE specyfikacja-pliku <opcje> <opcje-systemowe> ;
Specyfikacja-pliku określa położenie danych, może mieć kilka form:
 ścieżka i nazwa_pliku określenie fizycznej lokalizacji pliku na dysku (zależne od systemu
                                 operacyjnego),
  np. INFILE ‘c:\dane.txt’ ;
identyfikator_pliku określenie identyfikatora alere związanego z danym plikiem (niezależne od
                                 systemu operacyjnego), np. INFILE myfile ;
identyfikator-katalogu (plik) określenie identyfikatora alere związanego z całym katalogiem wraz z
                                  podaniem konkretnego pliku w tym katalogu (częściowo zależne od
                                  systemu operacyjnego), np. INFILE mydir (konta.txt) ;
CARDS określenie, że dane znajdują się w obrębie programu, Bezpośrednio po instrukcji
                                  DATALINES lub CARDS.


Wczytywanie danych rozdzielonych separatorami
Domyślnym separatorem w plikach tekstowych jest spacja.
Można to zmienić za pomocą opcji DLM='lista_separatorów', która może pojawić się w instrukcji
INFILE.
Przykład pliku o danych rozdzielonych separatorami:

Plik   OSOBY1.TXT
 1     176   76        M   23    Jan
 2     180   95        M   25    Tomasz
 3     179   80        M   21
 4     165   58        F   23    Anna
 5     175   66        F   22    Hanna
 6     172   60        F   24    Zofia


                                                                                                7
Wczytywanie danych tego typu nazywamy czytaniem według listy. Odbywa się ono za pomocą
instrukcji INPUT z listą zmiennych.
DATA osoby ;
   INFILE ‘D:\osobyl.txt' MISSOVER ;
   INPUT id wzrost waga plec $ wiek imie $ ;
RUN;
Powyższy DATA STEP czyta kolejne linie i w każdej z nich odczytuje poszczególne zmienne
wymienione po instrukcji INPUT przyjmując założenie, że są one oddzielone separatorami. Zmienne
plec i imie są znakowe, stąd musi zostać użyty znak $ po ich nazwie.
Ponieważ w trzecim rekordzie brak jest zmiennej imie System SAS szukałby jej wartości na początku
nowej linii, co prowadziłoby do błędu. Jednakże użyta została opcja MISSOVER, która wymusza
zastąpienie nie znalezionych wartości brakami danych.
Program ten działałby tak samo poprawnie gdyby plik OSOBY1.TXT miał mniej uporządkowaną
postać:
1 176 76 M 23 Jan
2 180 95 M 25 Tomasz
3   179   80   M   21
4   165   58   F   23 Anna
5   175   66   F   22 Hanna
6   172   60   F   24 Zofia
Ważne jest jedynie, aby poszczególne zmienne rozdzielone były separatorami.

Wczytywanie danych zapisanych w określonych kolumnach

Przykład pliku o danych zapisanych w określonych kolumnach i niekoniecznie rozdzielonych
separatorami:

Plik OSOBY2.TXT
117676M23 Jan
218095M25 Tomasz
317980M21 Kamil
416558E Anna
517566E Hanna
617260E Zofia

Wczytywanie danych tego typu nazywamy czytaniem według kolumn. Odbywa się ono za pomocą
instrukcji INPUT z listą zmiennych wraz z podanym położeniem w obrębie linii. Jeżeli dana zmienna
znajduje się w obszarze pomiędzy kolumną kl i k2 piszemy kl-k2, jeżeli natomiast jest to zmienna
jednoznakowa zajmująca tylko kolumnę k3 to możemy napisać k3k3 lub po prostu k3.

Przykład 2:

DATA osoby ;
INFILE ‘d:\osoby2.txt';
INPUT id 1 wzrost 2-4 waga 5-6 plec $ 7 wiek 8-9 imie $ 10-16;
RUN;

Powyższy DATA STEP czyta kolejne linie i w każdej z nich odczytuje poszczególne zmienne
wymienione po instrukcji INPUT przyjmując założenie, że znajdują się one w kolumnach podanych
po nazwie zmiennej.


                                                                                                    8
Zmienne plec i imie są znakowe stąd musi zostać użyty znak $ po ich nazwie.
Jeśli w niektórych liniach brak jest pewnych zmiennych System SAS zastąpi je brakami danych.

Wczytywanie danych według informatów

Przykład pliku o danych, do wczytania których trzeba użyć informatów:

Plik OSOBY3.TXT
 1 Jan 10,234.20 97/01/03
 2 Tomasz 9,111.00 97/U2/O1
 3 Kamil 12,543.33 97/01/02
 4 Anna 23,000.00 97/02/01
 5 Hanna 987.50 97/01/30
 6 Zofia 11,211.00 97/02/01

W pliku tym występują zarówno daty, które z zapisu symbolicznego trzeba przekształcić na postać
liczbową akceptowaną przez System SAS jak i liczby, w których tysiące oddzielone są przecinkami,
co przy normalnym czytaniu prowadziłoby do błędów.
Wczytywanie danych tego typu nazywamy czytaniem według informatów
Odbywa się ono za pomocą instrukcji INPUT z listą zmiennych wraz z podanymi informatami.

Przykład 3:

DATA osoby ;
INFILE `d:\osoby3.txt';
INPUT id $3. imie $7. pensja comma9.2 +2 data yymmdd8.;
RUN;

Powyższy DATA STEP czyta kolejne linie i w każdej z nich odczytuje poszczególne zmienne
wymienione po instrukcji INPUT używając przy wczytywaniu podanych informatów.
W tym przykładzie do wczytania identyfikatora id użyto informatu znakowego $3. Dlatego zostanie
on utworzony jako zmienna znakowa rozmiaru 3.
Symbol +2 użyty pomiędzy zmienną pensja i data powoduje przesunięcie aktualnego miejsca czytania
o dwa znaki w prawo.


Wczytywanie danych w sposób mieszany
Opisane dotychczas sposoby czytania danych tekstowych można ze sobą dowolnie łączyć. Każda
zmienna występująca w instrukcji INPUT może być czytana inną metodą.
Powtórzmy ostatni przykład:

Plik OSOBY3.TXT

1   Jan 10,234.20 97/01/03
2   Tomasz 9,111.00 97/02/01
3   Kamil 12,543.33 97/01/02
4   Anna 23,000.00 97/02/01
5   Hanna 987.50 97/01/30
6   Zofia 11.211.00 97/02/01

Możemy go przeczytać łącząc ze sobą wszystkie uprzednio opisane sposoby.

DATA osoby ;


                                                                                               9
INFILE `d:\osoby3.txt';
INPUT id unie $ 4-10 pensja comma9.2 +2 data yymmdd8.;
RUN ;

Zmienna id czytana jest według listy (zakładamy, że ograniczona jest separatorami) zmienna imię
czytana jest według kolumn (zakładamy, że jest zapisana w kolumnach od 4 do 10), natomiast
zmienne pensja i data czytane są według informatów


Dodatkowe symbole sterujące instrukcją INPUT
Oprócz opisanych dotychczas sposobów wczytywania, możemy w instrukcji INPUT używać wielu
znaków sterujących i modyfikatorów. Niektóre z nich to:
symbol `&' powoduje, że podczas czytania zmiennej, po nazwie której został użyty pojedynczy
separator traktowany on jest jako część zmiennej. Dopiero wystąpienie co najmniej dwóch
separatorów kończy daną zmienną.

Przykład:
Plik OSOBY4.TXT
   1 Jan Kowalski 97/01/03
   2 Tomasz Lis 97/02/01
   3 Kamil Sowa 97/01/02
   4 Anna Jantar 97/02/01
   5 Hanna Supron 97/01/30
   6 Zofia Kalicka 97/02/01

Jeżeli chcemy imię i nazwisko rozdzielone pojedynczą spacją wczytać jako jedną zmienną, możemy
użyć następującego programu:

DATA osoby ;
LENGTH nazwisko $ 14;
INFILE ` d:\osoby4.txt';
INPUT id nazwisko $ & data yymmdd8.;
RUN;

symbol ‘:'użyty przed nazwą informatu powoduje, że podczas czytania zmiennej uwzględniane są
tylko znaki do najbliższego separatora a nie tyle, ile wynikałoby z długości informatu

Przykład:
Plik OSOBY5.TXT
 1 Jan 10,234.20 97/01/03
 2 Tomasz 9,111.00 97/02/01
 3 Kamil 12,543.33 97/01/02
 4 Anna 23,000.00 97/02/01
 5 Hanna 987.50 97/01/30
 6 Zofia 11,211.00 97/02/01

Zmienna pensja powinna być czytana informatem comma9.2. Jednakże w niektórych liniach zapisana
jest na mniej niż dziewięciu znakach, dlatego informat trzeba zmodyfikować symbolem ‘:' co określa,
że należy brać pod uwagę nie `dokładnie' ale `co najwyżej' dziewięć znaków.

DATA osoby ;
INFILE ` d:\osoby5.txt';
INPUT id unie $ pensja :comma9.2 data yymmdd8.;
RUN;




                                                                                                10
Symbol ’@n' przesuwa wskaźnik aktualnego miejsca czytania do kolumny n. Liczba występująca po
symbolu @ musi być całkowita dodatnia. Wskaźnik aktualnego miejsca czytania można cofać.

Przykład:

Plik OSOBY6.TXT
 1 Jan 10,234.20 97/01/03
 2 Tomasz 9,111.00 97/02/01
 3 Kamil 12,543.33 97/01/02
 4 Anna 23,000.00 97/02/01
 5 Hanna 987.50 97/01/30
 6 Zofia 11,211.00 97/02/01
Chcemy plik ten wczytać z pominięciem informacji o pensji:

DATA osoby ;
INFILE ` d:\osoby6.txt';
INPUT id unie $ @21 data yymmdd8.;
RUN;

symbol ‘+n' przesuwa wskaźnik aktualnego miejsca czytania o n kolumn w prawo. Liczba
występująca po symbolu `+' musi być całkowita dodatnia. Wskaźnik aktualnego miejsca czytania
można w ten sposób cofać podając po operatorze + w nawiasie liczbę ujemną np. +(-2).
Ten sam przykład:

Plik OSOBY6.TXT
 1 Jan 10,234.20 97/01/03
 2 Tomasz 9,111.00 97/02/01
 3 Kamil 12,543.33 97/01/02
 4 Anna 23,000.00 97/02/01
 5 Hanna 987.50 97/01/30
 6 Zofia 11,211.00 97/02/01

Ponownie chcemy plik ten wczytać z pominięciem informacji o pensji:

DATA osoby ;
INFILE ` d:\osoby6.txt';
INPUT id unie $6. +12 data yymmdd8.;
RUN;

symbol ‘@7' użyty na końcu specyfikacji zmiennych w instrukcji INPUT powoduje zatrzymanie
bieżącej linii w buforze, co oznacza, że następna instrukcja INPUT w tym samym przebiegu pętli
głównej DATA STEP'u będzie wczytywać dane z tej samej linii. Bez użycia tego symbolu, kolejna
instrukcja INPUT wczytałaby kolejną linię.

Przykład:
Plik OSOBY7.TXT
 1 T Jan 97/01/01 97/01/03
 2 N Tomasz 97/02/01
 3 N Kamil 97/01/03
 4 T Anna 97/01/30 97/02/03
 5 T Hanna 97/02/02 97/01/01
 6 N Zofia 97/01/22

Druga zmienna określa czy występują dwie daty. Jeżeli tak, to chcemy wczytać drugą z nich. Musimy
każdą linię czytać dwukrotnie.


                                                                                               11
DATA osoby ;
INFILE ‘d:\osoby7.txt';
INPUT id znacznik $ imie $8. @;
  if znacznik = `N' then INPUT data yymmdd8.;
  else INPUT @23 data yymmdd8.;
RUN;

symbol ‘@@’ użyty na końcu specyfikacji zmiennych w instrukcji INPUT powoduje zatrzymanie
bieżącej linii w buforze nawet pomiędzy kolejnymi przebiegami pętli głównej DATA STEPU.
Przykład:

Plik OSOBY8.TXT
 Jan 97/01/01
 Tomasz 97/02/01
 Kamil 97/01/03
 Anna 97/01/30
 Hanna 97/02/02
 Zofia 97/01/22
Zmienne zapisane są parami imie data. W każdej linii wystąpić może dowolna ilość takich par.

DATA osoby ;
INFILE ` d:\osoby8.txt';
INPUT unie $ data yymmdd8. @@;
RUN ;


symbol ‘/’ powoduje wczytanie kolejnej linii z pliku wejściowego Ten sam efekt można uzyskać
używając kolejnej instrukcji INPUT.

Przykład:

Plik OSOBY9.TXT
1 Jan 97/01/01 10,234.20
2 Tomasz 97/02/01 9,111.00
3 Kamil 97/01/03 12,543.33

W tym przykładzie dane zapisane są w dwóch liniach. Chcemy przeczytać obie jedną instrukcją
INPUT.

DATA osoby ;
INFILE ` d:\osoby9.txt';
INPUT id imie $ @14 data yymmdd8. / pensja comma9.2;
RUN;



Lekcja zaczerpnięta z materiałów kursowych SASa.




                                                                                               12

								
To top