一般函数帮助您使用 Net.Data 来开发 Web 页,这些函数不适合在其它类别中。下列函数是一般 目的的函数:
| 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 |
|
|
|
|
|
|
|
|
目的
高速缓存作为宏处理结果而生成的部分或整个 Web 页面。
格式
@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 | 输入参数中包含一个空值。 |
| 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>This is the page title
</head>
<body>
<center>
This is the Main Heading
<p>It is $(time). Have a nice day!
</body>
</html>
%}
例 2:因为作高速缓存的决定依赖于 HTML 输出的期望尺寸, 所以把函数放在 HTML 块中
%DEFINE { ...%}
...
%FUNCTION(DTW_SQL) count_rows(){
select count(*) from customer
%REPORT{
%ROW{
@DTW_ASSIGN(ALL_ROWS, V1)
%}
%}
%}
%FUNCTION(DTW_SQL) all_customers(){
select * from customer
%}
%HTML(OUTPUT) {
<html>
<head>
<title>This is the customer list
</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 块中的 文本(This is the customer list)发送给浏览器;此文本永不作高速缓存。跟在函数调 用后的行 (@count_rows()) 在满足 IF 块的条件时作高速缓存或检索。两部分共同形 成一个完整的 Net.Data 输出页。
例 3:动态地检索高速缓存标识符和放在高速缓存的页面标识符
%HTML(OUTPUT) {
%IF (customer == "Joe Smith")
@DTW_CACHE_PAGE(@DTW_rGETENV("DTW_MACRO_FILENAME"), @DTW_rGETENV("URL"),"-1", status)
%ENDIF
...
<html>
<head>
<title>This is the page title</title>
</head>
<body>
<center>
<h3>This is the Main Heading</h3>
<p>It is @DTW_rDATE(). Have a nice day!
</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 | 输入参数中包含一个空值。 |
| 1003 | 在函数调用时传递的参数数目或者超过了允许的最大数目,或者小于该函数必需的最小数目。 |
| 1005 | 传递给函数调用的参数应该是一个字符串变量,但实际上是另一个类型的变量。 |
| 1006 | 传递给函数调用的参数必须是一个输出参数,但实际上传递了一个文字串。 |
| 1007 | 参数中包含了一个无效值。 |
例
例 1:常规日期格式
@DTW_DATE(results)
例 2:欧洲日期格式
@DTW_DATE("E", results)
例 3:美国日期格式
%HTML (report){
<P>This report created on @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 页面都发送给 Web 浏览器。
格式
@DTW_EXIT()
返回码
| 返回码 | 说明 |
|---|---|
| 1003 | 在函数调用时传递的参数数目或者超过了允许的最大数目,或者小于该函数必需的最小数目。 |
用法注意事项
例
例 1:退出宏
%HTML(cache_example) {
<html>
<head>
<title>This is the page title</title>
</head>
<body>
<center>
<h3>This is the Main Heading</h3>
<!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!>
<! Joe Smith sees a very short page !>
<!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!>
%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 | 输入参数中包含一个空值。 |
| 1002 | 输入参数中包含一个由空终结字符组成的字符串值。 |
| 1003 | 在函数调用时传递的参数数目或者超过了允许的最大数目,或者小于该函数必需的最小数目。 |
| 1005 | 传递给函数调用的参数应该是一个字符串变量,但实际上是另一个类型的变量。 |
| 1006 | 传递给函数调用的参数必须是一个输出参数,但实际上传递了一个文字串。 |
| 8000 | 找不到 cookie。 |
用法注意事项
在两个独立的 HTTP 请求中定义并检索 cookie。因为只有在 cookie 被送给客户之后它才可见,所以宏试图获取在相同 HTTP 请求中已定义过的 cookie,您就可 能收到意料之外的结果。
例
例 1:检索包含用户标识符和口令信息的 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 Club</h1>
@DTW_GETCOOKIE("NDC_name", name)
%IF ($(RETURN_CODE) == "8000") %{ The cookie is not found. %}
<form method="post" action="remember">
<p>Welcome to the club. Please enter your name.<br>
<input name="name">
<input type="submit" value="submit"><br>
</form>
%ELSE
<p>Hi, $(name). Welcome back.
%ENDIF
</body>
</html>
%}
HTML 欢迎段检查 ookie NDC_name 是否存在。如果 cookie 存在,则浏览器 显示个人的问候。如果此 cookie 不存在,则表单将提示要求输入用户的名字并把它投递到 HTML 记忆段,这将把用户的名字 设置到 cookie NDC_name 里,如下所示:
%HTML(remember) {
<html>
<body>
<H1>Net.Data Club</H1>
@DTW_SETCOOKIE("NDC_name", name, "expires=Wednesday, 01-Dec-2010 00:00:00;path=/")
<p>Thank you.
<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:返回 PATH 语句 OUT 参数上的值
@DTW_GETENV(myEnvVarName, myEnvVarValue)
例 2:返回 PATH 语句的值
@DTW_rGETENV(myPath)
例 3: 返回用于服务器协议的值
The server is @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 | 空格 |   |
| " | 双引号 | " |
| # | 数值符号 | # |
| % | 百分号 | % |
| & | &符号 | & |
| [ | 左方括号 | ( |
| ] | 右方括号 | ) |
| + | 加号 | + |
| \ | 斜杠 | / |
| : | 冒号 | : |
| ; | 分号 | ; |
| < | 小于 | < |
| = | 等于 | =: |
| > | 大于 | >: |
| ? | 问号 | ?: |
| @ | @符号 | @ |
| / | 反斜杠 | \ |
| ^ | ^符号 | ^ |
| { | 左花括号 | { |
| | | 竖线 | | |
| } | 右花括号 | } |
| ~ | ~符号 | ~ |
例
例 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 | 指定发送此消息的目标电子邮件地址的变量或文字串。这个值
包含多个收件人,之间用逗号(,)隔开。此参数是必需的。有效的 recipient 格式是:
|
| 字符串 | message | IN | 包含电子邮件消息文本的变量或文字串。此参数是必需的。 |
| 字符串 | subject | IN | 包含主题行文本的变量或文字串。这是一个可选参数。必须指定一个空串 ("") 来指定附加的参数。 |
| 字符串 | CarbonCopy | IN | 包含电子邮件地址或者附加收件人的名称和电子邮件地址 的变量或文字串。这个值包含多个附加的收件人,之间用逗号(,)隔开。参阅 Recipient 参数的有效收 件人格式。这是一个可选参数。必须指定一个空串 ("") 来指定附加的参数。 |
| 字符串 | BlindCarbonCopy | IN | 包含电子邮件地址,或者附加收件人的名称和电子邮件地址,但 是收件人不出现在电子邮件标题中的变量或文字串。这个值包含多个附加的收件人,之间用逗号(,)隔开。参阅 Recipient 参数的有效收 件人格式。这是一个可选参数。必须指定一个空串 ("") 来指定附加的参数。 |
| 字符串 | ReplyTo | IN | 包含答复这条发送消息的电子邮件地址的变量或者文字串。这是一个可选参数。必须指定一个空串 ("") 来指定附加的参数。有效的 ReplyTo 格式是:
|
| 字符串 | Organization | IN | 包含 sender 机构名称的变量或者文字串。这是一个可选参数。 |
返回码
| 返回码 | 说明 |
|---|---|
| -1001 | 服务器不能处理 Net.Data 请求来分配内存。 |
| 1001 | 输入参数中包含一个空值。 |
| 1002 | 输入参数中包含一个由空终结字符组成的字符串值。 |
| 1003 | 在函数调用时传递的参数数目或者超过了允许的最大数目,或者小于该函数必需的最小数目。 |
| 1005 | 传递给函数调用的参数应该是一个字符串变量,但实际上是另一个类型的变量。 |
| 7000 | Net.Data 无法连接到指定的 SMTP 服务器。 |
| 7001 | 在 Net.Data 试图转播电子邮件消息到指定的 SMTP 服务器时发生 SMTP 错误。 |
| 7002 | 指定的 SMTP 服务器不支持扩展的简单邮件传送协议 (ESMTP)。 |
用法注意事项
Net.Data for OS/390 的用户不需要为了 SMTP 服务器而修改电子邮件消息。
| Locale | 字符集 | 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>", "There is a meeting at 9:30.",
"Status meeting")
DTW_SENDMAIL 函数发送一条具有下列信息的电子邮件消息:
Date: Mon, 3 Apr 1998 09:54:33 PST To: <ibmuser2@ibm.com> From: <ibmuser1@ibm.com> Subject: Status meeting There is a meeting at 9:30.Date 的信息通过使用系统日期和时间函数来构造,并且以 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 函数发送一条具有下列信息的电子邮件消息:
Date: Mon, 3 Apr 1998 09:54:33 PST To: IBM User 2 <ibmuser2@ibm.com>, IBM User 3 <ibmuser3@ibm.com>, IBM User 4 <ibmuser4@ibm.com> CC: IBM User 5 <ibmuser5@ibm.com> BCC: IBM User 6 <ibmuser6@ibm.com> From: IBM User 1 <ibmuser1@ibm.com> ReplyTo: meeting@ibm.com Organzation: IBM Subject: Status meeting There is a meeting at 9:30.
例 3:通过 Web 格式的界面构建和发送电子邮件的宏
%HTML(start) {
<html>
<body>
<h1>Net.Data E-Mail Example</h1>
<form method="post" action="sendemail">
<p>To:<br><input name="recipient"><p>
Subject:<br><input name="subject"><p>
Message:<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 E-Mail Example</h1>
@DTW_SENDMAIL("Net.Data E-mail Service <netdata@us.ibm.com>", recipient, message, subject)
<p>E-mail has been sent out.
</body>
</html>
%}
这个宏通过一个 Web 格式界面发送电子邮件。HTML 开始段显示一张表,在其中可以输入 收件人的电子邮件地址、主题和消息。当用户单击发送电子邮件按钮时,此 条消息发送给 HTML(vsendemail) 段中指定的收件人。这一段调用 DTW_SENDMAIL 并使用从 Web 表中 获取的参数,确定电子邮件消息的内容,以及发送者和收件人。一旦发出电子邮件消息,显示一条确 认通知。
例 4:使用 SQL 查询确定收件人列表的一个宏
%Function(DTW_SQL) mailing_list(IN message) {
SELECT EMAIL_ADDRESS FROM CUSTOMERS WHERE ZIPCODE='CA'
%REPORT {
Sending out product information to all customers who live in California...<P>
%ROW {
@DTW_SENDMAIL("John Doe Corp. <John.Doe@doe.com>", V1, message, "New Product Release")
E-mail sent out to customer $(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 | 输入参数中包含一个空值。 |
| 1002 | 输入参数中包含一个由空终结字符组成的字符串值。 |
| 1003 | 在函数调用时传递的参数数目或者超过了允许的最大数目,或者小于该函数必需的最小数目。 |
| 1005 | 传递给函数调用的参数应该是一个字符串变量,但实际上是另一个类型的变量。 |
用法注意事项
例
例 1:定义具有“安全”增强选项的、包含用户标识符和口令信息的 cookie
@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 Club</h1>
@DTW_GETCOOKIE("NDC_name", name)
%IF ($(RETURN_CODE) == "8000") %{ The cookie is not found. %}
<form method="post" action="remember">
<p>Welcome to the club. Please enter your name.<br>
<input name="name">
<input type="submit" value="submit"><br>
</form>
%ELSE
<p>Hi, $(name). Welcome back.
%ENDIF
</body>
</html>
%}
HTML(welcome) 段检查 cookie NDC_name是否存在。如果 cookie 存在,则浏览器 显示个人的问候。如果此 cookie 不存在,则浏览器提示要求用户的名字,把它投递到 HTML(remember) 记忆段。这一 段把用户的名字记录到 cookie NDC_name 中,如下所示:
%HTML(remember) {
<html>
<body>
<H1>Net.Data Club>
@DTW_SETCOOKIE("NDC_name", name, "expires=Wednesday, 01-Dec-2010 00:00:00;path=/")
<p>Thank you.
<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 | 输入参数中包含一个空值。 |
| 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>This report was created at @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 |
| @ | @符号 | %40 |
| [ | 左方括号 | %5B |
| / | 斜杠 | %5C |
| ] | 右方括号 | %5D |
| ^ | ^符号 | %5E |
| { | 左花括号 | %7B |
| | | 竖线 | %7C |
| } | 右花括号 | %7D |
| ~ | ~符号 | %7E |
例
例 1:用转义值替换 string1 中的空格和“与”符号, 并把结果分配给 string2
@DTW_URLESCSEQ(string1,string2)
例 2:用转义代码替换空格和“与”字符。
@DTW_rURLESCSEQ("Guys & Dolls")
例 3:在 ROW 块中使用 DTW_rURLESCSEQ,并用转义代码替换空格和“@”符号。
%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 宏的输入部分。