Per definire quali blocchi HTML fanno parte della transazione utilizzare un identificativo, chiamato gestore transazioni nella richiesta URL che richiama i blocchi HTML. Tre sono i passi della procedura per la definizione e l'uso di un gestore transazioni:
Per definire un gestore transazioni:
%DEFINE handle=""
Sintassi: @DTW_RTVHANDLE(nome_gestore)
Esempio:
@DTW_STATIC() %DEFINE handle = "" @DTW_RTVHANDLE(handle)
Il gestore transazioni può essere rappresentato da una qualsiasi stringa di caratteri. Tuttavia, la funzione DTW_RTVHANDLE() fornisce una misura di sicurezza generando un gestore transazioni univoco, evitando che altri possano richiamare una macro che verrebbe eseguita nella transazione.
Per specificare un gestore transazioni per Net.Data:
Specificare il valore del gestore transazioni per Net.Data con la funzione integrata DTW_ACCEPT(). Poichè questo gestore è parte delle informazioni contenute nelle intestazioni HTTP inviate al server, la funzione DTW_ACCEPT() deve essere chiamata prima che qualsiasi emissione venga generata dalla macro. In genere, costituisce il primo elemento nel blocco HTML.
Sintassi: @DTW_ACCEPT(nome_gestore, ["timeout"])
In cui timeout è un parametro facoltativo che specifica il numero di secondi che il server Web deve attendere per ottenere una risposta dal browser prima della chiusura della transazione.
E' possibile chiamare DTW_ACCEPT() all'interno di un blocco HTML o all'esterno di ogni blocco HTML. Se la funzione è chiamata all'esterno di ogni blocco HTML, il gestore transazioni e i valori di timeout facoltativi vanno applicati a tutti i blocchi HTML all'interno della macro.
Esempio 1: Specifica un gestore transazioni per le successive richieste URL da eseguire in questa transazione
@DTW_STATIC()
%DEFINE handle = ""
@DTW_RTVHANDLE(handle)
%HTML(Block1){
@DTW_ACCEPT(handle)
...
%}
Importante: Quando viene chiamato DTW_ACCEPT() come primo elemento nel blocco HTML, assicurarsi che non esistano spazi tra la riga in cui l'istruzione %HTML viene specificata e la riga della chiamata DTW_ACCEPT(). Net.Data considera gli spazi come testo da inviare al browser ed emette un messaggio di errore che indica che la chiamata DTW_ACCEPT() non è stata rilevata prima di inviare i dati al browser.
Esempio 2: Specifica un gestore transazioni che si applica a tutti i blocchi HTML della macro
@DTW_STATIC()
%DEFINE handle = ""
@DTW_RTVHANDLE(handle)
@DTW_ACCEPT(handle)
%HTML(Block1){
...
%}
%HTML(Block2){
...
%}
Per specificare il gestore quando viene richiamato un blocco HTML eseguito nella transazione:
Una volta generato un gestore transazioni e chiamata la funzione DTW_ACCEPT(), solo gli URL che presentano quel gestore transazioni possono essere eseguiti nella transazione. Il gestore transazioni deve seguire immediatamente il nome programma CGI nell'URL.
| Nota: | Ciascuno dei seguenti URL deve essere specificato come una stringa continua nel codice; vengono qui divisi per facilitarne la lettura. |
<A HREF="http://server/percorso_di_richiamo_Net.Data/gestore_transazione/ nomefile/blocco/[?nome=val&...]">testo</A>
<FORM METHOD=metodo ACTION="http://server/percorso_di_richiamo_Net.Data/gestore_transazioni/ nomefile/blocco/[?nome=val&...]">testo</FORM>
http://server/percorso_di_richiamo_Net.Data/gestore_transazioni/ nomefile/blocco/[?nome=val&...]
Parametri:
Generalmente per questi URL vanno forniti i collegamenti HTML, oppure specificare l'URL su una tag di azione modulo all'interno della macro.
Esempio 1: Un tipico blocco HTML che si collega ad altri richiami della macro eseguiti nella stessa transazione
@DTW_STATIC()
...
%define handle = ""
@DTW_RTVHANDLE(handle)
%html(report) {
@DTW_ACCEPT(handle)
...
<a href="/cgi-bin/db2www/$(handle)/qsys.lib/mylib.lib/
macros.file/pcgi1.mbr/report2">continue</a><br>
<a href="/cgi-bin/db2www/$(handle)/qsys.lib/mylib.lib/
macros.file/pcgi1.mbr/quit">quit</a><br>
%}
Esempio 2: Un tipico blocco HTML con un collegamento FORM ACTION ad un'altra macro
@DTW_STATIC()
...
%define handle = ""
@DTW_RTVHANDLE(handle)
%html(input) {
@DTW_ACCEPT(handle)
...
<form method=post action="/cgi-bin/db2www/$(handle)/qsys.lib/
mylib.lib/macros.file/pcgi1.mbr/report2">
<p>Tipo di hardware da visualizzare
<menu>
<li><input type="radio" name="hdware" value="MON" checked>Monitors
<li><input type="radio" name="hdware" value="PNT">Pointing devices
<li><input type="radio" name="hdware" value="PRT">Printers
<li><input type="radio" name="hdware" value="SCN">Scanners
</menu>
</form>
%}