Net.Data: Guida alla gestione e alla programmazione per OS/400
La seguente macro semplificata contiene blocchi
HTML multipli eseguiti in una transazione singola:
@dtw_static()
%define a = "0"
%define(transient) b = "0"
%define handle = ""
@dtw_rtvhandle(handle)
%html(report) {
@dtw_accept(handle)
a = $(a)<br>
b = $(b)<br>
@dtw_add(a, "2", a)
@dtw_add(b, "2", b)
<a href="/cgi-bin/db2www/$(handle)/qsys.lib/mylib.lib/macros.file/pcgi1.mbr/report2">
fare clic qui per continuare</a><br>
<a href="/cgi-bin/db2www/$(handle)/qsys.lib/mylib.lib/macros.file/pcgi1.mbr/quit">
fare clic qui per uscire</a><br>
%}
%html(report2) {
@dtw_accept(handle)
a = $(a)<br>
b = $(b)<br>
@dtw_add(a, "2", a)
@dtw_add(b, "2", b)
<a href="/cgi-bin/db2www/$(handle)/qsys.lib/mylib.lib/macros.file/pcgi1.mbr/report3">
Fare clic qui per continuare</a><br>
<a href="/cgi-bin/db2www/$(handle)/qsys.lib/mylib.lib/macros.file/pcgi1.mbr/quit">
Fare clic qui per uscire</a><br>
%}
%html(report3) {
@dtw_accept(handle)
a = $(a)<br>
b = $(b)<br>
@dtw_add(a, "2", a)
@dtw_add(b, "2", b)
<a href="/cgi-bin/db2www/$(handle)/qsys.lib/mylib.lib/macros.file/pcgi1.mbr/quit">
Fare clic qui per uscire</a><br>
%}
%html(quit) {
@dtw_terminate()
a = $(a)<br>
b = $(b)<br>
done
%}
Se si considera che la prima chiamata è per il blocco HTML
report, Net.Data:
- Chiama la funzione DTW_STATIC() che indica che la macro è
persistente.
- Crea la variabile a come una variabile STATIC poichè il valore
predefinito per le macro persistenti è STATIC.
- Crea la variabile b come una variabile TRANSIENT poichè viene
esplicitamente definita con l'attributo TRANSIENT.
- Chiama DTW_RTVHANDLE(), che genera un gestore transazioni e lo inserisce
nella variabile handle.
- Avvia l'elaborazione del blocco HTML report e chiama
DTW_ACCEPT(), che indica a Net.Data il gestore transazioni per quella
transazione.
- Rileva l'emissione da inviare al browser, che induce Net.Data
ad inviare l'intestazione HTTP al server Web che indica l'avvio di
una transazione.
- Visualizza la pagina HTML. Le variabili a e b
hanno entrambe un valore 0.
Dopo che l'emissione della prima pagina viene inviata al browser, gli
utenti possono scegliere di continuare la transazione o di uscire. Nel
primo caso, il server Web richiama l'URL:
/cgi-bin/db2www/$(handle)/qsys.lib/mylib.lib/macros.file/pcgi1.mbr/report2
Il server Web riconosce il gestore transazioni come quello specificato da
Net.Data nell'intestazione HTTP. Net.Data viene
richiamato come programma CGI persistente, che significa che la chiamata macro
è parte della transazione corrente.
Quando viene chiamato un blocco HTML report2,
Net.Data:
- Chiama la funzione DTW_STATIC() che indica che la macro è
persistente.
- Riconosce che la variabile a è una variabile STATIC e mantiene
il valore corrente invece di riportarlo a 0.
- Riconosce che la variabile b è una variabile TRANSIENT, crea
una nuova istanza della variabile e la riporta a 0.
- Chiama DTW_RTVHANDLE(), che genera un gestore transazioni e lo inserisce
nella variabile handle.
- Avvia l'elaborazione del blocco HTML report2 e chiama
DTW_ACCEPT(), che indica a Net.Data il gestore transazioni per quella
transazione.
- Rileva l'emissione da inviare al browser, che induce Net.Data
ad inviare l'intestazione HTTP al server che indica che una transazione
continua.
- Visualizza la pagina HTML. La variabile a avrà un valore 2
e la variabile b un valore 0. Il valore della variabile
a viene salvato dalla precedente chiamata poichè si tratta di una
variabile statica. Il valore della variabile b viene
riportato a 0.
Dopo che la seconda pagina viene inviata al browser, l'utente può
scegliere di continuare la transazione o di uscire. Nel secondo caso,
il server Web richiama l'URL:
/cgi-bin/db2www/$(handle)/qsys.lib/mylib.lib/macros.file/pcgi1.mbr/quit
Il server Web riconosce il gestore transazioni come quello specificato da
Net.Data nell'intestazione HTTP e richiede Net.Data come
programma CGI persistente, che significa che la chiamata della macro è parte
della transazione corrente.
Quando viene chiamato un blocco HTML quit,
Net.Data:
- Chiama la funzione DTW_STATIC() che indica che la macro è
persistente.
- Riconosce che la variabile a è una variabile STATIC e mantiene
il valore corrente invece di riportarlo a 0.
- Riconosce che la variabile b è una variabile TRANSIENT, crea
una nuova istanza della variabile e la riporta a 0.
- Chiama DTW_RTVHANDLE(), che genera un gestore transazioni e lo inserisce
nella variabile handle.
- Avvia l'elaborazione del blocco HTML quit e chiama
DTW_TERMINATE(), che indica a Net.Data che si tratta dell'ultima
chiamata per questa transazione.
- Rileva l'emissione da inviare al browser, che induce Net.Data
ad inviare l'intestazione HTTP al server che indica che una transazione
sta terminando.
- Visualizza la pagina HTML. La variabile a ha un valore 4
e la variabile b un valore 0.
- Aggiorna tutte le variabili e le altre risorse nell'ambito del
livello di transazione, poichè è stata eseguita la chiamata
DTW_TERMINATE().
[ Inizio pagina | Pagina precedente | Pagina successiva | Indice | Indice analitico ]