DEFINE FIELD 命令

概念信息

定义物理域

在 Analytics 表布局中定义物理数据域。

语法

DEFINE FIELD 域名称 数据类型 开始位置 长度 <小数位数|日期格式> <NDATETIME> <PIC 格式> <AS 显示名称> <WIDTH 字符数> <SUPPRESS> <域说明>

参数

名称 描述
域名称

域的名称。

说明

域名称被限制为不超过 256 个大小写字母数字字符。该名称可以包括下划线字符 ( _ ),但不能包括其他特殊字符或任何空格。该名称不能以数字开头。

Analytics 具有多个保留关键字,这些字不能用作域名称。要获取完整列表,请参阅 保留关键字

数据类型

要在解释数据时使用的数据类型。有关受支持数据类型的列表,请参见支持的数据类型

例如,交易编号可能被作为数值类型值存储在数据源中。要将这些值视为字符串而不是数字,您可以改而将该域定义为字符数据。

开始位置

域在 Analytics 数据文件中的起始字节位置。

说明

非 Unicode Analytics 1 字节 = 1 字符
Unicode Analytics,扩展 ASCII (ANSI) 数据 1 字节 = 1 字符
Unicode Analytics,Unicode 数据 2 字节 = 1 字符

对于 Unicode 数据,通常您应该指定奇数起始字节位置。指定偶数起始位置可能导致字符显示不正确。

长度

域的长度(以字节为单位)。

说明

非 Unicode Analytics 1 字节 = 1 字符
Unicode Analytics,扩展 ASCII (ANSI) 数据 1 字节 = 1 字符
Unicode Analytics,Unicode 数据 2 字节 = 1 字符

对于 Unicode 数据,请仅指定偶数个字节。指定奇数个字节可能导致字符显示不正确。

小数位

可选

数值域的小数位数。

日期格式

可选

源日期数据中的日期格式。

对于日期时间域或时间域,请改而使用 PIC 格式。对于日期域,您还可以使用 PIC 格式

如果源数据包含斜杠之类的分隔符,则您必须在日期格式中包含分隔符。例如,如果源数据为 12/31/2014,则输入格式必须为 MM/DD/YYYY。请不要将日期格式放在引号中。

NDATETIME

可选

将存储在数值域中的日期值、日期时间值或时间值视为日期时间数据。

NDATETIME 要求您还使用 PIC 格式指定源日期时间格式。

PIC 格式

可选

说明

仅适用于数值域或日期时间域。

  • 数值域 Analytics 视图和报告中的数值类型值的显示格式
  • 日期时间域 源数据中的日期时间值的物理格式(日期和时间字符的顺序、分隔符等等)

    说明

    对于日期时间域,格式必须完全匹配源数据中的物理格式。例如,如果源数据为 12/31/2014,则输入格式必须为 MM/DD/YYYY

必须将格式放在引号中。

AS 显示名称

可选

视图中的域的显示名称(备选列标题)。如果您希望显示名称与域名称相同,请不要使用 AS。

请将显示名称指定为带引号的字符串。如果您希望列标题包含换行符,请在单词之间使用分号 (;)。

WIDTH 字符数

可选

该域的显示宽度(单位为字符)。

指定的值控制 Analytics 视图和报告中的域的显示宽度。显示宽度永远不会改变数据,但是,如果它比域长度短,则可能隐藏数据。

显示宽度不能小于域名称显示名称的长度。

如果您省略 WIDTH,则显示宽度被设置为域长度(单位为字符)。

说明

WIDTH 所指定的字符为固定宽度字符。每个字符都被分配相同的空间量,而无论实际字符的宽度如何。

默认情况下,Analytics 中的视图使用不与固定宽度字符间距相对应的比例宽度字体。

如果您希望在 WIDTH 值和视图中的字符数之间建立一对一对应关系,则可以将选项对话框中的比例字体设置更改为固定宽度字体,如 Courier New。

SUPPRESS

可选

仅适用于数值域。

禁止对 Analytics 报告中的数值域进行自动合计。

合计某些数值域是不适当的。例如,单位成本域或折扣率域。

域说明

可选

被添加到表布局中的域定义的域说明文本。

域说明必须是最后一个参数,位于所有其他必需的和可选的参数之后。该文本不能包含多行。不需要使用引号。

示例

定义字符域

