您可以經由在呼叫 HTML 區塊的 URL 要求中使用名為異動 handle 的識別字, 定義哪些 HTML 區塊是異動的一部份。定義與使用異動 handle 有三個步驟:
定義異動 handle:
%DEFINE handle=""
語法: @DTW_RTVHANDLE(handle_name)
範例:
@DTW_STATIC() %DEFINE handle = "" @DTW_RTVHANDLE(handle)
異動 handle 可以是任何有效的字串。不過, DTW_RTVHANDLE() 函數會經由建立唯一異動 handle,提供一個安全措施, 阻止其他函數呼叫將在您的異動中執行的巨集。
設定 Net.Data 的異動 handle:
以 DTW_ACCEPT() 內建函數設定 Net.Data 的異動 handle 的值。 因為這個 handle 是傳送到伺服器的 HTTP 表頭中所含資訊的一部份, 所以在巨集建立任何輸出之前,須先呼叫 DTW_ACCEPT() 函數。一般而言, 它將是您的 HTML 區塊中的第一個元素。
語法: @DTW_ACCEPT(handle_name, ["timeout"])
其中 timeout 是可選用的參數,它設定在結束異動之前, Web 伺服器應等待來自瀏覽器的回應的秒數。
您可以在 HTML 區塊內或任何 HTML 區塊內呼叫 DTW_ACCEPT()。 如果在任何 HTML 區塊外呼叫函數,異動 handle 與可選用的逾時值將適用於巨集內的所有 HTML 區塊。
範例 1:設定將在這個異動中執行的後續 URL 要求的異動 handle
@DTW_STATIC()
%DEFINE handle = ""
@DTW_RTVHANDLE(handle)
%HTML(Block1){
@DTW_ACCEPT(handle)
...
%}
重要事項:當您呼叫 DTW_ACCEPT() 作為 HTML 區塊中的第一個元素, 請確定在設定 %HTML 陳述式的那一行上沒有空格,且 DTW_ACCEPT() 會呼叫本身。 Net.Data 會將空格視為要傳送到瀏覽器的文字,並發出一個錯誤, 因為在資料傳送到瀏覽器之前,找不到 DTW_ACCEPT() 呼叫。
範例 2:設定將適用於巨集中所有 HTML 區塊的異動 handle
@DTW_STATIC()
%DEFINE handle = ""
@DTW_RTVHANDLE(handle)
@DTW_ACCEPT(handle)
%HTML(Block1){
...
%}
%HTML(Block2){
...
%}
設定當您呼叫 HTML 區塊時要在您的異動中執行的 handle:
在您建立了異動 handle 並呼叫了 DTW_ACCEPT() 函數後, 僅有具有該異動 handle 的 URL 才能在您的異動中執行。 異動 handle 須緊跟在 URL 中的 CGI 程式名稱之後。
| 注意事項: | 下列每一 URL 須設定為您的程式碼中的連續字串; 不過,為了便於閱讀,在此會將它們分開。 |
<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&...]
參數:
一般而言,您將提供這些 URL 的 HTML 鏈結, 或在您的巨集中的套表動作標籤上設定 URL。
範例 1:具有在同一異動中執行的其他巨集呼叫的鏈結的典型 HTML 區塊
@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>
%}
範例 2:具有另一個巨集的 FORM ACTION 鏈結的典型 HTML 區塊
@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>您想要看到何種類型的硬體?
<menu>
<li><input type="radio" name="hdware" value="MON" checked>監視器
<li><input type="radio" name="hdware" value="PNT">指標裝置
<li><input type="radio" name="hdware" value="PRT">印表機
<li><input type="radio" name="hdware" value="SCN">掃描器
</menu>
</form>
%}