IBM Books

参考

FFI 内部函数

DTWF_APPEND


AIX HP-UX Linux OS/2 OS/390 OS/400 SCO SUN Win NT
X

X X X
X X

目的

将 Net.Data 表格的内容写到一个文本文件的结尾。

格式

@DTWF_APPEND(filename, transform, delimiter, table, retry, rows)

@DTWF_APPEND(filename, transform, delimiter, table, retry)

@DTWF_APPEND(filename, transform, delimiter, table)

参数

表 167. DTWF_APPEND 参数
数据类型 参数 用法 说明
字符串 filename INOUT 向它添加变量内容的文件的名称。此函数成功完成时,这个参数返回全限定文件名。
字符串 transform IN 文件的格式:

  • ASCIITEXT - 将表格写入文件,在两个列值之间使用换行字符,并忽略 delimiter 参数。

  • DELIMITED - 将表格写入文件,并在 delimiter 参数中指定定界符。
字符串 delimiter IN 用于表示一个值结束的字符串。这个参数是区别大小写 的。如果 transform 为 ASCIITEXT,则忽略此参数。
表格 table IN 用于读取记录的表格变量。

对于 非 OS/400 用户:FFI 表中一行的最大的长度为 16383 个字符。这个限制包括对 Net.Data 宏表格中每一列所使用 的一个空字符。

整数 retry IN 不能立即追加文件时需要的重试次数。缺省情况是不重试。
整数 rows IN table中要追加的最大行数。缺省情况是追加 所有的行。指定 0 则添加所有的行。

返回码

表 168. DTWF_APPEND 返回码
返回码 说明
-1001 服务器不能处理 Net.Data 请求来分配内存。
1001 输入参数中包含一个空值。
1002 输入参数中包含一个由空终结字符组成的字符串值。
1003 在函数调用时传递的参数数目或者超过了允许的最大数目,或者小于该函数必需的最小数目。
1004 传递给函数调用的参数应该是一个 Net.Data 宏表格变量, 但实际上是另一个类型的变量。
1005 传递给函数调用的参数应该是一个字符串变量,但实际上是另一个类型的变量。
1006 传递给函数调用的参数必须是一个输出参数,但实际上传递了一个文字串。
1007 参数中包含了一个无效值。
2000 平面文件接口内部函数无法找到指定的文件。
2001 平面文件接口内部函数无法打开指定的文件, 因为它正被这个进程或另一个进程所使用,不能以指定的方式进行共享。
2003 平面文件接口内部函数无法将一行数据读入一表格变量,因为行中的字 节数目超过了所支持的最大字节数目。
2004 平面文件接口内部函数试图寻找一个文件,但是在 FFI_PATH 配置文件 变量中遇到一条路径,其长度大于所支持的最大字节数 4095。
2005 对系统函数的调用失败。
2006 平面文件接口内部函数不能访问指定的文件,因为它正被这个或另一个进 程所使用,并且不能以指定的方式进行共享。

用法注意事项

文件中的当前内容将影响使用 DTWF_APPEND 的结果,特别是最后一行最后一列的内容。如果文件 最后一行最后一列的值后面跟有一个换行字符,则附加的数据放入新行中。否则,附加的数据成为文件最后 一行的一部分。

例 1

%DEFINE{
   myFile = "c:/private/myfile"
   myTable = %TABLE
%}
@DTWF_APPEND(myFile, "DELIMITED", " ;", myTable)

例 2

%DEFINE{
   myFile = "c:/private/myfile"
   myTable = %TABLE
%}
@DTWF_APPEND(myFile, "ASCIITEXT", " ;", myTable)

例 3

%DEFINE{
   myFile = "c:/private/myfile"
   myTable = %TABLE
%}
@DTWF_APPEND(myFile, "ASCIITEXT", " ;", myTable, "0", "10")

DTWF_CLOSE


AIX HP-UX Linux OS/2 OS/390 OS/400 SCO SUN Win NT
X

X X X
X X

目的

关闭由 DTWF_OPEN 打开的文件。

格式

@DTWF_CLOSE(filename, retry)

@DTWF_CLOSE(filename)

参数

