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)

赋值时应注意以下几点:

#对逻辑变量,被改变的值必须是一个逻辑值。
#对数值变量,只能赋予十进制数,或者数字字符变量(包括
小数点和正负号)。
#对字符变量,既可接受字符,也可接受十进制数。赋十进制
数时,该字符变量的值是右对齐,前导补零,负号放在最左
边。

* CL 程序中注解的书写,在命令的头尾使用一对符号:/* 和*/。
如果一行写不下一条命令,使用 +。

2.3.2 CL 程序内部的逻辑控制

* 条件转移命令:

IF COND(条件) THEN(一条命令)
ELSE CMD(一条命令)
或者 IF COND(条件) THEN(DO)
.
ENDDO
ELSE CMD (DO)
.
ENDDO

* 无条件转移命令:GOTO LABEL

* 操作符:
逻辑的 *AND *OR *NOT
算术的 + - * /
字符的 *CAT *TCAT
关系的 *EQ *GT *LT *GE *LE *NE

* 监视信息命令:MONMSG

MONMSG MSGID(信息标识 1 … 信息标识 50)+
EXEC(CL命令)

系统对于CL命令执行错误所送出的信息都具有唯一的标识
符,如果不进行监视,则系统会终断程序,自动显示错误信息。

2.3.3 系统资源的获取

* 日期格式转换命令:CVTDAT

CVTDAT DATE(被转换日期) TOVAR(转换后日期)+
FROMFMT(原格式) TOFMT(新格式) TOSEP(新分隔符)

其中:转换后日期的长度至少是:

#对儒略日期(如 YMD,DMY 或 JUL 格式),不使用分
隔符为 5 个字符,使用分隔符为 6 个字符。
#对非儒略日期,不使用分隔符为 6 个字符,使用分隔符为
8 个字符。

日期格式和分隔符可以通过按 F4 键选择。

* 检索系统值命令:RTVSYSVAL

RTVSYSVAL SYSVAL(系统值名)RTNVAR(CL变量名)

其中:系统值名可以通过按 F4 键选择,如:系统当前日期的
系统值是 QDATE。变量名必须和系统值的类型匹配,对字符型和
逻辑型系统值而言,变量名的长度必须相符,对数字型,则长度
不小于系统值长度。

* 检索配置源命令:RTVCFGSRC

用于将现有配置的描述存放到源文件成员中

* 配置状态检索命令:RTVCFGSTS

用于获取各类配置描述的现行状态,放入 CL 变量。

* 检索网络属性的命令:RTVNETA

用于获取系统的网络属性,放入相应的 CL 变量。如:系统名
SYSNAME,本地网络标识 LCLNETID。

* 检索作业属性命令:RTVJOBA

用于获取当前运行作业的属性,放入相应的 CL 变量。如:作业
名 JOB,用户名 USER。

* 检索目标描述命令:RTVOBJD

用于获取指定目标的描述属性,放入相应的 CL 变量。

* 检索用户档案命令:RTVUSRPRF

用于获取指定用户的档案资料,放入相应的 CL 变量。

第三章 程序间的通讯

程序间的通讯是指不同程序之间数据或参数的传递和交流。这
种通讯可以出现在不同种类的程序中。如:RPG 与 C 语言,也
可以出现在不同机器上,如:PC 与 AS/400。针对OS/400 而
言,通常程序间的通讯具有三种方式:

* CALL、RETURN 命令
* 数据队列通讯
* 数据域通讯

3.1 CALL 命令的使用

调用程序: CALL PGM(PGMA) PARM(&A &B)
被调用程序:PGM PARM(&C &D)

有关 CALL 命令使用的几点说明:

* 参数值可以是字符常量、数值常量、逻辑常量或 CL 常量,最
多可达 40 个。
* 参数值以 CALL 命令中出现的顺序传送,这必须与被调用程序
的参数顺序相匹配,变量名不一定相同。
* 被调程序中的接收参数必须说明,但接收值不受变量说明中初
值的影响。
* 接收参数值的改变会反映到调用程序中,但常量传送不会改
变。
* 字符常量通常以 32 个字节传送,数字常量以 15.5 长度压缩
格式传送。

3.2 数据队列的程序通讯