定义一个名为 ProdDesc 的字符域。该视图中的列标题是产品描述

非 Unicode Analytics

  • 起始位置:字节 12(字符位置 12)
  • 长度:24 字节(24 字符)
DEFINE FIELD 产品说明 ASCII 12 24 AS "产品说明"

Unicode Analytics,扩展 ASCII (ANSI) 数据

  • 起始位置:字节 12
  • 长度:24 字节(24 字符)
DEFINE FIELD 产品说明 ASCII 12 24 AS "产品说明"

Unicode Analytics,Unicode 数据

  • 起始位置:字节 13
  • 长度:48 字节(24 字符)
DEFINE FIELD ProdDesc UNICODE 13 48 AS "产品说明"

定义一个数值类型域

定义一个名为 QtyOH 的数值类型域。在该视图中,列使用指定的显示格式,且标题为现存数量

  • 起始位置:字节 61
  • 长度:10 字节
  • 小数位:无
DEFINE FIELD 现存数量 NUMERIC 61 10 0 PIC "(9,999,999)" AS "现存数量"

从字符数据定义一个日期时间域

下面的前两个示例从源字符数据定义了一个名为交易日期的日期时间域。在源数据中,日期格式是 DD/MM/YYYY。未指定列标题,因此列标题默认使用域名称。

  • 起始位置:字节 20
  • 长度:10 字节

这里,使用日期格式指定日期格式:

DEFINE FIELD 交易日期 DATETIME 20 10 DD/MM/YYYY

这里,使用 PIC 格式指定日期格式:

DEFINE FIELD 交易日期 DATETIME 20 10 PIC "DD/MM/YYYY"

在定义包括时间数据的日期时间域时,您必须使用 PIC 格式

下面的示例定义了一个名为电子邮件时间戳的日期时间域。在源数据中,日期时间格式是 YYYY/MM/DD hh:mm:ss-hh:mm。

  • 起始位置:字节 1
  • 长度:25 字节
DEFINE FIELD 电子邮件时间戳 DATETIME 1 25 PIC"YYYY/MM/DD hh:mm:ss-hh:mm"

从数值数据定义一个日期时间域

在源数值数据中,定义一个名为回执时间戳的日期时间域,该域具有源数据中指定的日期时间格式。

  • 起始位置:字节 15
  • 长度:15 字节
DEFINE FIELD 回执时间戳 DATETIME 15 15 PIC "YYYYMMDD.hhmmss"

定义一个“数值”类型日期时间域

在源数值数据中,定义一个名为回执时间戳的数值域,该域具有源数据中指定的日期时间格式。

NDATETIME 参数使数值域中存储的日期时间值可被 Analytics 视为日期时间数据。

  • 起始位置:字节 15
  • 长度:15 字节
  • 小数位数:6
DEFINE FIELD 回执时间戳 PRINT 15 15 6 NDATETIME PIC "YYYYMMDD.hhmmss"

定义一个读取主机压缩数据的物理数据域

您可以使用 NDATE 选项创建一个从压缩数值域读取日期值的物理数据域。

对于每个位被压缩为少于 1 的字节且不显示任何日期格式的数字,Analytics 无法识别其中的日期。因此,您必须使用 NDATETIME 解压缩该数字以获取完整的位数,然后使用 PIC 指定日期格式。

要准确地指示哪些数字表示日、月和年,您需要指定与压缩记录布局中的日期格式相同的日期格式:

DEFINE FIELD 日期域名称 NUMERIC 1 8 0 NDATETIME PIC "YYYYMMDD"

备注

有关此命令工作方式的详细信息,请参见定义物理域

覆盖脚本中的域

您可以通过定义一个使用与现有域相同名称的域来覆盖表布局中的域。如果 SET SAFETY 为 ON,则在覆盖现有域之前会显示一个确认对话框。

要避免中断脚本,您可以将 SET SAFETY 设置为 OFF。现有域将被覆盖,无需附加的确认。

支持的数据类型

数据类别 数据类型
字符 ASCII
CUSTOM
EBCDIC
NOTE
PCASCII
UNICODE
数值 ACCPAC
ACL
BASIC
BINARY
FLOAT
HALFBYTE
IBMFLOAT
MICRO
NUMERIC
PACKED
PRINT
UNISYS
UNSIGNED
VAXFLOAT
ZONED
日期时间 DATETIME
逻辑 LOGICAL