表 169. DTWF_CLOSE 参数
数据类型 参数 用法 说明
字符串 filename INOUT 要关闭的文件名称。此函数成功完成时,这个参数返回全限定文件名。
整数 retry IN 不能立即关闭文件时需要的重试次数。缺省情况是不重试。

返回码

表 170. DTWF_CLOSE 返回码
返回码 说明
-1001 服务器不能处理 Net.Data 请求来分配内存。
1001 输入参数中包含一个空值。
1002 输入参数中包含一个由空终结字符组成的字符串值。
1003 在函数调用时传递的参数数目或者超过了允许的最大数目,或者小于该函数必需的最小数目。
1005 传递给函数调用的参数应该是一个字符串变量,但实际上是另一个类型的变量。
1007 参数中包含了一个无效值。
2002 平面文件接口内部函数无法关闭指定的文件,因为它不是由这个宏调用打开的。

例 1

@DTWF_CLOSE(myFile, "5")

DTWF_DELETE


AIX HP-UX Linux OS/2 OS/390 OS/400 SCO SUN Win NT
X

X X X
X X

目的

从文本文件中删除行。

格式

@DTWF_DELETE(filename, transform, delimiter, retry, rows, startrow)

@DTWF_DELETE(filename, transform, delimiter, retry, rows)

@DTWF_DELETE(filename, transform, delimiter, retry)

@DTWF_DELETE(filename, transform, delimiter)

参数

表 171. DTW_DELETE 参数
数据类型 参数 用法 说明
字符串 filename INOUT 要删除记录的那个文件的名称。此函数成功完成时,这个参数返回全限定文件名。
字符串 transform IN 文件的格式:

  • ASCIITEXT - 将表格写入文件,在两个列值之间使用换行字符,并忽略 delimiter 参数。

  • DELIMITED - 将表格写入文件,并在 delimiter 参数中指定定界符。
字符串 delimiter IN 用于表示一个值结束的字符串。这个参数是区别大小写 的。如果 transform 为 ASCIITEXT,则忽略此参数。
整数 retry IN 不能立即删除记录时所需要的重试次数。缺省情况是不重试。
整数 rows IN 要删除的最大行数。缺省情况是删除 所有的行。指定 0 则删除所有的行。
整数 startrow INOUT 开始执行删除操作的行号。值 1 表示从第一个行开始删除。如果这个值大于文件中的总行数,则将这个值 更改为最后一个记录,并返回一个错误。缺省情况是从 1 开始。

返回码

表 172. DTWF_DELETE 返回码
返回码 说明
-1001 服务器不能处理 Net.Data 请求来分配内存。
1001 输入参数中包含一个空值。
1002 输入参数中包含一个由空终结字符组成的字符串值。
1003 在函数调用时传递的参数数目或者超过了允许的最大数目,或者小于该函数必需的最小数目。
1005 传递给函数调用的参数应该是一个字符串变量,但实际上是另一个类型的变量。
1006 传递给函数调用的参数必须是一个输出参数,但实际上传递了一个文字串。
1007 参数中包含了一个无效值。
2000 平面文件接口内部函数无法找到指定的文件。
2001 平面文件接口内部函数无法打开指定的文件, 因为它正被这个进程或另一个进程所使用,不能以指定的方式进行共享。
2003 平面文件接口内部函数无法将一行数据读入一表格变量,因为行中的字 节数目超过了所支持的最大字节数目。
2004 平面文件接口内部函数试图寻找一个文件,但是在 FFI_PATH 配置文件 变量中遇到一条路径,其长度大于所支持的最大字节数 4095。
2005 对系统函数的调用失败。
2006 平面文件接口内部函数不能访问指定的文件,因为它正被这个或另一个进 程所使用,并且不能以指定的方式进行共享。

例 1

%DEFINE{
   myFile = "c:/private/myfile"
   myTable = %TABLE
   myWait = "5000"
   myRows = "2"
%}
@DTWF_DELETE(myFile, "Delimited", "|", myWait, myRows)

例 2

%DEFINE{
   myFile = "c:/private/myfile"
   myTable = %TABLE
   myStart = "1"
   myRows = "2"
%}
@DTWF_DELETE(myFile, "Asciitext", "|", "0", myRows, myStart)

