管理及程式設計指南

使用巨集呼叫 Net.Data (巨集要求)

從屬站瀏覽器透過使用 URL 格式傳送要求呼叫 Net.Data。 本節說明如何在 URL 要求指定巨集呼叫 Net.Data。

傳給 Net.Data 的要求有下列格式。

 http://server/Net.Data_invocation_path/filename/block[?name=val&...]

參數:

server
指定 Web 伺服器的名稱及路徑。若伺服器為區域伺服器, 您可以省略伺服器名稱,而使用相關的 URL。

Net.Data_invocation_path
Net.Data 可執行檔、servlet 類別、DLL 或共用程式庫的路徑與檔名。例如,/cgi-bin/db2www/

filename
指定 Net.Data 的巨集檔名稱。Net.Data 會進行搜尋, 並嘗試使這個檔名符合 MACRO_PATH 起始設定路徑變數中定義的路徑陳述式。請參閱 MACRO_PATH, 以取得相關詳細資訊。

block
指定參照的 Net.Data 巨集中的 HTML 區塊名稱。

?name=val&...
指定要傳送給 Net.Data 的一或多個選用性參數。

請直接在瀏覽器指定這個 URL。或者在 HTML 鏈結中使用這個 URL 或使用如下的格式建置這個 URL:

參數:

method
指定與此套表搭配使用的 HTML 方法。

URL
指定用來執行 Net.Data 巨集的 URL,這些是上面描述的參數。

範例

下列範例列出呼叫 Net.Data 的各種方法:

範例 1:使用 HTML 鏈結呼叫 Net.Data:

<a href="http://server/cgi-bin/db2www/myMacro.d2w/report">
.
.
.
</a>
 

範例 2:使用套表呼叫 Net.Data

<form method=post
 action="http://server/cgi-bin/db2www/myMacro.d2w/report">
.
.
.
</form>
 

下列各節描述 HTML 鏈結與套表,以及如何使用它們呼叫 Net.Data 的詳細資訊:

HTML 鏈結

如果您正在製作 Web 網頁,則您可以建立一個 HTML 鏈結, 造成 HTML 區塊的執行。使用者在瀏覽器上按一下定義為 HTML 鏈結的文字或影像時, Net.Data 會執行巨集中的 HTML 區塊。

若要建立 HTML 鏈結,請使用 HTML <a> 標籤。決定哪些文字或圖形, 您想要使用它們作為 Net.Data 巨集的超鏈結,然後以 <a> 及 </a> 標籤來圍住它。 在 <a> 標籤的 HREF 屬性中,請指定巨集及 HTML 區塊。

下列範例顯示當使用者在網頁上選取文字「列示所有監視器」時,可執行 SQL 查詢的鏈結。

<a href="http://server/cgi-bin/db2www/listA.d2w/report">
列示所有監視器</a>

按一下鏈結即可呼叫名為 listA.d2w 的巨集,它具有名為 "report" 的 HTML 區塊, 如同下列範例所示一般:

%DEFINE DATABASE="MNS97"
 
 
 %FUNCTION(DTW_SQL) myQuery(){
SELECT MODNO, COST, DESCRIP FROM EQPTABLE
WHERE TYPE='MONITOR'
%}
 
%HTML(report){
@myQuery()
%}

此查詢會傳回一個表格,內容包含由 EQPTABLE 表格內所描述之每種監視器的型號、 成本及說明資訊。 這個範例會藉由因產生預設報表來顯示查詢結果。 請參閱報表區塊,以取得如何使用 REPORT 區塊來自行設定報表的資訊。

HTML 套表

您可使用 HTML 套表動態地自行設定 Net.Data 巨集的執行。套表可讓使用者提供會影響巨集執行, 及 Net.Data 所建置之網頁內容的輸入值。

下列範例藉由讓使用者在瀏覽器中使用簡式 HTML 套表, 以選取所要顯示的產品類型資訊, 來建置 HTML 鏈結中的監視器列示範例。

<h1>Hardware Query Form</h1>
<hr>
<form method=post action="/cgi-bin/db2www/equiplst.d2w/report">
<p>What type of hardware do you want to see?</p>
<menu>
<li><input type="radio" name="hdware" value="mon" checked /> Monitors</li>
<li><input type="radio" name="hdware" value="pnt" /> Pointing devices</li>
<li><input type="radio" name="hdware" value="prt" /> Printers</li>
<li><input type="radio" name="hdware" value="scn" /> Scanners</li>
</menu>
 
<input type="submit" value="submit" />
</form>
 

使用者在瀏覽器上選擇並按一下「提交」按鈕後, Web 伺服器就會處理用來呼叫 Net.Data 之 FORM 標籤的 ACTION 參數。然後, Net.Data 會在 equiplst.d2w 巨集中執行 HTML 報表區塊:

%DEFINE DATABASE="MNS97"
 
 %FUNCTION(DTW_SQL) myQuery(){
SELECT MODNO, COST, DESCRIP FROM EQPTABLE
WHERE TYPE='$(hdware)'
%REPORT{
<h3>Here is the list you requested</h3>
%ROW{
<hr>
$(N1): $(V1), $(N2): $(V2)
<p>$(N3): $(V3)
%}
%}
%}
 
%HTML(report){
@myQuery()
%}

在上面範例中,SQL 陳述式中的 TYPE=$(hdware) 的值取自於 HTML 套表輸入。 關於在 ROW 區塊使用的變數詳細說明,請參閱 Net.Data 參考手冊

Net.Data 特殊處理的一種輸入類型是 FILE 輸入類型。 使用本輸入類型,使用者可將檔案上載到伺服器,伺服器上的 Net.Data 或其它應用程式會進一步處理檔案。

Net.Data 不轉換上載的檔案,它將該檔案視為二進位資料。 上載的檔案儲存於在 DTW_UPLOAD_DIR 指定的目錄而且給予唯一名稱,使用下列規則決定該名稱:

語法:

MacroFileName + '.' + FormVarName + '.' + UniqueIdentifier + '.' + FormFileName

MacroFileName
處理要求的巨集名稱 (套表中呼叫的巨集)。 只使用檔名,不是使用完整路徑。

FormVarName
用來識別使用套表中的檔案的變數名稱。

UniqueIdentifier
用來確定唯一性的字串。建構這個字串會依 Net.Data 平台而有差異。 例如,在 OS/400 上使用下列方法:
YYYYMMDDHHMMSSCCC + '-' + PID + '-' + TID
 

其中︰

YYYY = 年
MM   = 月
DD   = 日
HH   = 小時 (00-23)
SS   = 秒
CCC  = 毫秒
PID  = 程序 ID
TID  = 執行緒 ID
 

範例:

首先在 Net.Data 起始設定檔設定 DTW_UPLOAD_DIR︰

DTW_UPLOAD_DIR /home/http/pub/upload

然後建構一個呼叫巨集的套表並傳送檔名和檔案作為參數︰

<form method="post" enctype="multipart/form-data"
      action="/netdatadev/form.dtw/report">
  <input type="text" name="name"  value="john doe" />Enter name
  <input type="text" name="zipno" value="55901" />Enter number
  <input type="file" name="resume" value="myresume.txt" />Resume
  <input type="submit" />
</form>

若使用者接受預設值並提出此套表,結果檔會以下列方式出現在伺服器:

/home/http/pub/upload/form.dtw.resume.20000313112341275-6245-021.myresume.txt


[ 頁面頂端 | 前一頁 | 下一頁 | 目錄 | 索引 ]