SAS 4GL - несколько информаторов
Я изучаю 4Gl, и у меня есть небольшая проблема с информатами: у меня есть файл:
Imie;Nazwisko;Wiek;indeks;PESEL;Kierunek;Rok;Urodziny;Srednia;Frekwencja
Tomasz;Szan;23;114132;9134765445;Informatyka;5;5.32;99%;14.03.91
Karolina;Herl;21;134294;93543245;;3;4.57;92%;29.09.93
Damian;Kwak;24;189994;1234567890;Informatyka;5;3.50;80%;24.09.90
Ebenezer;Scrooge;AA;882741;78899609;Automatyka;4;3.72;34%;30.02.88
И код 4GL:
DATA projekt.project1;
length PESEL $ 11;
length nazwisko $ 15;
length kierunek $ 15;
INFILE 'c:\lasa_do_sasa\studenty.txt' DLM=';' MISSOVER DSD FIRSTOBS=2;
INPUT imie $ nazwisko $ wiek $ nr_indeksu PESEL $ kierunek $ rok srednia_ocen frekwencja PERCENT3. urodziny ddmmyy8. ;
RUN;
Проблема в том, что: если у меня есть xx%, дата SAS не будет читать дату. Получаю ошибку: неверные данные для уродзины
кто-нибудь может мне помочь? Я думаю, что-то очевидное...
1 ответ
Решение
Хитрость в том, чтобы использовать :
модификатор формата, чтобы остановить SAS, пытающийся читать после следующего разделителя после знака%. Вы также можете установить длины других переменных в выражении ввода следующим образом:
data want;
infile cards4 dsd dlm = ';' firstobs = 2;
input imie $ nazwisko :$15. wiek $ indeks $ PESEL :$11. kierunek :$15. rok urodziny srednia :PERCENT3. frekwencja ddmmyy8. ;
format frekwencja ddmmyy8.;
cards4;
Imie;Nazwisko;Wiek;indeks;PESEL;Kierunek;Rok;Urodziny;Srednia;Frekwencja
Tomasz;Szan;23;114132;9134765445;Informatyka;5;5.32;99%;14.03.91
Karolina;Herl;21;134294;93543245;;3;4.57;92%;29.09.93
Damian;Kwak;24;189994;1234567890;Informatyka;5;3.50;80%;24.09.90
Ebenezer;Scrooge;AA;882741;78899609;Automatyka;4;3.72;34%;30.02.88
;;;;
run;