HTML 區塊會定義網頁的配置、參照變數,以及呼叫函數。HTML 區塊會作為巨集的進入與跳出點。 一定會在 Net.Data 巨集要求中指定 HTML 區塊,且每一巨集至少須有一個 HTML 區塊。
範例巨集中的第一個 HTML 區塊名為 INPUT。 HTML(INPUT) 含有具有一個輸入欄位的簡單套表的 HTML。
%{ ********************** HTML 區塊:輸入 ************************%} %HTML (INPUT) { <--- 識別出此 HTML 區塊的名稱。 <html> <head> <title>$(page_title)</title> <--- 請注意變數替代。 </head><body> <h1>輸入套表</h1> 今天是 @today() <--- 此行包含一個函數呼叫。 <form method="post" action="output"> <--- 提交此套表時, 會呼叫 "OUTPUT" HTML 區塊。<p> 請輸入一些要傳給 REXX 程式的資料: <input name="input_data" <--- "input_data" 是定義於套表 TYPE="text" SIZE="30" /> 被提交時,而且可被 巨集的其它地方參考。它被起始設定成使 用者在輸入欄位中所鍵入的任何資料。 </p> <input type="submit" value="enter" /> <hr> <p> [ <a href="/">Home page</a>]</p> </body><html> %} <--- 關閉此區塊。
整個區塊都用 HTML 區塊識別字 %HTML (INPUT) {...%} 圍住。 INPUT 指出此區塊的名稱。 名稱可以含有任何英數字元、底線或句點。 HTML <title> 標籤包含變數替代的範例。 變數 page_title 的值,會取代套表的標題。
此區塊中還含有一個函數呼叫。 表示式 @today() 是對函數 today 的呼叫。 此函數是定義在上面描述的 FUNCTION 區塊中。 Net.Data 將 today 函數的結果,亦即本日, 插入與 @today() 表示式同一位置 HTML 本文中。
FORM 陳述式中的 ACTION 參數,提供 HTML 區塊之間或巨集之間的導引範例。 若是參照 ACTION 參數中的另一個區塊名稱,則當提出套表時, 即會存取該區塊。 任何來自 HTML 套表的輸入資料,都會被當成隱含變數來傳給區塊。 定義在此套表中的單一輸入欄位,亦可適用。當提出套表後, 在此套表中輸入的資料將透過變數 input_data, 傳遞到 HTML(OUTPUT) 區塊。
只要巨集是位在同一 Web 伺服器上, 您便可以使用相關參照方式,來存取其它巨集中的 HTML 區塊。例如, ACTION 參數 ACTION="../othermacro.d2w/main" 可存取巨集 othermacro.d2w 中稱為 main 的 HTML 區塊。 同樣地,此套表中輸入的任何資料, 皆會透過 input_data 變數傳送到這個巨集。
當您呼叫 Net.Data 時,您是以當成 URL 的一部份來傳遞變數。例如:
<a href="/cgi-bin/db2www/othermacro.d2w/main?input_data=value">下一個巨集</a>
您可以經由參照套表中指定的變數名稱,來存取或操作套表資料。
範例中的下一個區塊為 HTML(OUTPUT) 區塊。它包含 HTML 標籤和 Net.Data 巨集陳述式, 這些陳述式定義 HTML(OUTPUT) 要求所處理的輸出。
%{ ********************** HTML 區塊:輸出 ************************%} %HTML (OUTPUT) { <html> <head> <title>$(page_title)</title> <--- 其它替代。 </head><body> <h1>輸出頁</h1> <p>@rexx1(input_data) <--- 此行包含呼叫函數 rexx1, 及傳送 "input_data" 引數給函數。 <p> <hr> <p> [ <a href="/">首頁</a> | <a href="input">前一頁</a>] %}
類似 HTML(OUTPUT) 區塊,此區塊是一個標準的 HTML, 再加上用來替代變數的巨集陳述式以及一個函數呼叫。同樣地, page_title 變數被取代成標題陳述式。 一如前述,本區塊中含有一個函數呼叫。 在此例中,它會呼叫函數 rexx1, 並將變數 input_data 的內容傳遞給函數, 而內容是來自輸入區塊中定義的套表。 您可以和函數間互傳多個變數。 函數定義會指定要傳遞的變數之數目與用法。