一般函數可協助您使用 Net.Data 來開發網頁,且不適用於其它的種類。下列函數都是一般目的函數:
| AIX | HP-UX | Linux | OS/2 | OS/390 | OS/400 | SCO | SUN | Win NT |
| X | X | X | X | X | X | X | X | X |
目的
將在輸入字串中的單引號置換為兩個單引號。
格式
@DTW_ADDQUOTE(stringIn, stringOut)
@DTW_rADDQUOTE(stringIn)
@DTW_mADDQUOTE(stringMult, stringMult2, ..., stringMultn)
參數
| 資料類型 | 參數 | 使用 | 說明 |
|---|---|---|---|
| 字串 | stringIn | IN | 一個變數或文字字串。 DTW_mADDQUOTE 可以有多個輸入字串。 |
| 字串 | stringOut | OUT | 包含 stringIn 已修改格式的 變數。 |
| 字串 | stringMult | INOUT |
|
回覆碼
| 回覆碼 | 說明 |
|---|---|
| -1001 | 伺服器無法處理 Net.Data 的配置記憶體要求。 |
| 1003 | 函數呼叫中傳遞的參數超過容許數目,或少於函數要求的最小數目。 |
| 1005 | 函數呼叫上傳遞的參數必須是字串變數,但卻是不同的變數類型。 |
| 1006 | 文字字串傳遞給函數呼叫中的參數, 但此參數必須是輸出參數。 |
用法注意事項
對於從 Web 瀏覽器取得輸入的所有 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')
範例
範例 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 | Linux | OS/2 | OS/390 | OS/400 | SCO | SUN | Win NT |
| X |
|
|
|
|
|
|
|
|
目的
快取因巨集處理結果而產生的部份或全部網頁。
格式
@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 | 顯示快取頁面狀態的
字串變數。可能的值是以小寫顯示:
|
回覆碼
| 回覆碼 | 說明 |
|---|---|
| -1001 | 伺服器無法處理 Net.Data 的配置記憶體要求。 |
| 1001 | 輸入參數包含 NULL 值。 |
| 1002 | 輸入參數包含的字串有空字元結尾。 |
| 1003 | 函數呼叫中傳遞的參數超過容許數目,或少於函數要求的最小數目。 |
| 1005 | 函數呼叫上傳遞的參數必須是字串變數,但卻是不同的變數類型。 |
| 1006 | 文字字串傳遞給函數呼叫中的參數, 但此參數必須是輸出參數。 |
| 1007 | 參數包含的值無效。 |
用法注意事項
如果所要求的頁面不在快取記憶體中,或現有的快取頁面 已經大於 age 值,Net.Data 會產生新的輸出頁面。 當巨集順利的完成後,Net.Data 會將新頁面傳送到 瀏覽器,並同時快取頁面。
對於進階快取應用程式而言,當您需要在處理過程中決定快取的特定位置時, 您可以將函數放置在巨集的特定位置,而不是巨集開頭。 例如, 您可能需要基於在查詢或函數呼叫後要傳回多少列數而來作快取的決定。
範例
範例 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(){
select * from customer
%}
%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 | Linux | OS/2 | OS/390 | OS/400 | SCO | SUN | Win NT |
| X | 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 | 一個包含具有所指定格式之日期的變數。 |
回覆碼
| 回覆碼 | 說明 |
|---|---|
| -1001 | 伺服器無法處理 Net.Data 的配置記憶體要求。 |
| 1001 | 輸入參數包含 NULL 值。 |
| 1003 | 函數呼叫中傳遞的參數超過容許數目,或少於函數要求的最小數目。 |
| 1005 | 函數呼叫上傳遞的參數必須是字串變數,但卻是不同的變數類型。 |
| 1006 | 文字字串傳遞給函數呼叫中的參數, 但此參數必須是輸出參數。 |
| 1007 | 參數包含的值無效。 |
範例
範例 1:一般日期格式
@DTW_DATE(results)
範例 2:歐洲日期格式
@DTW_DATE("E", results)
範例 3:美式日期格式
%HTML(report){
<P>這個報告建立於 @DTW_rDATE("U")。
| AIX | HP-UX | Linux | OS/2 | OS/390 | OS/400 | SCO | SUN | Win NT |
| X | X | X | X | X | X | X | X | X |
目的
指定立即離開巨集。Net.Data 會傳送 DTW_EXIT() 被呼叫之前所產生的任何網頁到 Web 瀏覽器。
格式
@DTW_EXIT()
回覆碼
| 回覆碼 | 說明 |
|---|---|
| 1003 | 函數呼叫中傳遞的參數超過容許數目,或少於函數要求的最小數目。 |
用法注意事項
範例
範例 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 | Linux | OS/2 | OS/390 | OS/400 | SCO | SUN | Win NT |
| X | X | X | X | X | X | X | X | X |
目的
傳回所指定 cookie 的值。
格式
@DTW_GETCOOKIE(IN cookie_name, OUT cookie_value)
@DTW_rGETCOOKIE(IN cookie_name)
參數
| 資料類型 | 參數 | 使用 | 說明 |
|---|---|---|---|
| 字串 | cookie_name | IN | 指定 cookie 名稱的 變數或文字字串。 |
| 字串 | cookie_value | OUT | 包含經由函數取回之 cookie 值的變數,
例如使用者狀態資訊。
OS/400 與 OS/390 使用者: 如果 cookie 值具有 URL 樣式編碼 (例如 "%20"),則 cookie 值會在傳回之前被解碼。
工作站使用者: 如果 cookie 值具有 URL 樣式編碼 (例如 "%20"), 則 cookie 值不會在傳回之前被解碼。 |
回覆碼
| 回覆碼 | 說明 |
|---|---|
| -1001 | 伺服器無法處理 Net.Data 的配置記憶體要求。 |
| 1001 | 輸入參數包含 NULL 值。 |
| 1002 | 輸入參數包含的字串有空字元結尾。 |
| 1003 | 函數呼叫中傳遞的參數超過容許數目,或少於函數要求的最小數目。 |
| 1005 | 函數呼叫上傳遞的參數必須是字串變數,但卻是不同的變數類型。 |
| 1006 | 文字字串傳遞給函數呼叫中的參數, 但此參數必須是輸出參數。 |
| 8000 | 找不到 cookie。 |
用法注意事項
在兩個不同的 HTTP 要求中定義並取回 cookie。 因為 cookie 只能在被傳送到從屬站以後才可看見, 如果巨集嘗試去獲得定義於相同 HTTP 要求的 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 remember 區段, 如此將使用者名稱設定成如下的 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 | Linux | OS/2 | OS/390 | OS/400 | SCO | SUN | Win NT |
| X | X | X | X | X | X | X | X | X |
目的
將所指定之環境變數的值傳回。
格式
@DTW_GETENV(envVarName, envVarValue)
@DTW_rGETENV(envVarName)
參數
| 資料類型 | 參數 | 使用 | 說明 |
|---|---|---|---|
| 字串 | envVarName | IN | 一個變數或文字字串。 |
| 字串 | envVarValue | OUT | 在 envVarName 上所指定的 環境變數值。 若該值找不到的話將會傳回一個空字串。 |
回覆碼
| 回覆碼 | 說明 |
|---|---|
| -1001 | 伺服器無法處理 Net.Data 的配置記憶體要求。 |
| 1003 | 函數呼叫中傳遞的參數超過容許數目,或少於函數要求的最小數目。 |
| 1005 | 函數呼叫上傳遞的參數必須是字串變數,但卻是不同的變數類型。 |
| 1006 | 文字字串傳遞給函數呼叫中的參數, 但此參數必須是輸出參數。 |
用法注意事項
您亦可使用 ENVVAR 陳述式來參考環境變數的值。有關詳細資訊, 請參閱ENVVAR 陳述式。
範例
範例 1:透過 OUT 參數傳回 PATH 陳述式的值
@DTW_GETENV(myEnvVarName, myEnvVarValue)
範例 2:傳回 PATH 陳述式的值
@DTW_rGETENV(myPath)
範例 3:傳回伺服器通信協定的值
伺服器是 @DTW_rGETENV("SERVER_PROTOCOL")。
| AIX | HP-UX | Linux | OS/2 | OS/390 | OS/400 | SCO | SUN | Win NT |
| X | X | X | X | X | X | X | X | X |
目的
傳回所指定之架構變數的值。
格式
@DTW_GETINIDATA(iniVarName, iniVarValue)
@DTW_rGETINIDATA(iniVarName)
參數
| 資料類型 | 參數 | 使用 | 說明 |
|---|---|---|---|
| 字串 | iniVarName | IN | 一個變數或文字字串。 |
| 字串 | iniVarValue | OUT | 在 iniVarName 中所指定的 架構變數值。 |
回覆碼
| 回覆碼 | 說明 |
|---|---|
| -1001 | 伺服器無法處理 Net.Data 的配置記憶體要求。 |
| 1003 | 函數呼叫中傳遞的參數超過容許數目,或少於函數要求的最小數目。 |
| 1005 | 函數呼叫上傳遞的參數必須是字串變數,但卻是不同的變數類型。 |
| 1006 | 文字字串傳遞給函數呼叫中的參數, 但此參數必須是輸出參數。 |
用法注意事項
範例
範例 1:傳回 Net.Data 路徑變數值
@DTW_GETINIDATA(myEnvVarName, myEnvVarValue)
| AIX | HP-UX | Linux | OS/2 | OS/390 | OS/400 | SCO | SUN | Win NT |
| X | X | X | X | X | X | X | X | X |
目的
利用 HTML 字元跳出碼來編寫選取的字元。
格式
@DTW_HTMLENCODE(stringIn, stringOut)
@DTW_rHTMLENCODE(stringIn)
參數
| 資料類型 | 參數 | 使用 | 說明 |
|---|---|---|---|
| 字串 | stringIn | IN | 一個變數或文字字串。 |
| 字串 | stringOut | OUT | 一個包含已修改輸入字串的變數, 該輸入字串中的某些字元已被 HTML 字元跳出碼所置換。 |
回覆碼
| 回覆碼 | 說明 |
|---|---|
| -1001 | 伺服器無法處理 Net.Data 的配置記憶體要求。 |
| 1003 | 函數呼叫中傳遞的參數超過容許數目,或少於函數要求的最小數目。 |
| 1005 | 函數呼叫上傳遞的參數必須是字串變數,但卻是不同的變數類型。 |
| 1006 | 文字字串傳遞給函數呼叫中的參數, 但此參數必須是輸出參數。 |
用法注意事項
| 字元 | 名稱 | 程式碼 |
| SPACE | 空格 |   |
| " | 雙引號 | " |
| # | 號碼記號 | # |
| % | 百分比 | % |
| & | & 記號 | & |
| [ | 左方括弧 | ( |
| ] | 右方括弧 | ) |
| + | 加 | + |
| \ | 斜線 | / |
| : | 冒號 | : |
| ; | 分號 | ; |
| < | 小於 | < |
| = | 等於 | =: |
| > | 大於 | >: |
| ? | 問號 | ?: |
| @ | At 記號 | @ |
| / | 反斜線 | \ |
| ^ | Carat | ^ |
| { | 左大括弧 | { |
| | | 直線 | | |
| } | 右大括弧 | } |
| ~ | 波型符號 | ~ |
範例
範例 1:對空格字元編碼
@DTW_HTMLENCODE(string1,string2)
範例 2:對空格、小於符號與等號 編碼
@DTW_rHTMLENCODE("X <= 10")
| AIX | HP-UX | Linux | OS/2 | OS/390 | OS/400 | SCO | SUN | Win NT |
| X | X | X | X | X | X | X | X | X |
目的
執行與 @DTW_HTMLENCODE 相同的功能,但亦將單引號字元 (') 編寫為 '。 表 42 顯示 DTW_QHTMLENCODE 所使用的 HTML 字元跳出碼。
格式
@DTW_QHTMLENCODE(stringIn, stringOut)
@DTW_rQHTMLENCODE(stringIn)
參數
| 資料類型 | 參數 | 使用 | 說明 |
|---|---|---|---|
| 字串 | stringIn | IN | 一個變數或文字字串。 |
| 字串 | stringOut | OUT | 一個包含已修改格式的 stringIn 的變數,其中有某些字元已被 HTML 字元跳出碼所置換。 |
回覆碼
| 回覆碼 | 說明 |
|---|---|
| -1001 | 伺服器無法處理 Net.Data 的配置記憶體要求。 |
| 1003 | 函數呼叫中傳遞的參數超過容許數目,或少於函數要求的最小數目。 |
| 1005 | 函數呼叫上傳遞的參數必須是字串變數,但卻是不同的變數類型。 |
| 1006 | 文字字串傳遞給函數呼叫中的參數, 但此參數必須是輸出參數。 |
範例
範例 1:對單引號與空格編碼
@DTW_QHTMLENCODE(string1,string2)
範例 2:對單引號、空格與 & 符號編碼
@DTW_rQHTMLENCODE("John's & Jane's")
| AIX | HP-UX | Linux | OS/2 | OS/390 | OS/400 | SCO | SUN | Win NT |
| X | X | X | X | X | X | X | X | X |
目的
動態建立與傳輸電子郵件(e-mail)訊息。
格式
@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 | 包含寄件者組織名稱的 變數或文字字串。 這是一個可選用的參數。 |
回覆碼
| 回覆碼 | 說明 |
|---|---|
| -1001 | 伺服器無法處理 Net.Data 的配置記憶體要求。 |
| 1001 | 輸入參數包含 NULL 值。 |
| 1002 | 輸入參數包含的字串有空字元結尾。 |
| 1003 | 函數呼叫中傳遞的參數超過容許數目,或少於函數要求的最小數目。 |
| 1005 | 函數呼叫上傳遞的參數必須是字串變數,但卻是不同的變數類型。 |
| 7000 | Net.Data 無法連接指定的 SMTP 伺服器。 |
| 7001 | Net.Data 嘗試將電子郵件訊息轉遞至指定的 SMTP 伺服器時,發生 SMTP 錯誤。 |
| 7002 | 指定的 SMTP 伺服器不支援 ESMTP (Extended Simple Mail Transfer Protocol)。 |
用法注意事項
Net.Data for OS/390 使用者不必修改電子郵件訊息的 SMTP 伺服器。
| 語言環境 | 字集 | OS/2 或 UNIX 字碼頁 | Windows NT 字碼頁 |
|---|---|---|---|
| 美國, 西歐 | "iso-8859-1" | 819 | 1252 |
| 日文 | "x-sjis" | 943 | 932 |
| 中文 (簡體) | "gb2312" | 1381 | 936 |
| 韓文 | "euc-kr" | 970 | 949 |
| 中文 (繁體) | "big5" | 950 | 950 |
範例
範例 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 User 1 <ibmuser1@ibm.com>", "IBM User 2 <ibmuser2@ibm.com>,
IBM User 3 <ibmuser3@ibm.com>, IBM User 4 <ibmuser4@ibm.com>", "There is a meeting at 9:30.",
"Status meeting", "IBM User 5 <ibmuser5@ibm.com>", "IBM User 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 | Linux | OS/2 | OS/390 | OS/400 | SCO | SUN | Win NT |
| X | X | X | X | X | X | X | X | X |
目的
產生可在從屬站系統上設定 cookie 的 JavaScript 程式碼。
格式
@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 值的
變數或文字字串。
避免在 cookie_value 中使用分號 (;)、逗點 (,) 及空格。若需要這些特殊字元時, 請先使用 Net.Data 函數 DTW_rURLESCSEQ 來處理包含這些特殊字元的字串, 再將字串遞送到 DTW_SETCOOKIE。 例如, @DTW_SETCOOKIE("my_cookie_name", @DTW_rURLESCSEQ("my cookie value"))
|
| 字串 | advanced_options | IN | 包含可選用屬性的字串,
由分號所隔開,可用來定義 cookie。 這些屬性可以是:
有關進階選項的其餘資訊, 請參閱網站 http://home.netscape.com 上的 Netscape cookie 規格。 |
回覆碼
| 回覆碼 | 說明 |
|---|---|
| -1001 | 伺服器無法處理 Net.Data 的配置記憶體要求。 |
| 1001 | 輸入參數包含 NULL 值。 |
| 1002 | 輸入參數包含的字串有空字元結尾。 |
| 1003 | 函數呼叫中傳遞的參數超過容許數目,或少於函數要求的最小數目。 |
| 1005 | 函數呼叫上傳遞的參數必須是字串變數,但卻是不同的變數類型。 |
用法注意事項
範例
範例 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 | Linux | OS/2 | OS/390 | OS/400 | SCO | SUN | Win NT |
| X | X | X | X | X | X | X | X | X |
目的
指定一個指定值給一環境變數, 並傳回上一個值。
格式
@DTW_SETENV(envVarName, envVarValue, prevValue)
@DTW_rSETENV(envVarName, envVarValue)
參數
| 資料類型 | 參數 | 使用 | 說明 |
|---|---|---|---|
| 字串 | envVarName | IN | 一個代表環境變數的變數或文字字串。 |
| 字串 | envVarValue | IN | 一個有指定為環境變數數值的 變數或文字字串。 |
| 字串 | prevValue | OUT | 一個包含環境變數之上一個值的變數。 |
回覆碼
| 回覆碼 | 說明 |
|---|---|
| -1001 | 伺服器無法處理 Net.Data 的配置記憶體要求。 |
| 1001 | 輸入參數包含 NULL 值。 |
| 1003 | 函數呼叫中傳遞的參數超過容許數目,或少於函數要求的最小數目。 |
| 1005 | 函數呼叫上傳遞的參數必須是字串變數,但卻是不同的變數類型。 |
| 1006 | 文字字串傳遞給函數呼叫中的參數, 但此參數必須是輸出參數。 |
用法注意事項
如果找不到先前的環境變數值,則傳回空字串。
範例
範例 1:傳回前路徑的值
@DTW_SETENV("PATH", "myPath", prevValue)
範例 2:傳回前路徑的值, 並指定 PATH 的值
@DTW_rSETENV("PATH", "myPath")
| AIX | HP-UX | Linux | OS/2 | OS/390 | OS/400 | SCO | SUN | Win NT |
| X | X | X | X | X | X | X | X | X |
目的
以所指定的格式將現行系統時間傳回。
格式
@DTW_TIME(stringIn, stringOut)
@DTW_TIME(stringOut)
@DTW_rTIME(stringIn)
@DTW_rTIME()
參數
| 資料類型 | 參數 | 使用 | 說明 |
|---|---|---|---|
| 字串 | stringIn | IN | 指定時間格式的變數或文字字串。有效的格式為:
|
| 字串 | stringOut | OUT | 一個包含以所指定格式顯示之時間的變數 。 |
回覆碼
| 回覆碼 | 說明 |
|---|---|
| -1001 | 伺服器無法處理 Net.Data 的配置記憶體要求。 |
| 1003 | 函數呼叫中傳遞的參數超過容許數目,或少於函數要求的最小數目。 |
| 1005 | 函數呼叫上傳遞的參數必須是字串變數,但卻是不同的變數類型。 |
| 1006 | 文字字串傳遞給函數呼叫中的參數, 但此參數必須是輸出參數。 |
| 1007 | 參數包含的值無效。 |
範例
範例 1:24 小時時間格式
@DTW_TIME(results)
範例 2:常用時間格式
@DTW_TIME("C", results)
範例 3:以函數呼叫傳回從午夜起算的 分鐘數
@DTW_rTIME("M")
範例 4:以函數呼叫傳回時間預設值與 資料格式
%REPORT{
<P>這個報告於 @DTW_rTIME(),@DTW_rDATE() 建立的。
%}
| AIX | HP-UX | Linux | OS/2 | OS/390 | OS/400 | SCO | SUN | Win NT |
| X | X | X | X | X | X | X | X | X |
目的
URL 中不容許的已選取字元以其跳出值來置換,即所謂的 URL 編碼。
格式
@DTW_URLESCSEQ(stringIn, stringOut)
@DTW_rURLESCSEQ(stringIn)
參數
| 資料類型 | 參數 | 使用 | 說明 |
|---|---|---|---|
| 字串 | stringIn | IN | 一個變數或文字字串。 |
| 字串 | stringOut | OUT | 一個包含輸入字串的變數, 該輸入字串具有 URL 中不允許的字元, 會由它們的十六進位跳出值來置換。 |
回覆碼
| 回覆碼 | 說明 |
|---|---|
| -1001 | 伺服器無法處理 Net.Data 的配置記憶體要求。 |
| 1003 | 函數呼叫中傳遞的參數超過容許數目,或少於函數要求的最小數目。 |
| 1005 | 函數呼叫上傳遞的參數必須是字串變數,但卻是不同的變數類型。 |
| 1006 | 文字字串傳遞給函數呼叫中的參數, 但此參數必須是輸出參數。 |
用法注意事項
您可以使用這個函數,將表 56中列示的任何字元傳送到另一個巨集或 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 |
範例
範例 1: 以跳出值置換 string1 中的 & 符號與空格,並將結果指定到 string2
@DTW_URLESCSEQ(string1,string2)
範例 2:以跳出碼置換空格與 & 符號。
@DTW_rURLESCSEQ("Guys & Dolls")
範例 3:在 ROW 區塊中使用 DTW_rURLESCSEQ, 並以跳出碼置換空格和 'at' 字元。
%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>
當應用程式使用者按一下名稱 "Patrick O'Brien" 時, 指定給名稱和電子郵件位址的值會在 URL 查詢字串中矩陣式排列, 這會導致 Net.Data 執行 fullrpt.mac 巨集的輸入區段。