巨集是由兩個部份所組成:
宣告部份也可以含有其它語言結構與陳述式,如 EXEC 陳述式、IF 區塊、 INCLUDE 陳述式及 MESSAGE 區塊。有關語言結構的詳細資訊, 請參閱 Net.Data 參考手冊中有關語言結構一章
授權要訣︰確定執行 Net.Data 所依據的使用者 ID 有讀取和執行 EXEC 陳述式參照的檔案的權限, 以及有讀取 INCLUDE 陳述式參照的檔案的權限。請參閱授與 Net.Data 存取的檔案的存取權,以取得相關的詳細資訊。
在本節中,我們會舉一個簡單的 Net.Data 巨集為例, 來說明巨集語言的元素。這個範例巨集會呈現一個套表, 提示您輸入資訊以傳給 REXX 程式。巨集會將此資訊傳給稱為 ompsamp.cmd 的外部 REXX 程式,來回應使用者輸入的資料。 然後會將結果顯示在第二個 HTML 頁面上。
首先查看整個巨集,然後再查看每個區塊的明細:
%{ ********************** DEFINE 區塊 ************************%} %DEFINE { page_title="Net.Data 巨集模版" %} %{ ********************** FUNCTION 定義區塊 ************************%} %FUNCTION(DTW_REXX) rexx1 (IN input) returns(result) { %EXEC{ompsamp.cmd %} %} %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" /> </p> </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、Web 伺服器 API 或 Java Servlet, 透過 Net.Data 來存取它。若要呼叫巨集,Net.Data 需用到兩個參數:要處理的巨集名稱, 以及在該巨集中要顯示的 HTML 區段。
當呼叫巨集時,Net.Data 會從頭開始處理。 接下來的各節中,我們會告訴您 Net.Data 在處理檔案時會發生什麼事。