DTWF_INSERT


AIX HP-UX Linux OS/2 OS/390 OS/400 SCO SUN Win NT
X

X X X
X X

目的

在文本文件中插入行。

格式

@DTWF_INSERT(filename, transform, delimiter, table, retry, rows, startrow)

@DTWF_INSERT(filename, transform, delimiter, table, retry, rows)

@DTWF_INSERT(filename, transform, delimiter, table, retry)

@DTWF_INSERT(filename, transform, delimiter, table)

参数

表 173. DTWF_INSERT 参数
数据类型 参数 用法 说明
字符串 filename INOUT 用于插入记录的文件名称。此函数成功完成时,这个参数返回全限定文件名。
字符串 transform IN 文件的格式:

  • ASCIITEXT - 将表格写入文件,在两个列值之间使用换行字符,并忽略 delimiter 参数。

  • DELIMITED - 将表格写入文件,并在 delimiter 参数中指定定界符。
字符串 delimiter IN 用于表示一个值结束的字符串。这个参数是区别大小写 的。如果 transform 为 ASCIITEXT,则忽略此参数。
表格 table IN 从中把记录插入到文件的表格变量。

对于 非 OS/400 用户:FFI 表中一行的最大的长度为 16383 个字符。这个限制包括对 Net.Data 宏表格中每一列所使用 的一个空字符。

整数 retry IN 不能立即写文件时需要的重试次数。缺省情况是不重试。
整数 rows IN table 中取出进行插入的最大行数。缺省情况是插入 所有的行。值 0 表示插入所有的行。
整数 startrow INOUT 开始执行插入操作的行号。如果这个值大于文件中的总行数,则将这个值 更改为最后一个记录,并返回一个错误。指定 0 意味着在文件开头插入。缺省情况是从 1 开始。

返回码

表 174. DTWF_INSERT 返回码
返回码 说明
-1001 服务器不能处理 Net.Data 请求来分配内存。
1001 输入参数中包含一个空值。
1002 输入参数中包含一个由空终结字符组成的字符串值。
1003 在函数调用时传递的参数数目或者超过了允许的最大数目,或者小于该函数必需的最小数目。
1004 传递给函数调用的参数应该是一个 Net.Data 宏表格变量, 但实际上是另一个类型的变量。
1005 传递给函数调用的参数应该是一个字符串变量,但实际上是另一个类型的变量。
1006 传递给函数调用的参数必须是一个输出参数,但实际上传递了一个文字串。
1007 参数中包含了一个无效值。
2000 平面文件接口内部函数无法找到指定的文件。
2001 平面文件接口内部函数无法打开指定的文件, 因为它正被这个进程或另一个进程所使用,不能以指定的方式进行共享。
2003 平面文件接口内部函数无法将一行数据读入一表格变量,因为行中的字 节数目超过了所支持的最大字节数目。
2004 平面文件接口内部函数试图寻找一个文件,但是在 FFI_PATH 配置文件 变量中遇到一条路径,其长度大于所支持的最大字节数 4095。
2005 对系统函数的调用失败。
2006 平面文件接口内部函数不能访问指定的文件,因为它正被这个或另一个进 程所使用,并且不能以指定的方式进行共享。

例 1

%DEFINE{
   myFile = "c:/private/myfile"
   myTable = %TABLE
   myWait = "3000"
%}
@DTWF_INSERT(myFile, "Delimited", "|", myTable, myWait)

例 2

%DEFINE{
   myFile = "c:/private/myfile"
   myTable = %TABLE
   myStart = "1"
   myRows = "2"
%}
@DTWF_INSERT(myFile, "Asciitext", "|", myTable, "0", myRows, myStart)

DTWF_OPEN


AIX HP-UX Linux OS/2 OS/390 OS/400 SCO SUN Win NT
X

X X X
X X

目的

打开一个文本文件。

格式

@DTWF_OPEN(filename, mode, retry)

@DTWF_OPEN(filename, mode)

参数

