Net.Data 程序设计指南
Net.Data 提供一个内部函数的大型集合以简化 Web 页面开发。
这些函数已经被 Net.Data 所定义,因此您不需要在 FUNCTION 模块中
定义它们。在宏中,可以调用用户定义函数的任何地方同样可以很方便地调用内部
函数。
内部函数可以用三钟不同的方式返回它们的结果。您可以通过
它的前缀来区别每种方式如何返回它的结果:
- DTW_、DTWF_ 和 DTWR_:调用结果在输出
参数中返回,或不返回结果。DTWF_ 和 DTWR_ 分别是平面文件和
Web 注册表函数。
- DTW_r、DTWF_r 和 DTWR_r: 结果返回至
函数调用值。
- DTW_m: 多个结果在传送至函数的参数中
返回。
一些内部函数并不具有每种类型。关于更多的信息,请参阅 Net.Data 参考指南。
此函数集合帮助您通过改变数据或访问系统服务程序来开发 Web 页
面。您可以使用它们来查询和设置环境变量,使用 HTML 转换代码
,并从系统中获取其它有用的信息。
这些函数执行数学运算,让您计算或者改变数字数据。除标准数学运
算以外,您还可以执行模数除法、指定结果精度并使用科学记数法。
这些函数让您修改字符串。您可以更改字符串的大小写、插入或者删
除字符、将一个字符串值分配给另一个变量以及其它有用的功能。
这些函数允许您处理字符串中的单词。大部分的这些函数与字符串函
数相同地工作,但是对整个单词工作。它们让您计算字符串中的单词数
、除去单词、搜索字符串中的一个单词。
您可以使用这些函数来处理 Net.Data 表格变量。表格变量中包含了一个值数组以及相关的列名。
它们提供一种便利的方法将一组值传递给一个函数。
如果您选择使用平面文件(或者明文文件)作为数据源,则可以使用平
面文件接口 (FFI) 和它的关联的 Net.Data 函数来在 Web 浏览器上打开、关闭、读
、写和删除文件。您必须为初始化文件中的 FFI_PATH 变量指定
一个路径。
文件语言支持使用 FFI 功能通过浏览器从 Web 客户请求来读取或者
写入 Web 服务器上的文件。FFI 把文件看作是一个记录文件,每个记录
等价于 Net.Data 宏表格变量中的一行,记
录中的每个值等价于 Net.Data 宏表格变量中的一个字段值。 FFI 从一
个文件中将记录读入 Net.Data 宏表格,并将行从一个表格写到记录中。
您可以在 Net.Data 初始化文件中指定哪些文件可以由 FFI 函数通过 FFI_PATH
语句来存取。 FFI 只搜索在语句中列出的路径,所以其它目录中的文件是安全的。 这是一条例子语句:
FFI_PATH C:\public;.\;E:\WWW;E:\guest;A:
列在 FFI_PATH 中的路径是自左向右一个一个搜索的。 并使用找到的第一个副本。 如果在初始化文件中没有 FFI_PATH,则 FFI 试图在当前目录或使用给定的路径
(例如,../reports/nov96.txt)进行搜索。 请参阅“高级
细节”以获取有关路径搜索的细节。 Net.Data 初始化文件装运时没有 FFI_PATH。
在设置 FFI 之前必须先制定计划。 请考虑以下各点:
- 选择适合于平面文件操作使用的目录。
应该将这些目录添加到 FFI_PATH 中,
把搜索限制在那些目录中。
- 请不要随便允许其它人员在宏中执行 DTWF_REMOVE 或其它调出操作,以防止这些
人员删除或更改当前目录中可能存在的、具有扩展名 .dll 和 .cmd 的文件。
- 通过合理地控制添加到系统中去的宏,采取适当的步骤保护系统中的文件。
- 不要在 FFI_PATH 中指定匿名 FTP 用户可以进行写操作的路径。
如果指定,则有些人可以在系统中存放一个 Net.Data 宏,在这个宏中可
以执行以前不允许的操作。
- 我们建议不要将 Net.Data 初始化文件的路径添加到 FFI_PATH。
一般考虑
- 您可以调入任何明文文件,但是 Net.Data 宏语法由 Net.Data 解
释,并且文本中可能有的 HTML 标记被用于让浏览器格式化文本。
- 仅当操作系统是区别大小写的,FFI 参数才是区别大小写的
。
当前目录
- Net.Data 的当前目录通常是 \www\cgi-bin,
,但这有赖于 Web 服务器的配置。 如
果服务器的缺省请求路由选择或资源映射被更改,则当前目录也可能被更改。
- 建议在 FFI_PATH 中引用当前目录的方法是使用句点和斜杆,例如 .\。 在 FILENAME 参数中的文件名之前添加句点和斜杆,表示 FFI 仅在当前目录中查
找。 对于读操作,这表示将不搜索 FFI_PATH 中的其它路径。
DELIMITER 参数
- 定界符是 FFI 根据请求的变换操作将文件分隔为几部分(如一行中的几列)时使用
的标志或分隔符。
- 对于读操作,定界符将文件的内容分隔为表格中的行或列。 对于写操作,在
文件中放置定界符,以表示表格行或列中的一个值的结束。 定界符是作
为一个 Net.Data 宏字符串传递给 FFI 的。 字符串中不包含空字符(
NULL),除非明确地在定界符参数中列出。
这意味着如果要在定界符中使用 null 字符,则必须在定界符参数中指定 "\0"
(双引号中包含一个反斜杆和 0),而不能使用 "" (两个双引号)指定空串。
如果指定了 ASCIITEXT 转换,则将使用换行符作为定界符,并忽略其它任何请求
使用的定界符。
- 在写操作时,如果使用了一个与读操作时不同的定界符,则可能发生对
文件的意外更改。 如果用于写操作的定界符与用于读操作的定界符不同,则使用
新的定界符来写文件。
- 最大定界符长度是 256 个字符。
FFI_PATH
- FFI_PATH 的路径中必须包含有效的可打印字符。FFI 不允许在路径中包含
? (问号) 或 " (双引号)。
- 除非在 FFI_PATH 中有明确的指定,否则将不搜索 FFI_PATH 中列出的路
径的子目录。 例如,FFI 不把 .\test (在 FFI_PATH 中) 看作是目录 test (可能可以在 FILENAME 参数的开始部分找到)的一个精确匹配。
因此,如果要在名为 test 的子目录中查找一个称为 myfile.txt 的文件,
则必须在 FFI_PATH 中指定路径 .\test ,并且 FILENAME 参数应该为
.\test\myfile.txt 或 myfile.txt。这与在
FILENAME 参数中请求 test\myfile.txt,并且在 FFI_PATH 中包括当
前目录(这种方法不起作用)的方法不同。
- 如果在 FFI_PATH 中没有明确地指定当前目录,则在搜索完 FFI_PATH 中明确指
定的所有路径以后,最后才搜索当前目录。
DTWF_SEARCH 函数
- DTWF_SEARCH 返回的表格中包含三列。前面两列包含了找到的匹配所在的行号
和列号;最后一列是包含了在 SearchFor 参数中指定的字符的列值。 例如,如果文
件的第三列中的第四行包含了匹配的字符,则在返回的表格中有一行,其第一列
中的值为 "4",表示文件中匹配字符所在的行;其第二列中的值为 "3",表示文
件中匹配字符所在的列;第三列中包含完成的列值。
- SearchFor 参数不能包含定界符参数的内容。
STARTROW 和 ROWS 参数
- 对于 DTWF_DELETE、DTWF_INSERT、DTWF_UPDATE 和 DTWF_WRITE,如果指定
的 StartRow 值大于最后行,则 StartRow 更改为指向最后行,并返回一个错误。
- 对于 DTWF_READ 和 DTWF_SEARCH,返回 Rows,它的值是表格中的行数。
TABLE 参数
- FFI 表格中的行的最大长度是 16383 个字符。这个限制值中还包括
了 Net.Data 宏表格中用于每个列的一个空(NULL)字符。
TRANSFORM 参数
- 此参数指出考虑到 Net.Data 宏表格中的行和列,如何将文件分隔成几部分
。 例如,
ASCIITEXT 变换表示:文件的每一行对应于一个 Net.Data 宏表格,并
且 Net.Data 宏表格中只有一个列。 DELIMITED 变换表示:检查每一行
中的字符,找出 DELIMITER,DELIMITER 之后就是下一列的内容。
- 对于 ASCIITEXT 和 DELIMITED 变换,文件中的换行字符表示
Net.Data 宏表格中一行的结束。
文件锁定
- 除非您用 DTWF_OPEN 打开文件,否则文件不锁定。如果文件没有锁定,
则它可以在阅读和修改时被更改。这可能会丢失先前更改
的结果。 在执行使用文件系统锁定机制的宏期间,使用 DTWF_OPEN 打开文
件。
DTWF_APPEND
- 一个文件的当前内容影响了使用 DTWF_APPEND 的结果,特别是最后一行中最
后一列的内容。如果文件的最后一行的最后一列后面有一个换行字符,则追加
的数据将被放置在一个新行中。 否则,追加的数据将成为文件最后一行的一部分。
Net.Data Web 注册表提供在一些平台上,并为与应用程序相关的数
据提供持久性存储。
可以使用 web 注册表来存储配置信息和其它在运行时可以被基于 Web 的应用程序
动态存取的数据。 只可以通过使用 Net.Data 的 Web 宏和 Net.Data
注册表的内部支持,或者从为这个目的编写的 CGI 程序中存取一个 web
注册表。
标准 Web 页的开发要求直接将 URL 放置在这个页的 HTML 源文件中。 这使得
超链的更改更为困难。此静态性质同样限制了可以方便地放置在 Web 页中的超链
类型。 使用 Web 注册表来存储与一个应用程序相关的数据,例如 URL,可
以帮助创建能够动态设置超链的 HTML 页。
对注册表具有写存取权的应用程序开发者和 Web 管理员,可以存储
和维护注册表中的信息。 在应用程序运行时,它们从其关联的注册表中
检索信息。这种设施使您可以设计灵活的应用程序,允许移动应用程序和服务器。 使用
动态设置的超链,Net.Data 宏可以用于创建 HTML 页。
在 Web 注册表中,信息是以注册表项的格式存储的。
每个注册表项由一对字符串组
成:一个 RegistryVariable 字符串和一个对应的
RegistryData 字符串。 可以用一对字符串表示的任何信息都可以作为一
个注册表项来存储。
变量字符串可以作为一个搜索关键字,用来从一个注册表中查找
和检索特定的注册表项。
您可以参阅 表 3 中的 Web 注册表的内容
。
表 3. 例子 Web 注册表
| CompanyName
| WorldConnect
|
| Server
| ftp.einet.net
|
| JohnDoe/foreground
| Green
|
| CompanyURL/IBM Corp.
| http://www.ibm.com
|
| CompanyURL/Sun Microsystems Corp.
| http://www.sun.com
|
| CompanyURL/Digital Equipment Corp.
| http://www.dec.com
|
| JaneDoe/Home_page
| http://jane.info.net
|
这里是考虑使用 Web 注册表的一些原因:
- Web 注册表可以用于存储服务器的别名和 URL,这个 URL 可以使得应用
程序和服务器的移动更方便。
- 应用程序开发者可以将基于 Web 的应用程序和在注册表中预定义的
数据(例如 URL)一起发售。 最终用户可以通过修改注册表数据来更改应用程序的特性。
- 可以使用一个 web 注册表,根据产品名、国家语言、制造商等等来执行
URL 搜索。
Web 注册表中索引过的项是 RegistryVariable 字符串中追加了一个附加
Index 字符串的项,如在 RegistryVariable/Index 中所示。
对于为了使用索引过的项而设计的内部函数,用户可以在一个独立的参数中提
供索引字符串的值,将这个参数传递给函数。 多个带索引的注册表项可以具
有相同的 RegistryVariable 字符串值,但可以通过拥有不同的“索引”字符串来维持
它们的唯一性。
表 4. 例子索引的 Web 注册表
| Smith/Company_URL
| http://www.ibmlink.ibm.com
|
| Smith/Home_page
| http://www.advantis.com
|
尽管上面两个带索引的项具有相同的 RegistryVariable 字符串值 Smith,但它们的索引字符串是不同的。 Web 注册表
的函数将它们看作是两个不同的项。
[ 页的顶部 | 上一页 | 下一页 | 内容表 | 索引 ]