数据队列(*DTAQ)是系统目标中的一种类型,当建立了这
种目标后,一个程序可以发送数据给它,另一个程序再从中接收数
据,从而达到程序之间的数据通讯。

3.2.1 数据队列的优点

* 数据队列是两个作业之间进行异步通讯的最快方法。相对数据
库文件、消息队列或数据域而言,它需要较少的额外开销。

* 多个作业可以向相同的数据队列送数据和取数据,而数据队列
的先进先出、后进先出或关键字顺序排列属性,能够保证数据
送取的正确性。

* 在任何高级语言程序中,通过调用系统提供的程序,就可以对
数据队列进行操作,而且操作方法灵活方便。数据队列的操作
和使用包括两类:第一类使用 CL 命令;第二类调用系统程
序。
CL 命令:
CRTDTAQ 建立数据队列
DLTDTAQ 删除数据队列
WRKDTAQ 工作数据队列
系统程序:
QSNDDTAQ 发送数据队列
QRCVDTAQ 接收数据队列
QCLRDTAQ 清除数据队列
QMHQRDQD 检索数据队列

3.2.2 数据队列的发送

需要将数据发送给数据队列,只要在程序中调用
QSNDDTAQ 。在 CL 程序中,调用的格式如下:

CALL PGM(QSNDDTAQ) PARM(&QNAME &LIB +
&FLDLEN &FIELD &KEYLEN &KEY)

&QNAME: 是长度为10的字符型,它命名了数据队列,如:
IN_Q。
&LIB: 是长度为10的字符型,它命名了数据队列所在的
库,如:*LIBL。
&FLDLEN: 是长度为5的数字型,它规定了发送给数据队列的
字符数,如:100。
&FIELD: 是长度为&FLDLEN的字符型,它包含了具体发送
给数据队列的数据。
&KEYLEN: 是长度为3的数字型,它说明了传送给数据队列的
关键字长度,如:6。
&KEY: 是长度为&KEYLEN的字符型,它包含了传送给
数据队列的关键字数据。

注:后两个参数可以自选,如果说明了一个,则必须说明另一
个。

3.2.3 数据队列的接收

需要从数据队列中接收数据,只要在程序中调用
QRCVDTAQ 。在 CL 程序中,调用的格式如下:

CALL PGM(QRCVDTAQ) PARM(&QNAME &LIB &FLDLEN
+
&FIELD &WAIT &ORDER KEYLEN &KEY &SNDRLEN &SNDR)

&QNAME: 是长度为10的字符型,它命名了数据队列。如:
OUT_Q。
&LIB: 是长度为10的字符型,它命名了数据队列所在的
库。如:*LIBL。
&FLDLEN: 是长度为5的数字型,它规定了发送给数据队列
的字符数。
&FIELD: 是长度为&FLDLEN的字符型,它包含了从数据
队列中接收到的具体数据。
&WAIT: 是长度为5的数字型,它说明了等待接收数据的
时间。负数表示无限制的等待;零表示不等待;
正数示要等待的秒数,最大值是9999。这个参数
只有在数据队列中无满足条件的数据时, 才起作
用。
&ORDER: 是长度为2的字符型,它说明了按关键字接收数
据的条件。可用的字符值是:GT、LT、EQ、
GE、LE。
&KEYLEN: 是长度为3的数字型,它说明了接收数据队列的关
键字长度。
&KEY: 是长度为&KEYLEN的字符型,它标识了用于从
数据队列中接收数据的关键字变量。
&SNDRLEN:是长度为3的数字型,它规定了发送者标识的长
度。
&SNDR: 是长度为&SNDRLEN 的字符型,它包含了发送
者标识的数据。

注:后三个参数可以任选,但是&ORDER、&KEYLEN和
&KEY 必须同时说明。

3.2.4 数据队列的清除

需要从数据队列中清除数据,只要在程序中调用 QCLRDTAQ
在 CL 程序中,调用的格式如下:

CALL PGM(QCLRDTAQ) PARMM(&QNAME &LIB)

3.2.5 数据队列的检索

需要检索一个数据队列的描述项,只要在程序中调用
QMHQRDQD。在 CL 程序中,调用的格式如下:

CALL PGM(QMHQRDQD) PARM(&RCVR &RCVRLEN
+
&FORMAT &DQNAME)

&RCVR: 是长度为&RCVRLEN的字符型,它标识了含有
数据队列性的变量。
&RCVRLEN: 是长度为4的数字型,它说明了&RCVR长度。
&FORMAT: 是长度为8的字符型,它定义了接收模板的格
式。
&DQNAME: 是长度为20的字符型,它标识了数据队列和所
在库,前十个字符是队列名字,后十个字符是
库名。

3.3 数据域的程序通讯

数据域(*DTAARA)是系统目标中的一种类型。当建立了这
种目标后,可以用来存入数据,以便任何程序进行读取和修改。数
据域的典型用途如下:

* 提供用于几个程序中的常数字段,易于共享和修改。如:标
题、说明等。
* 在一个作业中提供一个传递信息的区域。
* 在一个作业中提供一个字段作为控制参数,以便容易地得到修
改。

数据域的 CL 命令包括:

CRTDTAARA 建立数据域,长度不超过2000
CHGDTAARA 改变数据域,改变时数据域被锁定
DSPDTAARA 显示数据域,可以以十六进制方式显示
RTVDTAARA 检索数据域,检索值需要存入 CL 变量
DLTDTAARA 删除数据域
WRKDTAARA 工作数据域

第四章 测试功能

提要:

* CL 程序的编译
* CL 程序的测试

4.1 CL 程序的编译

CL 源程序必须经过编译,生成 *PGM 方可运行。建立程序
的方法有两种:一是,使用 CL 命令 CRTCLPGM,二是,使用
PDM 菜单选项 14,按 F4 键即可对命令参数进行选择。

系统编译的情况全部记录在编译清单中,通过 WRKSPLF 即
可看到。编译过程中的错误被列在相应命令后面,以及文件的最
后,方便用户查找。下列类型的错误将停止程序的建立:

* 值错
* 句法错
* 命令内部与参数间不符
* 有效性检查有错

CL 程序可以通过反编译命令 RTVCLSRC,重新建立 CL
源程序。使用该命令时,必须满足建立编译程序的参数
ALWRTVSRC 为 *YES。 当源程序被反编后,任何注释信息不再
重新产生,以下程序序言将被建立:

* 所有者名
* 源程序的最终修改日期
* 源程序的重建日期和时间
* 最初编译时的许可程序级

4.2 CL 程序的测试

对于 CL 程序在编译和运行中的错误,系统提供以下几种测
试功能:

* 程序转储。 在 CL 源程序中输入命令 DMPCLPGM,运行后
通过 WRKSPLF 即可看到转储内容。包括程序信息队列的全
部信息和全部变量的数值。如果程序运行出错,出现提示画面
时,输入 D 也可进行程序转储。

* 设置断点。第一步,启动测试环境,使用命令 STRDBG PGM
(PGMA);第二步,设置断点,使用命令 ADDBKP STMT
(1500) PGMVAR( '&A' '&B'); 第三步,运行程序,显示
断点信息;第四步,结束测试环境,使用命令 ENDDBG。

* 设置跟踪。跟踪是记录程序中语句执行顺序的过程。系统并不
自动显示跟踪信息,而须使用命令 DSPTRCDTA 请求显示跟
踪信息,信息包括语句执行的顺序和 ADDTRC 命令中指定的
变量值。

