IBM Books

Net.Data 參考手冊


一般函數

一般函數可協助您使用 Net.Data 來開發網頁,且不適用於其他的種類。 下列函數都是一般目的函數:

DTW_ADDQUOTE


AIX HP-UX OS/2 OS/390 OS/400 SCO SUN Win NT
X X X X X X X X

目的

將在輸入字串中的單引號置換為兩個單引號。當字串包含單引號時, 需要置換以使 SQL 陳述式可以正確的 處理。

請考慮對所有的 SQL INPUT 陳述式使用這個函數。例如,如果您如同下列 的範例一般,將 O'Brien 輸入為姓,則單引號將會造成一個錯誤:

INSERT INTO USER1.CUSTABLE (LNAME, FNAME)
VALUES ('O'Brien', 'Patrick')

使用 DTW_ADDQUOTE 函數會變更 SQL 陳述式並防止錯誤發生:

INSERT INTO USER1.CUSTABLE (LNAME, FNAME)
VALUES ('O''Brien', 'Patrick')

格式

@DTW_ADDQUOTE(stringIn, stringOut)

@DTW_rADDQUOTE(stringIn)

@DTW_mADDQUOTE(stringMult, stringMult2, ..., stringMultn)


表 25. DTW_ADDQUOTE 參數
資料類型 參數 使用 說明
字串 stringIn IN 一個變數或文字字串。 DTW_mADDQUOTE 可以有多個輸入字串。
字串 stringOut OUT 包含 stringIn 已修改格式的 變數。
字串 stringMult INOUT

  • 在輸入上:包含字串的變數。

  • 在輸出上:包含輸入字串的一個變數,該字串的每一個 單引號(')字元都被兩個單引號字元所置換。

範例

範例 1:在 OUT 參數新增一個額外的 單引號

@DTW_ADDQUOTE(string1,string2)

範例 2:在函數呼叫的傳回值上新增額外的 單引號

@DTW_rADDQUOTE("The title of the article is 'Once upon a time'")

範例 3:在函數呼叫的每一個 INOUT 參數上新增額外的 單引號

@DTW_mADDQUOTE(string1,string2)

範例 4:在插入 DB2 表格的資料中插入額外的 單引號

%FUNCTION(DTW_SQL) insertName(){
INSERT INTO USER1.CUSTABLE (LNAME,FNAME)
VALUES ('@DTW_rADDQUOTE(lastname)', '@DTW_rADDQUOTE(firstname)')
%}

DTW_CACHE_PAGE


AIX HP-UX OS/2 OS/390 OS/400 SCO SUN Win NT
X






目的

在巨集檔中函數的位置後開始快取 所有 HTML 輸出。當被呼叫時,這個函數會嘗試從快取記憶體取回指定的 頁面,並將它傳送到 Web 瀏覽器,就如同此頁面是由巨集 所產生的。如果頁面找到而且未過期, Net.Data 就停止巨集的處理程序、跳出巨集檔、並將快取的頁面 傳送到 Web 瀏覽器。

如果所要求的頁面不在快取記憶體中,或現有的快取頁面 已經大於 age 值,Net.Data 會產生新的輸出頁面。 當巨集順利的完成後,Net.Data 會將新頁面傳送到 瀏覽器,並同時快取頁面。

決定 DTW_CACHE_PAGE 函數在巨集檔 中的位置:

格式

@DTW_CACHE_PAGE(cacheid, url, age, status)


表 26. DTW_CACHE_PAGE 參數
參數 使用 說明
cache_id IN 一個字串變數用來識別頁面將被放置的快取記憶體。
cached_page_ID IN 一個包含識別字的字串變數, 在後續的 DTW_CACHE_PAGE 快取要求中,用來指定快取頁面的位置。 字串可以是一個 URL。
age IN 一個字串變數, 包含了以秒為單位的時間長度。這個參數決定一個頁面是否過期。如果 頁面已經比 age 還要舊時,此頁面就不會被傳送到瀏覽器。

如果 age 被設定為 -1,且頁面存在快取記憶體中,則不論其經歷時間, Net.Data 會直接從快取記憶體中將它傳送到 Web 瀏覽器。 Net.Data 不會置換快取記憶體中的頁面。

status OUT 顯示快取頁面狀態的 字串變數。可能的值是以小寫顯示:

  • ok:當巨集執行終止時,輸出頁面會被送到 快取記憶體。

  • new:頁面不在快取記憶體中。

  • renew:頁面在快取記憶體中,但已過期。

  • no_cache:所指定的快取記憶體識別字 不存在。必須在快取記憶體架構檔中定義。您的巨集可以繼續執行,無須快取頁面。

  • inactive:您指定的快取記憶體已被標示為 非作用中。您的巨集可以繼續執行,無須快取頁面。

  • busy:在這次執行中, 您的巨集已經曾發出 DTW_CACHE_PAGE 內建函數。您的巨集可以繼續執行。

  • error:嘗試與快取記憶體通信時發生錯誤。

範例

範例 1:將 DTW_CACHE_PAGE 函數放置在 巨集檔的開頭,以擷取所有 HTML 輸出

%IF (customer_status == "Classic")
 @DTW_CACHE_PAGE("mymacro.mac", "http://www.mypage.org", "-1", status)
%ENDIF 
 % DEFINE { ...%}
 
...
 
%HTML (OUTPUT) {
 <title>這是頁面標題
 </head>
  <body>
 <center>
 這是主標題
 <p>現在時刻 $(time)。祝您有愉快的一天!
  </body>
  </html>
  
%} 

範例 2:將函數放置在 HTML 區塊中, 因為快取的決定取決於 HTML 輸出的 預期大小

%DEFINE { ...%}
 
...
 
%FUNCTION(DTW_SQL) count_rows(){
  從客戶選取 count(*)
%REPORT{
%ROW{
  @DTW_ASSIGN(ALL_ROWS, V1)
%}
%}
%}
 
%FUNCTION(DTW_SQL) all_customers(){
  從客戶選取 *
%}
 
%HTML (OUTPUT) {
  <html>
 <head>
 <title>這是客戶列表
 </head>
  <body>
 
@count_rows()
 
 %IF ($(ALL_ROWS) > "100")
 @DTW_CACHE_PAGE("mymacro.mac", "http://www.mypage.org", "-1", status)
%ENDIF
 
@all_customers()
 
  </body>
  </html>
%}

在這個範例中,頁面的快取或取回是基於 HTML 輸出 的預期大小。只有當資料庫表格內容超過 100 列時,HTML 輸出頁 才值得快取。執行巨集後,Net.Data 總是將 OUTPUT 區塊中的文字,這是客戶列表,傳送到 瀏覽器;文字從不快取。當 IF 區塊的條件滿足時, @count_rows() 函數呼叫的下幾行, 會被快取或取回。兩者一同形成 完整的 Net.Data 輸出頁面。

範例 3:動態取回快取記憶體 ID 與 快取頁面 ID

%HTML (OUTPUT) {
 %IF (customer == "Joe Smith")
 
@DTW_CACHE_PAGE(@DTW_rGETENV("DTW_MACRO_FILENAME"), @DTW_rGETENV("URL"),"-1", status)
 
%ENDIF
 
...
 
  <html>
 <head>
 <title>這是頁面標題</title>
 </head>
  <body>
 <center>
 <h3>這是主標題</h3>
 <p>今天是 @DTW_rDATE()。祝您有愉快的一天!
  </body>
  </html>
 
%}

DTW_DATE


AIX HP-UX OS/2 OS/390 OS/400 SCO SUN Win NT
X X X X X X X X

目的

在所指定的格式中傳回現行系統日期。

格式

@DTW_DATE(format, stringOut)

@DTW_DATE(stringOut)

@DTW_rDATE(format)

@DTW_rDATE()


表 27. DTW_DATE 參數
資料類型 參數 使用 說明
字串 format IN 一個指定資料格式的變數或文字字串。有效格式包括:

D - 一年中的第幾天 (001-366)

E - 歐式日期格式 (dd/mm/yy)

N - 一般日期格式 (dd mon yyyy)

O - 照順序的日期格式 (yy/mm/dd)

S - 標準日期格式 (yyyymmdd)

U - 美式日期格式 (mm/dd/yy)

預設值是 N。

字串 stringOut OUT 一個包含具有所指定格式之日期的變數。

範例

範例 1:一般日期格式

@DTW_DATE(results)

範例 2:歐洲日期格式

@DTW_DATE("E", results)

範例 3:美式日期格式

%HTML(report){
<P>這個報告建立於 @DTW_rDATE("U")。

DTW_EXIT


AIX HP-UX OS/2 OS/390 OS/400 SCO SUN Win NT
X X X
X X X X

目的

指定立即離開巨集。Net.Data 會確定,讓巨集到現在為止所建立的頁面 傳送到瀏覽器。

執行效能要訣:當輸出已經產生時, 為了節省 Net.Data 處理整個檔案的時間, 使用 DTW_EXIT 來停止巨集檔的處理程序。

重要事項! 確定在新增 DTW_EXIT 函數之前, 整個巨集的語法是正確的。使用 DTW_EXIT() 將使得 Net.Data 在遇到此函數的呼叫時, 可停止處理巨集檔案,這可避免您攫取在 DTW_EXIT() 函數已處理過後所發生的錯誤。

格式

@DTW_EXIT()

範例

範例 1:跳出巨集

%HTML(cache_example) {
 
  <html>
 <head>
 <title>這是頁面標題</title>
 </head>
  <body>
 <center>
 <h3>這是主標題</h3>
 <!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!>
 <!Joe Smith 看到一篇非常短的頁面                   !>
 <!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!>
 %IF (customer == "Joe Smith")
 
@DTW_EXIT()
 
%ENDIF
 
...
 
  </body>
  </html>
 %}

DTW_GETCOOKIE


AIX HP-UX OS/2 OS/390 OS/400 SCO SUN Win NT
X X X

X X X

目的

指定待讀取之 cookie 的名稱,並傳回 cookie 的值。

要訣:在兩個不同的 HTTP 要求中定義並 取回 cookie。 因為 cookie 只能在被傳送到從屬站以後才可看見, 如果巨集嘗試去獲得定義於相同 HTTP 要求的 cookie, 您可能會接收到不預期的結果。

格式

@DTW_GETCOOKIE(IN cookie_name, OUT cookie_value)

@DTW_rGETCOOKIE(IN cookie_name)


表 28. DTW_GETCOOKIE 參數
資料類型 參數 使用 說明
字串 cookie_name IN 指定 cookie 名稱的 變數或文字字串。
字串 cookie_value OUT 包含經由函數取回之 cookie 值的變數, 例如使用者狀態資訊。

使用

如果找不到 cookie,則會傳回用法的注意事項 8000。cookie 可能因下列理由而找不到:

範例

範例 1:取回包含使用者 ID 和密碼資訊的 cookie

@DTW_GETCOOKIE("mycookie_name_for_userID", userID)
@DTW_GETCOOKIE("mycookie_name_for_password", password)

範例 2:在收集使用者資訊之前, 決定使用者 cookie 是否存在

  %MESSAGE {
    8000 : "" : continue
%}
 
%HTML(welcome) {
  <html>
  <body>
  <h1>Net.Data 俱樂部</h1>
  @DTW_GETCOOKIE("NDC_name", name)
  %IF ($(RETURN_CODE) == "8000") %{ 找不到 cookie。%}
  <form method="post" action="remember">
  <p>歡迎蒞臨本會。請輸入您的姓名。<br>
  <input name="name">
  <input type="submit" value="submit"><br>
</form>
%ELSE
  <p>$(name) 您好,歡迎再度光臨。
%ENDIF
  </body>
  </html>
  %}

HTML 歡迎使用區段會檢查 cookie NDC_name 是否存在。 如果 cookie 存在, 瀏覽器會顯示一個個人化的歡迎。 如果 cookie 不存在,瀏覽器會要求使用者輸入姓名, 並將它置於 HTML 記憶區段,如此將使用者名稱設定到如下的 cookie NDC_name:

%HTML(remember) {
  <html>
  <body>
  <H1>Net.Data 俱樂部</H1>
  @DTW_SETCOOKIE("NDC_name", name, "expires=Wednesday, 01-Dec-2010 00:00:00;path=/")
  <p>感謝您。
  <p><a href="welcome">Come back</a>
  </body>
  </html>
  %}

DTW_GETENV


AIX HP-UX OS/2 OS/390 OS/400 SCO SUN Win NT
X X X X X X X X

目的

將所指定之環境變數的值傳回。您也可以使用 ENVVAR 來參考環境變數的值。 有關詳細資訊, 請參閱ENVVAR 陳述式

格式

@DTW_GETENV(envVarName, envVarValue)

@DTW_rGETENV(envVarName)


表 29. DTW_GETENV 參數
資料類型 參數 使用 說明
字串 envVarName IN 一個變數或文字字串。
字串 envVarValue OUT envVarName 上所指定的 環境變數值。 若該值找不到的話將會傳回一個空字串。

範例

範例 1:透過 OUT 參數傳回 PATH 陳述式的值

@DTW_GETENV(myEnvVarName, myEnvVarValue)

範例 2:傳回 PATH 陳述式的值

@DTW_rGETENV(myPath)

範例 3:傳回伺服器名稱 的值

伺服器是 @DTW_rGETENV("SERVER_NAME")。

DTW_GETINIDATA


AIX HP-UX OS/2 OS/390 OS/400 SCO SUN Win NT
X X X X X X X X

目的

傳回所指定之架構變數的值。若找不到值的話將會傳回一個空字串。

限制:對於非 OS/400 作業系統而言, 架構路徑變數(MACRO_PATH,EXEC_PATH,與 INCLUDE_PATH),以及 ENVIRONMENT 陳述式無法由這個呼叫取回。在 OS/400 作業系統上,這個限制只能應用到 ENVIRONMENT 陳述式。

格式

@DTW_GETINIDATA(iniVarName, iniVarValue)

@DTW_rGETINIDATA(iniVarName)


表 30. DTW_GETINIDATA 參數
資料類型 參數 使用 說明
字串 iniVarName IN 一個變數或文字字串。
字串 iniVarValue OUT iniVarName 中所指定的 架構變數值。

範例

範例 1:傳回 Net.Data 路徑變數值

@DTW_GETINIDATA(myEnvVarName, myEnvVarValue)

DTW_HTMLENCODE


AIX HP-UX OS/2 OS/390 OS/400 SCO SUN Win NT
X X X X X X X X

目的

編碼字元將標準 HTML 十進位跳出碼 (escape code) 使用在大部份的字元 上。您可以使用這個函數來對您不想要 Web 瀏覽器解譯為 HTML 的資料 來進行編碼。 例如,藉由使用適當的 跳出字元,您可以顯示小於(<)及大於(>)符號, 這些經常保留作 HTML 標籤的符號。

在第二個範例中,下列在 HTML 中的字串於 每個數字之間只顯現一個空白。

1    2     3

使用 DTW_HTMLENCODE 來確定所顯現的 空白數目正確。

表 31 顯示由 DTW_HTMLENCODE 函數所編碼的 字元。

表 31. HTML 十進位跳出字元
字元 名稱 程式碼
SPACE 空格 &#32;
" 雙引號 &#34;
# 號碼記號 &#35;
% 百分比 &#37;
& & 記號 &#38;
[ 左方括弧 &#40;
] 右方括弧 &#41;
+ &#43;
\ 斜線 &#47;
: 冒號 &#58;
; 分號 &#59;
< 小於 &#60;
= 等於 &#61:
> 大於 &#62:
? 問號 &#63:
@ At 記號 &#64;
/ 反斜線 &#92;
^ Carat &#94;
{ 左大括弧 &#123;
| 直線 &#124;
} 右大括弧 &#125;
~ 波型符號 &#126;

格式

@DTW_HTMLENCODE(stringIn, stringOut)

@DTW_rHTMLENCODE(stringIn)


表 32. DTW_HTMLENCODE 參數
資料類型 參數 使用 說明
字串 stringIn IN 一個變數或文字字串。
字串 stringOut OUT 一個包含已修改之輸入字串的變數,在該 輸入字串中有某些特定的字元已被 HTML 跳出字元編碼 所置換。

範例

範例 1:對空格字元編碼

@DTW_HTMLENCODE(string1,string2)

範例 2:對空格、小於符號與等號 編碼

@DTW_rHTMLENCODE("X <= 10")

DTW_QHTMLENCODE


AIX HP-UX OS/2 OS/390 OS/400 SCO SUN Win NT
X X X X X X X X

目的

執行如同 @DTW_HTMLENCODE 的功能,但亦將 單引號字元(')編碼為 &#39;。 DTW_QHTMLENCODE 所使用的 HTML 十進位跳出字元將顯現在表 31

格式

@DTW_QHTMLENCODE(stringIn, stringOut)

@DTW_rQHTMLENCODE(stringIn)


表 33. DTW_QHTMLENCODE 參數
資料類型 參數 使用 說明
字串 stringIn IN 一個變數或文字字串。
字串 stringOut OUT 一個包含已修改格式的 stringIn,其中有某些特定的字元已被 編碼的 HTML 跳出字元所置換。

範例

範例 1:對單引號與空格編碼

@DTW_QHTMLENCODE(string1,string2)

範例 2:對單引號、空格與 & 符號編碼

@DTW_rQHTMLENCODE("John's & Jane's")

DTW_SENDMAIL


AIX HP-UX OS/2 OS/390 OS/400 SCO SUN Win NT
X X X

X X X

目的

動態建立與傳輸電子郵件(e-mail)訊息。

此函數與選用的架構變數 DTW_SMTP_SERVER 一起使用, 指定用來傳輸電子郵件訊息的 SMTP 伺服器。這個變數的值可以是主電腦名稱或是 IP 位址。 當這個變數沒有被定義, Net.Data 會使用區域主電腦以作為 SMTP 伺服器。 請參閱Net.Data 管理 及程式設計手冊內的架構章以取得這些變數的詳細資訊。

國家語言議題:「標準簡易郵件轉送通信協定」(SMTP) 伺服器只接受 7 位元資料如美式 ASCII 字元。 如果您的訊息有 8 位元字元, 建議您指定擴充式簡易郵件轉送通信協定 (ESMTP) 伺服器, ESMTP 伺服器接受 8 位元字元。Net.Data 不會將 8 位元資料編碼為 7 位元資料。 如果您無法存取 ESMTP 伺服器,從電子郵件訊息中除去所有的 8 位元字元。

疑難排解:下列列表說明 Net.Data 不傳送電子郵件訊息的條件:

格式

@DTW_SENDMAIL(IN Sender, IN Recipient, IN Message, IN Subject, IN CarbonCopy, IN BlindCarbonCopy, IN ReplyTo, IN Organization)

@DTW_SENDMAIL(IN Sender, IN Recipient, IN Message, IN Subject, IN CarbonCopy, IN BlindCarbonCopy, IN ReplyTo)

@DTW_SENDMAIL(IN Sender, IN Recipient, IN Message, IN Subject, IN CarbonCopy, IN BlindCarbonCopy)

@DTW_SENDMAIL(IN Sender, IN Recipient, IN Message, IN Subject, IN CarbonCopy)

@DTW_SENDMAIL(IN Sender, IN Recipient, IN Message, IN Subject)

@DTW_SENDMAIL(IN Sender, IN Recipient, IN Message)


表 34. DTW_SENDMAIL 參數
資料類型 參數 使用 說明
字串 sender IN 指定作者位址的變數或文字字串。這個參數是必要的。 有效的格式為:

  • 姓名 <使用者 @ 領域>

  • <使用者 @ 領域>

  • 使用者 @ 領域
字串 recipient IN 指定收件者的電子郵件位址的 變數或文字字串。藉由逗點(,)的分隔,這個值可以包含多重收件者。 這個參數是必要的。 有效的收件者格式為:

  • 姓名 <使用者 @ 領域>

  • <使用者 @ 領域>

  • 使用者 @ 領域
字串 message IN 包含電子郵件訊息本文的變數或文字字串。這個參數是必要的。
字串 subject IN 包含主旨行文字的變數或文字字串。
字串 CarbonCopy IN 包含額外收件者之電子郵件位址、或姓名與電子郵件位址的變數或文字字串。 藉由逗點(,)的分隔, 這個值可以包含額外收件者。 請參閱 Recipient 參數以取得有效的收件者格式。
字串 BlindCarbonCopy IN 包含額外收件者之電子郵件位址、或姓名與電子郵件位址的變數或文字字串, 但收件者不會出現在電子郵件表頭。藉由逗點(,)的分隔, 這個值可以包含額外收件者。請參閱 Recipient 參數以取得有效的收件者格式。
字串 ReplyTo IN 包含回覆此訊息要送往寄件者電子郵件的 變數或文字字串。 有效的回覆格式為:

  • 姓名 <使用者 @ 領域>

  • <使用者 @ 領域>

  • 使用者 @ 領域
字串 Organization IN 包含寄件者組織名稱的 變數或文字字串。

範例

範例 1:建立並傳送一個簡單電子郵件訊息 的函數呼叫

@DTW_SENDMAIL("<ibmuser1@ibm.com>", "<ibmuser2@ibm.com>", "在 9:30 有一個會議。",
"狀態會議")

DTW_SENDMAIL 函數傳送電子郵件訊息時包含下列資訊:

日期:Mon, 3 Apr 1998 09:54:33 PST
收件者:<ibmuser2@ibm.com>
寄件者:<ibmuser1@ibm.com>
主旨:狀態會議
 
在 9:30 有一個會議。
 

日期的資訊是使用系統日期和時間函數建構而成, 並以 SMTP 特定資料格式呈現。

範例 2:建立並傳送多重收件者、 副本與密件副本收件者與公司名稱的電子郵件訊息的函數呼叫

@DTW_SENDMAIL("IBM 使用者 1 <ibmuser1@ibm.com>", "IBM 使用者 2 <ibmuser2@ibm.com>, IBM 使用者 3 <ibmuser3@ibm.com>, IBM 使用者 4 <ibmuser4@ibm.com>", "在 9:30 有一個會議。", "狀態會議", "IBM 使用者 5 <ibmuser5@ibm.com>", "IBM 使用者 6 <ibmuser6@ibm.com", "meeting@ibm.com", "IBM")

DTW_SENDMAIL 函數傳送電子郵件訊息時包含下列資訊:

日期:Mon, 3 Apr 1998 09:54:33 PST
收件者:IBM 使用者 2 <ibmuser2@ibm.com>, IBM 使用者 3 <ibmuser3@ibm.com>, IBM 使用者 4 <ibmuser4@ibm.com>
副本:IBM 使用者 5 <ibmuser5@ibm.com>
密件副本:IBM User 6 <ibmuser6@ibm.com>
收件者:IBM 使用者 1 <ibmuser1@ibm.com>
回覆:meeting@ibm.com
組織:IBM
主旨:狀態會議
 
在 9:30 有一個會議。

範例 3:經由 Web 套表介面建立並傳送電子郵件的巨集

  %HTML(start) {
  <html>
  <body>
  <h1>Net.Data 電子郵件範例</h1>
  <form method="post" action="sendemail">
  <p>給:<br><input name="recipient"><p>
  主旨:<br><input name="subject"><p>
  訊息:<br><textarea name=message rows=20 cols=40>
  </textarea><p>
  <input type="submit" value="Send E-mail"><br>
</form>
  </body>
  </html>
  %}
 
  %HTML(sendemail) {
  <html>
  <body>
  <h1>Net.Data 電子郵件範例</h1>
  @DTW_SENDMAIL("Net.Data E-mail Service <netdata@us.ibm.com>", recipient, message, subject)
  <p>電子郵件已送出。
  </body>
  </html>
  %}

這個巨集是經由 Web 套表介面傳送電子郵件。HTML 的啟動區段中顯示一個套表, 收件者的電子郵件位址、主旨與訊息都可以鍵入。 當使用者按一下傳送電子郵件按鈕, 訊息就被傳送到 HTML(sendemail) 區段中指定的收件者。 這個區段呼叫 DTW_SENDMAIL, 並使用從 Web 套表中獲得的參數來決定電子郵件訊息的內容、 與寄件者與收件者。 一旦電子郵件訊息傳送出去, 便會顯示確認通知。

範例 4:使用 SQL 查詢來決定收件者列示的巨集

%Function(DTW_SQL) mailing_list(IN message) {
  SELECT EMAIL_ADDRESS FROM CUSTOMERS WHERE ZIPCODE='CA'
%REPORT {
      傳送產品資訊給所有住在加州的客戶...<P>
  %ROW {
        @DTW_SENDMAIL("John Doe Corp. <John.Doe@doe.com>", V1, message, "New Product Release")
        E-mail 已送出給客戶 $(V1)。<BR>
      %}
    %}
  %}

經由客戶資料庫的 SQL 查詢結果所決定, 這個巨集會自動傳送電子郵件訊息到指定的 客戶群組。SQL 查詢也取回客戶的電子郵件位址。 電子郵件內容是由 message 值所決定,而且可以是 靜態或動態的(例如您可以使用另一個 SQL 查詢來動態 指定產品的版本號碼,或各種報價的價格)。

DTW_SETCOOKIE


AIX HP-UX OS/2 OS/390 OS/400 SCO SUN Win NT
X X X

X X X

目的

定義 cookie 的名稱、值與選項,例如到期日與 安全需求。

要取回 cookie,請使用 DTW_GETCOOKIE() 函數。 請參閱DTW_GETCOOKIE以學習如何定義 cookie。

安全需求還未定義時,cookie 可以 透過非安全的通道傳送。安全選項不需要瀏覽器對 cookie 加密,也不需要 它確保包含 DTW_SETCOOKIE 陳述式的 HTML 頁面要透過 SSL 傳輸。

要訣:

限制:

格式

@DTW_SETCOOKIE(IN cookie_name, IN cookie_value, IN advanced_options)

@DTW_SETCOOKIE(IN cookie_name, IN cookie_value)


表 35. DTW_SETCOOKIE 參數
資料類型 參數 使用 說明
字串 cookie_name IN 指定 cookie 名稱的 變數或文字字串。
字串 cookie_value IN 指定 cookie 值的 變數或文字字串。
字串 advanced_options IN 包含可選用屬性的字串, 由分號所隔開,可用來定義 cookie。 這些屬性 為:

到期 = 日期
指定一個定義 cookie 有效生命週期的日期字串。 在到期日以後,便不再儲存或取回 cookie。 語法:

weekday, DD-month-YYYY HH:MM:SS GMT

其中:

weekday
指定工作日的完整名稱。

DD
指定某月中的日期。

month
指定月份的三字元縮寫。

YYYY
指定年份的四字元號碼。

HH:MM:SS
以小時、分鐘與秒鐘來指定時間戳記。

領域 = 領域名稱
指定 cookie 的領域屬性,使用在領域屬性 匹配。

路徑 = 路徑
指定 cookie 是有效的領域中 URL 的子集。

安全
指定 cookie 只能透過安全的通道傳輸到 HTTPS 伺服器。

範例

範例 1:以「安全」進階選項來定義包含使用者 ID 和密碼 資訊

@DTW_SETCOOKIE("mycookie_name_for_userID", "User1")
@DTW_SETCOOKIE("mycookie_name_for_password", "sd3dT", "secure")

範例 2:定義包含到期日進階選項 的 cookie

@DTW_SETCOOKIE("mycookie_name_for_userID", "User1", "expires=Wednesday, 
   01-Dec-2010 00:00:00")
@DTW_SETCOOKIE("mycookie_name_for_password", "sd3dT", "expires=Wednesday, 01-Dec-2010 00:00:00; secure")

範例 3:在收集使用者資訊之前, 決定使用者 cookie 是否存在

%HTML(welcome) {
  <html>
  <body>
  <h1>Net.Data 俱樂部</h1>
  @DTW_GETCOOKIE("NDC_name", name)
  %IF ($(RETURN_CODE) == "8000") %{ 找不到 cookie。%}
  <form method="post" action="remember">
  <p>歡迎蒞臨本會。請輸入您的姓名。<br>
  <input name="name">
  <input type="submit" value="submit"><br>
</form>
%ELSE
  <p>$(name) 您好,歡迎再度光臨。
%ENDIF
  </body>
  </html>
  %}

HTML(welcome) 區段會檢查 cookie NDC_name 是否存在。如果 cookie 存在, 瀏覽器會顯示一個個人化的歡迎。 如果 cookie 不存在,瀏覽器會要求使用者輸入名稱, 並將它置於 HTML(remember) 區段。 這個區段將使用者名稱記錄到 cookie NDC_name,如下面所顯示:

%HTML(remember) {
  <html>
  <body>
  <H1>Net.Data 俱樂部>
  @DTW_SETCOOKIE("NDC_name", name, "expires=Wednesday, 01-Dec-2010 00:00:00;path=/")
  <p>感謝您。
  <p><a href="welcome">Come back</a>
  </body>
  </html>
  %}

DTW_SETENV


AIX HP-UX OS/2 OS/390 OS/400 SCO SUN Win NT
X X X X X X X X

目的

指定一個指定值給一環境變數, 並傳回上一個值。若找不到上一個值的話將會傳回一個空字串。

格式

@DTW_SETENV(envVarName, envVarValue, prevValue)

@DTW_rSETENV(envVarName, envVarValue)


表 36. DTW_SETENV 參數
資料類型 參數 使用 說明
字串 envVarName IN 一個代表環境變數的變數或文字字串。
字串 envVarValue IN 一個有指定為環境變數數值的 變數或文字字串。
字串 prevValue OUT 一個包含環境變數之上一個值的變數。

範例

範例 1:傳回前路徑的值

@DTW_SETENV("PATH", "myPath", prevValue)

範例 2:傳回前路徑的值, 並指定 PATH 的值

@DTW_rSETENV("PATH", "myPath")

DTW_TIME


AIX HP-UX OS/2 OS/390 OS/400 SCO SUN Win NT
X X X X X X X X

目的

以所指定的格式將現行系統時間傳回。

格式

@DTW_TIME(stringIn, stringOut)

@DTW_TIME(stringOut)

@DTW_rTIME(stringIn)

@DTW_rTIME()


表 37. DTW_TIME 參數
資料類型 參數 使用 說明
字串 stringIn IN 指定時間格式的變數或文字字串。有效的格式為:

C - 常用時間 (hh:mmAM/PM 以 12 小時時間顯示)

L - 區域時間 (hh:mm:ss)

N - 正常時間 (hh:mm:ss 以 24 小時時間顯示);預設值

H - 從午夜 12 點起算的小時數

M - 從午夜 12 點起算的分鐘數

S - 從午夜 12 點起算的秒數

字串 stringOut OUT 一個包含以所指定格式顯示之時間的變數 。

範例

範例 1:24 小時時間格式

@DTW_TIME(results)

範例 2:常用時間格式

@DTW_TIME("C", results)

範例 3:以函數呼叫傳回從午夜起算的 分鐘數

@DTW_rTIME("M")

範例 4:以函數呼叫傳回時間預設值與 資料格式

%REPORT{
<P>這個報告於 @DTW_rTIME(),@DTW_rDATE() 建立的。
%}

DTW_URLESCSEQ


AIX HP-UX OS/2 OS/390 OS/400 SCO SUN Win NT
X X X X X X X X

目的

以其跳出值來置換 URL 中不容許的字元, 也稱作 URL 編碼的值。您必須使用這個函數來將 任何列示在表 38 的字元傳送到另一個巨集檔 或 HTML 區塊。

表 38. URL 中不容許的字元
字元 名稱 程式碼
SPACE 空格 %20
" 雙引號 %22
# 號碼記號 %23
% 百分比 %25
& & 記號 %26
+ %2B
\ 反斜線 %2F
: 冒號 %3A
; 分號 %3B
< 小於 %3C
= 等於 %3D
> 大於 %3E
? 問號 %3F
@ At 記號 %40
[ 左方括弧 %5B
/ 斜線 %5C
] 右方括弧 %5D
^ Carat %5E
{ 左大括弧 %7B
| 直線 %7C
} 右大括弧 %7D
~ 波型符號 %7E

格式

@DTW_URLESCSEQ(stringIn, stringOut)

@DTW_rURLESCSEQ(stringIn)


表 39. DTW_URLESCSEQ 參數
資料類型 參數 使用 說明
字串 stringIn IN 一個變數或文字字串。
字串 stringOut OUT 一個包含輸入字串的變數, 該輸入字串具有 URL 中不允許的字元, 會由它們的十六進位跳出值來置換。

範例

範例 1:以它們 URL 跳出碼來置換 string1 中的空格與&符號,並將結果指定到 string2

@DTW_URLESCSEQ(string1,string2)

範例 2:將空格與&符號轉換成 URL 編碼的 格式

@DTW_rURLESCSEQ("Guys & Dolls")

範例 3:在 ROW 區塊中使用 DTW_rURLESCSEQ, 並將空格與 at 符號轉換成 URL 編碼的格式

%ROW{
<P><a href="fullRpt.mac/input?name=@DTW_rURLESCSEQ(V1)&email=@DTW_rULRESCSEQ(V2)">
$(V1)</a>
%}

當應用程式使用者在名稱上按一下時,名稱和 電子郵件位址會以編碼的值作為 nameemail 變數, 被傳送至 Net.Data 巨集 fullrpt.mac 的輸入區塊。


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