Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Code Block
languagedelphi
'Początek'\27'CG'\26'Test'

 


Podstawowe instrukcje języka skryptów

...

Nazwa zmiennejOdczyt zmiennejZapis zmiennej
OKWynik 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
POLEPobiera wartość bieżącego pola.Ustawia nową wartość bieżącego pola (tylko w programach APR, PPR i ACT)
PIERWOTNEPobiera początkową wartość bieżącego pola (przed ew. modyfikacją).Tylko do odczytu
POZYCJAPobiera bieżący indeks wystąpienia.Zob. "Nawigacja w rekordzie logicznym SowaSQL"
REKORDNumer bieżącego rekordu SOWA-2Tylko do odczytu
HEADERParametr przekazywany przy wywołaniu skryptuZmienia wartość zmiennej.
LPZmienna globalna, zachowująca swoją wartość przy kolejnych wywołaniach skryptu (wycofywana) 
EDYTOWALNEZnacznik 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 funkcjiOpisPrzykł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
* - zastępuje dowolny ciąg znaków

 


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 MARC21Reprezentacja w SowaSQLUwagi
LeaderL.1 
Wskaźnik nr 1 pola xxxxxxA.1.1.*.1* oznacza numer kolejnego wystąpienia pola MARC21
Wskaźnik nr 2 pola xxxxxxB.1.1.*.1 
Treść pola xxxxxxZ.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).