AS/400 CL 控制语言初步
* 第一章 概述 * 第二章 CL 编程 * 第三章 程序间的通讯 * 第四章 测试功能 提要:
* CL 命令的作用 * CL 命令的分类 * 系统菜单
1.1 CL 命令的作用
CL (Control Language) 控制语言是用户与操作系统之间的 主要接口。可以说用户管理和操作 AS/400 系统,均可以通过 CL 实现。用户在不同的工作站或客户端可以同时使用 CL,其输入方 式有五种:
* 在命令行输入 * 在菜单画面选择
* 在 work with 菜单中,option 选项 * 在 CL 程序中执行 * 远程调用
前三种输入方式给用户提供一种交互式的操作方法,只执行一 条命令;第四种方式给用户提供一种操作,并包含逻辑控制,可以完 整地实现一项功能;第五种方式给用户提供在客户端直接执行主机 操作的接口。
由于 CL 使用了统一的命名方法,提供 prompt 式的提示功 能和具体到域值的在线帮助,以及自动生成命令参数的缺省值, 再 加上有效性检查,从而使得 CL 的使用变得非常简单、方便和灵 活。
1.2 CL 命令的参数
CL 使用了一种很科学,较为成功的命名方法。每条命令由 命令名和一系列参数组成。命令名通常由动词加上接受动词的名词 (定义为目标Ob ject)组成,单词通常缩写为三个字母。 例如:
CL 命令 命令名
第一章 概 述
Send Message SNDMSG Copy File CPYF
Work with Device Desripyions WRKDEVD
CL 的参数由关键字和参数值组成,关键字通常和命令一样 缩写,它用于说明参数的作用,在命令输入屏,按 F11 键,即可 看到关键字。在命令行输入命令时,如果参数是按照固定的顺序输 入,则可以省略关键字。 例如:
SNDMSG MSG (HOLLEO) TOUSR (LENG) 命令名 关键字 参数值
大多数 CL 都是 针对目标而言,目标是一个占据了一定存储 空间的实体,它包括自身属性及其数据特征的描述,系统可以对它 进行操作。目标的属性包括名字、类型、长度、建立日期及其它属 性。不同目标具有不同的属性描述,大部分属性是可以修改的,而 不需要重新建立。目标的数据值是储存于目标中的信息集合,例如: 程序的值是组成程序的执行码,文件的值是组成文件的记录。
目标的类型很多,常用的几种包括:
* LIB 库 * FILE 文件 * MSGF 信息文件 * PGM 程序 * CMD 命令 * JOBQ 作业队列 * DTAQ 数据队列 * MSGQ 信息队列 * OUTQ 输出队列 * DTAARA 数据域 * JRN 日志
* JRNRCV 日志接受器 * USRPRF 用户简要表 * SBSD 子系统描述 * JOBD 作业描述 * LIND 线路描述 * CTLD 控制器描述 * DEVD 设备描述
一个具体目标是由目标名和目标类型来唯一标识的,不同的 目标类型可以使用同一个目标名。目标名由用户指定,目标类型由 生成它的命令决定。不同类型的目标具有不同的操作。例如: CALL 命令只针对 *PGM 目标进行操作。
关于目标的操作,系统也进行了统一的规范,常用的几种包 括: * WRK 工作 * CRT 建立 * ADD 增加 * CHG 改变 * DLT 删除 * DSP 显示 * EDT 编辑 * CPY 拷贝 * MOV 移动 * RNM 变名 * SAV 备份 * RST 恢复 * RTV 获取 * GRT 授权 * DMP 转储
第 二 章 CL 编程 提要:
* CL 程序的作用 * CL 程序的结构 * CL 程序中的命令
2.1 CL 程序的作用
CL 程序是由 CL 命令组成,这些命令被编译成可供随时调用 的程序。使用 CL 程序的优点包括:
* CL 程序比单独输入和运行命令快,因为命令被编译成能够立 即运行的形式。
* 有些功能需要多条 CL 命令一起完成。
* 参数可以传递给 CL 程序,CL 程序内部也接收变量的定义, 以适应特殊需要的程序操作。
* CL 程序能够像其它高级语言程序一样被测试和监控。
CL 程序可以应用到许多方面,包括:
* 通过 CL 程序完成单独输入 CL 命令所不能完成的功能,例 如,人工或者定时提交批作用完成一项工作,如启动子系统, 进行文件备份,整顿系统资源。
* 给交互式或批处理的应用程序提供一个接口,使得在应用程序 中直接进行系统操作或者获取系统参数。
* 在网络通信方面,CL 程序往往承担应用主控程序的角色。
2.2 CL 程序的结构
CL 程序是借助于 ADT 工具中的 SEU 输入的,在输入过 程中,键入一条命令并按 F4 键,就会显示出这条命令的提示画 面,方便用户输入相应的参数值。CL 源程序主要分为以下几个部 分:
* 程序的开始和结束:
PGM PARM(&A &B) 开始 CL 程序 END PGM 结束程序 * 变量定义: DCL 定义变量 DCLF 定义文件 * CL 处理命令: CHGVAR 变量赋值 MONMSG 监控错误信息 SNDPGMMSG 传送程序信息 RTVJOBA 获取作业属性值 * 逻辑控制命令: IF THEN ELSE DO ENDDO GOTO * 内部函数: % SST 取子串 * CAT 连接字符 * 程序控制命令: CALL 调用子程序 RETURN 返回调用程序
2.3 CL 程序的命令
CL 程序中仅可包含 CL 命令,由系统提供的大多数 CL 命 令可用于 CL 程序,而有些 CL 命令是专门用在 CL 程序中的。 下面是一张用在 CL 程序中的部分命令清单,其中带有星号的表 示该命令仅能用于 CL 程序内部。
2.3.1 变量的使用
* 变量说明,使用 DCL 命令来定义变量及其属性、长度和初
值。标准格式如下: * CHAR
DCL VAR (变量名) TYPE * DEC LEN (长度) value(初值) * LGL
使用 DCL 命令时,必须遵循的规则如下:
#CL 变量名必须以 & 开始,后跟字符不多于 10 个,& 后 的第一个字符必须是字母,其余的可以是字母或数字。
#CL 变量值必须是:字符型最长为 9999 个字符;数值型为 压缩十进制数,最长为 15 位,其中小数位最长为 9 位; 逻辑型为“0”或“1”,表示假或真。
#CL 变量的缺省初值为:字符型为空,数值型为 0,逻辑型 为“0”。
#对于字符型和数值型,如果指定了初值而未指定长度,则缺 省长度为初值长度。
* 变量值中小写字符的限制
用作变量的保留值必须用大写字母表示,特别是当它们用引号 括起来的时候。例如:
DCL VAR(&LIB) TYPE(*CHAR) LEN(10) value('*LIBL') DLTPGM &LIB/MY PROG
注意:如果 value 参数不使用引号,则小写是正确的。因 为使用 SEU 编辑会自动转换成大写。
* 变量赋值,使用 CHGVAR 命令给变量赋值,其值可改变成:
#常量: CHGVAR VAR(&A) value(0) #变量: CHGVAR VAR(&A) value(&B) #计算量:CHGVAR VAR(&A) value(&A+1) #函数量:CHGVAR VAR(&A) value(%SST(&B 1 5)) CHGVAR VAR(%SST(&A 1 5)) value(&B)
赋值时应注意以下几点:
#对逻辑变量,被改变的值必须是一个逻辑值。
#对数值变量,只能赋予十进制数,或者数字字符变量(包括 小数点和正负号)。