Formßt bloku:
BeginProgram: nßzev_projektu
°ßdek_bloku_Program
EndProgram;
P°φkazy BeginProgram a EndProgram musφ b²t uvedeny na samostatn²ch °ßdcφch a musφ b²t napsßny bezprost°edn∞ na zaΦßtku °ßdku.
Nßzev_projektu je nepovinn² ·daj. Je to nßzev zdrojovΘho programu v danΘ aplikaci WinBase602, v jeho₧ kontextu mß WBIK provΘst p°φkazy z tohoto bloku Program
. P°ed provedenφm t∞chto p°φkaz∙ WBIK nastavφ uveden² zdrojov² program jako projekt. P°φkazy v bloku Program
budou pak moci volat procedury a funkce z tohoto projektu a pracovat s globßlnφmi prom∞nn²mi tohoto projektu. Pokud nßzev_projektu je vynechßn, pak musφ p°φkazy z bloku Program
volat pouze standardnφ funkce a procedury a nesmφ se odkazovat na prom∞nnΘ zdrojov²ch program∙ danΘ aplikace.
╪ßdek_bloku_Program m∙₧e b²t kter²koliv syntakticky a sΘmanticky sprßvn∞ napsan² °ßdek programu ve vnit°nφm programovacφm jazyku WinBase602.
V²znam:
Tento blok konektoru umo₧≥uje provΘst libovoln² zdrojov² text ve formßtu vnit°nφho programovacφho jazyka WinBase602. V∞tÜinou se vyu₧ije k zavolßnφ procedury s parametrem tvo°en²m vstupnφ prom∞nnou formulß°e a nßsledn∞ pomocφ GetVariable
se vypoΦtenΘ hodnoty p°edajφ zp∞t mezi prom∞nnΘ Üablony.
Pokud se m∙₧e v provßd∞nΘm programu vyskytnout chyba, na nφ₧ je t°eba reagovat (nap°. zm∞nou hodnoty ve formulß°i nebo ukonΦenφm provßd∞nφ konektoru), je t°eba v programu volat proceduru SetUserError
z knihovny WBINET.DLL. Tato procedura nastavφ chybu Φ. 90 (chyba vyvolanß aplikacφ) a jako chybovΘ hlßÜenφ nastavφ obsah p°edanΘho °et∞zce, tak₧e chybovß Üablona na tuto chybu m∙₧e reagovat. . Bezprost°edn∞ po ukonΦenφ bloku Program
(nebo procedury RunProgram
), ve kterΘm byla tato procedura zavolßna, Internet klient ukonΦφ provßd∞nφ WBC konektoru a vygeneruje chybovou HTML strßnku dle nastavenΘ chybovΘ Üablony.
Pokud je v konektoru uvedeno n∞kolik blok∙ SQLStatement
a Program
, pak je WBIK provede v tom po°adφ, v jakΘm jsou uvedeny ve WBC konektoru. Nßsledujφcφ blok (SQLStatement
i Program
) bude pracovat s daty, do kter²ch budou zahrnuty v²sledky vÜech p°φkaz∙ v p°edchozφch blocφch SQLStatement
a Program
.
P°ed provedenφm zdrojovΘho textu WBIK je v∞tÜinou nutnΘ nastavit projekt danΘ aplikace. P°ed provedenφm prvnφho bloku Program
z danΘho WBC konektoru nenφ nastaven projekt ₧ßdn². Po provedenφ prvnφho bloku Program
, kter² po₧aduje nastavit projekt, z∙stane projekt nastaven a₧ do okam₧iku, kdy dalÜφ blok Program
bude po₧adovat nastavenφ projektu. Tento fakt tedy znamenß, ₧e pokud prvnφ blok Program
nastavφ urΦit² projekt a druh² blok Program
nebude po₧adovat nastavenφ projektu, pak p°φkazy druhΘho bloku Program
budou provedeny v kontextu projektu, kter² nastavil prvnφ blok Program
. Znamenß to takΘ, ₧e globßlnφ prom∞nnΘ projektu budou mφt tu hodnotu, kterou m∞ly p°i ukonΦenφ prvnφho bloku Program
. Tφmto zp∙sobem m∙₧eme p°edßvat ·daje mezi bloky Program
.
Na tyto vlastnosti nemß vliv ani to, ₧e mezi uveden²mi bloky Program
je (jeden, nebo n∞kolik) blok SQLStatement
. Druh² blok Program
bude v tomto p°φpad∞ pracovat s obsahem databßze, kter² bude obsahovat v²sledky SQL p°φkaz∙ v bloku (blocφch) SQLStatement
.
Pokud by druh² blok Program
nastavoval ten sam² projekt, budou vÜechny globßlnφ prom∞nnΘ projektu inicializovßny (vynulovßny). Toto je zp∙sobeno tφm, ₧e p°i nastavenφ projektu (i toho samΘho, kter² je momentßln∞ nastaven) jsou inicializovßny vÜechny globßlnφ prom∞nnΘ danΘho projektu.
Pozor!!
V procedu°e vnit°nφho jazyka provßd∞nΘ v bloku Program
nesm∞jφ b²t provßd∞ny akce, kterΘ vy₧adujφ interakci s u₧ivatelem!! P°edevÜφm nesmφ tato procedura otevφrat jakßkoliv informaΦnφ okna (Info_box
, YesNo_box
, Input_box
), okna se zprßvou o chyb∞ (Signalize
), ani ₧ßdnΘ prvky prezentaΦnφ vrstvy (pohledy, menu atd.)!! Pokud by tyto akce procedura provßd∞la, bude po jejich zobrazenφ Φekat na akci u₧ivatele (stisknutφ tlaΦφtka ap.) a dφky tomu WBIK, kter² byl pou₧it k provedenφ tohoto konektoru, nikdy neskonΦφ sv∙j b∞h. Spolu s tφmto bude webserver a browser nekoneΦn∞ dlouho Φekat na ukonΦenφ internetovΘho klienta. TakΘ nelze nastavovat tiskßrny, tisknout apod.
Na chybu p°i vykonßvßnφ procedury je nutnΘ reagovat pouze volßnφm funkce SetUserError
.
P°φklad 1:
V konektoru se zavolß procedura Soucet_obj z projektu Sumace a p°edß se jφ parametr. VypoΦtenΘ hodnoty se pomocφ GetVariable
dostanou zp∞t (vytvo°φ se prom∞nnΘ WBIK s hodnotami globßlnφch prom∞nn²ch projektu Sumace) a je mo₧no je pou₧φt v nßsledujφcφ HTW Üablon∞.
BeginProgram: Sumace
Soucet_obj(%id_obj%);
EndProgram;
GetVariable: w_bez0:=Nr_bez0
GetVariable: w_bez1:=Nr_bez1
GetVariable: w_bez2:=Nr_bez2
P°φklad 2:
V Üablon∞ je t°eba zobrazit datum ve specißlnφm formßtu, kterΘho nelze dosßhnout prost°edky HTW:
V programu nazvanΘm WWW_procs
ulo₧enΘm v aplikaci (jedin² program => tvo°φ projekt) je vytvo°ena procedura Datum()
:
var prom_proj : string[200]; procedure Datum(); var i : integer; ss : string[20]; pomstr : string[200]; begin i := Day_of_week(Today);
ss := "Dnes je "+(i=0 ? "ned∞le" : i=1 ? "pond∞lφ" : i=2 ? "·ter²" : i=3 ? "st°eda" : i=4 ? "Φtvrtek": i=5 ?
"pßtek" : "sobota"); pomstr := ss+", "+Date2str(Today,4); prom_proj := pomstr; end; begin end.
Konektor m∙₧e tuto proceduru zavolat a hodnotu v globßlnφ prom∞nnΘ projektu p°ekopφrovat do novΘ HTW prom∞nnΘ nazvanΘ Datestr
:
<%WBC%>
...
BeginProgram: WWW_procs
Datum();
EndProgram:
GetVariable: Datestr:=prom_proj;
<%/WBC%>
V nßsledujφcφ Üablon∞ lze datum vypsat nap°.:
Vφtejte na naÜich strßnkßch - <%Datestr%><BR>