...
Code Block | ||
---|---|---|
| ||
'Początek'\27'CG'\26'Test' |
Podstawowe instrukcje języka skryptów
...
Nazwa zmiennej | Odczyt zmiennej | Zapis zmiennej |
---|---|---|
OK | Wynik poprzedniej operacji GRUPA() lub SKIP. Wartość 'N' oznacza brak grupy lub kolejnego wystąpienia w rekordzie. W przeciwnym razie wartość jest pusta ('') | Tylko do odczytu |
POLE | Pobiera wartość bieżącego pola. | Ustawia nową wartość bieżącego pola (tylko w programach APR, PPR i ACT) |
PIERWOTNE | Pobiera początkową wartość bieżącego pola (przed ew. modyfikacją). | Tylko do odczytu |
POZYCJA | Pobiera bieżący indeks wystąpienia. | Zob. "Nawigacja w rekordzie logicznym SowaSQL" |
REKORD | Numer bieżącego rekordu SOWA-2 | Tylko do odczytu |
HEADER | Parametr przekazywany przy wywołaniu skryptu | Zmienia wartość zmiennej. |
LP | Zmienna globalna, zachowująca swoją wartość przy kolejnych wywołaniach skryptu (wycofywana) | |
EDYTOWALNE | Znacznik edytowalności bieżącego pola (dotyczy tylko skryptów ACT i APR). | Ustawienie wartości EDYTOWALNE='N' zablokuje możliwość edycji bieżącego pola na formularzu |
...
Nazwa i parametry funkcji | Opis | Przykłady / uwagi | |
---|---|---|---|
head(s1, s2) | Zwraca fragment łańcucha s1 poprzedzający s2. Jeśli s1 nie zawiera s2, zwracany jest pusty łańcuch. | ||
tail(s1, s2) | Zwraca fragment łańcucha s1 następujący po s2. Jeśli s1 nie zawiera s2, zwracany jest cały łańcuch s1. | ||
sep(s1, s2, s3) | Łączy łańcuchy s1 i s3 separatorem s2, o ile s1 i s3 są niepustymi łańcuchami. Jeśli jeden z łańcuchów s1 lub s3 jest pusty, zwracany jest tylko drugi, niepusty łańcuch. | ||
reverse(s) | Przestawia pierwszy wyraz na koniec. Jako miejsce podziału w pierwszej kolejności przyjmowany jest pierwszy napotkany przecinek. Jeśli nie ma przecinka, miejscem podziału jest pierwsza spacjia. Warunek specjalny: jeśli s kończy się sekwencją [wartość] - wówczas jest ona zachowywana na miejscu, przestawienie wyrazu dotyczy części łańcucha poprzedzającej tą sekwencję. | ||
up(s) | Zamienia wszystkie litery s na wielkie. | ||
lo(s) | Zamienia wszystkie litery s na małe. | ||
matches(s, pattern) | Sprawdza czy łańcuch s pasuje do wzorca pattern i jeśli tak, zwracany jest pusty łańcuch. Jeśli nie, zwraca wartość 'N'. W składni wzorca występują dwa znaki specjalne: ? - zastępuje dowolny pojedynczy znak | ||
position(substr, s) | Sprawdza czy łańcuch s zawiera łańcuch substr. Jeśli tak, zwracana jest pozycja substr w łańcuchu s (indeksy znaków liczone od 1). Jeśli nie, zwracany jest pusty łańcuch. | ||
succ(n) | Dodaje 1 do wartości liczbowej wyrażonej w łańcuchu n (zwraca n+1). Jeśli n nie jest liczbą, zwracane jest '0'. | ||
add(n1, n2) | Dodaje dwie wartości liczbowe wyrażone w łańcuchach n1 i n2 (zwraca n1+n2). Jeśli n1 lub n2 nie jest liczbą, traktowany jest jako '0'. | ||
mul(n1, n2) | Mnoży dwie wartości liczbowe wyrażone w łańcuchach n1 i n2 (zwraca n1*n2). Jeśli n1 lub n2 nie jest liczbą, zwracana jest wartość '0'. | ||
div(n1, n2, digits) | Dzieli dwie wartości liczbowe wyrażone w łańcuchach n1 i n2 (operacja n1/n2). W wartości liczbowej wyrażonej w łańcuchu digits określić należy liczbę zwracanych miejsc po przecinku. Jeśli dowolna z wartości nie jest liczbą, albo n2 jest zerem, zwracana jest wartość '-' (minus). Jeśli digits jest liczbą większą od zera, separatorem części ułamkowej jest przecinek. | ||
gt(n1, n2) | Porównuje dwie wartości liczbowe wyrażone w łańcuchach n1 i n2. Jeśli n1 lub n2 nie jest liczbą, traktowany jest jako '0'. Jeśli n1 jest większy od n2, zwracany jest pusty łańcuch. W przeciwnym razie zwracana jest 'N'. | ||
ge(n1, n2) | Porównuje dwie wartości liczbowe wyrażone w łańcuchach n1 i n2. Jeśli n1 lub n2 nie jest liczbą, traktowany jest jako '0'. Jeśli n1 jest większy lub równy n2, zwracany jest pusty łańcuch. W przeciwnym razie zwracana jest 'N'. | ||
replace(line, s1, s2) | Zastępuje w line wszystkie wystąpienia s1 wartością s2. | ||
trim(s) | Obustronnie usuwa spacje z wartości s. | ||
sort(list, sep) | Sortuje alfabetycznie listę wyrażoną w łańcuchu list, przy założeniu że elementy listy wyznaczone są separatorem sep. Stosowany jest alfabet polski (z uwzględnieniem znaków diakrytycznych') | Np. sort('Książka|Film|Muzyka|','|') = 'Film|Książka|Muzyka|') | |
agregate(line, sep) | Agreguje listę kolejnych identyfikatorów w lini do postaci "od - do" (uprzednio je sortując). Identyfikatory rozdzielane są separatorem sep. | Np. agregate('1|2|3|4|5|', '|') = '1-5|' agregate('1|2|3|5|, '|') = '1-3|5|' | |
ord(s) | Zwraca kod ASCII pierwszego znaku łańcucha s. | ||
chr(n) | Zwraca znak o kodzie ASCII wyrażonym w łańcuchu n. | ||
random(n) | Zwraca liczbę losową w przedziale od 0 do wartości liczbowej wyrażonej w łańcuchu n. | ||
omit(s) | Zwraca łańcuch z pominięciem znaczników podpól MARC-21. Oznaczenie znacznika podpola zależy od konfiguracji, zwykle jest to ^c gdzie c to znak podpola. | ||
subfield(line, c) | Zwraca wartość podpola c w wierszu line, zawierającym pole MARC-21 z oznaczeniami podpól. Jeśli line nie zawiera podpola o kodzie c, zwracany jest pusty łańcuch. | Np. subfield('^aDziady ^cMickiwicz', 'a') = 'Dziady ' | |
marker(line) | Zwraca oznaczenie pierwszego podpola w line, zawierającym pole MARC-21 z oznaczeniami podpól. | Np. marker('^aDziady ^cMickiwicz') = 'a' | |
mak(line) | Zamienia symbole liter obcych alfabetów MAK na zwykłe | ||
uri(s) | Koduje znaki specjalne w łańcuch s, do postaci zgodnej z formatem URI (adresy zasobów w HTTP) | ||
utf8(s) | Koduje łańcuch s do postaci w UTF-8. | ||
pr(sep, line) | Jeśli łańcuch line jest niepusty, zwraca line poprzedzony wartością sep. | ||
ta(line, sep) | Jeśli łańcuch line jest niepusty, zwraca line+sep. | ||
form(s, pattern) | Formatuje łańcuch s wg wzorca pattern. Przetwarzane są kolejne znaki łańcucha s wg odpowiadającym ich pozycji znakom z wzorcu pattern. Wzorzec może zawierać znaki 'A' - przepisanie znaku z łańcucha s, oraz '\' (backslash) - pominięcie znaku z łańcucha s. Inne znaki ze wzorca są bezpośrednio przepisywane do wyniku. | Np. form('2012-10-20', '\\\\\AA') = '10' form('123', 'A-A-A') = '1-2-3' | |
rform(s, pattern) | Formatuje łańcuch s wg wzorca pattern, przy czym w odróżnieniu od funkcji form - łańcuch s przed rozpoczęciem formatowania jest odwracany (przetwarzanie s odbywa się od końca). | Np. rform('2012-10-20', '\\\AA') = '10' | |
date(n) | Zwraca bieżącą datę powiększoną o n dni w formacie RRRRMMDD. Jeśli n jest pustym łańcuchem zwracana jest bieżąca data. | Np. w dniu 2012-10-20: date(2) = '20121022' | |
time(n) | Zwraca bieżący czas powięszony powiększony o n sekund w formacie GGMMSS. Jeśli n jest pustym łańcuchem zwracany jest bieżący czas. | Np. o godzinie 12:23:02: time(70) = '122412' | |
days(d1,d2) | Zwraca liczbę dni między datą d1 i d2. Daty powinny być wyrażone w postaci RRRRMMDD, a d2 być datą późniejszą od d1. | ||
cfg(name) | Zwraca parametr katalogu o nazwie name | ||
external(line) | Wywołuje niestandardową metodę zdefiniowaną w zewnętrznym module serwera aplikacji lub programie klienta (zob. dalej). | ||
first(idf, prefix) | Wartość pierwszego wpisu w indeksie idf+prefix. | ||
next(idf, prefix, key) | Wartość następnego wpisu w indeksie idf+prefix, za key (key musi istnieć i jest kontrolowane z uwzględnieniem małych i wielkich liter) | ||
find(idf, key) | Znajduje wartość najbliższego wpisu w indeksie idf, począwszy od key (ignorowana jest wielkość liter) | ||
last(idf, prefix) | Wartość ostatniego wpisu w indeksie idf+prefix | ||
select(record, hard, pattern) | Zwraca listę numerów rekordów, separowanych '|', dla których klucz indeksu jest zgodny z hard i spełnia pattern. | ||
references(id) | Zwraca listę numerów rekordów, separowanych '|', które zawierają referencję do id. |
Implementacja rekordu MARC-21 w rekordzie logicznym SowaSQL
...
Element rekordu MARC21 | Reprezentacja w SowaSQL | Uwagi | |
---|---|---|---|
Leader | L.1 | ||
Wskaźnik nr 1 pola xxx | xxxA.1.1.*.1 | * oznacza numer kolejnego wystąpienia pola MARC21 | |
Wskaźnik nr 2 pola xxx | xxxB.1.1.*.1 | ||
Treść pola xxx | xxxZ.1.1.*.1 |
Wskaźniki oraz treść 001Z, 005Z przechowywane są w polach indeksowanych, natomiast pozostałe elementy w polach nieindeksowanych. W związku z tym system SowaSQL dla każdego rekordu MARC-21 wyznacza dodatkowe pola, które reprezentowane są jako indeksowane. Zawartość tych pól decyduje o budowie poszczególnych indeksów umożliwiających wyszukiwanie danych. Sposób wyliczenia tych pól określa skrypt wykonywany każdorazowo przy zamknięciu rekordu.
W typowym katalogu MARC-21 przechowywane są rekordy bibliograficzne (oznaczone U), rekordy wzorcowe haseł przedmiotowych (oznaczone A) oraz rekordy wzorcowe haseł formalnych (oznaczone C).