表 175. DTWF_OPEN 参数
数据类型 参数 用法 说明
字符串 filename INOUT 要打开的文件名称。此函数成功完成时,这个参数返回全限定文件名。
字符串 mode IN 请求的访问类型:

  • r - 打开一个现有的文件,用于读。

  • w - 创建一个文件,用于写。(如果存在同名文件,则将破坏此文件)

  • a - 打开一个文件,用于追加。如果找不到此文件,Net.Data 将创建此文件。

  • r+ - 打开一个现有文件,用于读和写。

  • w+ - 创建一个文件,用于读和写。(如果存在同名文件,则将破坏此文件)

  • a+ - 以追加方式打开一个文件,用于读和写。如果找不到此文件,Net.Data 将创建此文件。
整数 retry IN 不能立即打开文件时需要的重试次数。缺省情况是不重试。

返回码

表 176. DTWF_OPEN 返回码
返回码 说明
-1001 服务器不能处理 Net.Data 请求来分配内存。
1001 输入参数中包含一个空值。
1002 输入参数中包含一个由空终结字符组成的字符串值。
1003 在函数调用时传递的参数数目或者超过了允许的最大数目,或者小于该函数必需的最小数目。
1005 传递给函数调用的参数应该是一个字符串变量,但实际上是另一个类型的变量。
1006 传递给函数调用的参数必须是一个输出参数,但实际上传递了一个文字串。
1007 参数中包含了一个无效值。
2000 平面文件接口内部函数无法找到指定的文件。
2001 平面文件接口内部函数无法打开指定的文件, 因为它正被这个进程或另一个进程所使用,不能以指定的方式进行共享。
2006 平面文件接口内部函数不能访问指定的文件,因为它正被这个或另一个进 程所使用,并且不能以指定的方式进行共享。

用法注意事项

  1. 当该文件不存在时,应指定文件名的绝对路径,并且要创建该 文件的目录必须与 FFI_PATH 中指定的某一目录相匹配。如果不使用绝对路径,则将在当前工作目录 中打开该文件。

  2. DTWF_OPEN 保持文件的打开,否则此文件在每次平面文件操作结束后 关闭。

  3. 使用 DTWF_OPEN 来减少文件打开的次数。如果不使用 DTWF_OPEN,文件将在每次平面文件操作之后关闭。文件直到使用 DTWF_CLOSE 或宏处理结束后才关闭。

例 1

%DEFINE{
   myFile = "c:/private/myfile"
  myMode = "r+"
%}
@DTWF_OPEN(myFile, myMode, "1000")

DTWF_READ


AIX HP-UX Linux OS/2 OS/390 OS/400 SCO SUN Win NT
X

X X X
X X

目的

逐行从文本文件读入 Net.Data 表格。

格式

@DTWF_READ(filename, transform, delimiter, table, retry, rows, startrow, columns)

@DTWF_READ(filename, transform, delimiter, table, retry, rows, startrow)

@DTWF_READ(filename, transform, delimiter, table, retry, rows)

@DTWF_READ(filename, transform, delimiter, table, retry)

@DTWF_READ(filename, transform, delimiter, table)

参数

表 177. DTWF_READ 参数
数据类型 参数 用法 说明
字符串 filename INOUT 要把记录读入表格变量的那个文件的名称。此函数成功完成时,这个参数返回全限定文件名。
字符串 transform IN 文件的格式:

  • ASCIITEXT - 将表格写入文件,在两个列值之间使用换行字符,并忽略 delimiter 参数。

  • DELIMITED - 将表格写入文件,并在 delimiter 参数中指定定界符。
字符串 delimiter IN 用于表示一个值结束的字符串。这个参数是区别大小写 的。如果 transform 为 ASCIITEXT,则忽略此参数。
表格 table OUT 一个表格变量,用于写入从文件中读取的记录。

对于 非 OS/400 用户:FFI 表中一行的最大的长度为 16383 个字符。这个限制包括对 Net.Data 宏表格中每一列所使用 的一个空字符。

整数 retry IN 不能立即读取文件时需要的重试次数。缺省情况是不重试。
整数 rows INOUT 要读到表格中的文件记录的最大个数。缺省情况是 读取所有记录,或直到表格填满为止。0 值表示要读到文件结束。返回所生成的表格的行数。
整数 startrow IN 文件中开始读取记录的位置。缺省情况是从第一个记录开始。
整数 columns OUT 返回表格中的列数。

