以下这个简单的宏包含了多个在一个单独事务中运行的 HTML 块:
@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
%}
假定第一个调用是调用 HTML 块 report,则 Net.Data:
在将第一个页面输出发送给浏览器之后,用户可以选择继续该事务或者退出。如果选择继续, 则 Web 服务器将调用 URL:
/cgi-bin/db2www/$(handle)/qsys.lib/mylib.lib/macros.file/pcgi1.mbr/report2
Web 服务器将事务句柄识别为 Net.Data 在 HTTP 首部所指定的句柄。它将 Net.Data 作为 持久性 CGI 程序调用,这意味着宏调用是当前事务的一部分。
调用 HTML 块 report2 时,Net.Data:
在将第二个页面发送给浏览器之后,用户可以选择继续该事务或者退出。如果选择退出, 则 Web 服务器将调用以下 URL:
/cgi-bin/db2www/$(handle)/qsys.lib/mylib.lib/macros.file/pcgi1.mbr/quit
Web 服务器将事务句柄识别为 Net.Data 在 HTTP 首部所指定的句柄,并将 Net.Data 作为 持久性 CGI 程序调用,这意味着宏调用是当前事务的一部分。
调用 HTML 块退出时,Net.Data: