Obsah

Všeobecný popis systému

Obecně
Struktura systému
Popis skriptovacího jazyka
Vysvětlivky k výkladu syntaxe
Komentáře
Bloky a skripty
bloky
skripty
Proměnné
Resultset
Chybové zprávy
Procedury, funkce
Výzazy (logický výraz , numerický výraz, textový výraz )
Matematické, logické a textové funkce
Operátory
Speciální jména

Inicializace

Příkazy

foreach
if ( ... ) else ...
echo
print, println
load ... into,
sync ... by ... into
save ... into
append ... into
break
exit
return
messages
in (.convertor , .format , .format.plain , .format.fixed , .format.fixed , .counter , .null, .skip, .condition, .style)
sql (.error, .error.exit, .error.display, .error.max, .isError, .setError, .timeout, .rows.max, .select, .execute, .getString, .getRow)
dsn (.select , .close , .load , .params )
out (.convertor , .trim , .format , .style , .null)
output (.clear , .get )
system (.execute , .priority , .gen , .setError , .isError , .message , .runEvent , .invoke , .exit, .zip, .unzip )
file (.load , .copy , .delete , .save , .append , .move , .isDirectory , .exists , .getName, .getParent, .getPath, .rename)
directory (.create, .list , .listFiles, .exists, .getName, .getParent, .rename)
form (.create, .getValue, .addItem, .display )
url (.load, .get, .post, .save

 

Všeobecný popis systému 

Obecně

systém je určen:

Systém je nezávislý na platformě (testován je na všech verzích Windows 9x, NT, 2000, na LINUXu, na NOVELLu ...)

Struktura systému

Akce, které bude MSQL systém provádět se mu zadávají pomocí příkazů skriptovacíha jazyk (pracovně nazvaného msql). Veškeré akce, které uživatel požaduje (i ty, které jsou vybírány např. z menu grafického prostředí) jsou převáděny na příkazy tohoto „jazyka“.

Vlastní systém se zkládá z jádra (to příkazy vykonává) a různých interface (ty naopak příkazy formulují a předávají ke zpracování).

Jádro provádí vlastní příkazy, které obdrželo od některého z interface. Tomuto interface také vrací výsledky své činnosti a případné zprávy (chybové a jiné). Interface tyto výsledky a zprávy zobrazuje uživateli (nebo např. ukládá do souborů na serveru - to pokud použitý interface přímo nekomunikuje s uživatelem). Jádro neví, jakým způsobem byly příkazy zadány ani jak budou zpracovány zprávy, které samo vrací.

Interface zajiš'tují komunikaci mezi zadavatelem příkazů (podle typu interface to může být uživatel nebo např. proces na GapoServeru) a jádrem (které provádí vlastní příkazy).

V současnosti jsou k dispozici tyto interf ace:

grafický interface; kompletní údržba databází a DSN, tvorba SQL příkazů a skriptů.
Umožňuje přidávat, mazat a upravovat jednotlivá DSN, má v sobě grafický editor SQL příkazů a skriptů, dovoluje editovat SQL (MSQL) skripty, zvýrazňuje syntaxi SQL (MSQL) příkazů; soubory může načítat z lokálního disku nebo z GapoServeru atd.
Je dostupný i jako exe program pro Windows.

grafický interface. Dovoluje uživateli psát, ladit a spuštět SQL příkazy a skripty, nebsahuje však část pro údržbu databází a DSN ani grafickou tvorbu SQL příkazů.
Je dostupný i jako exe program pro Windows.

grafický interpret skriptů; dovoluje pouze spouštět již připravené MSQL skripty bez možnosti změnit parametry a psát vlastní příkazy.
Je dostupný i jako exe program pro Windows.

: samostatný server (spouští se spolu s GapoServerem, poslouchá na určeném socketu; je možné se k němu připojit pomocí telnetu, funkčně shodný s MSQLinteractive) - viz popis GapoServeru.

: interpret příkazů spouštěný z příkazové řádky. Funkčně shodný s MSQLInteractive , pro svůj chod však nevyžaduje grafické prostředí.

: servlet interface. Běží jako servlet na libovolném WWW serveru; funkčně shodný s MSQLInteractive .

: interface pro klienta RTs systému (skripty se spouští na straně serveru)

Jednotlivé interface budou popsány v samostatných dokumentech. Následující dokument je pro všechny společný

Popis skriptovacího jazyka

Vysvětlivky k výkladu syntaxe:

začínají @ (zavináčem).
Jména souborů, načítaných z lokální stanice mohou (v některých speciálních případech musí) začínat znakem % (procenta).
Jména souborů načítavých ze serveru, ukládaných na server nebo zpracovávaných na serveru MUSÍ začínat znakem ! (vykřičník).
pokud je skript načítán ze serveru, začíná příkaz @!

Příklady:
- skript načtený z lokálního disku: @c:\SQL\moje_davka.msql
- stejný skript načtený ze serveru: @!c:\SQL\moje_davka.msql
- příkaz OS, spouštěný lokálně: %cmd /c dir c:\ výpis root adresáře svazku c:
- příkaz OS, zaslaný na server typu UNIX: !ls / výpis root adresáře serveru

- příkazy systému (musí být napsány tak, jak jsou uvedeny zde)

- údaje zadávané z venku (jména proměnných...)

speciální jména (např. vnitřní proměnné); jsou to alternativy ke jménům oproměnných, některé ale mají speciální význam.
Musí být zadávýny přesně tak, kjak je zde uvedeno.

SQL příkazy

Jinak jsou použita běžná syntaktická pravidla:

Komentáře

jsou stejné jako v jazyce c nebo Perl:

Začínají dvojicí znaků /* a končí */ . Veškerý text mezi těmito značkami je ignorován.

Jednořádkové komentáře začánají dvojicí znaků // (lomeno) - jako v jazyce c - a končí na konci řádku - je ignorován text od této značky do konce řádku.

Bloky a skripty

bloky

Blok je část programu uzavřená ve složených závorkách. Proměnné delkarované uvnitř bloku nejsou vidět vně bloku.

{

....

toto je blok

....

}

Jakýkoli text může být uzavřen do bloku.

 

skripty

Skript je uložena v samostatném souboru. Z běžícího programu je skript zavolán (spuštěn) příkazem

@úplná_cesta_k_souboru [parametr1 [parametr2] ... ]

Skripty lze načítat z lokálního filesystému (začínají "@") nebo ze serveru - začínají "@!" (na serveru musí být povoleno čtení z adresáře se skripty). Vždy se však skripty zpracovávají na lokálním počítači.


Skript může mít parametry. Předávají se na příkazové řádce za názvem skriptu, jsou oddělené mezerou nebo tabelátorem. Pokud má parametr obsahovat mezeru, musí být uzavřen v uvozovkách. Parametrz jsou při předání zpracovány a proměnné nebo výzazy mezi ${ ...} jsou nahrazeny hodnotami (viz příkaz echo ).

Příklad:

@c:\cesta_k_souboru_se_skriptem param_1 param_2 "param 3 s mezerami" param_4

Uvnitř skriptu se na parametry odkazuji pomocí speciálních proměnných $1, $2 ... až $n (existuje jich tolik, kolik parametrů bylo předáno - počet parametrů není omezen).
Parametry jsou normální textové proměnné, t. zn. že:

Jinak je skript shodný s blokem (i kdyz její text nemusí být uzavřen v { ... } - to je dáno tím, že je v samostatném souboru).

 

Proměnné

MUSÍ začínat $ (dolarem) - je to proto, aby systém byl schopen odlišit jeho vlastní proměnné od SQL příkazů (protože název SQL příkazů, direktiv ani jmen sloupců u většiny DB strojů obvykle nezačínají $)

považuje za samostatný blok, i když text skriptu není uzavřen v { ... }


var $jméno_proměnné [ = hodnota];


Pokud proměnná se jménem $jméno_proměnné již existovala v nadřízených blocích, bude skryta a místo ní bude do konce tohoto bloku používána proměnná zde deklarovaná (včetně vnořených bloků).
Pokud by proměnná stejného jména existovala v tomto bloku, vznikne chyba. Pokud je proměnné přiřazena hodnota, vznikne proměnná toho typu, jaký typ hodnoty se jí přiřadí. Jinak se typ proměnné určí prvním přiřazením hodnoty.

 

Resultset

představuje speciální typ proměnné. Vznikne jako výsledek SQL příkazu select:


SAVE SQL_SELECT INTO $jméno_resultsetu FROM ...

volání procedury SQL serveru:


SAVE result INTO $jméno_resultsetu jméno_SQL_procedury [parametry procedury]

nebo může být explicitně vytvořen:


SAVE textový_výraz INTO $jméno_resultsetu

Jeho hodnotu nelze změnit ani jej nelze použít ve výrazech (proměnná se jménem $jméno_resultsetu může být explicitně deklarována ve vnořených blocích, nebude to však již resultset a původní resultset se tím stane v tomto bloku nepřístupným).

K resultsetu lze přidávat záznamy, které musejí mít stejnou strukturu jako záznamy, které již v resultsetu jsou (pokud by tomu tak nebylo, vznikla by při zpracování takového resultsetu chyba):


APPEND SQL_SELECT INTO $jméno_resultsetu FROM ...
APPEND result INTO $jméno_resultsetu jméno_SQL_procedury [parametry procedury]

nebo

APPEND textový_výraz INTO $jméno_resultsetu

textový_výraz musí být řádek textu , kde jednotlivé položky jsou odděleny čárkou, textové údaje uzavřeny v apostrofech a NESMÍ KONČIT KONCEM ŘÁDKU (znaky s ASCII/UNIkódem 10 nebo 13)


Resultset lze použit v příkazech LOAD (hromadbý impo rt do tabuklky) nebo v příkazu cyklu foreach. Lze jej jako celek zapsat do souboru nebo URL.

Jako jméno resultsetu lze napsat jméno textového souboru (nebo obecného souboru popsaného pomocí in.format.plain ) - data pak budou čtena z tohoto souboru.

Resultset nebo textový soubor má jednotlivé záznamy na samostatných řádcích, řádky jsou ukončeny znakem CR nebo LF nebo oběma.
Sloupce jsou odděleny čárkami, textové údaje jsou uzavřeny v apostrovech (tzv. CSV formát souboru).

První řádek resultsetu nebo souboru může obsahovat informace o sloupcích v tomto tvaru:

#!jméno_sloupce_1, jméno_sloupce_2, ...., jméno_sloupce_n

Počet položek (oddělených čárkami) musí být stejný jako počet sloupců s daty, jinak je teno řádek ignorován.

Pokud tento řádek existuje a má správný formát a počet položek, jsou jména z něj zpracována jako jména sloupců resultsetu a lze se na ně odkazovat např. v příkaze foreach.
Jinak budou v cyklech k dispozici pouze čísla sloupců ($col1, $col2 ...)

 

Chybové zprávy

Při behu skriptů mohou vzniknout různé chyby. Pokud se tak stane, skript bude ukončen a o chybě je podána zpráva (vyjímkou jsou chyby při SQL operacích - to lze nastavit pomocí sqp.error.max , sqp.error.exit , sqp.error.display ).

Zprávy o chybách vzniklých při zpracování příkazů, skriptů... jsou zobrazovány do výstupního kanálu. Všechny chybové zprávy začínají prefixem '> Error ' (místo '> ' bude prefix pro zprávy vracené serverem; lze nastavit v msql.properties ). Pak může následovat text v závorce, který určuje kategorii chyby, dále vlastní text chybové zprávy. Kategotie chyb jsou následující:

 

Procedury, funkce

zatím nejsou...

Výzazy

Výzazy se mohou vyskytnout:

print , println

Je několik typů výrazů - podle typu hodnoty, kterou vrací:

 

logický výraz

 

numerický výraz :

 

textový výraz :

Příklad:

Výraz

typ vrácené hodnoty

vrácená hodnota

"abc_" + (2 * 4) + "_def"

text

"abc_8.0_def"

sin(pi/2) + 1

numerická

2.0

1 == 2

logická

false

 

Matematické, logické a textové funkce

Ve výrazech lze použít tyto funkce:

Matematické - jejich parametry jsou numerické a vracejí (převážně) numerickou hodnotu.

jméno

Typ výsledku

Popis

 

abs(x)

číslo

absolutní hodnota čísla x

 

acos(x)

číslo

arcus cosinus x

 

asin(x)

číslo

arcus sinus x

 

atan(x)

číslo

arcus tangens x

 

cos(x)

číslo

kosinus x

 

sin(x)

číslo

sinus x

 

tan(x)

číslo

tangens x

 

exp(x)

číslo

e na x

 

dexp(x)

číslo

10 na x

 

log(x)

číslo

logaritmus čísla x se základem 10

 

ln(x)

číslo

přirozený logaritmus čísla x

 

round(x)

číslo

zaokrouhlení čísla x

 

sqrt(x)

číslo

druhá odmocnina čísla x

 

deg(x)

číslo

převede radiany na stupně

 

rad(x)

číslo

převede stupně na radiany

 

random(x)
random(x, y)

číslo

pseudonáhodné celé číslo v rozsahu 0 až x

pseudonáhodné celé číslo v rozsahu xy

 

int(x)

číslo

převede x na integer. Výsledek této funkce NEMŮŽE být použit ve výpočtech; tato funkce je určena pro spokupráci s externími. moduly

 

max(x, y)

číslo

vrátí větší z čísel x , y

 

min(x, y)

číslo

vrátí menší z čísel x , y

 

hex(x, y)

text

převede x na hexadecimální string, přičemž dělka stringu bude y znaků a zleva bude vyplněn nulami. Pokud je výsledné hex číslo větší než y, bude beze změny.

 

pow(x, y)

číslo

x na y (libovolná mocnina)

 

format(x, s)

text

naformátuje číslo x formátem s a vrátí jako text

 

format(x, n, s)

text

naformátuje číslo x formátem s a vrátí jako text. Výsledný text bude mít nejméně n znaků.

Popis formátovacích znaků:

[ 0 ] [ L | R ]

 

long(x)

číslo

převede x na long číslo (64 bitů). Výsledek této funkce NEMŮŽE být použit ve výpočtech; tato funkce je určena pro spokupráci s externími. moduly

 

textové funkce

len(s)

číslo

délka stringu

num(s)

číslo

převede s na číslo (pokud to jde) a vrátí toto číslo

tolower(s)

text

převede s na malá písmena

invert(s)

text

zamění malá / velká písmena

toupper(s)

text

převede s na velká písmena

toname(s)

text

převede s na jméno (první písmeno velké, ostatní malá)

trim(s)

text

odstraní mezery na začátku a konci stringu s

substring(s, x, y)
substring(s, x)

text

substring stringu s od pozice x do pozice y
substring stringu s od pozice x do konce

unicode(s)

unicode(s, x)

číslo

vrátí UNICODE kód prvního znaku stringu nebo znaku na pozici x

clear(s)

text

vymaže všechny "white spaces" ze stringu s

normalize(s)

text

upraví string s tak, že ve výsledném stringu jsou všechny "whitespaces" nahrazeny právě jednou mezerou

eval(s)

podle typu výrazu

vyhodnotí výraz, uložený ve stringu s a jeho výsledek vrátí jako proměnnou, která odpovídá typu výrazu
(lze použít např. pro snadné odstranění apostrofů z textových polí resultsetu)

 

Ostatí funkce

formatDate (x, f)

text

převede číslo x (které představuje datum - počet dní od 1.1.1970), na text pomocí formátovacího stringu f a vtrátí.
Formát formátovacího stringu:

dd = dvoumístný den (pokud je 1 digit, doplní nalevo 0)

d = jednomístný den (nedoplňuje 0)

mmm = měsíc jako text (leden, únor ...)

mm = dvoumístná měsíc

m = jednomístný měsíc

yyyy = čtyřmístný rok

yy = dvoumístný rok

hh,h = dvou / jedno místná hodina

:mm,:m = dvou / jedno místná minuta

mn = dvoumístná minuta

ss,s = dvou / jedno místná sekunda

dw = zkratka dne v týdnu (Po, Út ...)

dddd = jméno dne v týdnu (Pondělí, Úterý ...)

Ostatní kombinace znaků z formátovacího stringu jsou uloženy do výsledku beze změny.

toDate (s, f)

číslo

převede s na číslo, které reprezentuje datum (počet dní od 1.1.1970) s pomocí formátu f (viz formatDate ).

formatTime(x, f)

text

převede číslo, které představuje čas (počet sekund od začátku dne) na text s pomocí formátu f (viz formatDate ).

toTime(s)

číslo

převede string na číslo, které představuje čas (počet sekund od hodiny 0) s pomocí formátu f (viz formatDate ).

now

číslo

vrátí počet milisekund od 1.1.1970

today

číslo

vrátí číslo, které představuje datum (počet dní od 1.1.1970)

nowtime

číslo

vrátí číslo, které představuje čas (počet sekund od začátku dne)

Operátory

Ope- rátor

typ operandu

Typ výsledku

Popis

před

za

+

text

cokoli

text

Sloučí 2 stringy. Pokud něktrerý operand není string, nejprve jej na string převede.

cokoli

text

+

číslo

číslo

číslo

matematický součet

-

číslo

číslo

číslo

matematický rozdíl

/

číslo

číslo

číslo

dělení

*

číslo

číslo

číslo

násobení

%

číslo

číslo

číslo

dělení modulu

|

číslo

číslo

číslo

bitový OR

|

boolean

boolean

boolean

logický OR

||

boolean

boolean

boolean

logichý OR

&

číslo

číslo

číslo

bitový AND

&

boolean

boolean

boolean

logický AND

&&

boolean

boolean

boolean

logický AND

^

číslo

číslo

boolean

bitový XOR

^

boolean

boolean

boolean

logický XOR

<

číslo

číslo

boolean

porovnání čísel, vrací true pokud op.1 < op2, jinak false

<

text

text

boolean

porovnání stringů; vrací true pokud op1 je textově menší (t.j první rozdílný znak má menší kód) než op2, jinak false

<=

číslo

číslo

boolean

porovnání čísel, vrací true pokud op.1 <= op2, jinak false

<=

text

text

boolean

porovnání stringů; vrací true pokud op1 je textově menší (t.j první rozdílný znak má menší köd) než op2 nebo jsou stringy totožné, jinak false

>

číslo

číslo

boolean

porovnání čísel, vrací true pokud op.1 > op2, jinak false

>

text

text

boolean

porovnání stringů; vrací true pokud op1 je textově větší(t.j první rozdílný znak má vyšší kód) než op2, jinak false

>=

číslo

číslo

boolean

porovnání čísel, vrací true pokud op.1 >= op2, jinak false

>=

text

text

boolean

porovnání stringů; vrací true pokud op1 je textově větší(t.j první rozdílný znak má vyšší kód) než op2 než op2 nebo jsou stringy totožné, jinak false

==

číslo

číslo

boolean

porovnání čísel, vrací true pokud op.1 je rovno op2, jinak false

==

text

text

boolean

porovnání stringů; vrací true pokud op1 je rozdíkný od op2, jinak false

!=

číslo

číslo

boolean

porovnání čísel, vrací true pokud op.1 není rovno op2, jinak false

!=

text

text

boolean

porovnání stringů; vrací true pokud op1 je textově shodný s op2, jinak false

=

proměnná

číslo

číslo

přiřazení numerické hodnoty proměnné

=

proměnná

text

text

přiřazení textové hodnoty proměnné

=

proměnná

boolean

boolean

přiřazení logické hodnoty proměnné

!

boolean

-

boolean

negace

 

Speciální jména

Systém má několik speciálních proměnných, ve kterých jsou uloženy indormace o aktuálním stavu systému, výsledky operací, počty záznamů a pod. Jsou pouze pro čtení - jejich hodnoty nastavuje systém a nelze je měnit. Jinak je lze použít jako normální proměnné.
Všechny vnitřní proměnné nemusí existovat vždy - např. $rowcount vznikne až po provedení prvního SQL příkazu a hodnota platí do dalšího SQL příkazu;

Jméno proměnné

Popis

kde lze použít
(kdy platí)

$data

řádek resultsetu tak, jak by byl předán SQL příkazu INSERT (t.j, seznam proměnných oddělených čárkou, texty v apostrofech).

v příkazech foreach , load

$jm_rs.col1,
$jm_rs.col2,
...
$jm_rs.coln

hodnoty jednotlivých sloupců resultsetu. Číslo znamená pořadí sloupce od začátku resultsetu.

(viz popis příkazu foreach )

foreach

$jm_rs.jm_sloupce_1, $jm_rs.jm_sloupce_2,
...
$jm_rs.jm_sloupce_n

hodnoty jednotlivých sloupců resultsetu. Místo $jm_sloupce_1$jm_sloupce_n jsou skutečná jména sloupců v resultsetu (pokud existují - jinak proměnné nejsou definovány)
(viz popis příkazu foreach )

foreach

memory  *

globální buffer k ukládánání výsledků SQL příkazů; existuje po celou dobu běhu MSQL a jeho hodnota je společná. pro všechny procedury i jednotlivá okna (instance) MSQL.

Všude kde lze použít resultset

output  *

aktuální výstupní tok dat; o co konkrétně jde záleží na použitém uživatelském interface. Pro GUI je to výstupní okno, pro instanci na GapoServeru výstupní stream, pro servlety výstupní stream servletu (zobrazí se ve WWW prohližeči)

Příkaz save , append

result  *

1)      v  příkazech save, append označuje že se jedná o volání stored procedury a ze tedy za INTO NEnásleduje sekce FROM ...., ale přímo jméno stored procedury a parametry.

