IBM Books

Net.Data 参考


一般函数

一般函数帮助您使用 Net.Data 来开发 Web 页,这些函数不适合在其它类别中。下列函数是一般 目的的函数:

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>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>
 
%}

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>This report created on @DTW_rDATE("U").

DTW_EXIT


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>
 %}

DTW_GETCOOKIE


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)


表 28. DTW_GETCOOKIE 参数
数据类型 参数 用法 说明
字符串 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:

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:返回 PATH 语句 OUT 参数上的值

@DTW_GETENV(myEnvVarName, myEnvVarValue)

例 2:返回 PATH 语句的值

@DTW_rGETENV(myPath)

例 3:返回服务器的名称值

The server is @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 十进制转义代码。)您可以使用 此函数对不想让 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:
@ @符号 &#64;
/ 反斜杠 &#92;
^ ^符号 &#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 指定作者地址的变量或文字串。此参数是必需的。有效的格式是:

  • Name <user@domain>

  • <user@domain>

  • user@domain
字符串 recipient IN 指定发送此消息的目标电子邮件地址的变量或文字串。这个值 包含多个收件人,之间用逗号(,)隔开。此参数是必需的。 有效的 recipient 格式是:

  • Name <user@domain>

  • <user@domain>

  • user@domain
字符串 message IN 包含电子邮件消息文本的变量或文字串。此参数是必需的。
字符串 subject IN 包含主题行文本的变量或文字串。
字符串 CarbonCopy IN 包含电子邮件地址或者附加收件人的名称和电子邮件地址 的变量或文字串。 这个值包含多个附加的收件人,之间用逗号(,)隔开。 参阅 Recipient 参数的有效收 件人格式。
字符串 BlindCarbonCopy IN 包含电子邮件地址,或者附加收件人的名称和电子邮件地址,但 是收件人不出现在电子邮件标题中的变量或文字串。 这个值包含多个附加的收件人,之间用逗号(,)隔开。 参阅 Recipient 参数的有效收 件人格式。
字符串 ReplyTo IN 包含答复这条发送消息的电子邮件地址的变量或者文字串。 有效的 ReplyTo 格式是:

  • Name <user@domain>

  • <user@domain>

  • user@domain
字符串 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 查询动态地指定产品的版本号或不同的提供价格)。

DTW_SETCOOKIE


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(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 的可选属性,属性间用分号分隔的字符串。 这些属性是:

expires = date
指定一个日期字符串,它定义 cookie 的有效寿命。 在此日期期满后,将不再存储或检索这个 cookie。语法:
weekday, DD-month-YYYY HH:MM:SS GMT

其中:

weekday
指定星期中各天的全名。

DD
指定月份的数值日期。

month
指定月份的三字符缩写。

YYYY
指定四个字符的数字年份。

HH:MM:SS
用小时、分钟和秒指定时间戳记。

domain = domain_name
指定 cookie 的域属性,供域属性匹配使用。

path = path
指定针对此 cookie 有效的域中 URL 的子集。

secure
指定只在安全通道中才把此 cookie 传输到 HTTP 服务器。

例 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>
  %}

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 OUT 具有要赋给此环境变量的值的变量或者文字串。
字符串 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 - 民用时间 (使用12小时时钟的 hh:mmAM/PM)

L - 本地时间 (hh:mm:ss)

N - 常规时间 (使用24小时时钟的 hh:mm:ss)

H - 自子夜以来的小时数

M - 自子夜以来的分钟数

S - 自子夜以来的秒数

字符串 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().
%}

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
@ @符号 %40
[ 左方括号 %5B
/ 斜杠 %5C
] 右方括号 %5D
^ ^符号 %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,并把空格和“@”符号转换成 URL 编码格式

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

当应用程序用户单击名称时,名称和 e-mail 地址都被发送到 Net.Data 宏 fullrpt.mac 的输入模块中,编码后的值作为变量 nameemail


[ 页的顶部 | 上一页 | 下一页 | 目录 | 索引 ]