巨集是由兩個部份所組成:
宣告部份也可以含有其他語言結構與陳述式,如 EXEC 陳述式、IF 區塊、 INCLUDE 陳述式及 MESSAGE 區塊。有關語言結構的詳細資訊, 請參閱 Net.Data 參考手冊中有關語言結構一章
授權要訣:確定 Web 伺服器有權存取 EXEC 和 INCLUDE 陳述式所參照的檔案。 有關的詳細資訊, 請參閱"授與 Net.Data 存取的物件的存取權"。
在本節中,我們會舉一個簡單的 Net.Data 巨集為例, 來說明巨集語言的元素。這個範例巨集會呈現一個套表, 提示您輸入資訊以傳給 REXX 程式。巨集會將此資訊傳給稱為 ompsamp.mbr 的外部 REXX 程式,來回應使用者輸入的資料。 然後會將結果顯示在第二個 HTML 頁面上。
首先查看整個巨集,然後再查看每個區塊的明細:
%{ ********************** DEFINE 區塊 ************************%}
%DEFINE {
page_title="Net.Data 巨集模版"
%}
%{ ********************** FUNCTION 定義區塊 ************************%}
%FUNCTION(DTW_REXX) rexx1 (IN input) returns(result)
{
%EXEC{ompsamp.mbr %}
%}
%FUNCTION(DTW_REXX) today () RETURNS(result)
{
result = date()
%}
%{ ********************** HTML 區塊:輸入 ************************%}
%HTML(INPUT) {
<html>
<head>
<title>$(page_title)</title>
</head><body>
<h1>輸入套表</h1>
今天是 @today()
<FORM METHOD="post" ACTION="OUTPUT">
請輸入一些要傳給 REXX 程式的資料:
<INPUT NAME="input_data" TYPE="text" SIZE="30">
<p>
<INPUT TYPE="submit" VALUE="Enter">
</form>
<hr>
<p>[<a href="/">首頁</a>]
</body></html>
%}
%{ ********************** HTML 區塊:輸出 ************************%}
%HTML (OUTPUT) {
<html>
<head>
<title>$(page_title)</title>
</head><body>
<h1>輸出頁</h1>
<p>@rexx1(input_data)
<p><hr>
<p>[<a href="/">首頁</a> |
<a href="input">前一頁</a>]
</body></html>
%}
樣本巨集由四個主要區塊組成:DEFINE、FUNCTION、與兩個 HTML 區塊。 在同一 Net.Data 巨集中,您可以使用多個 DEFINE, FUNCTION 與 HTML 區塊。
這兩個 HTML 區塊含有如 HTML 文字呈現陳述式,使您便於撰寫 Web 巨集。 如果您已經十分熟悉 HTML,則建置巨集的工作, 只是新增一些要在伺服器上動態處理的巨集陳述式,以及要傳到資料庫的 SQL 陳述式。
雖然,巨集類似於 HTML 文件,但 Web 伺服器會使用 CGI, 透過 Net.Data 來存取它。若要呼叫巨集,Net.Data 需用到兩個參數:要處理的巨集名稱, 以及在該巨集中要顯示的 HTML 區段。
當呼叫巨集時,Net.Data 會從頭開始處理。 接下來的幾節中,我們會告訴您 Net.Data 在處理檔案時會發生什麼事。