2)      v  příkazech save, append (pokud není zadána část s SQL příkazem): uloží výsledek posledního SQL příkazu do souboru / proměnné  **.

3)      v příkazech load, foreach je to obsah posledního výsledku SQL příkazu SELECT nebo volání procedury která vrátila resulset  **.

Příkaz save , append , load, foreach

$_rowcount

počet řádků (záznamů) naposledy vykonaného SQL příkazu

po SQL, pokud byl bez chyby,

$_rownum

Číslo právě zpracovávaného řádku. První záznam má číslo 1.

v příkazech foreach , load

$_sqlResult

výsledek posledního SQL příkazu. Má tyto hodnoty:

>= 0 :
SQL příkaz proběhl bez chyb, hodnota je počet záznamů, které zpracoval (vložil, vrátil v resultsetu ...)

-1 :
byla SQL chyba;

všude kde se používá proměnná

$_basePath

Adresář, ve kterém je MSQL spuštěn (obvykle je to adresář, který byl nastaven jako aktuální adresář v operačním systému v okamžiku spuštění MSQL)

všude kde se používá proměnná

$_scriptPath

Cesta k adresáři, ve kterém leží skript který je právě zpracováván. Výchozí hodnota (po startu) je stejná jako $_basePath, při volání skriptu je nastavena na adresář ze kterého je skript spuštěn. Po ukončení skriptu je obnovena původní hodnota.
Hodnotu této proměnné lze změnit.

všude kde se používá proměnná

$_logFile

cesta k souboru se systémovými logy.
Lze použít pouze s interface, která běží přímo na GapoServeru (MSQLArts, ARTsMSQL); ostatní interface nemají logy.

všude kde se používá proměnná

$0
$1 ... $n

$0 = jméno právě prováděného skriptu včetně cesty;

$1 .. $n jsou parametry (v pořadí v jakém byly napsány na příkazové řádce), Nastaveno (hodnotu má) tolik proměnných, kolik parametrů bylo předáno.

ve volaných skriptech

$_iniPath

cesta k adresáři, ze kterého jsou načteny inicializační soubory

všude kde se používá proměnná

$_token

hodnota právě načteného údaje

v příkazech ***

foreach , load

*         Tyto proměnné NEZAČÍNAJÍ znakem '$'
**       platí pouze pokud použitý interface podporuje ukládání SQL příkazu. Pokud interface
           podporuje také editaci resultsetu (např. grafické MSQL), bude použit výsledek ve stavu
           ve kterém je v okamžiku volání tohoto příkazu včetně uživatelem změněných hodnot.

***    pokud byl nastaven formát některám z příkazů in.format.plain, in.format.fixed nebo in.style.

Inicializace systému

Při staru každého interface je nejprve načten a interpretován soubor s konfigurací. Podle toho, který interface je použit, načítají se inicializační informace z různých konfiguračních souborů (viz následující tabulka):

Interface

souboru s konfigurací

Jméno

umístění

MSQLInteractive
MSQLRuntime
MSQLrts

msql.properties

adresář v 'classpath' nebo interní

MSQLarts **
MSQLs **

msql.properties

adresář v 'classpath' nebo aktuální adresář při startu

MSQLc

msqlc.properties

aktuální adresář při startu

** inicializační soubor lze nastavit v konfiguraci serveru

