CL 命令参数类型
CL 命令中使用了不同类型的参数。
基本参数类型为 (括号中给出的参数 TYPE 值) ,如下所示:
- 十进制 (*DEC)。 参数值是一个十进制数,它作为在 LEN 参数上指定的长度的压缩十进制值传递给命令处理程序。 使用比为参数定义的小数位数更多的小数位数指定的值将被截断。
- 逻辑 (*LGL)。 参数值是逻辑值 "1" 或 "0" ,将其作为长度为 1 (
F1
或F0
) 的字符串传递给命令处理程序。 - 字符 (*CHAR)。 参数值是一个字符串,可以用单引号括起,并作为 LEN 参数上指定的长度的字符串传递给命令处理程序。 传递该值时将除去其单引号,左对齐并填充空白。
- 名称 (*NAME)。 参数值是表示基本名称的字符串。 名称的最大长度为 256 个字符。 第一个字符是字母 (A-Z) , $, # 或 @。 其余字符与第一个字符相同,但也可以包含数字 0 到 9 ,下划线 (_) 和句点 (.)。 该名称也可以是以双引号 (") 开头和结尾的字符串。 系统将该值作为 LEN 参数中指定的长度的字符串传递给命令处理程序。 该值是左对齐的,并用空格填充。 通常,对对象名使用 *NAME 类型。 如果可以为名称参数输入特殊值,例如 *LIBL 或 *NONE ,那么必须描述 SPCVAL 参数上的特殊值。 然后,如果显示站用户为参数输入其中一个允许的特殊值,那么系统将绕过用于名称验证的规则。
- 简单名称 (*SNAME)。 参数值是遵循与 *NAME 相同的命名规则的字符串,但不允许使用句点 (.)。
- 通信名 (*CNAME)。 参数值是遵循与 *NAME 相同的命名规则的字符串,但不允许使用句点 (.) 或下划线 (_)。
- 路径名 (*PNAME)。 参数值是一个字符串,可以用单引号括起,并作为 LEN 参数上指定的长度的字符串传递给命令处理程序。 传递该值时将除去其单引号,左对齐并填充空白。
- 通用名称 (*GENERIC)。 参数值是通用名称,以星号 (*) 结尾。 如果名称未以星号结尾,那么假定通用名称是完整的对象名。 通用名称标识一组对象,这些对象的名称都以星号前面的字符开头。 例如, INV* 标识其名称以 INV 开头的对象,例如 INV ,发票和 INVENTORY。 将通用名称传递到命令处理程序,以便它可以找到以通用名称中的字符开头的对象名。
- 日期 (*DATE)。 参数值是传递到命令处理程序的字符串。 字符串使用格式
cyymmdd
(c
= 世纪数字,y
= 年,m
= 月,d
= 日)。 系统根据在命令的日期参数上指定的年份来设置世纪数字。 如果指定的年份包含 4 个数字,那么对于以 19 开头的年份,系统会将世纪数字设置为 0。 对于以 20 开头的年份,系统将世纪数字设置为 1。 对于使用 2 数字指定的年份,如果 yy 等于 40 到 99 之间的数字,那么系统会将世纪数字设置为 0。 但是,如果 yy 等于 00 到 39 之间的数字,那么系统会将世纪数字设置为 1。 用户必须以日期格式 (DATFMT) 作业属性指定的格式在命令的日期参数上输入日期。 日期分隔符 (DATSEP) 作业属性确定用于输入日期的可选分隔符。 使用 "更改作业" (CHGJOB) 命令来更改 DATFMT 和 DATSET 作业属性。 该程序读取日期为 2–digit 年,范围为 1940 年 1 月 1 至 2039 年 12 月 31 日。 具有 4–digit 年的日期必须在 1928 年 8 月 24 日到 2071 年 5 月 9 的范围内。 - 时间 (*TIME)。 参数值是字符串。 系统将此字符串传递到命令处理程序,格式为
hhmmss
(h
= 小时,m
= 分钟,s
= 秒)。 时间分隔符 (TIMSEP) 作业属性确定用于输入时间的可选分隔符。 使用 "更改作业" (CHGJOB) 命令来更改 TIMSEP 作业属性。 - 十六进制 (*HEX)。 参数值是十六进制值。 指定的字符必须是 0 到 F。 该值以十六进制 (EBCDIC) 字符 (每字节 2 个十六进制数字) 的形式传递到 CPP ,并以零进行正确调整和填充。 如果该值包含在单引号中,那么需要偶数位数字。
- 零元素 (*ZEROELEM)。 参数值被视为在命令中不能指定任何值的零元素的列表。 此参数类型用于防止对作为列表的参数输入值,即使命令处理程序 (CPP) 需要值也是如此。 例如,如果两个命令使用相同的 CPP ,那么一个命令可以传递一个参数的列表,而另一个命令可能没有任何要传递的值。 第二个命令的参数将与 TYPE (*ZEROELEM) 一起定义。
- 整数 (*INT2 或 *INT4)。 参数值是作为 2 字节或 4 字节的带符号二进制数传递的整数。 可以将 CL 过程或程序中的二进制数字声明为 TYPE (*INT) 变量。 还可以使用 TYPE (*CHAR) 并使用 %BINARY 内置函数来处理它们。
- 无符号整数 (*UINT2 或 *UINT4)。 参数值是作为 2 字节或 4 字节无符号二进制数传递的整数。 可以将 CL 过程或程序中的二进制数字声明为 TYPE (*UINT) 的变量。 还可以使用 TYPE (*CHAR) 并使用 %BINARY 内置函数来处理它们。
- 空 (*NULL)。 参数值是一个空指针,它始终作为占位符传递到命令处理程序。 对此参数类型有效的 PARM 关键字只有 KWD , MIN 和 MAX。
- 命令字符串 (*CMDSTR)。 参数值是命令。 可以使用 CL 变量在命令中指定在 *CMDSTR 参数中指定的参数。 但是,不能使用它们来指定整个 *CMDSTR 参数。 For example, "SBMJOB CMD(DSPLIB LIB(&LIBVAR))" is valid in a CL Program or procedure, but "SBMJOB CMD(&CMDVAR)" is not.
- 语句标签。 语句标签标识一系列 QUAL 或 ELEM 语句中的第一个语句,这些语句进一步描述此 PARM 语句所定义的限定名或混合列表。
以下参数类型仅适用于 IBM提供的命令。
- 表达式 (*X)。 参数值是字符串,变量名称或数字值。 如果该值仅包含数字,加号或减号,小数点或所有数字值,那么该值将作为数字值传递; 否则,它将作为字符串传递。
- 变量名 (*VARNAME)。 参数值是一个变量名,它作为字符串传递给命令处理程序。 该值是左对齐的,并用空格填充。 变量是在处理期间引用实际数据值的名称。 A variable name can be as long as 10 alphanumeric characters (the first of which must be alphabetic) preceded by an ampersand (&); for example, &PARM. 如果变量的名称与 IBM i 操作系统中使用的命名约定不一致,则必须用单引号将名称括起来。
- 命令 (*CMD)。 参数值是命令。 例如, CL 命令 IF 具有名为 THEN 的参数,其值必须是另一个命令。