Firma Aktualności Produkty Projekty Teksty Muzeum Pobierz Kontakt Mapa RSS English
YAC Software Muzeum DataGate Suite Język skryptów Spelunka Trybików
  Wróć

Informacje

SPSS-2-Excel

DataGate Suite

Język skryptów

Słowa zarezerwowane

Język skryptów
Struktura skryptu > Format pliku

Skrypt opisujący strukturę przeznaczonego do edycji zbioru danych musi być w postaci pliku tekstowego (ASCII).

Skrypt najlepiej jest przygotować za pomocą wbudowanego edytora programu DataGate Studio, jednakże można też przygotować skrypt przy pomocy dowolnego edytora tekstów umożliwiającego utworzenie pliku nie zawierającego żadnych specjalnych sekwencji sterujących (typu pogrubienia, podkreślenia, wyrównany prawy margines i inne). Większość popularnych edytorów posiada taką możliwość. Program DataGate Studio, mimo iż ma możliwość pogrubiania czy wyróżniania innym kolorem pewnych części tekstu, zapisuje plik w postaci czystego ASCII.

Długość wiersza tworzonego skryptu może być dowolna, aczkolwiek rozsądnie jest stosować wiersze o takiej długości, aby w całości były widoczne na ekranie.

Uwaga
Programy DataGate Systems wyrosły na bazie oprogramowania WD/PD/KD i staramy się zachować maksymalną kompatybilność wsteczną z tymi programami. Występują jednak w języku pewne różnice, które dokładnie zostały opisane w temacie Różnice między językami WD i DGS.



Góra

Struktura skryptu > Postać instrukcji, słowa kluczowe

Skrypt jest ciągiem kolejnych instrukcji. Istnieją trzy ich rodzaje: przejścia do nowej strony, komentarza i definicji pola. Instrukcje interpretowane są jedna po drugiej, w takim porządku, w jakim zostały umieszczone w pliku. W takiej też kolejności tworzone są odpowiadające im strony i pola. Jeśli program znajdzie błąd w jednej instrukcji, to pojawia się komunikat informujący o miejscu i rodzaju błędu. Program stara się jednak dalej interpretować skrypt, tak jakby błędu nie znalazł, w celu jednoczesnego wykrycia ewentualnych innych błędów.

Ogólna postać instrukcji to ciąg słów kluczowych, z ewentualnymi parametrami umieszczanymi po znaku równości, zakończony znakiem * (gwiazdka). Sposób zapisu instrukcji jest swobodny, to znaczy jedna instrukcja może zajmować kilka wierszy, jak też w jednym wierszu można umieścić dwie lub więcej instrukcji. Pomiędzy słowami, liczbami i znakami specjalnymi (takimi jak przecinek, nawiasy, dwukropek, znak równości czy gwiazdka) może wystąpić dowolna liczba znaków odstępu (spacji), tabulacji i końca linii. Poniżej, dla zilustrowania wyglądu typowego skryptu, przedstawiony został fragment zawierający większość najczęściej stosowanych elementów.