返回码

表 178. DTWF_READ 返回码
返回码 说明
-1001 服务器不能处理 Net.Data 请求来分配内存。
1001 输入参数中包含一个空值。
1002 输入参数中包含一个由空终结字符组成的字符串值。
1003 在函数调用时传递的参数数目或者超过了允许的最大数目,或者小于该函数必需的最小数目。
1004 传递给函数调用的参数应该是一个 Net.Data 宏表格变量, 但实际上是另一个类型的变量。
1005 传递给函数调用的参数应该是一个字符串变量,但实际上是另一个类型的变量。
1006 传递给函数调用的参数必须是一个输出参数,但实际上传递了一个文字串。
1007 参数中包含了一个无效值。
1010 数据不停地被写入表格,直到表格满为止,然后废弃剩余的数据。
2000 平面文件接口内部函数无法找到指定的文件。
2001 平面文件接口内部函数无法打开指定的文件, 因为它正被这个进程或另一个进程所使用,不能以指定的方式进行共享。
2003 平面文件接口内部函数无法将一行数据读入一表格变量,因为行中的字 节数目超过了所支持的最大字节数目。
2004 平面文件接口内部函数试图寻找一个文件,但是在 FFI_PATH 配置文件 变量中遇到一条路径,其长度大于所支持的最大字节数 4095。
2005 对系统函数的调用失败。
2006 平面文件接口内部函数不能访问指定的文件,因为它正被这个或另一个进 程所使用,并且不能以指定的方式进行共享。

例 1

%DEFINE{
   myFile = "c:/private/myfile"
   myTable = %TABLE
  myWait = "1000"
%}
@DTWF_READ(myFile, "DELIMITED", ";", myTable, myWait)

例 2

%DEFINE{
   myFile = "c:/private/myfile"
   myTable = %TABLE
  myWait = "0"
  myRows = "0"
  myStartrow = "1"
  myColumns = ""
%}
@DTWF_READ(myFile, "DELIMITED", ";", myTable, myWait, myRows,
             myStartrow, myColumns)

例 3

%DEFINE{
   myFile = "c:/private/myfile"
   myTable = %TABLE
%}
@DTWF_READ(myFile, "ASCIITEXT", ";", myTable)
@DTW_TB_TABLE(myTable,"BORDER","")

DTWF_REMOVE


AIX HP-UX Linux OS/2 OS/390 OS/400 SCO SUN Win NT
X

X X X
X X

目的

删除整个文件。

格式

@DTWF_REMOVE(filename, retry)

@DTWF_REMOVE(filename)

参数

表 179. DTW_REMOVE 参数
数据类型 参数 用法 说明
字符串 filename INOUT 要删除的文件名称。此函数成功完成时,这个参数返回全限定文件名。
整数 retry IN 不能立即删除文件时需要的重试次数。缺省情况是不重试。

返回码

表 180. DTWF_REMOVE 返回码
返回码 说明
-1001 服务器不能处理 Net.Data 请求来分配内存。
1001 输入参数中包含一个空值。
1002 输入参数中包含一个由空终结字符组成的字符串值。
1003 在函数调用时传递的参数数目或者超过了允许的最大数目,或者小于该函数必需的最小数目。
1005 传递给函数调用的参数应该是一个字符串变量,但实际上是另一个类型的变量。
1006 传递给函数调用的参数必须是一个输出参数,但实际上传递了一个文字串。
1007 参数中包含了一个无效值。
2000 平面文件接口内部函数无法找到指定的文件。
2006 平面文件接口内部函数不能访问指定的文件,因为它正被这个或另一个进 程所使用,并且不能以指定的方式进行共享。

例 1

%DEFINE myFile = "c:/private/myfile"
@DTWF_REMOVE(myFile)

例 2

%DEFINE{
   myFile = "c:/private/myfile"
  myWait = "2000"
%}
@DTWF_REMOVE(myFile, myWait)

DTWF_SEARCH


AIX HP-UX Linux OS/2 OS/390 OS/400 SCO SUN Win NT
X

X X X
X X

目的

在文本文件中搜索一个字符串,将结果返回到 Net.Data 表格中。

