Net.Data Verwaltung und Programmierung für OS/400
Das folgende einfache Makro enthält mehrere
HTML-Blöcke, die in einer einzigen Transaktion ausgeführt werden:
@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">
click here to continue</a><br>
<a href="/cgi-bin/db2www/$(handle)/qsys.lib/mylib.lib/macros.file/pcgi1.mbr/quit">
click here to quit</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">
Click here to continue</a><br>
<a href="/cgi-bin/db2www/$(handle)/qsys.lib/mylib.lib/macros.file/pcgi1.mbr/quit">
Click here to quit</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">
Click here to quit</a><br>
%}
%html(quit) {
@dtw_terminate()
a = $(a)<br>
b = $(b)<br>
done
%}
Angenommen, der erste Aufruf bezieht sich auf den HTML-Block
report. In diesem Fall führt Net.Data folgende
Schritte aus:
- Die Funktion DTW_STATIC() wird aufgerufen. Sie gibt an, daß dieses
Makro permanent ist.
- Die Variable a wird als STATIC-Variable erstellt, weil die
Standardeinstellung für permanente Makros STATIC ist.
- Die Variable b wird als TRANSIENT-Variable erstellt, weil sie
explizit mit dem Attribut TRANSIENT definiert ist.
- Es wird DTW_RTVHANDLE() aufgerufen, wodurch eine Transaktionskennung
generiert und in die Variable handle gestellt wird.
- Es wird mit der Verarbeitung des HTML-Blocks report begonnen
und DTW_ACCEPT() aufgerufen, wodurch Net.Data darüber informiert wird,
daß die Transaktionskennung für diese Transaktion gilt.
- Es werden Ausgaben an den Browser gefunden, was dazu führt, daß
Net.Data die HTTP-Kopfdaten an den Web-Server sendet, um anzugeben, daß
eine Transaktion beginnt.
- Die HTML-Seite wird angezeigt. Die Variablen a und
b haben beiden den Wert 0.
Nachdem die erste Ausgabeseite an den Browser gesendet wurde, können die
Benutzer die Transaktion entweder fortsetzen oder beenden. Wenn sie
fortgesetzt wird, ruft der Web-Server folgende URL-Adresse auf:
/cgi-bin/db2www/$(handle)/qsys.lib/mylib.lib/macros.file/pcgi1.mbr/report2
Der Web-Server erkennt die Transaktionskennung als die Kennung, die von
Net.Data in den HTTP-Kopfdaten angegeben wurde. Er ruft
Net.Data als permanentes CGI-Programm auf, was bedeutet, daß der
Makroaufruf Teil der aktuellen Transaktion ist.
Wenn der HTML-Block report2 aufgerufen wird, führt
Net.Data folgende Schritte aus:
- Die Funktion DTW_STATIC() wird aufgerufen. Sie gibt an, daß dieses
Makro permanent ist.
- Es wird erkannt, daß Variable a eine STATIC-Variable ist, und
der aktuelle Wert wird beibehalten, statt die Variable mit 0 erneut zu
initialisieren.
- Es wird erkannt, daß Variable b eine TRANSIENT-Variable ist,
und es wird ein neues Exemplar der Variablen erstellt, das mit 0 initialisiert
wird.
- Es wird DTW_RTVHANDLE() aufgerufen, wodurch eine Transaktionskennung
generiert und in die Variable handle gestellt wird.
- Es wird mit der Verarbeitung des HTML-Blocks report2 begonnen
und DTW_ACCEPT() aufgerufen, wodurch Net.Data darüber informiert wird,
daß die Transaktionskennung für diese Transaktion gilt.
- Es werden Ausgaben an den Browser gefunden, was dazu führt, daß
Net.Data die HTTP-Kopfdaten an den Server sendet, um anzugeben, daß
eine Transaktion fortgeführt wird.
- Die HTML-Seite wird angezeigt. Variable a hat den Wert 2
und Variable b den Wert 0. Der Wert der Variablen
a stammt aus dem vorherigen Aufruf, weil es sich um eine statische
Variable handelt. Der Wert der Variablen b wird auf 0
zurückgesetzt.
Nachdem die zweite Seite an den Browser gesendet wurde, können die Benutzer
die Transaktion entweder fortsetzen oder beenden. Wenn sie beendet
wird, ruft der Web-Server folgende URL-Adresse auf:
/cgi-bin/db2www/$(handle)/qsys.lib/mylib.lib/macros.file/pcgi1.mbr/quit
Der Web-Server erkennt die Transaktionskennung als die Kennung, die von
Net.Data in den HTTP-Kopfdaten angegeben wurde, und ruft
Net.Data als permanentes CGI-Programm auf, was bedeutet, daß der
Makroaufruf Teil der aktuellen Transaktion ist.
Wenn der HTML-Block quit aufgerufen wird, führt Net.Data
folgende Schritte aus:
- Die Funktion DTW_STATIC() wird aufgerufen. Sie gibt an, daß dieses
Makro permanent ist.
- Es wird erkannt, daß Variable a eine STATIC-Variable ist, und
der aktuelle Wert wird beibehalten, statt die Variable mit 0 erneut zu
initialisieren.
- Es wird erkannt, daß Variable b eine TRANSIENT-Variable ist,
und es wird ein neues Exemplar der Variablen erstellt, das mit 0 initialisiert
wird.
- Es wird DTW_RTVHANDLE() aufgerufen, wodurch eine Transaktionskennung
generiert und in die Variable handle gestellt wird.
- Es wird mit der Verarbeitung des HTML-Blocks quit begonnen und
DTW_TERMINATE() aufgerufen, wodurch Net.Data darüber informiert wird,
daß dies der letzte Aufruf in dieser Transaktion ist.
- Es werden Ausgaben an den Browser gefunden, was dazu führt, daß
Net.Data die HTTP-Kopfdaten an den Server sendet, um anzugeben, daß
eine Transaktion beendet wird.
- Die HTML-Seite wird angezeigt. Variable a hat den Wert 4
und Variable b den Wert 0.
- Es werden alle Variablen und andere Ressourcen mit dem Gültigkeitsbereich
einer Transaktion gelöscht, weil der Aufruf von DTW_TERMINATE() ausgeführt
wurde.
[ Seitenanfang | Vorherige Seite | Nächste Seite | Inhaltsverzeichnis | Index ]