一般函数帮助您使用 Net.Data 来开发 Web 页,这些函数不适合在其它类别中。下列函数是一般 目的的函数:
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>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 | 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>This report created on @DTW_rDATE("U").
AIX | HP-UX | OS/2 | OS/390 | OS/400 | SCO | SUN | Win NT |
X | X | X |
|
| X | X | X |
目的
指定立即离开宏。Net.Data 保证这个宏到现在为止所创建的页将发送给浏览器。
性能提示:使用 DTW_EXIT,在生成输出后停止宏文件的处理,以节省 Net.Data 必须处理整个文件的时间。
格式
@DTW_EXIT()
例
例 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 | OS/2 | OS/390 | OS/400 | SCO | SUN | Win NT |
X | X | X |
|
| X | X | X |
目的
指定要阅读的 cookie 的名称,并返回它的值。
要检索一个 cookie,它必须以 DTW_SETCOOKIE() 函数定义过。参阅DTW_SETCOOKIE, 学习如何定义 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 的值(例如用户状态信息)的变量。 |
例
例 1:检索包含用户标识符和口令信息的 cookie
@DTW_GETCOOKIE("mycookie_name_for_userID", userID) @DTW_GETCOOKIE("mycookie_name_for_password", password)
例 2:确定在收集用户信息之前某个用户的 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 欢迎段检查 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> %}
返回码
如果未找到此 cookie,则返回返回码 8000。可能由于下列原因找不到这个 cookie:
服务器不应当期望客户超过这些限制。 当超过 300 个 cookie 限制或每台服务器 20 个 cookie 的限制时,客户应当删除近期最少使用 的 cookie。当遇到一个 cookie 大于 4 千字节时,此 cookie 应适当去尾,但是只要它小于 4 千字 节,名称应保持原样。
参阅 Netscape 的说明,获取"Persistent Client State HTTP Cookies" 中的最新信息,它在下面的网址可用:
http://search.netscape.com/newsref/std/cookie_spec.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:返回 PATH 语句 OUT 参数上的值
@DTW_GETENV(myEnvVarName, myEnvVarValue)
例 2:返回 PATH 语句的值
@DTW_rGETENV(myPath)
例 3:返回服务器的名称值
The server is @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 十进制转义代码。)您可以使用 此函数对不想让 Web 浏览器解释为 HTML 的数据进行编码。例如,通过使用适当的转义字符, 可以显示小于(<)和大于(>)符号,这些符号通常作为 HTML 标记保留。
在第二个例子中,HTML 中的以下字符串在每个数字之间只显示一个空格。
1 2 3
使用 DTW_HTMLENCODE 来确保显示正确个数的空格。
表 31显示由 DTW_HTMLENCODE 函数编码的字符。
字符 | 名称 | 代码 |
SPACE | 空格 |   |
" | 双引号 | " |
# | 数值符号 | # |
% | 百分号 | % |
& | &符号 | & |
[ | 左方括号 | ( |
] | 右方括号 | ) |
+ | 加号 | + |
\ | 斜杠 | / |
: | 冒号 | : |
; | 分号 | ; |
< | 小于 | < |
= | 等于 | =: |
> | 大于 | >: |
? | 问号 | ?: |
@ | @符号 | @ |
/ | 反斜杠 | \ |
^ | ^符号 | ^ |
{ | 左花括号 | { |
| | 竖线 | | |
} | 右花括号 | } |
~ | ~符号 | ~ |
格式
@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 | 指定发送此消息的目标电子邮件地址的变量或文字串。这个值
包含多个收件人,之间用逗号(,)隔开。此参数是必需的。
有效的 recipient 格式是:
|
字符串 | message | IN | 包含电子邮件消息文本的变量或文字串。此参数是必需的。 |
字符串 | subject | IN | 包含主题行文本的变量或文字串。 |
字符串 | CarbonCopy | IN | 包含电子邮件地址或者附加收件人的名称和电子邮件地址 的变量或文字串。 这个值包含多个附加的收件人,之间用逗号(,)隔开。 参阅 Recipient 参数的有效收 件人格式。 |
字符串 | BlindCarbonCopy | IN | 包含电子邮件地址,或者附加收件人的名称和电子邮件地址,但 是收件人不出现在电子邮件标题中的变量或文字串。 这个值包含多个附加的收件人,之间用逗号(,)隔开。 参阅 Recipient 参数的有效收 件人格式。 |
字符串 | ReplyTo | IN | 包含答复这条发送消息的电子邮件地址的变量或者文字串。
有效的 ReplyTo 格式是:
|
字符串 | Organization | IN | 包含 sender 机构名称的变量或者文字串。 |
例
例 1:构建并发送一个简单电子邮件消息的函数调用
@DTW_SENDMAIL("<andreb@ibm.com>", "<juliew@ibm.com>", "There is a meeting at 9:30.", "Status meeting"
DTW_SENDMAIL 函数发送一条具有下列信息的电子邮件消息:
Date: Mon, 3 Apr 1998 09:54:33 PST To: <juliew@ibm.com> From: <andreb@ibm.com> Subject: Status meeting There is a meeting at 9:30.Date 的信息通过使用系统日期和时间函数来构造,并且以 SMTP 特定数据格式格 式化。
例 2:构建并发送一条电子邮件消息的函数调用,该消息具有多个收件人 、复写拷贝和盲目复写拷贝收件人以及公司名称
@DTW_SENDMAIL("Michael Pauser <michael@ibm.com>", "Andre Beck <abeck@ibm.com>, Julie Wood <juliew@ibm.com>, Debby Nakamura <debbyn@ibm.com>", "There is a meeting at 9:30.", "Status meeting", "Dave Hernandez <davehern@ibm.com>", "Anita Chiu <anitac@ibm.com", "meeting@ibm.com", "IBM")
DTW_SENDMAIL 函数发送一条具有下列信息的电子邮件消息:
Date: Mon, 3 Apr 1998 09:54:33 PST To: Andre Beck <abeck@ibm.com>, Julie Wood <juliew@ibm.com>, Debby Nakamura <debbyn@ibm.com> CC: Dave Hernandez <davehern@ibm.com> BCC: Anita Chiu <anitac@ibm.com> From: Michael Pauser <michael@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 | OS/2 | OS/390 | OS/400 | SCO | SUN | Win NT |
X | X | X |
|
| X | X | X |
目的
定义一个 cookie 名称、值和选项,例如到期日和安全性要求。
要检索一个 cookie,使用 DTW_SETCOOKIE() 函数。参阅DTW_GETCOOKIE 学习如何定义 cookie。
如果未指定 secure 要求,则此 cookie 可能在不保证安全的通道中发送。安全选项 不要求浏览器对 cookie 进行加密,也不保证包含 DTW_SETCOOKIE 语句的页面在 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:定义具有“安全”增强选项的、包含用户标识符和口令信息的 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 | 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 | OUT | 具有要赋给此环境变量的值的变量或者文字串。 |
字符串 | 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>This report was created at @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 |
@ | @符号 | %40 |
[ | 左方括号 | %5B |
/ | 斜杠 | %5C |
] | 右方括号 | %5D |
^ | ^符号 | %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,并把空格和“@”符号转换成 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>
当应用程序用户单击名称时,名称和 e-mail 地址都被发送到 Net.Data 宏 fullrpt.mac 的输入模块中,编码后的值作为变量 name 和 email。