格式

@DTWF_SEARCH(filename, transform, delimiter, table, searchFor, retry, rows, startrow)

@DTWF_SEARCH(filename, transform, delimiter, table, searchFor, retry, rows)

@DTWF_SEARCH(filename, transform, delimiter, table, searchFor, retry)

@DTWF_SEARCH(filename, transform, delimiter, table, searchFor)

参数

表 181. DTWF_SEARCH 参数
数据类型 参数 用法 说明
字符串 filename INOUT 要搜索的文件名称。此函数成功完成时,这个参数返回全限定文件名。
字符串 transform IN 文件的格式:

  • ASCIITEXT - 将表格写入文件,在两个列值之间使用换行字符,并忽略 delimiter 参数。

  • DELIMITED - 将表格写入文件,并在 delimiter 参数中指定定界符。
字符串 delimiter IN 用于表示一个值结束的字符串。这个参数是区别大小写 的。如果 transform 为 ASCIITEXT,则忽略此参数。
表格 table OUT 用于存放搜索结果的表格变量。如果 transform 为 DELIMITED,则返回三列:

  • 找到匹配的行号。

  • 找到匹配的列号。

  • 文件中匹配的列。

对于 非 OS/400 用户:FFI 表中一行的最大的长度为 16383 个字符。这个限制包括对 Net.Data 宏表格中每一列所使用 的一个空字符。

字符串 searchFor IN 要查找的字符串。
整数 retry IN 不能立即搜索文件时需要的重试次数。缺省情况是不重试。
整数 rows INOUT 读至 table 中的最大行数。缺省情况是读取所有的行 ,或直到 table 填满为止。指定 0 表示要读到文件 结束。此参数返回结果表格中的行数。
整数 startrow IN 文件中开始执行搜索操作的位置。缺省值是 1, 表示从第一个记录开始搜索。

返回码

表 182. DTWF_SEARCH 返回码
返回码 说明
-1001 服务器不能处理 Net.Data 请求来分配内存。
1001 输入参数中包含一个空值。
1002 输入参数中包含一个由空终结字符组成的字符串值。
1003 在函数调用时传递的参数数目或者超过了允许的最大数目,或者小于该函数必需的最小数目。
1004 传递给函数调用的参数应该是一个 Net.Data 宏表格变量, 但实际上是另一个类型的变量。
1005 传递给函数调用的参数应该是一个字符串变量,但实际上是另一个类型的变量。
1006 传递给函数调用的参数必须是一个输出参数,但实际上传递了一个文字串。
1007 参数中包含了一个无效值。
1010 数据不停地被写入表格,直到表格满为止,然后废弃剩余的数据。
2000 平面文件接口内部函数无法找到指定的文件。
2001 平面文件接口内部函数无法打开指定的文件, 因为它正被这个进程或另一个进程所使用,不能以指定的方式进行共享。
2003 平面文件接口内部函数无法将一行数据读入一表格变量,因为行中的字 节数目超过了所支持的最大字节数目。
2004 平面文件接口内部函数试图寻找一个文件,但是在 FFI_PATH 配置文件 变量中遇到一条路径,其长度大于所支持的最大字节数 4095。
2005 对系统函数的调用失败。
2006 平面文件接口内部函数不能访问指定的文件,因为它正被这个或另一个进 程所使用,并且不能以指定的方式进行共享。

用法注意事项

  1. DTWF_SEARCH 所返回的表格有三列。前两行中包含找到匹配的行号与列号;最后一行的列值中包 含 SearchFor 参数中指定的字符。例如,如果文件第四行、第三列中包含 匹配的字符,则返回表第一列的值为 4,表示文件中的行号;第二列的值为 3, 表示匹配值在文件中的列号;第三列中则是完整的列值。

  2. SearchFor 参数不能包括 delimiter 参数的内容。

例 1