Struktura všech těchto souborů je stejná a je popsána dále. Všechny cesty k souborům a adresářům mohou být napsány s "unix" tvaru (oddělovač '/') nebo "windows" (odělovač '\'; pokud je použit v textové proměnné, musí být zdvojen: " .. \\ .." ). V konfiguračních souborech lze použít nekolik proměnných:

Proměnná ${basePath}

Instalace spuštěná:

obsah proměnné ${basePath}

v rámci GapoServeru

systémový adresář serveru = adresář server.path

z příkazové řádky

aktuální adresář při spuštění

jako servlet

aktuální adresář v okamžiku spuštění servlet. stroje

 

Další proměnné: (některé platí pouze s určitýni interface - je to u nich uvedeno).

 

 

server.address

IP adresa GapoServeru, ke kterému se
Platí pro: MSQLarts, MSQLs

server.dsn.initial

jméno datového zdroje (DSN), který bude nastaven jako výchozí (ověřují se proti němu uživatelé a je nastaveno při startu nové instance)
Platí pro: MSQLarts, MSQLs

server.uname

jméno uřivatele, který bude přihlášen při staru systému. Pokud je zadán a existuje, bude každé nové připojení k serveru automaticky přihlášeno pod tímto uživatelem. Klient může při inicializaci zadat jiného uživatele (viz popis interface MSQLarts, MSQLs)
Platí pro: MSQLarts, MSQLs

server.upwd

heslo tohoto uživatele

scripts.path

seznam adresářů, ve kterých se hledají skripty, pokud nejsou nalezeny tak, jak jsou zadány v příkaze (na zadané cestě) - obdoba proměnné op. systému PATH.
Oddělovač je středník.

scripts.path.onlyAllowed

pokud je true, lze spouštět skripty pouze z adresářů uvedených v scripts.path; jinak ze všech adresářů, ze kterých může přihlášený uživatel číst (vyjímkou jsou skripty natažené při inicializaci - viz dále).
hodnoty: false | true

 

 

linePrefix

text, kterým budou začínat řádky očekávající vstup uživatele
default = '> '
Případné mezery na konci JSOU součástí textu
Platí pro: MSQLc, MSQLarts

messagesPrefix

text, kterým budou začínat zprávy vracené systémem do std. výstupu. Případné mezery na konci JSOU součástí textu
default = '> '

initialScript

skript, který se provede jednou při startu systému. Proměnné deklarované v hlavním bloku tohoto skriptu (ne ve vnořevých blocích nebo skriptech) jsou statické a změna jejich hodnoty v jedné instanci se projeví ve všech ostatních instancích. Tento skript nesmí obsahovat SQL příkazy (protože v době inicializace neexistuje spojení s dtatbází). Případné zprávy tohoto skriptu jsou vypisovány do std. výstupu. Tělo skriptu je mezi { ... }
Pokud má mít skript víc řádků, každý řádek musí končit obráceným lomítlem ('\').

scripts.load

Seznam skriptů, které budou načteny jako statické při inicializaci systému a budou existovat po celou dobu běhu systému. Budou přístupné uživatelům i v případě, že leží v adresářích, ze kterých nemá přihlášený uživatel právo číst.
Změna souboru se skriptem se projeví až při restartu systému.
Skripty načtené při inicializaci mohou být pojmenovány (t.j. mohou mít jména odlišná od jmen souborů ze kterých byly načteny).

Tvar:
[ jméno , ] úplná_cesta_k_souboru; [ jméno , ] úplná_cesta_k_souboru ; ...

  

Příklad inicializačního souboru:

server.address=172.20.1.201
server.dsn.initial=$system

server.uname=web
server.upwd=xxxx

scripts.path=${basePath}/scripts;

scripts.path.onlyAllowed=true

scripts.load=muj,${basePath}/scripts/g;pokusnySkript,c:/user/pskript.msql;

linePrefix=>

messagesPrefix=>

initialScript={ \

$initializedF = false; \
$initializedG = false; \
var $dataF; \
var $dataG; \
$obsahIniSouboru=file.load("L:/resys"); \
out.convertor.static(Latin2); \
out.format.static(";", "'", "^"); \

}

 

Příkaz " scripts.path=..." nastaví adresáře, ve kterých se budou hledat skripty.

Příkaz " scripts.path.onlyAllowed=true" zaká že spouštět skripty mimo tyto adresáře

Příkaz " scripts.load=" načte dva skripty. První z bude v systému známý pod jménem "muj " (t. j. pokud napíšu příkaz "@muj", spustí se tento skript), druhý bude mít jméno "pokusnySkript " (ten by se normálně nedal vůbec spustit protože neleží na povolené cestě).

 

Příkazy

příkazy určují, co má MSQL dělat. Aby měl skript smysl, musí obsahovat alespoň jeden příkaz.

Popis příkazů

foreach

cyklus pro všechny řádky resultsetu, souboru, URL nebo stringu který je považován za resultset.

syntaxe:
foreach <$lokální_jméno | record> in <$ jméno_resultsetu | memory | jméno_souboru_na_disku | URL | jméno_proměnné | ${ výraz }> příkaz...;

$jméno_resultsetu

jméno, pod kterým byl uložen resultset zpracovávaný v tomto cyklu

jméno_souboru

jméno textového souboru s odpovídající strukturou, nebo obecného souboru který byl popsán v předchozím příkaze i n.format.plain(...);

$lokální_jméno

jméno, kterým se budu uvnitř těla cyklu odkazovat na jednotlivé sloupce resultsetu. (odkazy ve tvaru $lokální_jméno.jménoSloupce nebo $lokální_jméno.colX kde X je pořadpvé číslo sloupce počínaje 1)
Např. na první sloupec resultsetu pojmenovaného "$vysledekSQL" se budu uvnitř cyklu foreach odlazovat: "$vysledekSQL.col1"

record

použito místo lokálního jména " record" => toto jméno nebude existovat, na jména nebo čísla sloupců se budu odkazovat přímo jako na proměnné (bez prefixu "$lokální_jméno.".)

jméno_proměnné

Pokud je proměnná strimg (textová proměnná), načítají se data přímo z tohoto stringu. Lze nastavit formát dat přílazem in.format...

${ výraz }

Výraz musí být textový; je vyhodnocen a jeho výsledek je použit jako název zdroje dat (soubor nebo URL).



Pokud je jako zdroj dat použit přímo název textové proměnné, bude MSQL tuto proměnnou považovat pžímo za zdroj dat a z ní bude data načítat.
Pokud mají být data načítána ze souboru nebo URL a jeho název je nutné získat vyhodnocením výrazu, lze to provést dvěma způsoby:

Pokud je nutné použít pro jako zdroj dat cyklus výsledek výrazu, je nutné tento výraz nejprve uložit do proměnné a tu poak použít jako zdroj dat.

příklad 1:
Vytvoří resultset jménem $locVar výběrem z tabulky, následující cyklus vypíše hodnoty ze sloupců NAME a VALUE pro všechny řádky tohoto resultsetu.

SAVE ID, NAME, VALUE INTO $locVar FROM MY_TABLE;
foreach $radek in $locVar {
    echo Jméno je '$radek.NAME', hodnota je '$radek.VALUE';
}

příklad 2:
Jako v předchozím příkladě, ale vypíše pouze ty řádky, jejichž ID > 10 (funkce num() je použita proto, že všechny hodnoty resultsetu jsou typu text)

SAVE ID, NAME, VALUE INTO $locVar FROM MY_TABLE;
foreach $radek in $locVar {
    if (num($radek.ID) > 10)
    echo Jméno je '$radek.NAME', hodnota je '$radek.VALUE';
}

příklad 3:
jako název zdroje dat je použita textová proměnná “$vysledekSQL”, ve které je uloženo jméno souboru s daty;
tento soubor bude načten a bude zobrazen první sloupec dat. Pokud by $vysledekSQL nebyl mezi ${ a }, načítaly by se data přímo
z této proměnné; nikoli ze souboru jehož jméno je v proměnné uloženo.

foreach $promCyklu in ${$vysledekSQL}
    echo první sloupec vysledku SQL je $promCyklu.col1;

příklad 4:

foreach record in memory
    echo první sloupec výsledku SQL uloženém v globální promìnné je $col1.;

příklad 5:

// nejprve vytvorim textovou promennou jako “virtualni” tabulku o 3 sloupcich a 4 radcich
$promenna =
“Row1_Col1,Row1_Col2,Row1_Col3\n” +
“Row2_Col1,Row2_Col2,Row2_Col3\n” +
“Row3_Col1,Row3_Col2,Row3_Col3\n” +
“Row4_Col1,Row4_Col2,Row4_Col3”;
// a pak zobrazim jeji radky
$cnt = 0;
foreach record in $promenna
    echo Data řádku ${$cnt++} tabulky jsou: $data;

Poznámka:
foreach lze použít k procházení resultsetů, textových souborů v CSV formátu, i textových souborů s pevnou délkou věty (po nastavení formátu věty příkazem in.format )

 

if ( ... ) else ...;

Podmínka. Text v závorkách za if se vyhodnotí jako logický výraz (jeho výsledkem musí být false nebo true)

syntaxe:
if
(logický_výraz) příkaz_při_spnění_podmínky [ else [if (logický_výraz) příkaz [ else [ if ]... ] ] příkaz_při_nespnění_podmínky ] ;

 příklad:

$a = 10;
if ($a == 10)
    println("proměnná $a má hodnotu 10");
else if($a > 11)
    println("proměnná $a je větší než 11");
else
    println("proměnná $a není 10 a je menší než 11");

Poznámka:

vnořenou podmínku lze použít pouze s pomocí složených závorek.

V následujícím příkladu bude levý sloupec vyhodnocen chybně, pravý správně:

Chybně

Správně

if ($a == 10)
            if ($a == 11)
                        println(..);
            else
                        println(..);
else
            println(..);

if ($a == 10) {
            if ($a == 11)
                        println(..);
            else
                        println(..);
} else
            println(..);

echo

vypíše textovou zprávu do výstupu (u MSQLc je to obrazovka, u MSQL výstupní - dolní - okno). Text je "vyčištěn" o netisknutelné znaky (mezery, tanelátory, konce ří¨ásku ...), které nejsou uzavřeny v apostrofech nebo uvozovkách. Za proměnné jsou dosazeny jejich hodnoty, výrazy mezi ${ ... } jsou vyhodnoceny.

Pokud je celý text uzavřen v uvorovkách, netisknutelné znaky nejsou odstraněny a proměnné a výrazy nejsou vyhodnocovány.

syntaxe:
echo
["] text pro zobrazení ... [$ proměnná] ... text ... [${výraz}] ... ["]

Poznámka:

příkaz echo vyhodnocuje prom ěnné a výrazy stejně, jak by byly vyhodnoceny v SQL příkazu. Proto je příkaz echo vhodný např. pro ladění SQL příkazů např. unvitř cyklů foreach , while ...

print, println

vypíší obsah proměnné nebo výsledek výrazu do výstupu. println přidá navíc na konec znak nového řádku.

syntaxe:
print
(< proměnná | výraz | $resultset | memory>)
println (< proměnná výraz | $resultset | memory>)

výraz

výraz bude vyhodnocen a vypsán jeho výsledek

$resultset

vypíše obsah resultu se jménem $resultset (včetne prvního řádku se jmény sloupců - pokud tento řádek existuje)

memory

stejné jako $resultset

proměnná

jméno proměnné ...

příklad:

Poznámka:

Load ... into
Load ... into ... sync by ( .... )

načte data z externího zdroje (soubor, URL), resultsetu nebo stringu do databáze. Data mohou být v libovolném formátu (formát s oddělovači, formát s pevnou délkou, binární formát), sloupce nebo řádky mohou být odděleny libovolným textem, data mohou být být kódována v libovolné znakové sadě...
Formát dat a znaková sada se nastavuje PŘED voláním tohoto příkazu. Formát dat se nastaví příkazem in.format (pro formát s oddělovači), in.format.fixed (pro formát s pevnou délkou věty) nebo in.format.plain (pro binární formát).
Znaková sada vstupních dat (kódování) se nastaví příkazem in.convertor .

Varianta se “sync by ( ... )” synchronizuje data v databázu s načítanými daty tak, že se pokusí nejprve provést update načítaných dat podle klíčů a pokud neuspěje, vloží nový záznam.

soivisející:

in.format , in.format.plain , in.convertor , save , append

syntaxe:
load
< * | (seznam_sloupců ) > from < $resultset | memory | jméno_souboru | URL > into jméno_tabulky [ sync by ( seznam_klicu ) [ noinsert ] ]

load < (seznam_sloupců ) > from < $resultset | memory | jméno_souboru | URL > INTO jméno_tabulky AS SELECT slq_příkaz_SELECT, $data

Typ dat a názvy jednotlivých sloupců importovaných dat (t.j. to, jestli text bude dáván při vytvoření SQL příkazu do apostrofů nebo ne) je dán:

Pokud je styl nastaven několika způsoby současně, platí podle tohoto pořadí (nižší číslo = vyšší priorita):

    1. hodnoty přímo uvedené v příkaze load

    2. hodnoty nastavené příkazem in.sytle

    3. hodnoty ze záhlaví zdroje dat



Pokud je použit pžíkaz v kombinaci se selectem ( ... AS SELECT ... ), je pro každý vkládaný řádek nejprve proveden příkaz SELECT tak, jak je zadáno, přičemž $data a $col1 .. $colN je nahrazeno hodotami pro aktuální řádek (načtenými ze vstupního zdroje a zformátovanými podle výše uvedených pravidel).
Sezna importovaných sloupců ( seznam_sloupců ) musí v tomto případě obsahovat jak slouce použité v příkaz SELECT, tak sloupce obsažené ve vstupních datech

seznam_sloupců

seznam sloupců SQL dotazu. Sloupce musí být v příkaze load uvedeny ve stejném pořadí, j jakém jsou uloženy v resultsetu nebo importovaném souboru.

memory

data budou bačítána z globálního paměťového bufferu

$rsultset

data budou bačítána z resultsetu zadaného jména

jméno_souboru

data budou bačítána z uvedeného souboru

jméno_tabulky ...

jméno SQL tabulky do které se budou data načítat. Tabulka musí existovat a musí obsahovat sloupce se jmény v seznam_sloupců; sloupce musí být odpovídajícího datového typu. Pro kopii dat mezi tabulkami i různými databázemi (s případným vytvořením cílové tabulky, pokud neexistuje) lze pozžít příkaz copy .

slq_příkaz_SELECT

Příkaz SQL, který vrátí jeden řádek dat. Lze použít např. Pro generování číselné řady a pod.

seznam_klicu

Seznak klíčů (oddělených čárkou), podle kterých bude prováděn update. Názvy klíčů musí být uvedeny v seznamu sloupců pro načítání ( seznam_sloupců )

noinsert

při synchronizaci NEBUDOU vkládány nové záznamy, ale pouze updatovány existující (pokud v cílové tabulce existují). Pokud klíčové slovo „noinsert“ není uvedeno, systém se pokusí záznamy aktualizovat a pokud neuspějě, vloží nové.
Lze použít pouze pokud je uvedena klauzule „sync by (...)“,

 
Příklad 1:

// nacte data ze souboru do tabulky “MYTABLE”
load (ID, JMENO, PRIJMENI, DAT_NAR) from c:\data\mytable.dat into MYTABLE

Příklad 2:

// nacte data ze souboru do tabulky “MATABLE”; soubor musí obsahovat záhlaví
// se seznamem sloupců (byl vytvořen např. příkazen “save”)
load * from c:\data\mytable.dat into MYTABLE

Příklad 3:

// nacte data ze souboru do tabulky “MYTABLE”, procemz vygeneruje ID jako nejvyssi
// hodnotu z tabulky zvetsenou o 1. Predpokladam ze soubor “ c:\data\mytable.dat
// obsahuje data pro sloupce “JMENO”, “PRIJMENI” a “DAT_NAR” (NEobsahuje “ID”).
load (ID, JMENO, PRIJMENI, DAT_NAR) from c:\data\mytable.dat
into MYTABL AS SELECT MAX(ID)+1 AS ID, $data FROM MYTABLE;

sync ... by (...) into ...

Synchronizuje SQL data (data v SQL tabulce) s vnějším zdrojem (soubor, URL, resultset ..).
Provedení příkazu je obdobné jako provedení příkazu load.

syntaxe:
sync
< * | (seznam_sloupců ) > by ( seznam_klíčů ) from < $resultset | memory | jméno_souboru > INTO jméno_tabulky

sync (seznam_sloupců ) by ( seznam_klíčů ) from < $resultset | memory | jméno_souboru > INTO jméno_tabulky AS SELECT slq_příkaz_SELECT, $data

Příkaz synchronizuje data v SQL tabulce s vnějším zdrojem tak, že se nejprve pokusí provést update dat podle klíčů zadaných v sekci seznam_klíčů a pokud tento update není úspěšný, pokusí se data do tabulky vložit

seznam_klíčů

seznam názvů sloupců, které jsou použity jako klíče při update dat. Tyto názvy musí existovat mezi názvy importovaných sloupců (zadanými v příkaze v sekci “ seznam_sloupců ” nebo získanými ze záhlaví zdroje dat); velikost písmen musí být shodná..

 

 

Ostatní chování příkazu a popis parametrů jsou shodné s příkazem load .

Příklad:

// synchronizuje data v tabulce “MYTABLE” se souborem
sync (ID, JMENO, PRIJMENI, DAT_NAR) by(id) from c:\data\mytable.dat into MYTABLE

poznámka:
Příkaz NIKDY NEMAŽE ŽÁDNÁ DATA. Pokud je potřeba po synchronizaci vymazat nebo změnit (např. nastavit příznak “neaktivní”) data, která ve vnějším zdroji nebyla, je možno vytvořit v tabulce sloupec, do kterého se vloží např. aktuální čas nebo jiný jednoznačný údaj, který se nevyskytuje v řádcích které nebyly importována; po synchronizaci se vymažou / nastaví ty řádky, které mají tento údaj odlišný od importovaného. Např:

sync (ID, JMENO, PRIJMENI, DAT_NAR, SYNC_COL:${1}) by(id) from c:\data\mytable.dat into MYTABLE;
update MYTABLE set IS_ACTIVE='N', SYNC_COL=0 WHERE SYNC_COL=1;

save ... into

Provede SQL příkaz a (SQL dotaz nebo volání procedury) jeho výsledek uloží do zadaného objekto - podle varianty příkazu to může být do:

- proměnné (resultsetu)
- souboru s daným formátem (s pevnou délkou, oddělovači ...) - viz out.format.fixed , out.format.default , out.format.static .
- URL (WWW stánka ...)
- SQL tabulka (v aktuální nebo jiné databázi – DSN); ta může být vytvořena pokud neexistuje nebo vymazána pokud existuje

Příkaz save vždy vyčistí resultset, do kterého bude ukládat data. Pokud resultset zadaného jména neexistuje, bude vytvořen. Pokud existuje, bude vyprázdněn. Příkaz má tři varianty které se liší tím, co a jakám způsobem ukládá.
Při ukládání do souboru nebo URL lze před provedením příkazu nastavit kódovou stránku ve které bude výsledek uložen příkazem „out.convertor a formát výstupních dat příkazem out.format.

Varianta 1: provede SQL příkaz a výsledek uloží do souboru, URL nebo do resultsetu

Syntaxe 1:  (příkaz SELECT)
save
[ DISTINCT ] seznam_sloupců into výstup FROM jméno_tabulky ... dále_pokračuje_SQL_příkaz [ header | noheader ]

Syntaxe 2: (volání stored procedury)
save  result  into < output | memory | $resultset |  jméno_souboruvolání_ SQL_stored_ precedury  [ parametry_procedury ]  [ header | noheader ]


přičemž výstup je určuje, kam bude uložen výsledek SQL příkazu:

memory

výsledek bude uložen do globálního bufferu

output

výsledek bude odeslán na stdandardní výstup (podle interface pod kterým MSQL běží to může být konzola, výsledek HTTP dotazu, výstupní textové okno ...)

$rsultset

výsledek bude uložen do resultsetu s názvem $rsultset

jméno_souboru

výsledek bude uložen do textového souboru s názvem jméno_souboru. Bebo URL. Jméno nebo URL může být zadáno přímo jako (může nebo nemusí být v uvozovkách), jako proměnná nebo jako výraz; ten musí být uzavřen v ${ … }

TABLE(
name, [ , targetDSN ]
[ , < nocreate | delete | drop > ]
)

výsledek bude zkopítován do tabulky s názven “table”. Pokud chybí “targetDSN ”, je tabulka v aktuální DSN. Pokud je “targetDSN” uvedeno - musí existovat v seznamu DSN - je tabulka v tomto DSN.
Pokud tabulka neexistuje, pokusí se ji MSQL vytvořit (vyjímkou je přepínač “nocreate”; pokud je uveden, MSQL tabulku nikdy nevytváří)

Přepínače: použití je volitelné; může být použit jen jeden
nocreate – MSQL se nepokusí vytvořit tabulku
delete – před importem bude vymazán obsah tabulky
drop - před importem bude tabulka zrušena (pokud existuje)



Ostatní parametry mají význam:

seznam_sloupců

seznam sloupců SQL dotazu (může přdcházet DISTINCT")

result

Ornačuje že jde o volání stored procedury a že tedy za „into“ nenásleduje FROM … ale přímo volání procedury v sytnaxi databázového stroje a dále případné parametry.

jméno_tabulky ...

jméno SQL tabulky (tabulek) ze kterých bude proveden select. Dále pokračuje SQL dotaz (WHERE, ORDER

noheader

pouze pokud se ukládá do souboru
Do souboru nebude vkládán první řádek (s informací o sloupcích). Je to vhodné například při postupném doplňování souboru pomocí příkazu append .

header

pouze pokud se ukládá do souboru
bude vložena hlavička, i když by jinak podle typu SQL příkazu a předchozího nastavení formátu nebyla.

 

 

příklad:

save (ID, JMENO, PRIJMENI, DAT_NAR) into $clovekInfo FROM CLOVEK_DATA WHERE PRIJMENI LIKE 'Novák%'
save result into ~/vysledekProcedury.txt call mojeProcedura ;

Varianta 2: uloží obsah resultsetu nebo výstupního okna do textového souboru. V případě resultsetu bude soubor mít CSV formát, texty budou v apostrofech.

syntaxe:
save <
$resultset | memory | output > into < jméno_souboru >

$resultset

jméno resultsetu, který bude uložen

Memory

bude uložen globální paměťový buffer

Output

bude uloženo okno výstupních textů (nebo texty od posledního smazaní u komandline variantz)

příklad:

save $clovekInfo into c:\data\clovekInfo.txt

Varianta 3: uloží jeden řádek (konstantní hodnotu) do resultsetu. Text (proměnné, výrazy a speciální znaky) je před vložením zpracován jako v příkaze echo. Vkládaný řádek je vyčištěn od všech mezer, které nejsou uvnitř apostrofů nebo uvozovek.

syntaxe:
save
["] text pro zobrazení ... [$proměnná ] ... text ... [${výraz}] ... ["] into < $resultset >

příklad:

save 10, 'Novák', 'František', '21.11.1973' into $clovekInfo

Poznámka:

append ... into

stejná syntaxe, varianty i zpracování jako příkaz save s tím zozdílem, že pokud resultset nebo soubor již existuje, není přepsán ale je doplněn o vkládané záznamy.

Při vkládání do resultsetu nebo do souboru, který bude později jako resultset zpracováván, musí mít vkládané záznamy stejnou strukturu jako ty záznamy, které již v resultsetu / souboru jsou (jinak by při jeho dalším zpracování vznikla chyba). V principu lze ale přidat cokoli.

Příkaz append implicitně nevkládá záhlaví s informacemi o sloupcích, to však lze změnit pro každý jednotlivý příkaz pomocí direktivy "header" na konci příkazu.

break

ukončí provádění cyklu

syntaxe:
berak

exit

ukončí provádění celého skriptu (programu) i všech, ze kterých byl spuštěn.

syntaxe:
exit [návratová_hodnota ]
exit ( návratová_hodnota )

return

ukončí provádění vnořenho (vyvolaného) skriptu nebo procedury a vrátí řízení do místa, odkud byla procedura nebo skript zavolána. Může předat hodnotu, která bude vrácena volajícímu.

syntaxe:
return
[návratová_hodnota]
return ( návratová_hodnota )

messages

zapne / vypne vypisování zpráv bo výst. okna

syntaxe:
messages <on | off | off all | sql | final >

On

Bude vypisovat všechny zprávy (vhodné pro ladění).

Off

Nevypisuje žádné zprávy kromě chybových

Sql

bude vypisovat pouze zprávy o provádění SQL příkazy a chyby.

Final

Vypisuje pouze chybové zprávy a zprávu “> Done.” na konci skriptu.

Poznámka:

Tento příkaz neovlivní vypisování chybových zpráv. To lze učinit příkazem " sql.error.display" (chyby syntaxe skriptů jsou vypisovány vždy a nelze je zakázat).


in

Skupina příkazů pro nastavení parametrů vstupů (použijí se při příkazech load, foreach, sync).
Většina těchto příkazů platí pro jeden (první následující) příkaz load nebo foreach, který následuje po jejich volání. Po provedení příkazu jsou nastavení vynulována (nebo nastavena na default hodnoty). Pokud je potřena použít stejná nastavení pro váce vstupů, je nutné volat příkazy před každám vstupem znovu (např. při vnořených cyklech „foreach“, pokud je ve vnitřním cyklu použit některý z těchto příkazů).

in.convertor

nastaví konvertor, kterým budou konvertová na data při importu z disku (příkaz load , foreach).

související:

in.convertor.default , in.convertor.static , out.convertor

syntaxe:
in.convertor(< jménoKonvertoru > ). Popis viz out.convertor

in.convertor.default

viz out.convertor.default – ale platí pro vstup

in.convertor.static

viz out.convertor.static – ale platí pro vstup

in.style

nastaví styl sloupců pro následující import příkazem load . Nastavení stylu lze použít pouze po předchozím nastavení formátu příkazem in.format . Syntaxe a vlastnosti příkazu jsou stejné jako při nastavení stylu výstupu - viz out.style .

in.counter

nastaví výchozí hodnotu pro počítání záznamů. Po volání tohoto příkazu bude directiva ":COUNTER" v nastavení formátu nebo systémoová proměnná $rownum při příkazech load , forech ... vracet aktuální číslo záznamu zvětšené o tuto hodnotu.
Po provedení kteréhokoli I / O příkazu ( load , save , append , foreach ) je tato hodnota vynulována.

syntaxe:
in.counter(výchozí_hodnota)

in.format

nastaví formát dat pro následující import pro vstupní soubor typu CSV. Popis viz out.format .
Vstupní soubor předpokládá jako textový soubor s oddělovači.

in.format.fixed

Nastavení formátu vstupních dat pro následující import ze souboru s pevnou délkou věty. Tento formát bude použit při následujícím příkaze load ... Předpokládá se, že data budou čtena z textového souboru s pevnou délkou věty a každý záznam bude na samostatném řádku ukončeném znakem CR, LF nebo dvojicí CR - LF,

Formát může ukazovat na absolutní pozice na řádku souboru, nebo může být nastaven přírůstkově (vždy počet znaků od předchozího konce) - viz syntaxe.

související:
in.format.plain , out.format , in.convertor

syntaxe:
in.format(formátovací_string [, první_záznam[, počet_záznamů]]);

formátovací_string je string (textová proměnná nebo text v uvozovkách / apostrofech) popisující formát importovaného souboru. Skládá se z popisu jednotlivých sloupců (tokenů):


token [ ; token [ ; token [ ... ] ] ]

POZOR !!! Oddělovačem tokenů ve formátovacím stringu je STŘEDNÍK !!!

kde token je část dat z právě importovaného řádku souboru, má hodnotu zadaného typu která vzniklne zpracováním znaků od začátku tokenu (od jeho první pozice) do konce tokenu (podle jeho definice).
Token může mít některý z následujících tvarů:

 

pozice_od-pozice_do[:jménoSloupce]:TYP_DAT

 

 

text v zadaném rozmezí pozic (první znak na řádku má pozici 1) jako hodnotu daného typu

nebo

pozice_od-*[:jménoSloupce]:TYP_DAT

 

 

text od zadané pozice do konce řádku jako hodnotu daného typu

nebo

počet_znaků[:jménoSloupce]:TYP_DAT

 

 

zadaný počet znaků od posledního znaku předchozího tokenu jako hodnotu daného typu

nebo

*[:jménoSloupce]:TYP_DAT

 

 

vše do konce řádku od posledního znaku předchozího tokenu jako hodnotu daného typu

nebo

*

vše do konce řádku od posledního znaku předchozího tokenu jako text, který NENÍ v apostrofech (může být použit pro další "ruční" zpracování např. pomocí foreach )

nebo

COUNTER

jako tento token vrátí číslo právě importovaného řádku (první řádek má číslo 1)

nebo

${ výraz }

výraz bude vyhodnocen a jako hodnota pro sloupec bude použit jeho výsledek. Neodkazuje se na vstupní data (vstupní data pro tento výraz nejsou definována). Proměnné “$_token” má hodnotu podle posledních dat načtených ze vstupního zdroje (obvykle předchozí zpracovaný cloupec).
Může být doplněno o typ vrácené hodnoty:
${ výraz }:TXT nebo ${ výraz }:NUM. Pokud ne, je typ hodnoty určen výsledkem výrazu.



jménoSloupce

pokud je zadáno, bude sloupce vystupovat pod tímto jménem (i v případě, že v datovém zdrojï jsou obsaženy i názvy sloupců).



TYP_DAT v předchozí tabulce může být

NUM

tento token bude vracen jako numerická hodnota

TXT

tento token bude vracen jako text (je uvozen apostrofy)

EXPR(výraz)

výraz bude vyhodnocen a bude vrácena jeho hodnota. Typ dat je určen vrácenou hodnotou.
Ve výrazu lze použít speciální textovou proměnnou "$_token", ve které je uložena hodnota tohoto tokenu.

** INT1, INT2 , INT4, INT8

Varianty integer čísla reprezentovaného zadanám počtem bytů (nejvyšší byte .... nejnižší byte)

** RINT1, RINT2 , RINT4, RINT8

Varianty integer čísla reprezentovaného zadanám počtem bytů (nejnižší byte ... nejvyšší byte)

** FLOAT4, FLOAT8

FLOAT číslo v IEEE formátu (4 nebo 8 bytů)

** Tyto formáty jsou k dispozici pouze u příkazu in.format.fixed

příklad 1:

in.format.fixed("1-5:TXT;6-8:NUM,9-10:NUM;COUNTER;45-*:EXPR(substring($_token, 1, 10))");

příklad 2:
Nastaví stejný formát jako příklad 1 ale jiným způsobem.

in.format.fixed ("1-5:TXT;4:NUM;2:NUM,COUNTER;*:EXPR(substring($_token, 1, 10))");

Poznámka:
POZOR !!!
Oddělovačem tokenů ve formátovacím stringu je STŘEDNÍK !!!
Nastavení formátu se RUŠÍ po provede ní příkazu load .. - t.j. pokud potřebuji importovat více souborů se stejným formátem, musím příkaz in.format použít před každým importem znovu.


in.format.plain

Roršířené nastavení vstupního formátu pro import. Nastaví formát vstupních dat pro následující import příkazem load (podobně jako in.format..). S pomocí tohoto příkazu lze importovat libovolné soubory se známou strukturou a pevnou délkou záznamu - včetně binárních (např. DBF ... - i když na DBF je lepší nástroj).
Takto nastavený formát bude použit při následujícím příkazu load a pak bude formát zrušen (stejně jako u in.format ).

související:
in.format , in.format.fixed , out.format , in.convertor

syntaxe:
in.format.plain(formátovací_string, délka_záznamu [, pozice_od [, počet_záznamů]]);

formátovací_string

Textový výraz nebo string, který popisuje formát jedné věty importovaného souboru (věta má délku délka_záznamu znaků). Popis formátovacího stringu viz formátovací string. příkazu in.format.plain.

délka_záznamu

Počet bytů záznamu

pozice_od

Pozice prvního bytu, na které bude začínat import. Všechny byty předtím budou přeskočeny.
Pokud není zadán, import začíná na začátku souboru (pozice 0)

počet_záznamů

Počet záznamu (každý o délce délka_záznamu bytů) které budou importovány. Pokud má soubor více záznamů, ostatní budou ignorovány.
Pokud není zadán, importuje se soubor od počáteční pozice (pozice_od) do konce


příklad:

in.format.plain("1-5:TXT,6-8:NUM,9-10:NUM,COUNTER,45-*:EXPR($_token.substring(1, 10))", 64, 650, 10);

Poznámka:
Nastavení formátu se RUŠÍ po provedení příkazu load .. - t.j. pokud potřebuji importovat více souborů se stejným formátem, musím příkaz in.format.plain použít před kažbým importem znovu.

in.null

nastaví hodnotu pro sloupce, jejichž hodnota při načítáni by byla NULL. Tato (nastavená) hodnota bude vracena místo NULL.

syntaxe:
in.null
( text_pro_NULL )

Varianty:

in.skip

nastaví počet ŘÁDKŮ (záznamů), které budou přeskočeny na začátku importu.

Řádky jsou nejprve načteny s pomocí nastaveného formátování, formátu stránky atd .... Kompletně připravené řádky, které by byly již byly zpracovány jako SQL příkaz, jsou pak teprve přeskočeny.

syntaxe:
in.skip
( pocet_řádků )

in.condition

nastaví podmínku, která bude vyhodnocena pro každý řádek načtených dat . Pokud bude výsledek podmínky „true“, budou data použita. Pokud bude výsledek „false“, bude řádek ignorován (přeskočen).

Podmínka je vyhodnocena těsně před zformulováním SQL příkazu (až po případném přeskočení řádků nastavených pomocí in.skip(...) ),

V podmínce jsou k dispozici hodnoty sloupců z právě načítaného řádku jako proměnné, které NEZAČÍNAJÍ !!! znakem „$“ a všechny ostatní proměnné a funkce MSQL tak, jak jsou nastaveny v okamžuku vyhodnocení podmínky (zdroj dat musí obsahovat názvy sloupců, nebo musí být názvy sloupců zadány např. jako součíst formátu nebo příkazem „“).


syntaxe:
in.condition
( textový_výraz_s_podmínkou_pro_filtr_dat )

příklad:

provede update sloupce „DDP“ v tabulce „HVLP_C“ podle dat ze souboru „Q:/data/Aislp/latin/KL.DAT“, pokud hodnota sloupce „DDP“ v načítaných datech není NULL (t.j. pokud sloupec „DDP“ má hodnotu).
Soubor KL.DAT je binární soubor s pevnou délkou věty; formát dat v tomto souboru je popsán řádkem „in.format.plain(...)“.


in.format.plain("1-5:KOD:TXT;31:NAZEV:TXT;113-120:DDP:NUM", 177, 177);

in.condition("DDP <> NULL");

load (DDP, KOD) FROM "Q:/data/Aislp/latin/KL.DAT" INTO HVLP_C SYNC BY (KOD) NOINSERT;



in.style

nastaví styl (a případně názvy) sloupců ve vstupních datech. Příkaz lze použít



syntaxe:
in.style
( formátovací_string )

formátovací_string představuje textový výraz s popisem stylů a názvů. Má tvar:


[jménoSloupce:]TYP_DAT

kde TYP_DAT je stejný jako typ dat u příkazu in.format.fixed. a jménoSloupce (pokud je uvedeno) udává jméno, pod kterým bude sloupec vystupovat v načítaných datech (a to i v pžípadě, že jména sloupců jsou ve vstupních datech uvedena)

(viz formátovací string u příkazu „in.format.fixed“).

sql

skupina příkazů nastavuje podmínky, za kterých se budou provádět SQL příkazy

sql.error , sql.error.exit , sql.error.display , sql.error.max , sql.isError , sql.setError , sql_timeout , sql.rows.max ,  sql.select , sql.execute, sql.getString, sql.getRow

sql.error

zakáže / povolí ukončení provádění skriptu po chybě a zároveň vypisování chybových zpráv při zpracování SQL příkazu. Tento příkaz je kombinace volání sql_error_exit (...) a sql.error.display (...).

syntaxe:
sql.error
(< false | true > )

false

při vzniku SQL chyby se nevypíše chybová zpráva a skript bude pokračovat bez upozornění (proměnná sql.isError ale bude nastavena)
Použití je vhodné napřiklad před preventivním mazáním dočasných tabulek (kdy tabulka nemusí existovat) a pod.

True

při vzniku chyby při zpacování SQL příkazů se vypíše chybová zpráva (pokud to není zakázáno pomocí sql.error.display(false) ) a skript bude ukončen.

 

sql.error.exit

zakáže / povolí ukončení provádění skriptu po chybě při zpracování SQL příkazu. Defaulně je nastaveno na true (=>skript končí po SQL chybě).

syntaxe:
sql.error.exit
(< false | true > )

false

při SQL chybě se vypíše chybová zpráva (pokud to není zakázáno pomocí sql.error.display(false) ) a skript bude pokračovat

true

skript bude končit po chybě, která vznikne při provádění SQL příkazu

Poznámka:
Příkaz sql.error.exit vynuluje příznak SQL chyby. Pokud je potřeba zachovat informaci o tom, že v části skriptu ve které bylo zakázáíno ukončení po SQL chybě tato chyba nastala, je nutné použít pomocnou proměnnou do které se stav příznaku uloží ještě před voláním příkazu sql.error.exit ; např. takto:

$stavChyby = sql.isError ;
....
sql.setError($stavChyby);

sql.error.display

zakáže / povolí vypisování chybových zpráv zzniklých přu zpracování SQL příkazů. Text těchto chybových zpráv vytváří databázový stroj, který příkaz zpracovává. Proto tyto zprávy nejsou jednotné.
Default hodnota je true (vypisování zpráv je povoleno).

syntaxe:
sql.error.display ( < false | true > )

false

vypisování chybových zpráv vzniklých při zpracování SQL je zakázáno

true

vypisování zpráv je povoleno (default)

Poznámka:

sql.error.max

Nastaví maximální počet SQL chyb, které ještě program ignoruje při importech (příkazem load ). Po překročení tohoto počtu chyb import zkončí.

syntaxe:
sql.error.max ( číslo )

Default hodnota: 0 (=> import končí po první SQL chybě)

Poznámka:
Hodnota je po každém provedeném importu příkazem load znovu nastavena na nulu.

sql.isError                                                                                                                

vrátí stav příznaku SQL chyby jako logickou hodnotu.

syntaxe:
sql.isError

sql.setError

nastaví příznak SQL chyby. Systém se bude chovat, jakoby nastala SQL chyba (kromě případného ukončení skriptu; běžící skript se voláním příkazu sql.setError neukončí)

syntaxe:
sql.setError ( < false | true > )

sql.timeout

nastaví tomeout, po kterém bude ukončen SQL příkaz, pokud do zadaného času nezkončil sám

syntaxe:
sql.timeout ( doba_v_sekundách )

Default hodnota: 60 sec

Poznámka:
Tento parametr funguje jenom s některými databázemi (příkaz je odeslán před zpracováním SQL příkazu databázi, nekteré databáze jej však ignorují - nutno vyzkoušet).

sql.rows.max

Nastaví maximílní počet vracených záznamů na hodnotu.

syntaxe:
sql.rows.max ( hodnota )

sql.select

Provede SQL příkaz SELECT podle parametru v vrátí první sloupec prvního řádku jako textovou proměnnou.

syntaxe:
sql.select ( příkaz_select_bez_klíčového_slova_SELECT [ , DSN_pro_příkaz] )
Pokud je " DSN_pro_příkaz" zadáno, bude použito tot DSN (pokud existuje) bez ohledu na aktuální DSN

sql.execute

provede SQL příkaz (jakýkoli příkaz včetně volání stored procedur) a vrátí resultset s výsledkem jako proměnnou.

syntaxe:
sql.execute( SQL_příkaz [ , DSN_pro_příkaz ] )
Pokud je " DSN_pro_příkaz" zadáno, bude použito tot DSN (pokud existuje) bez ohledu na aktuální DSN

poznámka:
tento příkaz nikdy nevrací chybu. Pokud nemůže být SQL příkaz zpracován nebo vrácen výsledek, je výsledkem tohoto příkazu prázdný resultset. Stav chyby lze zjistit pomocí proměnné $sqlResult nebo funkce sql.isError .

sql.getRow

Provede SQL příkaz podle prvního parametru v vrátí první řádek výsledku tohoto SQL příkazu jako resultset o jednom sloupci (provede jakoby "transpozici" prvního řádku výsledku do jednoho sloupce resultsetu). Všechny proměnné vraceného resultsetu budou typu text BEZ apostrofů.

poznámka:
tento příkaz nikdy nevrací chybu. Pokud nemůže být SQL příkaz zpracován nebo vrácen výsledek, je výsledkem tohoto příkazu prázdný resultset. Stav chyby lze zjistit pomocí proměnné $_sqlResult nebo funkce sql.isError .

syntaxe:
sql.getRow( příkaz_SQL_vracelící_resultset [ , DSN_pro_příkaz] )
Pokud je " DSN_pro_příkaz" zadáno, bude použito tot DSN (pokud existuje) bez ohledu na aktuální DSN

sql.getString

Provede SQL příkaz podle parametru v vrátí první položku výsledku (první sloupec prvního řádku) jako textovou proměnnou.

syntaxe:
sql.getString( příkaz_select_bez_klíčového_slova_SELECT [ , DSN_pro_příkaz] )
Pokud je " DSN_pro_příkaz" zadáno, bude použito tot DSN (pokud existuje) bez ohledu na aktuální DSN

poznámka:
tento příkaz nikdy nevrací chybu. Pokud nemůže být SQL příkaz zpracován nebo vrácen výsledek, je výsledkem tohoto příkazu prázdný string. Stav chyby lze zjistit pomocí proměnné $_sqlResult nebo funkce sql.isError .

dsn

Skupina příkazů pro práci s datovými zdroji.

dsn.select

nastaví DSN zadaného jména pro další práci s daty.
Od tohoto místa v programu až do další změny DSN (dalšího volání dsn.select ( ... ) ) budou SQL příkazy zasílány ke zpracování databázi, která je pod tímto DSN zaregistrována. Příkaz má dvě varianty:

Pokud je použit druhý parametr (false / true), nenastavuje se DSN ue seznamu dostupných DSN, ale přímo z ODBC (pouze pro Windows nebo ty systémy, kde existuje ODBC)

Varianta 1:

nastaví DSN ze seznamu DSN zaregistrovaných v aktuální DSN (t.j. té, která je aktivní v okamžiku startu systému - proti které se také ověřují data uživatele; aktuální DSN může být změněna příkazem dsn.load )

syntaxe:
dsn.select (<jméno_DSN | $default > [, < false | true > ] )

jméno_DSN

jméno datového zdroje, které bude nastaveno. Musí existovat v seznamu DSN v default databázi a přihlášený uživatel k němu musí mít přístup.

$default

nastaví DSN, které bylo aktivní v okamžuku startu systému (ke kterému byl autentifikován právě přihlášený uživatel)

Varianta 2:

nastaví DSN přímo ze seznamu ODBC zdrojů (t. j. tato DSN nemusí být registrována v databázích aktuální DSN). Druhý parametr (false nebo true) určuje, jestli se bude k databázi přistupovat přímo na stanici klienta nebo přes server (v tomto případě musí tato databáze být registrována v ODBC zdrojích serveru, ke kterému se klient připojuje.)

syntaxe:
dsn.select (jméno_ODBC, < false | true > )

jméno_ODBC

jméno v seznamu ODBC zdrojeů, které bude nastaveno. Musí existovat v seznamu ODBC na stanici nebo serveru (podle druhého parametru) a musí být nastaveno tak, aby pro připojení nevyžadovalo jméno a heslo.

false

k ODBC zdroji se přistupuje přes aplikační server => musí být v seznamu ODBC na tomto serveru

true

k ODBC zdroji se přistupuje přímo na klientské stanici => toto jméno musí být v seznamu ODBC na této stanici (t. j. na té, na které právě běží MSQL)

příklad:

viz příklad k příkazu dsn.load

Poznámka:

dsn.close

uzavře spojení s databází; v případě některých ODBC databází (EXCEL, ACCESS, FOXPRO, DBF...) je tím uvolní pro používání jinými programy.

syntaxe:
dsn.close

Poznámka:

Příkaz lze použít pouze pro databáze, ke kterým se pripojoje klientská stanice přímo (v definici DSN mají nastaveno "Direct connection" na "Yes") nebo to jsou přímo připojené ODBC zdroje (nastaveny příkazem dsn.select (jmeno_DSN, true) ; )

dsn.load

nastaví zadanou DSN jako aktuální.
Všechna další jména datových zdrojů (DSN) (a tedy všechny informace potřebné pro přihlašování k databázím - jména, hesla, URL a typy databází ...) budou brána z této (nově nastavené) DSN

syntaxe:
dsn.load (jméno_DSN | $default)

jméno_DSN

jméno DSN, která bude nastavena jako default. Jméno musí existovat (musí být zaregistrováno) v seznamu DSN, který je právě aktivní. a musí to být systémové DSN (musí obsahovat systémové tabulky se seznamem DSN, uživatelů ...)

$default

znovu nastaví jako aktuální tu DSN, která byla aktivní při startu systému

Příklad:

Předpokládejme že systém byl spuštěn s aktuální DSN s názvem DSN1, které ukazuje na databázi v ACCESSU (připojenou přes ODBC). Je to systémová databáze a jsou v ní dále zaregistrovány DSN DATAB1 (ukazuje na databázi v postgresu) a DATAB2 (ukazuje na databázi v SYBASE11).
Databáze DATAB2 je rovněž systémová (=> obsahuje systémové tabulky se seznamem dalších DSN, uživatelů ... a proto ji lze použít v příkaze dsn.load) a obsahuje tyto DSN: MYDATA (soubor c:\data\mydata.mdb - typ ACCESS přes ODBC) a SYBDATA (sybase).

Po startu systému budou dostupné databáze zaregistované v DSN1, tedy samotná DSN1, dále DATAB1 a DATAB2. Budu moci provést např.

// vybere DSN "DATAB1" pro dalsi praci
    dsn.select(DATAB1);
// dale vlozi jeden radek do tabulky "TABULKA_Z_DATAB1" (tato tabulka musi existovat v
// databázi, která je pod jmenem "DATAB1" definována - zde je to postgres)
    INSERT INTO TABULKA_Z_DATAB1 (SLOUPEC1, SLOUPEC2 ...) VALUES (hodnota1, hodnota2 ...);
// zmenim databazi, kterou budu dale pouzivat pro SQL prikazy na "DATAB2" (sybase)
    dsn.select(DATAB2);
// ulozim neco z teto databaze do rsultsetu ....
    save * into $myRes from TABULKA_Z_DATAB2 ;

Poté provedu příkaz

    dsn.load(DATAB2);

a od tohoto okamžiku již nejsou dostupné databáze registrované v DSN1 (t. j. DSN1, DATAB1 a DATAB2); tedy pokus o některý z příkazů

dsn.select(DATAB1);
    dsn.select(DSN1);

zkončí chybou. Budou ale přístupné databáze registrované pod DATAB2, t. j.

dsn.select(MYDATA);

proběhne správně a od tohoto okamžiku budu moci provádět SQL dotazy dat daty z tabulek v MYDATA (v souboru MSACCESS - t. j. v souboru c:\data\mydata.mdb)

Příkazem

dsn.load($default);

nastavím jako aktuální opět tu DSN, se kterou systém startoval (v tomto příkladě DSN1) a dále budu moci pracovat s daty v databázích DSN1,DATAB1, DATAB2.

Poznámka:

pro změnu aktuální DSN je nutné, by uživatel, který je právě přihlášen, měl účet se stejným heslem v cílové DSN (t.j. té, která má být nastavena). Pokud ne, bude v grafickém interface vyzván k přihlášení, ostatní (commandline, servlet atd) zahlásí chybu.

dsn.params

Nastaví "connected string" (speciální parametry, předávané databázi). Příkaz je nutné volat po změně DSN (voláním dsn.select (), ), pro které tyto parametry mají platit., ale před prvním přístupem k datů pro která má tato nastavení platit.

syntaxe:
dsn.params ( text )

text = text, který bude předán ovladači databáze jako speciální parametr

Poznámka:
speciélní parametry jsou závislé na konkrétní použité databázi. Jestli jsou potřebné a jaké mají názvy a hodnoty je nutné zjistit v dokumentaci k příslušnému ovladači (JDBC driveru), který databáze používá.

dsn.list

Vypíše informace zvoleného druhu o aktuální DSN.

syntaxe:
dsn.list( typ_informace [, katalog ] )
kde typ_informace le některé z těchto klíčových slov (zadává se bez uvozovek nebo apostrofů):

TABLES

vypíše seznam tabulek, které jsou přístupné ve zvolené DSN

VIEWS

vypíše seznam view

SYSTEMTABLES

seznam systémových tabulek databáze

DATA

všechny typy, které vracejí data

ALL

všechny dostupné informace

CATALOGS

seznam katalogů (databází) známých v tomto DSN

a katalog (volitelně) je textová proměnná nebo výraz, určující katalog ze kterého bude požadovaný výpis proveden. Pokud není zadán, je proveden výpis z aktuálního katalogu (obvykle databýze, která je specifikována v jdbc suffixu) 

out

Skupina příkazů nastaví parametry výstupů (použijí se při příkazech save , append )

out.convertor

nastaví konvertor, kterým budou konvertována data při exportu na disk (příkaz save , append )

související:
out.convertor.default , out.convertor.static , in.convertor

syntaxe:
out.convertor(< jménoKonvertoru > )
kde jménoKonvertoru je některé z následujících (musí být zadáno přesně včetně malých / velkých písmen)

jménoKonvertoru

jak konvertuje

Latin2

iso 8859-2 (Latin 2 - kódová stránka )

W1250

Windows - kódová stránka 1250

Unicode

všechny znaky a kódem > 127 budou kódovány jako text ve tvaru \uXXXX, kde XXXX je kód znaku

NoConvert

neprovádí konverzi - obvykle vede k nedefinovaným výsledkům

BezDiakr

odstraní diakritiku

iso88592

znaky kóduje v iso88592

iso88592mime

znaky kóduje v iso88592 MIME stylem

Base64

 

 

 

 

Poznámka:
Konverze vstupních souborů do editoru MSQL by měla probíhat automaticky podle platformy, na které je MSQL spuštěno.

out.convertor.default

Nastaví konvertor, který bude používán pro všechny výstupy (příkazy save , append ) od místa nastavení do konce běhu skriptu. Parametry viz out.convertor .

out.convertor.static

Nastaví konvertor, který bude používán pro všechny výstupy (příkazy save , append ) od místa nastavení do konce běhu skriptu a pro všechny nové instance příkazového interpretu. Lze volat i v instanci vytvořené staticky (mapř. inicializace ..). Parametry a detailní popis viz out.convertor .

out.trim

nastaví informaci o tom, které sloupce SQL dotazu (bezprostředně následujícího po volání této funkce) budou ořezány z obou stran o mezery a netisknutelné znaky (nové řádky, tabelátory ...).

související:
out.trim.default ,

syntaxe:
out.trim (hodnota [, hodnota [, hodnota] ... ] )

hodnota

true => sloupec na pozici, na které je tato hodnota BUDE ořezán

false => sloupec na pozici, na kt eré je tato hodnota NEBUDE ořezán

Poznámka:
Počet hodnot předávaných příkazu musí být stejný jako bude počet sloupců v následujícím SQL dotaze; jinak nebude toto nastavení použito.

out.trim.default

povolí / vypne čištění záznamů (vracených SQL příkazy) o mezery na začátku a na konci textu (pro všechny typy záznamů - text, numerické ...)

syntaxe:
out.trim.default (< false | true >)

true

záznamy budou ořezávány o počáteční a koncové mezery

false

záznamy nebudou ořezávány o počáteční a koncové mezery

out.style

Nastaví styl sloupců pro následující export příkazem save , append provedeného SQL příkazem.
Styl určuje, jestli bude údaj vkládán jako text (=> bude uvozen uvozovačem textu specifikovaným v nastavení formátu), nebo jako číslo => vždy bez uvození. Nastavení stylu má vyšší prioritu než údaje o typu sloupců z databáze. Příkaz má smysl tam, kde např. datanáze není schopná vrátit informace o typu datových polí (MS SQL při voláná stored procedur a pod.). Počet sloupců v příkaze nesmí být menší než počer sloupců výsledku SQL příkazu, může být větší => zbytek je ignorován. Nastavení stylu sloupců je zrušeno provedením exportu.
Nastavení stylů je zrušeno rovněž nastavením formátu příkazem out.format => nejprve je nutné nastavit formát a potom styly sloupců.

Jiný způsob změny stylu sloupce pro export je přípona :TXT nebo :NUM za jménen sloupce v příkaze save , append .

související:
out.format

syntaxe:
out.style( [styl_sloupce_1 [ , styl_sloupce_2 [ .... , styl_sloupce_n ] ] ] )
kde styl_sloupce_1styl_sloupce_n je:

TXT

textový údaj; bude vložen do apostrofů (nebo do testu z příkazu "out.format")

NUM

numerický údaj; bude vložen tak jak je vrácen DB strojem. (=> nebude v apostrofech)

out.format

Nastaví formát exportu pro následující operaci "save" nebo "append". Příkaz má dvě varianty, které určuje první parametr. Pokud je to text v uvozovkách nebo apostrofech, jde o variantu a), pokud je to číslo, jde o variantu b) (viz out.format.fixed ). Nastavením formátu bude zrušeno případné nastaení stylu sloupců (viz out.style )

související:
out.format.fixed , out.format.default , out.format.static , in.format

syntaxe:
out.format([oddělovač] [ , uvoz_txt [ , konec_řádku [, začátek_řádku [, závěr [, úvod [, null_hodnota [ , text_za_položkou [ , text_před_položkou ] ] ] ] ] ] ] ] [, záhlaví_sloupců ])

Nastaví formát s oddělovači popsaný dalšími parametry.

Parametry (kromě posledního - záhlaví_sloupců ) jsou texty uzavřené v uvozovkách nebo apostrofech, řídící znaky (\r, \n, \t, \uxxxx ..) se převádí na hodnoty.

První parametr (oddělovač ) je povinný, ostatní nepovinné. Pokud má mít některý parametr default hodnotu ale následující má být nastaven, na jeho místě parametru s default hodnotou se použije pouze čárka bez textu (pro tento chybějící parametr bude použita jeho default hodnota).

oddělovač

oddělovač jednotlivých sloupců

Default hodnota = čárka.

uvoz_txt

Znak (nebo string), kterým budou uvozeny textové informace (bude vložen na začátek a na konec všech textů). Nesmí se vyskytnout uvnitř textu (vyjímkou jsou apostrof a uvozovka - ty ale musí předcházet znak '\'). Může být nastaven i na prázdný string => texty nebudou ničím uvozeny.

default hodnota = apostrof.

konec_řádku

Oddělovač záznamů.
Default hodnota = konec řádku - znak LF (ASCII hodnota 0D)

začátek_řádku

text, který bude vložen na začátek každého řádku.

Default hodnota = prázdný text.

úvod

Text, který bude zapsán do výstupního souboru na jeho úvod (před vlastní data).
Pokud je nastaven, následuje za ním oddělovač záznamů.
Default hodnota = prázdný text.

závěr

Text, který bude zapsán do výstupního souboru na jeho konec (za poslední řádek dat).
Za ním NEnásleduje žádný další text, ani oddělovač záznamů.
Default hodnota = prázdný text.

null_hodnota

text, kterým bude nahrazena hodnota "NULL" z databáze.

Default hodnota = mezera.

text_před_položkou

pokud je nastaven ,dává se tento text před každou položku (za oddělovač záznamů)

Default hodnota = nic

text_za_položkou

pokud je nastaven ,dává se tento text za každou položku (před následující oddělovač záznamů nebo konec řádku)

Default hodnota = nic

záhlaví_sloupců

false nebo true; pokud je true, za úvod se přidají jména sloupců z příkazu SELECT. Default hodnota = false (jména sloupců se nepřidávají)

Příklad 1:
nastaví oddělovač na středník, konec řádku na "CR-LF" (pro Windows soubory) a konec textu na ASCII hodnotu 1B (hex). Ostatní bud edefault.

out.format(";", , "\r\n", , "\u001B");

Příklad 2:
nastaví oddělovač na středník, a do záklaví vloží názvy slopců; ostatní bude default

out.format(";", true);


Příklad 3:
nastaví oddělovač na středník, ostatní bude default

out.format(";");

Varianty:

out.format.fixed

Nastaví formát s pevnou délkou věty pro vásledující export. Příkaz out.format.fixed je synonymum pro příkaz out.format , který začíná číslem - varianta b) .

syntaxe:
out.format( dékla_sloupce_1 [ , délka_sloupce_2 [ , délka_sloupce_3 [ ... [ , délka_sloupce_n ] ] ] ] [ , oddělovač [ , výplň_čísel [ , výplň_textu] ] ] )

Nastaví formát s pevnou délkou věty.

dékla_sloupce_1

dékla_sloupce_n

Čísla , která určují počet znaků v každém exportovaném sloupci. Parametrů musí být nejméně tolik, kolik bude sloupců v následujícím příkazech save , append , jinak vznikne při dalším zpracování chyba.

Konec_řádku

Oddělovač záznamů.

Default hodnota = konec řádku - znak LF (ASCII hodnota 0D)

Výplň_čísel

Znak, který bude vkládán při doplnění čísel na požadovanou délku

Text (v apostrofech nebo uvozovkách), jehož první znak bude použit pro doplnění numerických hodnot (zleva) na požadovanou délku

Default hodnota = mezera

Výplň_textu

Znak, který bude vkládán při doplnění textů na požadovanou délku

Text (v apostrofech nebo uvozovkách), jehož první znak bude použit pro doplnění textových hodnot (zprava) na požadovanou délku

Default hodnota = mezera

null_hodnota

Text (v apostrofech nebo uvozovkách), kterým bude nahrazena hodnota "NULL" z databáze.

Default hodnota = mezera.

Úvod

Text (v apostrofech nebo uvozovkách), který bude zapsán do výstupního souboru na jeho úvod (před vlastní data).
Pokud je nastaven, následuje za ním oddělovač záznamů.
Default hodnota = prázdný text.

Závěr

Text (v apostrofech nebo uvozovkách), který bude zapsán do výstupního souboru na jeho konec (za poslední řádek dat).
Za ním NEnásleduje žádný další text, ani oddělovač záznamů.
Default hodnota = prázdný text.

Default hodnota:
formát s oddělovači nastavený takto:

= čárka

= uvozovka,

= "\n" (znak LF)

a závěr není

se neexportuje

Poznámka:

save nebo append nastaven na defaultní hodnoty. Proto je nutné jej před každou operací, která vyžaduje jiný než defaultní formát, nastavit znovu.

out.null

nastaví hodnotu která bude vracena pokud databáze vrátí NULL. (default je „NULL“).

Varianty:

output

skupina příkazů pro práci s výstupním tokem

output.clear

vyprázdní obsah výstupu (pokud je to možné); komandline varianta vyprázbní vástupní bufffer, grafická varianta vymaže výstupní textové okno ...

syntaxe:
output.clear

output.get

vrátí obsah výstupního bufferu od posledního volání output.clear (pokud je to možné) jako textovou proměnnou;

system

skupina příkazů systémových příkazů (práce se zprávami, práce s hostitelským operačním systémem, generátor číselných řad ...)

system.execute , system.gen , system.priority , system.scriptPath , system.setError , system.isError , system.message , system.runEvent , system.invoke , system.invokeOut , system.edit

system.execute

provede příkaz hostitelského operačního systému a jeho výstup vrátí jako textovou proměnnou.

syntaxe:
system.execute(jméno_příkazu );

system.gen

podskupina příkazů pro práci s generátorem číselných řad.

next vygeneruje další číslo v řadě
    system.gen.next ( tabulka [ , sloupec [ , klíč ] ] )
sync nastaví generáto podle nejvyšší hodnoty v zadané tabulce
    system.gen.sync ( tabulka [ , sloupec [ , klíč ] ] )
set
    system.gen.set ( číslo, tabulka [ , sloupec [ , klíč ] ] )

kde

Tabulka

jméno tabulky (výraz nebo proměnná), pro kterou je číslo generováno

Sloupec

jméno sloupce v tabulce, pro kterou je číslo generováno, Pokud není zadáno, je generován sloupce "ID"

Klíč

rozšiřijící klíč (dovoluje udržovat víc číselných řad s jedním jménem tabulky a sloupce). Pokud není zadán, dosadí se systémové jméno "RSYQ"

Číslo

číslo, na jehož hodnotu je nastavena požadovaná bu'nka generátoru.

Poznámka:

generátor číselných řad je určen především pro generování unikátních ID, ale lze jej použít i pro jiné účely (pomocí vhodně zvolených jmen "tabulka", " sloupec", "klíč") - např. čísla výrobků a pod..

Generáto pro úlohy není v aktuální DSN , ale vždy jen jeden - v DSN, která je aktivní v okamžiku přihlášení uživatele. Pokud se úloha při své činnosti přepíná mezi více DSN a v několika z nich je nutné generovat unikátní ID (pro tabulky, ktere mají v různých DSN stejný název), je nutné tyto tabulky rozlišit pomocí třetího parametru ("klíč " ) - jeho hodnota by měla být právě jmého toho DSN, ve kterém tabulka leží.

system.priority

nastaví prioritu threadu.

syntaxe:

system.priority( [ + | - ] priorita)

kde priorita je číslo v rozsahu 1 - 10 určující novou prioritu threadu. Pokud číslu předchází znaménko + nebo -, je nová priorita threadu nastavena jako tento původní a zadaného čísla (výsledek nesmí být mimo meze 0 - 10). Default priorita threadu je 5.

system.scriptPath.add

přidá cesty k cestaám, na kterých se hledají skripty

syntaxe:
scriptpath.add( string_1 [ , string_2 [ , string_3 [ , ... [ , string_n ] ] ] ]

system.scriptPath.set

nastaví sezna cest pro skripty

syntaxe:
scriptpath.set( string_1 [ , string_2 [ , string_3 [ , ... [ , string_n ] ] ] ]

system. setError

nastaví příznak o chybě (ten může otestovat interface, který příkaz vyvolal a podle něj provést / neprovést nějakou akci)

syntaxe:
system.setError
( < false | true >)

system. isError

vrátí stav příznaku chyby jako logickou proměnnou. Ten je nastaven při vzniku chyby nebo voláním funkce system.setError

syntaxe:
system.isError

system.message

příkazy pro odesílání zpráv (smtp - email, SMS, pager ...) a zobrazení zprávy do stavového řádku
Skupiny obsahuje tyto příkazy:

system.message.send

Odešle textovou zprávu zadaného typu

syntaxe:
system.message.send( typ_zprávy, komu_je_určená, krátký_text [ , od_koho [ , dlouhý_text [ , příloha [ , SMTP_server ] ] ] ]

typ_zprávy může být některý z textů: "smtp", "pager", "sms"

pro typ_zprávy = "smtp" => odešle email

Komu_je_určená

emailová adresa příjemce
(povinný údaj)

krátký_text

subject zprávy nebo text SMS
(povinný údaj, může být prázdný text)

od_koho

emailová adresa odesílatele
(povinný údaj)

dlouhý_text

text těla zprávy
(povinný pro )

příloha

string, který bude předán jako příloga zprávy. Pokud obsahuje prázdný string, (""), přílogha se nevytvoří.
(nepovinný)

SMTP_server

tento server bude použit pro odeslání zprávy. GapoServer, ke kterému je připojen klient (nikoli sám klient) k tomuto serveru musí mít povolen přístup a musí mít povoleno přes něj odesílat.
(nepovinný)

 

pro typ_zprávy = "pager" => odešle zprávu na paget (prostřednictvím WWW rozhraní)

Komu_je_určená

číslo pageru
(povinný údaj)

krátký_text

subject zprávy
(povinný údaj)

 

pro typ_zprávy = "sms" => odešle SMS zprávu prostřednictvím WWW rozhraní operátorů.

Komu_je_určená

číslo mobilu Číslo může začínat prefixem státu nebo '00'; pokud ne => předpokládá se česko.
(povinný údaj)

krátký_text

text zprávy
(povinný údaj)

od_koho

identifikace odesílatele (různá pro různé operátory; email nebo telefonní číslo)
(nepovinný)



 

system.message.setServer

nastaví SMTP server, který bude používán pro další odesílání mailů.
Pokud server není nastaven, MSQL použije default server (podle nastavení v RTsSystem.properties nebo GapoServer.ini)

syntaxe:
system.message.setServer
("server");

system. message.setFrom

nastaví pole "from" pro emaily, které budou dále odesílány.

syntaxe:
system. message.setFrom("odesílatel")

system.message.display

zobrazí zprávu na displeji klienta. U grafického interface se zpráva zobrazí do dolního stavového řádku, u ostatních interface podle situace - obvykle do std. výstupu.

syntaxe:
system. message.display ( text_zprávy [ , počet_sekund_pro_zobrazení ] )

text_zprávy

vlastní text, který se zobrazí

počet_sekund_pro_zobrazení

doba (v sekundách), po kterou zůstane zpráva zobrazena (pokud není dříve přepsána jinou zprávou)
parametr má smysl pouze pro zobrazování na grafických interface.

 

system.message.displayError

tobrazí chybovou zprávu na displeji klienta. Chybová zpráva je barevně odlišená, vše ostatní je stejné jako system.mesage.display .

system.message.alert

Zobrazí zprávu v samostatném okně (pokud to dovoluje použitý interface). V NEgrafických interface se zpráva zobrazí do výstupního toku dat jako normální zpráva.

syntaxe:
system. message.alert ( [ záhlaví , ] text_zprávy [ , typ_zprávy ] )

záhlaví

záhlaví zprávy; obvykle text v horním (systémovém) řádku okna se zprávou

text_zprávy

vlastní text, který se zobrazí v těle zprávy

typ_zprávy

zatím nepoužito

 

system.runEvent

vyvolá událost na serveru (události viz popis administrace serveru). Událost musí být definována v seznamu událostí pro aktuálnáí aplikační systém a musí být aktivní.

syntaxe:
system. runEvent (název_události [ , sync_mode ] )

název_události

název události, která se má spustit.
Název zde musí být zadán přesně tak, jak je požadovaná událost pojmenována v seznamu událostí (včetně případných mezer na začátku a konci).

sync_mode

logická hodnota (nepovinná).

Pokud je false nebo parametr chybí, událost je spuštěna "synchronně" - t, j. MSQL čeká na její dokončení. V tomto případě se neuplatní odesílání zpráv o dokončení události; místo toho je zpráva o dokončení zobrazena klientovi (podle typu interface je to na konzole, v okně pro zprávy nebo do výstupního logu).

Pokud je true, událost je odeslána na server ke zpracování a po jejím odeslání MSQL pokzačuje v činnosti (nečeká na její dokončení). Zpráva o dokončení události je odesílána tak, jak je to u události nastaveno.

system.invoke, system.invokeOut

vyvolá MSQL skript na serveru a výsledek (pokud vyvolaný skript vrací návratovou hodnotu) vrátí jako textovou proměnnou.
Pokud vyvolaný skript nevrací návratovou hodnotu, příkaz "system.invoke " vrací hodnotu "null".

Příkaz system.invokeOut vypisuje při běhu skriptu na serveru jeho standardní výstup na displeji klienta (lze použít pro zjišťování příčin chyb při ladění); příkaz system.invoke jej nevypisuje.
Obě varianty vypisují zprávy do stavového řádku (nebo jeho ekvivalentu u NEgrafických interface).

syntaxe:
system. invoke(název_skriptu [ , sync_mode ] [ , paramert_1 , parametr_2 [ , ... , parametr_n ] ] )

název_skriptu

název skriptu, který bude na serveru spuštěn.
Pokud skript neleží v některé z cest ve "$scriptPath" nebo není "preload", musí být včetně cesty. Uživatel musí mít právo číst z adresáře se skriptem.

sync_mode

logická hodnota (nepovinná).

Pokud je false nebo parametr chybí, událost je spuštěna "synchronně" - t, j. MSQL čeká na její dokončení. V tomto případě se neuplatní odesílání zpráv o dokončení události; místo toho je zpráva o dokončení zobrazena klientovi (podle typu interface je to na konzole, v okně pro zprávy nebo do výstupního logu).

Pokud je true, událost je odeslána na server ke zpracování a po jejím odeslání MSQL pokračuje v činnosti (nečeká na její dokončení). Zpráva o dokončení události je odesílána tak, jak je to u události nastaveno.

Parametr sync_mode lze použít pouze s interface, které nekončí svou činnost po provedení série příkazů. Pokud by byl skript spuštěn asynchronně např. v MSQLc a dávka, ze které je skript na serveru vyvolán, by zkončila dřív než vyvolaný skript, byl by skript na serveru rovněž (předčasně) ukončen.

parametr_1
parametr_2
...
parametr_n

parametry, předávané skriptu.
Textové proměnné nebo výrazy, které jsou vyvolanému skriptu předány.

 

poznámka:

Příkaz system.invokeOut je určen především k diagnostice problému - ne pro rutinní používání. Pokud by vyvolaný skript  produkoval masívní tisk do standardního výstupu, mohlo by při použití tohoto příkazu dojít k přetečení paměti na serveru (celý standardní výstup skriptu se nejprve zapisuje do paměti a po zkončení skriptu je jako celek odeslán klientovi).

system.exit

Ukončí provádění všech příkazů a (pokud je to možné) ukončí celý systém a vrátí řízení operačnímu systému. Předává případnou návratovou hodnotu.

system.exit( [ návratová_hodnota ] )



system.edit

editace souboru. Vyvolá externí editor. Jako parametr dostane jméno souboru k editaci a (volitelně) program editoru.

system.zip

Příkaz pro manipulaci se ZIP soubory. Příkaz zabalí cílový soubor(y) / adresář(e) do ZIP archívu, jehož název je prvním parametrem. Jako poslední parametry mohou být uvedena klíčová slova modifikující činnost příkazu.

syntaxe:
system.zip(cílový_ZIP_Soubor, [prefix:]zdrojovýSoubor1 [, [prefix:]zdrojovýSoubor2 [ , ... ] ] [ , verbose ] [ , move ] [ , append ] [ , subdir ] [ , withParent ] )



prefix

Prefix modifikuje chování příkazu k některým typům souboru:

zip: zdrojový ZIP soubor bude rozbalen a do výsledného souboru bue vložen jeho obsah (nikoli celý zabalený zip)

cílový_ZIP_Soubor

Název ZIP souboru (včetně cesty)

zdrojovýSoubor1 ...
zdrojovýSouborN

Seznam zdrojových souborů a / nebo adresářů, které budou zabaleny do ZIP souboru

move

Pokud se vyskytne na konci příkazu, budou soubory po úspěšném přenesení do ZIP archívu z původního místa smazány (včetně adresářů).

append

Pokud existuje soubor se stejným názvem jako je cílový ZIP, budou nově přidávané soubory připojen k původnímu obsahu. Normálně je cílový soubor přepsán.

verbose

Píše dodatečné informace.

subdir

Pokud je některý z cest adresář nebo maska, budou přidány i podadresáře.

withParent

Do výsledného ZIP souboru zařadí adresář i s nadřízeným adresářem.
Normálně se do ZIP souboru dávají adresáře POD výchozím adresářem, výchozí sám však ne.


Příklad:

// Do souboru „/tmp/cilovyZip.zip“ zabalí obsah všech souborů s příponou „java“ z adresáře
// „/home/gapo/mojedata“ a všech podadresářů. V zipu bude jako root obsah adresáře „/home/gapo/mojedata/“

// (ten sám tam nebude)
    system.zip("/tmp/cilovyZip.zip", "/home/gapo/mojedata/*.java", subdir)


// Do souboru „/tmp/spojenyZip.zip“ zabalí obsah všech souborů s příponou „class“ z adresáře
// „/home/gapo/mojedata“ a všech podadresářů a dále obsah ZIP souboru „/tmp/spojenyZip.zip“

// Ve výsledném zipu bude jako root adresář pro data z „/home/gapo/mojedata/“ tento adresář

// (bude tam vidět).
    system.zip("/tmp/ spojenyZip .zip", "/home/gapo/mojedata/*.class", "zip:/tmp/spojenyZip.zip", subdir, withParent)



system.unzip


file

skupina příkazů pro práci se soubory filesystému

file.load , file.copy ,

file.load

načte soubor nebo jeho část z filesystému a vrátí jako textovou proměnnou

syntaxe:

file.load(jméno_souboru, [konvertor]);

načte celý soubor

file.load(jméno_souboru, od_pozice, < počet_znaků | -1>, [konvertor]);

načte část souboru od ‚ od_pozice ‘ do ‚ do_pozice

file.load(jméno_souboru, string_určující_začátek , < string_určující_konec >, [konvertor]);

načte část souboru mezi texty ‚ string_určující_začátek ‘ a ‚ string_určující_konec

file.load(jméno_souboru, string_určující_začátek , < počet_znaků | -1 >, [konvertor]);

načte část souboru mezi texty ‚ string_určující_začátek ‘ a ‚ string_určující_konec

jméno_souboru

textová proměnná nebo výraz, který určí jméno souboru

od_pozice

pozice prvního načítaného znaku

počet_znaků

tolik znaků od výchozí pozice se načítá; pokud je –1 => načítá se soubor do konce

string_určující
_začátek

textový výraz nebo proměnná, jehož první výskyt se hledá a nastaví se jako výchozí bod pro načítání. Text ‚ string_určující_začátek ‘ není vložen do výsledného stringu.

string_určující
_konec

od výchozího bodu načte string až do výskytu tohoto textu. Text ‚ string_určující_konec ‘není vložen do výsledného stringu.

konvertor

konvertor, který se použije pro načtení. Pokud není, je zvolen default podle platformy (viz out.convertor ).

 

Poznámka:

file.copy

kopíruje obsah souboru do jiného souboru

syntaxe:
file.delete

smaže soubor

  file.save

uloží proměnnou do souboru. Pokud soubor se zadaným jménem existuje, bude přepsán. Pokud neexistuje, bude vytvořen.

syntaxe:
file.save( < proměnná | výzaz > , jméno_souboru, [ , konvertor ] )
kde

proměnná

textová proměnná, jejíž hodnota bude uloženo

výraz

výraz, který po vyhodnocení bude uložen

jméno_souboru

jméno souboru (lokální nebo na serveru), do kteráho bude proměnná nebo výraz uloženy

konvertor

pokud je zadán, použije se pro konverzi, jinak se konverze neprovádí.

 

file.append

Jako file.save, ale pokud soubor existuje, není přepdán ale data jsou přidána na jeho konec.

syntaxe:
file.move

přemístí soubor

syntaxe:
file.exists

testuje, jestli string je existující soubor. Vrací logickou proměnnou.

syntaxe:

file.exists( jméno_souboru )

file.getPath

vrátí úplnou cestu k souboru / adresářijako textovou proměnnou. U adresářů NEDÁVÁ na konec oddělovač (lomítko ...)

file.getName

vrátí jméno souboru / adresáře bez cesty jako textovou proměnnou

file.getParent

vrátí úplnou cestu k nadřízenému adresáři jako textovou proměnnou

file.isDirectory

testuje, jestli string je existující adresář. Vrací true pokud existuje a je adresář, jinak false.

syntaxe:
file. isDirectory( jméno_adresáře )

file.rename
přejmenuje soubor

syntaxe:
file.rename( starý_název, nový_název )

starý_název

Soubor, (včetně úplné cesty), který bude přejmenován

nový_název

Nový název souboru (bez cesty)

directory

skupina příkazů pro práci s adresáři (ve Windows: složkami) filesystému

directory.create
Vytvoří adresář zadaného jména

directory.delete
Smaže zadaný adresář

directory.copy
Kopíruje adresář (a případné podadresáře) na cílové místo

syntaxe:
directory.copy( výchozí_adresář , cílový adresář [ , filtr] [, recursive ] )

výchozí_adresář

výchozí adresář, jehož výpis se pořizuje

cílový_adresář

Cesta kam bude zkopírován obsah výchozího adresáře

filtr

maska; ve výsledku budou jen soubory / adresáře, které odpovídají této masce(hvězdičková konvence)

recursive

false / true; pokud je true, je kopírován i obsah podadresářů

directory.list, directory.listFiles

Příkaz directory.list vrátí resultset s kompletním výpisem zadaného adresáře, přílaz directory.listFiles vrátí seznam souborů (NIKOLI adresářů) v tadaném adresáři.

syntaxe:
directory.list( výchozí_adresář [ , filtr] [, recursive ] )
directory.listFiles( výchozí_adresář [ , filtr] [, recursive ] )

výchozí_adresář

výchozí adresář, jehož výpis se pořizuje

filtr

maska; ve výsledku budou jen soubory / adresáře, které odpovídají této masce(hvězdičková konvence)

recursive

false / true; pokud je true, je pořízen seznam pro všechny podadresáře

 

Vrácený resultset má tyto 4 sloupce:

Poř. Č.

Název

Význam

1

NAME

Jméno souboru nebo adresáře; jméno je vraceno relativně k výchozímu adresáři.

2

TYPE

znak určující typ objektu: “D” = adresář; “F” = soubor

3

SIZE

Velikost v bytech (má smysl jen u souborů)

4

DATE

Datum vytvoření nebo posledního zápisu



directory.remove
vymaže adresář nebo celou adresářovou strukturu

syntaxe:
directory.remove( rušený_adresář [ , filtr] [, recursive ] )

rušený_adresář

výchozí adresář, který bude smazán

filtr

maska; budou vymazány pouze soubory odpovídající masce (hvězdičková konvence)

recursive

false / true; pokud je true, budou vymazány i soubory z podadresářů (včetně prázdných podadresářů)

directory.exists
Vrátí true, pokud existujr zadané jméno na filesystému a je to adresář; jinak false;

syntaxe:
direcory.exists( jméno_adresáře )


directory.rename
přejmenuje adresář

syntaxe:
directory.rename( starý_název, nový_název )

starý_název

Adresář, (včetně úplné cesty), který bude přejmenován

nový_název

Nový název adresáře (bez cesty)

url

skupina příkazů pro manipulaci s daty prostřednictvím URL / URI

url.load

načte obsah url do textové proměnné.

syntaxe:
url.load(url, [ , přihlašovací_informace ] [ , konvertor ] );

url

vlastní URL, se kterým se pracuje

přihlašovací_
informace

zatím nic

konvertor

tento konverotr se použije při načtení dat z URL. Pokud chybí, je použit konvertor podle kódové stránky načíteného URL.

Poznámka:

Pokud se pozžije konvertor 'NoConvert', lze načítat binární data a ta pak (opět s konvertorem 'NoConvert') uložit do souboru, jiné URL, databáze a pod.

url.get

totéž jako url.load ;

url.save

url.post

uloží data do vybrané URL příkazem "post" a vrátí výsledek jako text. proměnnou

syntaxe:
url.post(url, co_se_posílá [, konvertor ])
kde

url = url, na které se data posílají

co_se_posílá = string, který je odeslán

url.timeout

nastaví timeoput pro práci s URL. Všechny operace musí proběhnout do nastavené doby, jinak bude příkaz stornován.

syntaxe:
url.timeout(čas_v_sekundách )

form

skupina příkazů pro práci s formulář i

form.create

vytvoří nový formulář

syntaxe:
form.create(jméno_formuláře, titul_nebo_zahlavi, parametry)

 

form.addItem

přidá položku do formuláře

syntaxe:
form.addItem(jméno_formuláře, typ_položky, pozice_položky_ve_formuláři, data_položky)

form.display

zobrazí vybraný formulář

syntaxe:
form.display(jméno_formuláře [, parametry_zobrazení])

Poznámka:

podle typu interface, pod kterým MSQL běží se formulář zobrazí v příslušném výstupním zařízení (v okně programu, do HTML stránky, na konzole …)

form.getValue

vrátí položku formuláře jako textovou proměnnou. Vrácená hodnota závisí na typu položky.

syntaxe:
form.getValue(jméno_formuláře, jméno_položky )
Jménu položky z vnořeného formuláře musí předcházet jméno tohoto (vnořeného) formuláře a tečka.

Příklad:

$a = form.getValue (“form1”, “vnoreny.polozka1”);

je totéž jako

$a = form.getValue (“vnoreny”, “polozka1”);