Sie definieren die HTML-Blöcke, die Bestandteil Ihrer Transaktion sind, indem Sie eine Kennung, die Transaktionskennung, in der URL-Anforderung verwenden, mit der die HTML-Blöcke aufgerufen werden. Die Definition und Verwendung einer Transaktionskennung umfaßt drei Schritte:
Gehen Sie wie folgt vor, um eine Transaktionskennung zu definieren:
%DEFINE handle=""
Syntax: @DTW_RTVHANDLE(handle_name)
Beispiel:
@DTW_STATIC() %DEFINE handle = "" @DTW_RTVHANDLE(handle)
Die Transaktionskennung kann eine beliebige gültige Zeichenfolge sein. Die Funktion DTW_RTVHANDLE() generiert jedoch aus Sicherheitsgründen eine eindeutige Transaktionskennung, wodurch andere daran gehindert werden, ein Makro aufzurufen, das in Ihrer Transaktion ausgeführt wird.
Gehen Sie wie folgt vor, um eine Transaktionskennung für Net.Data anzugeben:
Geben Sie den Wert der Transaktionskennung für Net.Data mit der integrierten Funktion DTW_ACCEPT() an. Weil diese Kennung Bestandteil der HTTP-Kopfdaten ist, die an den Server gesendet werden, muß die Funktion DTW_ACCEPT() aufgerufen werden, bevor Ausgaben vom Makro generiert werden. Meistens stellt sie das erste Element in Ihrem HTML-Block dar.
Syntax: @DTW_ACCEPT(handle_name, ["timeout"])
Hierbei ist timeout ein wahlfreier Parameter, der die Anzahl der Sekunden angibt, die der Web-Server auf eine Antwort vom Browser warten soll, bevor die Transaktion beendet wird.
Sie können DTW_ACCEPT() innerhalb oder außerhalb eines HTML-Blocks aufrufen. Wenn die Funktion außerhalb eines HTML-Blocks aufgerufen wird, gelten die Transaktionskennung und das wahlfreie Zeitlimit für alle HTML-Blöcke im Makro.
Beispiel 1: Gibt eine Transaktionskennung an, damit nachfolgende URL-Anforderungen in dieser Transaktion ausgeführt werden
@DTW_STATIC()
%DEFINE handle = ""
@DTW_RTVHANDLE(handle)
%HTML(Block1){
@DTW_ACCEPT(handle)
...
%}
Wichtig: Wenn Sie DTW_ACCEPT() als erstes Element im HTML-Block aufrufen, müssen Sie sicherstellen, daß es keinen Leerraum zwischen der Zeile, in der die Anweisung %HTML angegeben ist, und dem Aufruf von DTW_ACCEPT() selbst gibt. Net.Data hält den Leerraum für Text, der an den Browser gesendet wird, und löst einen Fehler aus, weil der Aufruf von DTW_ACCEPT() erst gefunden wird, wenn Daten an den Browser gesendet wurden.
Beispiel 2: Gibt eine Transaktionskennung an, die für alle HTML-Blöcke im Makro gilt
@DTW_STATIC()
%DEFINE handle = ""
@DTW_RTVHANDLE(handle)
@DTW_ACCEPT(handle)
%HTML(Block1){
...
%}
%HTML(Block2){
...
%}
Gehen Sie wie folgt vor, um die Kennung anzugeben, wenn ein HTML-Block aufgerufen wird, der in Ihrer Transaktion ausgeführt werden soll:
Nachdem Sie eine Transaktionskennung generiert und die Funktion DTW_ACCEPT() aufgerufen haben, können nur URL-Adressen mit der betreffenden Transaktionskennung in Ihrer Transaktion ausgeführt werden. Die Transaktionskennung muß in der URL-Adresse direkt nach dem CGI-Programmnamen stehen.
| Anmerkung: | Wenn Sie die Anweisungen in Ihrem Code eingeben, muß die URL-Adresse im Code in einer Zeile stehen und darf keine Leerzeichen enthalten. Sie wurde hier jedoch zur besseren Lesbarkeit auf zwei Zeilen umbrochen. |
<A HREF="http://server/Net.Data_invocation_path/transaction_handle/ filename/block/[?name=val&...]">any text</A>
<FORM METHOD=method ACTION="http://server/Net.Data_invocation_path/transaction_handle/ filename/block/[?name=val&...]">any text</FORM>
http://server/Net.Data_invocation_path/transaction_handle/ filename/block/[?name=val&...]
Parameter:
Normalerweise stellen Sie HTML-Programmverbindungen (Link) mit diesen URL-Adressen bereit oder geben die URL-Adresse in einem FORM ACTION-Befehl in Ihrem Makro an.
Beispiel 1: Ein typischer HTML-Block mit Programmverbindungen (Links) zu anderen Makroaufrufen, die in der gleichen Transaktion ausgeführt werden
@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>
%}
Beispiel 2: Ein typischer HTML-Block mit einer FORM ACTION-Verbindung mit einem anderen Makro
@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>What type of hardware do you want to see?
<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>
%}