AS/400 初级培训课程相关推荐

  1. 疯狂为《英伟达深度学习学院半日免费初级课程》打Call

    2017年11月5号,由英伟达深度学习学院.浙江理工大学主办,由丽台(上海)信息科技有限公司.LeadAI学院承办的<英伟达深度学习学院半日初级培训课程(免费)>在百年历史的浙理校内成功举 ...

  2. Excel VBA初级系列培训--课时3

    ExcelHome VBA初级培训课程-课时3 从宏开始学习VBA 讲师: 三戒  2009.12 整理: Jimmy Zeng  2010.09 http://club.excelhome.net ...

  3. Revit教程免费下载——Revit建筑施工图初级培训

    Revit建筑施工图初级培训课程,总共有四个章节. 第一章BIM的概述以及硬件配置要求 第二章 Revit Architecture基础概述 第三章掌握Revit设计流程和基本工具的运用 第四章族的概 ...

  4. 南京的学员看过来 | NVIDIA DLI深度学习入门培训

    NVIDIA 深度学习学院:聚焦于人工智能和深度学习,致力于在全世界范围内提供支持,解决最具挑战性的问题.通过线上自主学习,或者线 下由 NVIDIA 认证的讲师来教授的培训课程,我们可以帮助开发者. ...

  5. Abaqus有限元分析技术应用于卫星强度校核

    目前,Abaqus的有限元分析技术在建筑工程和交通运输工程领域得到了广泛应用,它已成为许多企业解决各种工程问题的主要手段.近年来,随着计算机技术的快速发展,有限元分析技术得到了更广泛的应用. Abaq ...

  6. 如何学习ABAQUS有限元仿真分析软件

    ABAQUS是一种常用的有限元仿真分析软件,广泛应用于工程领域.学习ABAQUS需要一定的基础知识和实践经验.下面将介绍一些学习ABAQUS的方法和步骤,帮助初学者快速入门. 1. 学习基础知识:在学 ...

  7. ABAQUS 在车辆驻车制动系统中的应用

    本文以长城汽车某款轿车的驻车制动拉线支架结构优化为工程背景,通过运用仿真分析方法,解决实际工程问题. 在汽车市场竞争日益激烈的今天,汽车厂商最关注的是如何以最快的速度开发出高品质.低能耗.低成本的汽车 ...

  8. Unity初级教程2048附带源码及插件(400行代码1个脚本UI实现)

    * 完整代码传送门 此次用到的Unity插件地址Unity3dAsyncAwaitUtil GitHub,如果使用async-await时仍然报错,请把.net standard 2.0转换为.net ...

  9. python课程费用-Python在线培训课程费用是多少?值不值得报名?

    在已经到来的人工智能时代,Python毫无疑问将成为热门的开发语言.它作为人工智能的首选语言,有着无可比拟的优势.除此之外,Python还被应用于各种行业,如Web开发.数据科学.脚本编写等等.在Py ...

最新文章

  1. SAP EWM - 其他主数据 - 供应链单元
  2. 【Leetcode】大神总结的所有TopK问题模板(基于快速排序)
  3. 安装你自己的perl modules
  4. 快速排序在最坏的情况下时间复杂度(Ω(nlgn)(算法导论第三版9.3-3))
  5. 高效测试必学 | 用pytest生成测试报告
  6. The program ‘roscore‘ is currently not installed 解决办法
  7. c语言看门狗的作用,AT89S52单片机看门狗C语言程序
  8. 好看简约加速器官网源码
  9. Mac中使用Mounty对NTFS文件进行读写操作,报错“卷不能在读/写模式下重新挂载,可能是因为先前没有完全卸载(安全删除)”问题的解决
  10. buuoj 小易的U盘
  11. 二值化轮廓图像轮廓点坐标顺时针获取matlab程序
  12. php把数组合并,php数组合并_php数组合并、追加与连接的方法、array_combine函数)
  13. 【SAP】SAP FI,中英日专业名词对照表
  14. 知物由学 | AI网络安全实战:生成对抗网络
  15. 商务签证之结局:面试
  16. 使用谷歌正常模式访问不了百度,但是无痕浏览却能打开
  17. (开包即用,不用看代码!)借助Docker自动构建Java(Oracle)镜像
  18. 沪深逐笔、快照推送规则总结
  19. dig命令命令常见用法
  20. 计算机组成原理——中央处理器-数据通路(课程笔记)

热门文章

  1. 分享技术人学习有用的国外网站
  2. 微信小程序、微信公众号客服转私人微信号,实现24小时客服在线
  3. 接手1号店的京东 更看重与沃尔玛的合作
  4. php%3e%3etxt_《3e迅雷》_3e迅雷最新版下载
  5. 谷歌浏览器主页图片设置
  6. 基于R语言的判别分析
  7. Gson踩坑笔记:为什么对象的构造方法没有被执行?
  8. Guava(一)RateLimter设计分析
  9. 前端开发:Vue中v-if和v-show的使用以及应用场景
  10. 机械臂—ROS下UR10e+ft300+2f-140gripper ur机械臂配置夹爪及问题解决