%DEFINE{
   myFile = "c:/private/myfile"
   myTable = %TABLE
  myWait = "1000"
  mySearch = "0123456789abcdef"
@DTWF_SEARCH(myFile, "DELIMITED", ";",
               myTable, mySearch, myWait)

例 2

%DEFINE{
   myFile = "c:/private/myfile"
   myTable = %TABLE
  mySearch = "answer:"
  myWait = "0"
  myRows = "0"
  myStartrow = "1"
%}
@DTWF_SEARCH(myFile, "DELIMITED", ";", myTable,
               mySearch, myWait, myRows, myStartrow)

DTWF_UPDATE


AIX HP-UX Linux OS/2 OS/390 OS/400 SCO SUN Win NT
X

X X X
X X

目的

用 Net.Data 表格中的数据更新文本文件中的行。

格式

@DTWF_UPDATE(filename, transform, delimiter, table, retry, rows, startrow)

@DTWF_UPDATE(filename, transform, delimiter, table, retry, rows)

@DTWF_UPDATE(filename, transform, delimiter, table, retry)

@DTWF_UPDATE(filename, transform, delimiter, table)

参数

表 183. DTWF_UPDATE 参数
数据类型 参数 用法 说明
字符串 filename INOUT 要从表格变量更新其记录的文件名称。此函数成功完成时,这个参数返回全限定文件名。
字符串 transform IN 文件的格式:

  • ASCIITEXT - 将表格写入文件,在两个列值之间使用换行字符,并忽略 delimiter 参数。

  • DELIMITED - 将表格写入文件,并在 delimiter 参数中指定定界符。
字符串 delimiter IN 用于表示一个值结束的字符串。这个参数是区别大小写 的。如果 transform 为 ASCIITEXT,则忽略此参数。
表格 table IN 用于更新文件记录的表格变量。

对于 非 OS/400 用户:FFI 表中一行的最大的长度为 16383 个字符。这个限制包括对 Net.Data 宏表格中每一列所使用 的一个空字符。

整数 retry IN 不能立即写文件时需要的重试次数。缺省情况是不重试。
整数 rows IN table 中要更新的最大记录数。缺省情况是更新 所有的记录。0 值表示更新文件中所有行。
整数 startrow INOUT 要更新的第一个文件记录。缺省值是 1, 表示要从文件开头开始更新。如果这个值大于文件中的记录个数,则将这个值 更改为指向文件中的最后一个记录,并返回一个错误。

返回码

表 184. DTWF_UPDATE 返回码
返回码 说明
-1001 服务器不能处理 Net.Data 请求来分配内存。
1001 输入参数中包含一个空值。
1002 输入参数中包含一个由空终结字符组成的字符串值。
1003 在函数调用时传递的参数数目或者超过了允许的最大数目,或者小于该函数必需的最小数目。
1004 传递给函数调用的参数应该是一个 Net.Data 宏表格变量, 但实际上是另一个类型的变量。
1005 传递给函数调用的参数应该是一个字符串变量,但实际上是另一个类型的变量。
1006 传递给函数调用的参数必须是一个输出参数,但实际上传递了一个文字串。
1007 参数中包含了一个无效值。
2000 平面文件接口内部函数无法找到指定的文件。
2001 平面文件接口内部函数无法打开指定的文件, 因为它正被这个进程或另一个进程所使用,不能以指定的方式进行共享。
2003 平面文件接口内部函数无法将一行数据读入一表格变量,因为行中的字 节数目超过了所支持的最大字节数目。
2004 平面文件接口内部函数试图寻找一个文件,但是在 FFI_PATH 配置文件 变量中遇到一条路径,其长度大于所支持的最大字节数 4095。
2005 对系统函数的调用失败。
2006 平面文件接口内部函数不能访问指定的文件,因为它正被这个或另一个进 程所使用,并且不能以指定的方式进行共享。

用法注意事项

如果该文件不存在,应指定文件名的绝对路径,并且要创建该 文件的目录必须与 FFI_PATH 中指定的某一目录相匹配。如果不使用绝对路径,则将在当前工作目录 中打开该文件。

例 1

%DEFINE{
   myFile = "c:/private/myfile"
   myTable = %TABLE
   myWait = "1500"
   myRows = "2"
%}
@DTWF_UPDATE(myFile, "Delimited", "|", myTable, myWait, myRows)

例 2

%DEFINE{
   myFile = "c:/private/myfile"
   myTable = %TABLE
   myStart = "1"
   myRows = "2"
%}
@DTWF_UPDATE(myFile, "Asciitext", "|", myTable, "0", myRows, myStart)

DTWF_WRITE


AIX HP-UX Linux OS/2 OS/390 OS/400 SCO SUN Win NT
X

X X X
X X

目的

将 Net.Data 表格的内容写入一个文本文件。

格式

@DTWF_WRITE(filename, transform, delimiter, table, retry, rows, startrow)

@DTWF_WRITE(filename, transform, delimiter, table, retry, rows)

@DTWF_WRITE(filename, transform, delimiter, table, retry)

@DTWF_WRITE(filename, transform, delimiter, table)

参数

表 185. DTWF_WRITE 参数
数据类型 参数 用法 说明
字符串 filename INOUT 一个文件名称,用于写入表格变量中的记录。此函数成功完成时,这个参数返回全限定文件名。
字符串 transform IN 文件的格式:

  • ASCIITEXT - 将表格写入文件,在两个列值之间使用换行字符,并忽略 delimiter 参数。

  • DELIMITED - 将表格写入文件,并在 delimiter 参数中指定定界符。
字符串 delimiter IN 用于表示一个值结束的字符串。这个参数是区别大小写 的。如果 transform 为 ASCIITEXT,则忽略此参数。
表格 table IN 表格变量,用于把其中的行调出到文件。

对于 非 OS/400 用户:FFI 表中一行的最大的长度为 16383 个字符。这个限制包括对 Net.Data 宏表格中每一列所使用 的一个空字符。

整数 retry IN 不能立即写文件时需要的重试次数。缺省情况是不重试。
整数 rows IN 要写入的文件记录的最大个数。缺省情况是写整个表格。0 值表示把所有记录写到文件结束。
整数 startrow INOUT 开始写到文件中的第一个记录。缺省值是 1, 表示要从第一个记录开始。如果指定的值超出了文件结束范围,则返回文件中的 最后一行,并返回一个错误。

返回码

表 186. DTWF_WRITE 返回码
返回码 说明
-1001 服务器不能处理 Net.Data 请求来分配内存。
1001 输入参数中包含一个空值。
1002 输入参数中包含一个由空终结字符组成的字符串值。
1003 在函数调用时传递的参数数目或者超过了允许的最大数目,或者小于该函数必需的最小数目。
1004 传递给函数调用的参数应该是一个 Net.Data 宏表格变量, 但实际上是另一个类型的变量。
1005 传递给函数调用的参数应该是一个字符串变量,但实际上是另一个类型的变量。
1006 传递给函数调用的参数必须是一个输出参数,但实际上传递了一个文字串。
1007 参数中包含了一个无效值。
2000 平面文件接口内部函数无法找到指定的文件。
2001 平面文件接口内部函数无法打开指定的文件, 因为它正被这个进程或另一个进程所使用,不能以指定的方式进行共享。
2003 平面文件接口内部函数无法将一行数据读入一表格变量,因为行中的字 节数目超过了所支持的最大字节数目。
2004 平面文件接口内部函数试图寻找一个文件,但是在 FFI_PATH 配置文件 变量中遇到一条路径,其长度大于所支持的最大字节数 4095。
2005 对系统函数的调用失败。
2006 平面文件接口内部函数不能访问指定的文件,因为它正被这个或另一个进 程所使用,并且不能以指定的方式进行共享。

用法注意事项

如果该文件不存在,应指定文件名的绝对路径,并且要创建该 文件的目录必须与 FFI_PATH 中指定的某一目录相匹配。如果不使用绝对路径,则将在当前工作目录 中打开该文件。

例 1

%DEFINE{
   myFile = "c:/private/myfile"
   myTable = %TABLE
%}
@DTWF_WRITE(myFile, "DELIMITED", ";", myTable)

例 2

%DEFINE{
   myFile = "c:/private/myfile"
   myTable = %TABLE
%}
@DTWF_WRITE(myFile, "ASCIITEXT", ";", myTable, "5000")

例 3

%DEFINE{
   myFile = "c:/private/myfile"
   myTable = %TABLE
%}
@DTWF_WRITE(myFile, "ASCIITEXT", ";", myTable, "5000", "10", "50")


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