COMMENT='Kwestionariusz II'*  
COMMENT=''*  
LEFT='Badanie' WIDTH=9 TEXT CONST AUTO='OMN200012'  
LEFT='Identyfikator' WIDTH=3 RECID VARNAME=RECID*  
COMMENT=''*  
LEFT='Płeć respondenta' WIDTH=1 RANGE=[1:29AUTO=9  
  VARNAME=Sex VARLAB='Płeć' VALLAB=[1 'mężczyzna' 2 'kobieta']*  
LEFT='Wiek respondenta' WIDHT=2 RANGE=[15:7599AUTO=99*  
PAGE*  
{  
  Jeżeli nie ma samochodu, chcemy ominąć pierwszych 8 pytań:  
}  
LEFT='Czy ma samochód?' WIDTH=1 RANGE=[1:29AUTO=9  
  VARNAME=Car VARLAB='Posiadanie samochodu' VALLAB=[1 'tak' 2 'nie']  
  WHEN=[2][Pyt1:Pyt8]*  

W powyższym przykładzie zastosowano schemat wyróżniania części syntaktycznych tekstu kolorami lub pogrubieniem. Nie ma to żadnego wpływu na interpretację skryptu, ma za zadanie tylko zwiększyć czytelność tekstu. Edytor DataGate Studio ma możliwość definiowania takich schematów, niektóre z innych edytorów także.

Zastosowane powyżej wyróżnienia to:
pogrubienie - słowa kluczowe  
kolor zielony - napisy  
kolor czerwony - liczby  
kursywa - notatki.  

Rodzaje poszczególnych instrukcji oraz atrybuty pól są określone poprzez
słowa kluczowe
. Nie jest istotne, czy słowo kluczowe pisane jest wielkimi czy małymi literami.

Porządek słów kluczowych wewnątrz instrukcji jest dowolny. Dane słowo kluczowe może wystąpić w jednej instrukcji tylko raz (oprócz definicji
filtrów
). Ponowne pojawienie się tego samego słowa wynika na ogół z błędu polegającego na opuszczeniu gwiazdki kończącej poprzednią instrukcję.

Obecnie funkcjonują dwie wersje języka skryptów: polska oraz angielska. W niniejszej dokumentacji wszystkie przykłady przedstawiane są w wersji angielskiej, natomiast w opisie
słów kluczowych można znaleźć ich polskie odpowiedniki.



Góra

Struktura skryptu > Napisy

Napisem będziemy nazywać ciąg znaków ograniczony apostrofami. Napis nie może zawierać apostrofu, musi być w całości zawarty w jednym wierszu. Napis może mieć dowolną długość, jednak zbyt długie napisy mogą nie zostać wyświetlone w całości w oknie wprowadzania danych.

Wewnątrz napisu spacje traktowane są tak samo jak inne znaki, a litery małe i wielkie są rozróżniane. Jeśli napis nie zostanie zakończony w jednym wierszu skryptu, zostanie zgłoszony błąd.



Góra

Struktura skryptu > Notatki w treści skryptu

Fragmenty tekstu skryptu ujęte w nawiasy klamrowe są pomijane podczas interpretacji. Można to wykorzystać do wprowadzania dodatkowych objaśnień i notatek. Stosowanie nawiasów klamrowych pozwala również „wyłączać" z interpretacji wpisane, lecz chwilowo niepotrzebne fragmenty instrukcji.

Notatki mogą występować w dowolnym miejscu skryptu za wyjątkiem wnętrza napisu.

W notatce może wystąpić ponownie znak
{, ale już nie
}. Nie można zatem notatek zagnieżdżać.



Góra

Struktura skryptu > Instrukcja zmiany strony

Najprostszą instrukcją jest przejście do nowej strony. Ma ona postać:

PAGE*  

i nie może zawierać żadnych innych słów kluczowych. Wymusza ona zakończenie bieżącej strony (ekranu) i rozpoczęcie nowej. Stosuje się ją dla zachowania zgodności z układem stron kwestionariusza jak również do zmniejszenia liczby pól na jednym ekranie (co z jednej strony przyspiesza wyświetlanie stron, a z drugiej pozwala na rozplanowanie pól ułatwiające koderom wprowadzanie danych).

Numeracja tak tworzonych stron dokonywana jest automatycznie (począwszy od 1). Numer aktualnej strony wyświetlony jest w wierszu statusu.

Uwaga
Na każdej stronie musi wystąpić przynajmniej jedno pole danych. Nie należy w związku z tym rozpoczynać skryptu od tej instrukcji, gdyż pierwsza strona inicjowana jest automatycznie. Również zakończenie ostatniej strony dokonywane jest samoczynnie.



Góra

Struktura skryptu > Instrukcja komentarza

Drugim rodzajem instrukcji jest instrukcja komentarza, pozwalająca wyświetlić na ekranie wprowadzania danych dowolny tekst, informujący kodera np. o treści kolejnych pytań czy specyficznych warunkach ich kodowania.

Instrukcja musi zawierać słowo kluczowe
COMMENT, po którym następuje znak równości i określenie treści komentarza. Na przykład:

COMMENT='Następne pytania nie mogą zawierać braków danych'*  

W najprostszym przypadku treść komentarza podawana jest w postaci
napisu, jak w powyższym przykładzie. Można też odwołać się do innej instrukcji komentarza przez jego etykietę, aby ten sam komentarz wyświetlić po raz drugi. Załóżmy, że przed aktualnie definiowaną instrukcją zdefiniowaliśmy już komentarz jak niżej (proszę zauważyć, że jest to definicja jednej instrukcji):

LABEL=Pytanie1  
COMMENT='Wpisać tylko zaznaczone kody'*  

Wtedy możemy ponownie wyświetlić ten sam komentarz pisząc:

COMMENT=^Pytanie1*  

Szczególnym przypadkiem komentarza jest tak zwany napis pusty, oznaczony parą położonych obok siebie apostrofów:

COMMENT=''*  

Tego rodzaju komentarz można wykorzystać do tworzenia pustych wierszy na ekranie edycji.



Góra

Struktura skryptu > Etykieta

Etykieta jest to nazwa (symbol) przypisana konkretnej instrukcji. Etykietą można opatrzyć każdą z instrukcji, poza instrukcją początku strony. Etykiety przypisujemy po to, aby w dalszych instrukcjach móc się odwołać do pewnych definicji i ustaleń, które w tej instrukcji zostały wprowadzone. W wielu sytuacjach zaoszczędza to wysiłek niezbędny do przygotowania skryptu. Ponadto etykiety niezbędne są przy definiowaniu filtrów i grup.

Aby instrukcji przypisać etykietę, należy umieścić w niej słowo kluczowe
LABEL i po znaku równości podać nazwę etykiety będącą dowolnym ciągiem liter, cyfr i znaku podkreślenia rozpoczynającym się od litery. Program nie rozróżnia liter wielkich i małych (słowa
etykieta1 i ETYKIETA1 zostaną uznane za identyczne).

Aby w dalszych instrukcjach odwołać się do tej etykiety, należy użyć tej samej nazwy etykiety poprzedzonej znakiem
^ (tzw. „daszek" znajdujący się na ogół na tym samym klawiszu co cyfra 6 w głównej części klawiatury).

Ponieważ etykieta ma jednoznacznie wyróżniać daną instrukcję spośród wszystkich innych, jej nazwa może wystąpić po słowie
LABEL tylko raz w całym skrypcie. Konieczne jest także, aby instrukcja definiująca etykietę poprzedzała w pliku skryptu instrukcję zawierającą odwołanie.

Zastosowanie odwołań przez etykietę wyjaśnimy na poniższym przykładzie. Rozpatrzmy następujący ciąg instrukcji skryptu:

LABEL=Pytanie1  
COMMENT='Wpisać tylko zaznaczone kody'*  
LEFT='Odp1.' WIDTH=2*  
LEFT='Odp2.'*  
LEFT='Odp3.'*  
COMMENT=^Pytanie1*  

W wierszu drugim zdefiniowany został komentarz, którego celem jest zwrócenie uwagi koderów na specjalny sposób kodowania następnego pytania. Aby móc w dalszych instrukcjach posługiwać się tym samym komentarzem, pierwsza instrukcja została opatrzona etykietą
Pytanie1. Etykieta ta została podana w wierszu pierwszym i stanowi część instrukcji komentarza (dopiero gwiazdka na końcu wiersza drugiego kończy instrukcję).

W ostatniej instrukcji zdecydowano posłużyć się tym samym komentarzem. W tym momencie jego ponowne definiowanie nie było już konieczne. Wystarczyło bowiem odwołać się do definicji, która została wprowadzona w instrukcji oznaczonej etykietą
Pytanie1.



Góra

Struktura skryptu > Instrukcja definicji pola danych

Trzecim i najbardziej złożonym rodzajem instrukcji jest instrukcja definicji pola danych. Nie wyróżnia jej specjalne słowo kluczowe, ponieważ w programie zakłada się, że każda instrukcja nie zawierająca słów kluczowych PAGE i COMMENT opisuje pole danych.

Poszczególne atrybuty pola danych związane są z odpowiednimi
słowami kluczowymi. Nie wszystkie kombinacje słów są dopuszczalne. Wystąpienie niewłaściwego zestawienia słów sygnalizowane jest przez program.

Każde pole zostaje zdefiniowane w sposób kompletny, nawet jeśli w odpowiadającej mu instrukcji niektóre (lub nawet wszystkie) słowa kluczowe odpowiadające jego atrybutom zostaną pominięte. W przypadku braku słowa kluczowego odnoszącego się do danego atrybutu program przyjmuje wartość tego atrybutu według pewnych reguł (opisanych w następnych tematach).



Góra

Struktura skryptu > Instrukcja definicji pola danych > Rodzaj pola

Rodzaj pola jest determinowany obecnością bezparametrowego słowa kluczowego TEXT. Jeśli występuje ono w instrukcji, to definiowane jest pole tekstowe. W przeciwnym przypadku program zakłada, że pole ma być liczbowe.



Góra

Struktura skryptu > Instrukcja definicji pola danych > Lewy i prawy opis pola

Lewy i prawy opis pola, to znaczy teksty umieszczone odpowiednio z lewej i prawej jego strony, specyfikuje się w sposób analogiczny do definicji komentarza. Odpowiednie słowa kluczowe to LEFT i RIGHT; po każdym z nich musi wystąpić znak równości i napis lub odwołanie. Na przykład:

LEFT='Pytanie 5'  
RIGHT='Dochody kodować w tys. złotych'*  
LEFT=^pytanie1*  

Pominięcie w instrukcji słów
LEFT lub RIGHT oznacza, że na ekranie edycji po lewej lub prawej stronie danego pola nie będzie żadnego opisu.



Góra

Struktura skryptu > Instrukcja definicji pola danych > Szerokość pola

Szerokość pola definiuje się za pomocą słowa kluczowego WIDTH, po którym następuje znak równości i liczba lub odwołanie do etykiety. Minimalna szerokość to 1 znak, maksymalna to 8 dla pól numerycznych oraz 255 dla pól tekstowych.

Nieco bardziej skomplikowany jest sposób określania szerokości, gdy słowo
WIDTH zostanie w instrukcji pominięte. W takim przypadku program przypisuje polu taką samą szerokość, jaką ma ostatnie pole tego samego rodzaju występujące przed nim. Szerokość jest więc niejako „dziedziczona" w dwóch niezależnych liniach - oddzielnie dla pól liczbowych i oddzielnie dla tekstowych. Jeśli nie poda się jawnie szerokości w pierwszym definiowanym polu (każdego rodzaju), to przyjęta zostanie wartość domyślna równa 1.



Góra

Struktura skryptu > Instrukcja definicji pola danych > Wartość automatyczna pola

Ogólna postać definicji jest następująca: słowo kluczowe AUTO, znak równości i liczba albo napis ograniczony z obu stron znakiem ' (apostrof) albo odwołanie za pomocą etykiety do jednej z poprzednich instrukcji. Na przykład:

AUTO=99  
AUTO='99'  
AUTO='nie dotyczy'  
AUTO=^pyt1  

Deklarując wartość automatyczną pola liczbowego w postaci liczby (np.
AUTO=99) należy zadbać jedynie o to, aby liczba jej cyfr - łącznie z ewentualnym znakiem minus - nie przekraczała szerokości pola. Nieistotne są przy tym zera poprzedzające liczbę oraz ewentualny znak plus. Na przykład: 333, -00022, +000345, 0765 zostaną potraktowane jako liczby trzycyfrowe. Dla liczb, które mają mniej cyfr niż wynosi szerokość pola, program samoczynnie dopisze zera z lewej strony. Tak więc wartość automatyczna 2 (AUTO=2) zostanie podczas edycji wpisana jako 2 do pola jednoznakowego, 02 do dwuznakowego, itd..

Wartość automatyczna pola liczbowego może być też zadeklarowana w postaci napisu. Napis jest to ciąg znaków ograniczony z obu stron symbolem ' (apostrof). Napis ma określoną liczbę znaków, przy czym liczba ta musi odpowiadać szerokości pola. Na przykład, w przypadku pola o szerokości 2 zamiast definicji
AUTO=99 możemy posłużyć się definicją AUTO='99'. Deklarując wartość pola liczbowego poprzez napis należy pamiętać, że w przypadku pól liczbowych napis ten musi mieć interpretację jako liczba. Na przykład deklaracja AUTO='0 zł' jest dla pola liczbowego niepoprawna.

Deklarowanie wartości pól liczbowych poprzez podanie napisu ma w praktyce znaczenie tylko w specjalnym przypadku, gdy posługujemy się symbolem dopełnienia. Symbolem tym jest
\ (tzw. backslash). Może on wystąpić jako pierwszy symbol napisu składającego się z dwóch znaków. W tej sytuacji napis jest dopełniany do wymaganej szerokości pola drugim z symboli. Na przykład deklaracja AUTO='\9' jest poprawna dla pola liczbowego o każdej dopuszczalnej szerokości. Wypełnia ona całe pole symbolami 9. Jeśli pole ma szerokość 1, to wpisywana jest liczba 9, jeśli szerokość 2, to wpisywana jest liczba 99, itd..

Przy zapisie ze znakiem dopełnienia dopuszcza się także użycie dowolnego innego znaku w miejscu drugiego symbolu. Pozwala to na automatyczne wypełnianie pól liczbowych na przykład kropkami.

W przypadku pól tekstowych ograniczenia są większe. Ponieważ tekst zostaje zapamiętany dokładnie w takiej postaci, w jakiej widnieje w instrukcji, jego długość musi ściśle odpowiadać szerokości pola. Wymaga to każdorazowego obliczania długości deklarowanych napisów i dopełniania ich do szerokości pola ustalonym znakiem (np. spacją lub kropkami). Na przykład, jeśli pole tekstowe ma szerokość 24, a chcemy, aby w pole to automatycznie był wpisywany tekst „nie dotyczy", to deklaracja powinna wyglądać następująco:


AUTO='nie dotyczy             '  

(tekst „nie dotyczy" o długości 11 znaków uzupełniony 13 spacjami). Deklaracja o postaci

AUTO='nie dotyczy'  

jest błędna, co program zasygnalizuje przy pierwszej próbie interpretacji skryptu.

Jeśli wartość automatyczna ma zostać wyspecyfikowana w formie odwołania poprzez etykietę do jednej z poprzednich instrukcji (
AUTO=^nazwaetyk), to obowiązuje tu następująca zasada: kopiowana wartość ma postać napisu niezależnie od sposobu, w jaki została utworzona podczas definiowania pola wyróżnionego etykietą nazwaetyk. Definicje pól trzeciego oraz czwartego z przedstawionego poniżej przykładu są błędne, gdyż w obu przypadkach przenoszone wartości nie odpowiadają szerokości pól (w instrukcji trzeciej przenoszona wartość to 001, a w czwartej 99999).

WIDTH=3 AUTO=1 LABEL=pierwsza*  
WIDTH=5 AUTO='\9' LABEL=druga*  
WIDTH=1 AUTO=^pierwsza*  
WIDTH=2 AUTO=^druga*  

W razie pominięcia w definicji słowa kluczowego
AUTO obowiązuje zasada dziedziczenia podobna do opisanej w przypadku szerokości. Tym razem jednak, oprócz samej wartości dziedziczony jest również sposób jej tworzenia. Pokazuje to następujący przykład:

{ 1} WIDTH=2 AUTO=9*  
{ 2} WIDTH=4 LABEL=AA*  
{ 3} WIDTH=3*  
{ 4} WIDTH=2 AUTO='\9'*  
{ 5} WIDTH=5*  
{ 6} WIDTH=3 AUTO='888'*  
{ 7} *  
{ 8} WIDTH=5*  
{ 9} WIDTH=4 AUTO=^AA*  
{10} WIDTH=2*  

Linia 1 - definicja za pomocą liczby - pole wypełnianie ciągiem '09'.
Linia 2 - dziedziczona definicja za pomocą liczby - pole wypełniane ciągiem '0009'.
Linia 3 - dziedziczona definicja za pomocą liczby - pole wypełniane ciągiem '009'.
Linia 4 - definicja za pomocą backslasha - pole wypełnianie ciągiem '99'.
Linia 5 - dziedziczona definicja za pomocą backslasha - pole wypełnianie ciągiem '99999'.
Linia 6 - definicja za pomocą napisu - pole wypełnianie ciągiem '888'.
Linia 7 - dziedziczona definicja za pomocą napisu - pole wypełnianie ciągiem '888'.
Linia 8 - dziedziczona definicja za pomocą napisu - błąd: zła długość napisu.
Linia 9 - definicja za pomocą odwołania - pole wypełniane ciągiem '0009'.
Linia 10 - dziedziczona definicja za pomocą napisu - błąd: zła długość napisu.

Widać więc, że definicje za pomocą liczby i backslasha są najbardziej elastyczne. Umożliwiają one pomijanie oddzielnego definiowania wartości automatycznych dla każdego pola, jeżeli w dłuższym fragmencie skryptu wartości te stanowią tę samą liczbę lub wypełnienie pól ciągiem jednakowych znaków. Mechanizm ten działa nawet wtedy, gdy pola fragmentu mają różne szerokości.

Podobnie jak w przypadku szerokości, wartości automatyczne przenoszą się z poprzedniego na następne pole w dwóch liniach - oddzielnie dla pól numerycznych i oddzielnie dla pól tekstowych. Początkowe wartości automatyczne są takie, jak gdyby w definicji pierwszego pola liczbowego wystąpił fragment
AUTO=0 zaś w definicji pierwszego pola tekstowego fragment AUTO='\ ' (backslash, spacja).

Uwaga
Poprzez mechanizm przenoszenia się wartości automatycznej z poprzedniego na kolejne pole wartość taka jest określona dla każdego pola niezależnie od tego, czy została w danej instrukcji zadeklarowana, czy też nie. Fakt ten należy mieć na uwadze podczas przygotowywania skryptu w sytuacjach, gdy następuje zmiana szerokości pola.



Góra

Struktura skryptu > Instrukcja definicji pola danych > Dopuszczalny zakres wartości pola

Ograniczenie zakresu wprowadzanych wartości jest możliwe tylko dla pól numerycznych. Definicja jest następująca: słowo kluczowe RANGE, znak równości i opis zakresu w nawiasach kwadratowych lub odwołanie do wcześniejszej instrukcji. Przykładowo, deklaracja zakresu może wyglądać tak:

RANGE=[0:2230:40919397:99]*  
RANGE=^Pytanie1*  

W nawiasach kwadratowych znajdują się rozdzielone przecinkami wartości liczbowe i / lub przedziały wartości. Przedział wartości specyfikuje się jako: wartość początkowa, dwukropek, wartość końcowa.

Specjalne znaczenie ma zakres pusty (oznaczany
[ ]). Jego użycie zwalnia program od kontroli zakresu pól, których dotyczy. W takie pola można wpisać dowolną wartość numeryczną. Porządek podawania wartości i zakresów wartości nie jest istotny.

Wyspecyfikowanie zakresu w formie odwołania (
RANGE=^Pytanie1) oznacza przypisanie aktualnemu polu zakresu identycznego z tym, który ma pole wyróżnione etykietą Pytanie1.

Jeśli w definicji pola nie poda się słowa kluczowego
RANGE, to pole będzie miało taki sam zakres, jak poprzedzające je pole liczbowe (zasada przenoszenia definicji z poprzedniego pola). Pierwszemu w rekordzie polu numerycznemu przypisany jest domyślne zakres pusty (bez kontroli).



Góra

Struktura skryptu > Instrukcja definicji pola danych > Identyfikator rekordu danych

Dokładnie jedno pole liczbowe w rekordzie może wystąpić w roli identyfikatora rekordu danych. Rolę identyfikatora pełnią w tym przypadku kolejne numery nadawane przez program automatycznie wczytywanym rekordom danych. Zadeklarowanie danego pola jako identyfikatora uzyskuje się przez podanie bezparametrowego słowa kluczowego RECID w instrukcji opisującej to pole.

Jeżeli w polu z atrybutem
RECID wystąpi definicja wartości automatycznej, rekordy zaczną być numerowane od podanej tam wartości.

Uwaga
Identyfikator rekordu nie może być
polem stałym.



Góra

Struktura skryptu > Instrukcja definicji pola danych > Pole stałe

Jeśli w definicji pola pojawi się słowo kluczowe CONST, pole to zostanie potraktowane jako pole stałe - będzie wypełniane samoczynnie wartością automatyczną.

Uwaga
Identyfikator rekordu nie może być polem stałym.



Góra

Struktura skryptu > Instrukcja definicji pola danych > Grupa pól

Aby zdefiniować grupę wzajemnie powiązanych pól, które mogą być podczas edycji wypełniane wartościami automatycznymi za pomocą jednego wciśnięcia klawisza (plusa numerycznego), należy w pierwszym polu grupy wpisać sekwencję

GROUP=<nazwaetyk>  

w ostatnim zaś

LABEL=<nazwaetyk>  

Do grupy należeć będą wszystkie pola począwszy od zawierającego słowo
GROUP, a kończąc na wyróżnionym
etykietą nazwaetyk.

Ze sposobu definiowania grupy pól wynika, że pola ujęte w grupę muszą stanowić ciągły blok, to znaczy nie mogą być rozdzielone innymi polami. Mogą natomiast wystąpić pomiędzy nimi komentarze i przejścia do nowej strony.

Nazwa etykiety znajdująca się po słowie
GROUP nie może zostać użyta wcześniej (to nie jest odwołanie). Nie może też zostać przypisana komentarzowi - grupa musi zaczynać się i kończyć na polach danych.

Grupy też nie mogą zachodzić na siebie - niedozwolone jest zatem rozpoczynanie nowej grupy przed zakończeniem poprzedniej.

Uwaga
W skład grupy nie może wchodzić
identyfikator rekordu.



Góra

Struktura skryptu > Instrukcja definicji pola danych > Filtr

Każde pole liczbowe może pełnić rolę filtru. W zależności od wartości takiego pola niektóre z następujących po nim pól mogą zostać pominięte przy wprowadzaniu. Oznacza to samoczynne ich wypełnienie wartościami automatycznymi.

W instrukcji definiującej pole będące filtrem musi się pojawić następująca konstrukcja: słowo kluczowe
WHEN, znak równości, opis zakresu oraz opis pól samoczynnie wypełnianych. Na przykład:

WHEN=[04:6][pyt16, pyt17, pyt20:pyt22]  

Opis zakresu określa zbiór wartości aktywnych filtru. Jego forma jest identyczna z podaną przy definiowaniu
zakresu wartości, to znaczy ujęty w nawiasy kwadratowe ciąg wartości lub przedziałów wartości rozdzielonych przecinkami. Nie dopuszcza się w tym miejscu zakresu pustego.

Opis pól samoczynnie wypełnianych definiuje zbiór pól zależnych związanych z poprzedzającym go zbiorem wartości aktywnych. Formalna postać tego opisu zbliżona jest do opisu zakresu, w którym liczby zastąpione zostały nazwami etykiet. Opis pól samoczynnie wypełnianych rozpoczyna się otwierającym nawiasem kwadratowym, po którym następuje ciąg rozdzielonych przecinkami nazw etykiet. Dopuszcza się również przedziały, czyli elementy postaci:

nazwaetyk1:nazwaetyk2  

Opis kończy się nawiasem kwadratowym zamykającym.

Należy pamiętać, że filtr może mieć wiele zakresów aktywnych, każdy ze swoim własnym zbiorem pól zależnych. Na poziomie opisu skryptowego oznacza to możliwość wielokrotnego powtarzania sekwencji
WHEN=[opis zakresu][opis zakresu pól] w definicji jednego pola. Prawidłowa jest więc instrukcja:

WHEN=[1:49][pyt5, pyt6] WHEN=[5][pyt6:pyt8]*  

Zwróćmy uwagę, że pole oznaczone etykietą
pyt6 zostanie samoczynnie wypełnione w obu przypadkach.

Nie istnieją żadne specjalne ograniczenia na zakresy pól określone w jednym filtrze lub wielu różnych filtrach. Zasada jest następująca: pole zależne zostanie samoczynnie wypełnione wtedy, gdy którykolwiek z filtrów z nim związanych przyjmie wartość aktywną. Ilustruje to poniższy przykład:


{1} WHEN=[0][pyt11]*  
{2} WHEN=[0][pyt11, pyt12]*  
{3} LABEL=pyt11 AUTO=9*  
{4} LABEL=pyt12 WIDTH=2 AUTO=99*  

Pole w instrukcji {3} zostanie samoczynnie wypełnione wtedy, gdy wartość w polu {1}
lub w polu {2} będzie równa 0, zaś pole w instrukcji {4} zostanie wypełnione tylko wtedy, gdy pole w instrukcji {2} będzie miało wartość 0.

Powyższy opis dotyczy odmiany filtru zwanej silną. Istnieje bowiem jeszcze odmiana, którą definiuje się w analogiczny sposób zmieniając jedynie słowo kluczowe
WHEN na słowo kluczowe SIGNAL. Rozpatrzmy przykład analogiczny do poprzedniego:

{1} SIGNAL=[0][pyt11]*  
{2} SIGNAL=[0][pyt11, pyt12]*  
{3} LABEL=pyt11 AUTO=9*  
{4} LABEL=pyt12 WIDTH=2 AUTO=99*  

Pole w instrukcji {3} zostanie samoczynnie wypełnione wtedy, gdy wartość w polu {1} i
jednocześnie wartość w polu {2} będą równe 0. Pole w instrukcji {4} zostanie, jak w przypadku filtru silnego, wypełnione tylko wtedy, gdy pole w instrukcji {2} będzie miało wartość 0. Zasada rządząca słabą odmianą filtru brzmi: pole zależnie zostanie samoczynnie wypełnione, jeśli wszystkie filtry słabe z nim związane przyjmą wartości aktywne. Jeśli z polem związany jest tylko jeden filtr słaby (jak z polem {4} w przykładzie), to filtr ten nie różni się od filtru silnego.

Pole może zależeć jednocześnie od filtrów słabych i silnych. W takim przypadku filtry silne mają pierwszeństwo: pole zależne zostanie samoczynnie wypełnione wtedy, gdy którykolwiek z filtrów silnych z nim związanych przyjmie wartość aktywną. Jeżeli żaden filtr silny nie przybierze wartości aktywnej, to pole zależne zostanie samoczynnie wypełnione, jeśli wszystkie filtry słabe z nim związane przyjmą wartości aktywne.



Góra

Struktura skryptu > Jednoczesna definicja wielu pól

W celu zaoszczędzenia pracy przy przygotowywaniu skryptu, istnieje możliwość zdefiniowania przy pomocy jednej instrukcji całego szeregu następujących bezpośrednio po sobie pól, o ile mają one mieć takie same atrybuty. Przypadek ten występuje często dla pytań wieloodpowiedziowych, dla których kilka lub kilkanaście pól kodowych ma tę samą szerokość, ten sam zakres i niewiele różniący się od siebie opis (lewy napis). Należy podkreślić, że zagadnienie to nie ma nic wspólnego z grupami pól tworzonymi za pomocą słowa kluczowego GROUP.

Aby wykorzystać ten mechanizm należy zdefiniować pierwsze pole i umieścić w odpowiadającej mu instrukcji słowo kluczowe
REPEAT, znak równości i liczbę powtórzeń. Program wygeneruje tyle kolejnych pól, ile wynosi podana liczba (z zakresu od 1 do 999). Każde z tych pól będzie miało ten sam rodzaj, szerokość, zakres, wartość automatyczną i prawy napis. Wszystkie pola znajdą się na tej samej stronie kwestionariusza.

Dla zidentyfikowania poszczególnych pól można zróżnicować w pewnym stopniu ich lewe napisy. Jeśli w treści lewego napisu umieszczony zostanie znak dolara
$, to zostanie on dla każdego z pól zamieniony na odpowiadający mu numer. Numer przypisywany pierwszemu z pól objętych jednoczesną definicją można określić pisząc w instrukcji słowo kluczowe ITEM, znak równości i początkowy numer. Pominięcie tego parametru odpowiada przyjęciu wartości 1. Przykładowo, definicje:

LEFT='Pytanie 1.$' WIDTH=1 AUTO=0 RANGE=[0:2REPEAT=6*  
PAGE*  
LEFT='Pytanie 1.$' REPEAT=4 ITEM=7*  

utworzą 10 pól opatrzonych na ekranie z lewej strony napisami: od "Pytanie 1.1" do "Pytanie 1.10". Pierwsze 6 pól znajdzie się na jednej stronie kwestionariusza, zaś pozostałe 4 na następnie stronie.

W definicji jednoczesnej nie mogą wystąpić słowa kluczowe
WHEN oraz RECID. Jeśli wystąpi słowo CONST, to stałe będą wszystkie pola.

Opatrzenie etykietą instrukcji zawierającej
REPEAT jest równoważne przypisaniu tej etykiety do ostatniego z definiowanych tą instrukcją pól. Takie rozwiązanie umożliwia utworzenie grupy zawierającej zestaw pól definiowanych jednocześnie. Tak więc instrukcja

LEFT='Pytanie 1.$' REPEAT=6 LABEL=pyt1 GROUP=pyt1*  

generując sześć pól wiąże je jednocześnie w grupę.



Góra

Struktura skryptu > Instrukcja definicji pola danych > Sygnalizacja dźwiękowa

Pewne pola rekordu mogą zostać wyróżnione w ten sposób, że podczas wprowadzania danych przy wejściu kursora na wyróżnione pole emitowany jest charakterystyczny krótki dźwięk. Dźwięk ten różni się od sygnału oznaczającego pomyłkę i służy zwróceniu uwagi użytkownika. Taki sposób sygnalizacji może być pomocny przy bezwzrokowym wprowadzaniu danych - oznaczając na przykład początek nowej strony ankiety. Sygnał dźwiękowy generowany jest wyłącznie dla pól jeszcze nie wypełnionych (podczas poprawiania i przeglądania nie występuje). Opcję tę można wyłączać i ponownie przywracać w czasie edycji wybierając menu Opcje | Dźwięk. Aby wyróżnić w ten sposób pole należy w jego definicji umieścić słowo kluczowe BEEP.



Góra

Struktura skryptu > Instrukcja definicji pola danych > Pola przeznaczone do aktualizacji

Pola, o których wiadomo, że mają być wprowadzone oddzielnie w trybie aktualizacji należy oznaczyć słowem kluczowym UPDATE.



Góra

Struktura skryptu > Eksport opisów do programu SPSS

Na podstawie skryptu DataGate Systems można utworzyć skrypt ładujący dane do programu SPSS (instrukcja DATA LIST). W takim skrypcie oprócz pozycji poszczególnych zmiennych należy im nadać nazwy, ewentualnie etykiety i etykiety wartości.



Góra

Struktura skryptu > Eksport opisów do programu SPSS > Nazwa zmiennej

Atrybut VARNAME służy do nazwania zmiennej. Postać atrybutu jest następująca: VARNAME, znak równości oraz identyfikator. Na przykład:

VARNAME=Q1_1  

Identyfikator musi mieć co najwyżej 8 znaków i zaczynać się od litery.

Jeżeli brak jest atrybutu
VARNAME, program będzie starał się utworzyć nazwę zmiennej z lewego opisu wg następującej reguły: lewy opis obcinany jest do pierwszej spacji i ograniczony do 8 znaków.

Ponieważ nazwa zmiennej jednoznacznie identyfikuje pole w zbiorze danych, nie może się powtarzać. W takim przypadku program sygnalizuje ostrzeżenie.



Góra

Struktura skryptu > Eksport opisów do programu SPSS > Etykieta zmiennej

Atrybut VARLAB służy do nadawania etykiety zmiennej. Postać atrybutu jest następująca: VARLAB, znak równości oraz napis lub odwołanie. Na przykład:

VARLAB='Marka 1' LABEL=Marka1*  
VARLAB='Marka 2' LABEL=Marka2*  
. . .  
VARLAB=^Marka1*  
VARLAB=^Marka2*  

Uwaga

Jeżeli brak jest atrybutu
VARLAB, etykietą zmiennej będzie jej lewy opis.



Góra

Struktura skryptu > Eksport opisów do programu SPSS > Etykiety wartości

Atrybut VALLAB służy do nadania etykiet wartościom zmiennej. Postać atrybutu jest następująca: VALLAB, znak równości oraz opis etykiet. Opis etykiet składa się z nawiasu kwadratowego otwierającego, listy wartości i ich etykiet (napisów) oddzielonych spacjami, nawiasu kwadratowego zamykającego. W miejscu opisu etykiet może też wystąpić odwołanie do wcześniejszego pola. Na przykład:

VALLAB=[1 'bardzo dobry' 5 'bardzo zły'LABEL=ocena1*  
VALLAB=^ocena1*  

Uwaga

Lista wartości może być pusta. W takim przypadku zmiennej nie zostaną nadane żadne etykiety wartości.



Góra

Struktura skryptu > Różnice między językami WD i DGS

Format pliku

W WD maksymalna długość linii to 255 znaków. W DGS nie ma ograniczeń na długość linii.

Interpretacja skryptu

Jeżeli skrypt jest błędny, program WD zatrzymuje się na pierwszym napotkanym błędzie. DGS stara się znaleźć wszystkie błędy w pliku.

W WD dostępna jest tylko polska wersja słów kluczowych. W DGS funkcjonują dwie wersje: polska oraz angielska. W opisie
słów kluczowych przedstawione są słowa kluczowe w wersji angielskiej z ich polskimi odpowiednikami.

WD dzieli automatycznie długie
strony na mniejsze (ekrany) - na jednej stronie może znajdować się co najwyżej 21 pól. Na stronach w DGS może być dowolna liczba pól.

W WD
komentarze mogą liczyć do 76 znaków, lewe opisy do 20 znaków a prawe do 49 znaków. W DGS nie ma ograniczeń na długości napisów.

W WD maksymalna szerokość
pola tekstowego to 48 znaków. W DGS - 255 znaków.

W WD
etykiety nie mogą zawierać znaków podkreślenia, a w DGS mogą.

W DGS została wprowadzona dokładniejsza kontrola
zakresów zmiennych: zakresy nie mogą się nakładać, granice zakresu nie mogą być podane w złej kolejności, wartości podane w definicji zakresu muszą mieścić się w szerokości pola.

W DGS
wartość automatyczna nie może być spoza zakresu.

DGS pozwala na definiowanie specjalnych wartości automatycznych (nienumerycznych) w polach numerycznych.

W DGS kontrolowane są wartości aktywne
filtrów - nie mogą być spoza zakresu, nie mogą w całości pokrywać zakresu.

Dodatkowe ostrzeżenia w DGS: nieużywane
etykiety, brak lewego opisu pola, nie można utworzyć nazwy zmiennej z lewego opisu, nazwy zmiennych powtarzają się.



Góra

Tematy

Format pliku

Postać instrukcji, słowa kluczowe

Napisy

Notatki w treści skryptu

Instrukcja zmiany strony

Instrukcja komentarza

Etykieta

Instrukcja definicji pola danych

Rodzaj pola

Lewy i prawy opis pola

Szerokość pola

Wartość automatyczna pola

Dopuszczalny zakres wartości pola

Identyfikator rekordu danych

Pole stałe

Grupa pól

Filtr

Jednoczesna definicja wielu pól

Sygnalizacja dźwiękowa

Pola przeznaczone do aktualizacji

Eksport opisów do programu SPSS

Nazwa zmiennej

Etykieta zmiennej

Etykiety wartości

Różnice między językami WD i DGS