类条件

类条件确定数据项的内容是字母,字母下限,字母上限,数字, DBCS , KANJI ,还是仅包含由 CLASS 子句指定的字符集中的字符 (如 ENVIRONMENT DIVISION 的 SPECIAL-NAMES 段中所定义)。

格式

读取语法图跳过可视语法图identifier-1ISNOTNUMERICALPHABETICALPHABETIC-LOWERALPHABETIC-UPPER类名DBCSKANJINATIONAL

identifier-1
必须引用使用下列其中一种用法描述的数据项:
  • DISPLAY , NATIONAL , $TAG1 COMPUTATIONAL-3 $TAG2 或 PACKED-DECIMAL (如果指定了 NUMERIC)
  • DISPLAY-1 (如果指定了 DBCS 或 KANJI)
  • 指定 ALPHY , ALPH-UPPER 或 ALPH-LOWER 时的 DISPLAY 或N国际
  • 指定类名时的 DISPLAY

当指定了 NUMERIC 时,不能是类字母。

当指定了ALPH门, ALPH-UPPER 或 ALPH-LOWER 时,不能是类数字。

表 1 列出了对每种类型的标识有效的类条件的格式。

如果 identifier-1 是函数标识,那么它必须引用字母数字,本地函数或日期时间函数

可以在可以使用基本字母数字项的类条件中使用字母数字组项, 如果该组包含一个或多个已签名的基本项,那么不能使用 NUMERIC 类条件。

NATIONAL
identifier-1 完全由N国际字符组成,具有以下规则:
  • 对于N国际数据项,要测试的标识必须显式或隐式地描述为 USAGE NATIONAL。
  • 将对项的数据部分执行范围检查以获取有效的N国际字符表示。
NOT
使用时, NOT 和下一个关键字定义要对真值执行的类测试。 例如, NOT NUMERIC 是用于确定 NUMERIC 类测试结果为 false (换言之,该项包含非数字数据) 的标准检验。
NUMERIC
identifier-1 完全由 0 到 9 的字符组成,带有或不带操作符号。

如果其 PICTURE 不包含操作符号,那么仅当内容为数字且操作符号不存在时,才会将正在测试的标识确定为数字。

如果其 PICTURE 确实包含操作符号,那么仅当项是基本项,内容是数字并且存在有效的操作符号时,才会将正在测试的标识确定为数字。

字母
identifier-1 完全由小写或大写字母字符 A 到 Z 以及空格的任意组合组成。
字母-下限
identifier-1 完全由小写拉丁字母字符 a 到 z 和空格的任意组合组成。
字母-上限
identifier-1 完全由大写字母字符 A 到 Z 和空格的任意组合组成。
类名
identifier-1 完全由 SPECIAL-NAMES 段中类名定义中列出的字符组成。
DBCS
identifier-1 完全由 DBCS 字符组成。 identifier-1 包含对应于有效 EBCDIC DBCS 字符的 DBCS 字符。

将对项执行范围检查以获取有效的字符表示。 对于每个 DBCS 字符的两个字节,有效范围为 X'41 '到 X'FE' ,对于 DBCS 空白,有效范围为 X'4040 '。 (这些范围用于 Enterprise COBOL for z/OS®的等效 DBCS 字符表示,而不是工作站 DBCS 字符的实际 DBCS 字符值范围。)

日语汉字
identifier-1 包含对应于有效 EBCDIC DBCS 字符的 DBCS 字符。

将对项执行范围检查以获取有效的字符表示。 有效范围是:第一个字节从X'41'到 X'7E' ,第二个字节从X'41'到X'FE',DBCS空格为X'4040'。 (这些范围用于 Enterprise COBOL for z/OS的等效 DBCS 字符表示,而不是工作站 DBCS 字符的实际 DBCS 字符值范围。)

表 1. 不同类型数据项的类条件的有效格式
identifier-1 引用的数据项的类型 类条件的有效格式
字母
字母
字母-小写
字母-大写
类名
非字母
非字母-下限
非字母-上限
类名
字母数字,字母数字-已编辑或数字-已编辑
字母
字母-下限
字母-上限
数字
类名
非字母
非字母-下限
非字母-上限
非数字
类名
External-decimal
或 internal-decimal
NUMERIC 非数字
DBCS
DBCS
KANJI
非 DBCS
NOT KANJI
本国
数字
字母
字母-下限
字母-上限
国家
非数字
非字母
非字母-下限
非字母-上限
非国家
数值
NUMERIC
类名
不是数字
NOT 类名
日期时间
NUMERIC
类名
不是数字
NOT 类名