一般函數可協助您使用 Net.Data 來開發網頁,且不適用於其他的種類。 下列函數都是一般目的函數:
| 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)
值
| 資料類型 | 參數 | 使用 | 說明 |
|---|---|---|---|
| 字串 | 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)')
%}
| 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)
值
| 參數 | 使用 | 說明 |
|---|---|---|
| cache_id | IN | 一個字串變數用來識別頁面將被放置的快取記憶體。 |
| cached_page_ID | IN | 一個包含識別字的字串變數, 在後續的 DTW_CACHE_PAGE 快取要求中,用來指定快取頁面的位置。 字串可以是一個 URL。 |
| age | IN | 一個字串變數,
包含了以秒為單位的時間長度。這個參數決定一個頁面是否過期。如果
頁面已經比 age 還要舊時,此頁面就不會被傳送到瀏覽器。
如果 age 被設定為 -1,且頁面存在快取記憶體中,則不論其經歷時間, Net.Data 會直接從快取記憶體中將它傳送到 Web 瀏覽器。 Net.Data 不會置換快取記憶體中的頁面。 |
| status | OUT | 顯示快取頁面狀態的
字串變數。可能的值是以小寫顯示:
|
範例
範例 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>
%}
| 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()
值
| 資料類型 | 參數 | 使用 | 說明 |
|---|---|---|---|
| 字串 | format | IN | 一個指定資料格式的變數或文字字串。有效格式包括:
預設值是 N。 |
| 字串 | stringOut | OUT | 一個包含具有所指定格式之日期的變數。 |
範例
範例 1:一般日期格式
@DTW_DATE(results)
範例 2:歐洲日期格式
@DTW_DATE("E", results)
範例 3:美式日期格式
%HTML(report){
<P>這個報告建立於 @DTW_rDATE("U")。
| 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>
%}
| 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)
值
| 資料類型 | 參數 | 使用 | 說明 |
|---|---|---|---|
| 字串 | cookie_name | IN | 指定 cookie 名稱的 變數或文字字串。 |
| 字串 | cookie_value | OUT | 包含經由函數取回之 cookie 值的變數, 例如使用者狀態資訊。 |
使用
如果找不到 cookie,則會傳回用法的注意事項 8000。cookie 可能因下列理由而找不到:
伺服器不應預期從屬站能超出這些限制。 當 300 cookie 限制或每個伺服器 20 cookie 的限制超出時, 從屬站應先刪除最近最少使用的 cookie。當發現 cookie 大於 4 千位元組時, 應調整 cookie,但只要小於 4 千位元組,名稱 應保持完整。
請參閱 Netscape 的規格以取得"持續從屬站狀態 HTTP Cookies" 之最新資訊, 可由下列網址獲得:
http://search.netscape.com/newsref/std/cookie_spec.html
範例
範例 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>
%}
| 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)
值
| 資料類型 | 參數 | 使用 | 說明 |
|---|---|---|---|
| 字串 | envVarName | IN | 一個變數或文字字串。 |
| 字串 | envVarValue | OUT | 在 envVarName 上所指定的 環境變數值。 若該值找不到的話將會傳回一個空字串。 |
範例
範例 1:透過 OUT 參數傳回 PATH 陳述式的值
@DTW_GETENV(myEnvVarName, myEnvVarValue)
範例 2:傳回 PATH 陳述式的值
@DTW_rGETENV(myPath)
範例 3:傳回伺服器名稱 的值
伺服器是 @DTW_rGETENV("SERVER_NAME")。
| 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)
值
| 資料類型 | 參數 | 使用 | 說明 |
|---|---|---|---|
| 字串 | iniVarName | IN | 一個變數或文字字串。 |
| 字串 | iniVarValue | OUT | 在 iniVarName 中所指定的 架構變數值。 |
範例
範例 1:傳回 Net.Data 路徑變數值
@DTW_GETINIDATA(myEnvVarName, myEnvVarValue)
| 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 函數所編碼的
字元。
| 字元 | 名稱 | 程式碼 |
| SPACE | 空格 |   |
| " | 雙引號 | " |
| # | 號碼記號 | # |
| % | 百分比 | % |
| & | & 記號 | & |
| [ | 左方括弧 | ( |
| ] | 右方括弧 | ) |
| + | 加 | + |
| \ | 斜線 | / |
| : | 冒號 | : |
| ; | 分號 | ; |
| < | 小於 | < |
| = | 等於 | =: |
| > | 大於 | >: |
| ? | 問號 | ?: |
| @ | At 記號 | @ |
| / | 反斜線 | \ |
| ^ | Carat | ^ |
| { | 左大括弧 | { |
| | | 直線 | | |
| } | 右大括弧 | } |
| ~ | 波型符號 | ~ |
格式
@DTW_HTMLENCODE(stringIn, stringOut)
@DTW_rHTMLENCODE(stringIn)
值
| 資料類型 | 參數 | 使用 | 說明 |
|---|---|---|---|
| 字串 | stringIn | IN | 一個變數或文字字串。 |
| 字串 | stringOut | OUT | 一個包含已修改之輸入字串的變數,在該 輸入字串中有某些特定的字元已被 HTML 跳出字元編碼 所置換。 |
範例
範例 1:對空格字元編碼
@DTW_HTMLENCODE(string1,string2)
範例 2:對空格、小於符號與等號 編碼
@DTW_rHTMLENCODE("X <= 10")
| AIX | HP-UX | OS/2 | OS/390 | OS/400 | SCO | SUN | Win NT |
| X | X | X | X | X | X | X | X |
目的
執行如同 @DTW_HTMLENCODE 的功能,但亦將 單引號字元(')編碼為 ';。 DTW_QHTMLENCODE 所使用的 HTML 十進位跳出字元將顯現在表 31。
格式
@DTW_QHTMLENCODE(stringIn, stringOut)
@DTW_rQHTMLENCODE(stringIn)
值
| 資料類型 | 參數 | 使用 | 說明 |
|---|---|---|---|
| 字串 | stringIn | IN | 一個變數或文字字串。 |
| 字串 | stringOut | OUT | 一個包含已修改格式的 stringIn,其中有某些特定的字元已被 編碼的 HTML 跳出字元所置換。 |
範例
範例 1:對單引號與空格編碼
@DTW_QHTMLENCODE(string1,string2)
範例 2:對單引號、空格與 & 符號編碼
@DTW_rQHTMLENCODE("John's & Jane's")
| 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)
值
| 資料類型 | 參數 | 使用 | 說明 |
|---|---|---|---|
| 字串 | 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 查詢來動態 指定產品的版本號碼,或各種報價的價格)。
| 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("my_cookie_name", @DTW_rURLESCSEQ("my cookie value"))
限制:
格式
@DTW_SETCOOKIE(IN cookie_name, IN cookie_value, IN advanced_options)
@DTW_SETCOOKIE(IN cookie_name, IN cookie_value)
值
| 資料類型 | 參數 | 使用 | 說明 |
|---|---|---|---|
| 字串 | cookie_name | IN | 指定 cookie 名稱的 變數或文字字串。 |
| 字串 | cookie_value | IN | 指定 cookie 值的 變數或文字字串。 |
| 字串 | advanced_options | IN | 包含可選用屬性的字串,
由分號所隔開,可用來定義 cookie。 這些屬性
為:
|
範例
範例 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>
%}
| 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)
值
| 資料類型 | 參數 | 使用 | 說明 |
|---|---|---|---|
| 字串 | envVarName | IN | 一個代表環境變數的變數或文字字串。 |
| 字串 | envVarValue | IN | 一個有指定為環境變數數值的 變數或文字字串。 |
| 字串 | prevValue | OUT | 一個包含環境變數之上一個值的變數。 |
範例
範例 1:傳回前路徑的值
@DTW_SETENV("PATH", "myPath", prevValue)
範例 2:傳回前路徑的值, 並指定 PATH 的值
@DTW_rSETENV("PATH", "myPath")
| 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()
值
| 資料類型 | 參數 | 使用 | 說明 |
|---|---|---|---|
| 字串 | stringIn | IN | 指定時間格式的變數或文字字串。有效的格式為:
|
| 字串 | stringOut | OUT | 一個包含以所指定格式顯示之時間的變數 。 |
範例
範例 1:24 小時時間格式
@DTW_TIME(results)
範例 2:常用時間格式
@DTW_TIME("C", results)
範例 3:以函數呼叫傳回從午夜起算的 分鐘數
@DTW_rTIME("M")
範例 4:以函數呼叫傳回時間預設值與 資料格式
%REPORT{
<P>這個報告於 @DTW_rTIME(),@DTW_rDATE() 建立的。
%}
| 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 區塊。
| 字元 | 名稱 | 程式碼 |
| 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)
值
| 資料類型 | 參數 | 使用 | 說明 |
|---|---|---|---|
| 字串 | 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>
%}
<P><a href="fullrpt.mac/input?name=Patrick%20O'Brien&email="obrien%40ibm.com"> Patrick O'Brien</a>
當應用程式使用者在名稱上按一下時,名稱和 電子郵件位址會以編碼的值作為 name與email 變數, 被傳送至 Net.Data 巨集 fullrpt.mac 的輸入區塊。