CL控制语言初步知识交流.docx
- 文档编号:13442413
- 上传时间:2023-06-14
- 格式:DOCX
- 页数:17
- 大小:24.68KB
CL控制语言初步知识交流.docx
《CL控制语言初步知识交流.docx》由会员分享,可在线阅读,更多相关《CL控制语言初步知识交流.docx(17页珍藏版)》请在冰点文库上搜索。
CL控制语言初步知识交流
AS/400初级培训课程
AS/400CL控制语言初步
课程大纲:
∙第一章概述
∙第二章CL编程
∙第三章程序间的通讯
∙第四章测试功能
第一章概述
提要:
∙CL命令的作用
∙CL命令的分类
∙系统菜单
1.1CL命令的作用
CL(ControlLanguage)控制语言是用户与操作系统之间的主要接口。
可以说用户管理和操作AS/400系统,均可以通过CL实现。
用户在不同的工作站或客户端可以同时使用CL,其输入方式有五种:
∙在命令行输入
∙在菜单画面选择
∙在workwith菜单中,option选项
∙在CL程序中执行
∙远程调用
前三种输入方式给用户提供一种交互式的操作方法,只执行一条命令;第四种方式给用户提供一种操作,并包含逻辑控制,可以完整地实现一项功能;第五种方式给用户提供在客户端直接执行主机操作的接口。
由于CL使用了统一的命名方法,提供prompt式的提示功能和具体到域值的在线帮助,以及自动生成命令参数的缺省值,再加上有效性检查,从而使得CL的使用变得非常简单、方便和灵活。
1.2CL命令的参数
CL使用了一种很科学,较为成功的命名方法。
每条命令由命令名和一系列参数组成。
命令名通常由动词加上接受动词的名词(定义为目标Object)组成,单词通常缩写为三个字母。
例如:
CL命令命令名
SendMessageSNDMSG
CopyFileCPYF
WorkwithDeviceDesripyionsWRKDEVD
CL的参数由关键字和参数值组成,关键字通常和命令一样缩写,它用于说明参数的作用,在命令输入屏,按F11键,即可看到关键字。
在命令行输入命令时,如果参数是按照固定的顺序输入,则可以省略关键字。
例如:
SNDMSGMSG(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.1CL程序的作用
CL程序是由CL命令组成,这些命令被编译成可供随时调用的程序。
使用CL程序的优点包括:
∙CL程序比单独输入和运行命令快,因为命令被编译成能够立即运行的形式。
∙有些功能需要多条CL命令一起完成。
∙参数可以传递给CL程序,CL程序内部也接收变量的定义,以适应特殊需要的程序操作。
∙CL程序能够像其它高级语言程序一样被测试和监控。
CL程序可以应用到许多方面,包括:
∙通过CL程序完成单独输入CL命令所不能完成的功能,例如,人工或者定时提交批作用完成一项工作,如启动子系统,进行文件备份,整顿系统资源。
∙给交互式或批处理的应用程序提供一个接口,使得在应用程序中直接进行系统操作或者获取系统参数。
∙在网络通信方面,CL程序往往承担应用主控程序的角色。
2.2CL程序的结构
CL程序是借助于ADT工具中的SEU输入的,在输入过程中,键入一条命令并按F4键,就会显示出这条命令的提示画面,方便用户输入相应的参数值。
CL源程序主要分为以下几个部分:
∙程序的开始和结束:
PGMPARM(&A&B)开始CL程序
ENDPGM结束程序
∙变量定义:
DCL定义变量
DCLF定义文件
∙CL处理命令:
CHGVAR变量赋值
MONMSG监控错误信息
SNDPGMMSG传送程序信息
RTVJOBA获取作业属性值
∙逻辑控制命令:
IFTHENELSE
DOENDDO
GOTO
∙内部函数:
%SST取子串
*CAT连接字符
∙程序控制命令:
CALL调用子程序
RETURN返回调用程序
2.3CL程序的命令
CL程序中仅可包含CL命令,由系统提供的大多数CL命令可用于CL程序,而有些CL命令是专门用在CL程序中的。
下面是一张用在CL程序中的部分命令清单,其中带有星号的表示该命令仅能用于CL程序内部。
2.3.1变量的使用
∙变量说明,使用DCL命令来定义变量及其属性、长度和初值。
标准格式如下:
*CHAR
DCLVAR(变量名)TYPE*DECLEN(长度)VALUE(初值)
*LGL
使用DCL命令时,必须遵循的规则如下:
◆CL变量名必须以&开始,后跟字符不多于10个,&后的第一个字符必须是字母,其余的可以是字母或数字。
◆CL变量值必须是:
字符型最长为9999个字符;数值型为压缩十进制数,最长为15位,其中小数位最长为9位;逻辑型为“0”或“1”,表示假或真。
◆CL变量的缺省初值为:
字符型为空,数值型为0,逻辑型为“0”。
◆对于字符型和数值型,如果指定了初值而未指定长度,则缺省长度为初值长度。
∙变量值中小写字符的限制
用作变量的保留值必须用大写字母表示,特别是当它们用引号
括起来的时候。
例如:
DCLVAR(&LIB)TYPE(*CHAR)LEN(10)VALUE(‘*LIBL’)
DLTPGM&LIB/MYPROG
注意:
如果VALUE参数不使用引号,则小写是正确的。
因为使用SEU编辑会自动转换成大写。
∙变量赋值,使用CHGVAR命令给变量赋值,其值可改变成:
◆常量:
CHGVARVAR(&A)VALUE(0)
◆变量:
CHGVARVAR(&A)VALUE(&B)
◆计算量:
CHGVARVAR(&A)VALUE(&A+1)
◆函数量:
CHGVARVAR(&A)VALUE(%SST(&B15))
CHGVARVAR(%SST(&A15))VALUE(&B)
赋值时应注意以下几点:
◆对逻辑变量,被改变的值必须是一个逻辑值。
◆对数值变量,只能赋予十进制数,或者数字字符变量(包括小数点和正负号)。
◆对字符变量,既可接受字符,也可接受十进制数。
赋十进制数时,该字符变量的值是右对齐,前导补零,负号放在最左边。
∙CL程序中注解的书写,在命令的头尾使用一对符号:
/*和*/。
如果一行写不下一条命令,使用+。
2.3.2CL程序内部的逻辑控制
∙条件转移命令:
IFCOND(条件)THEN(一条命令)
ELSECMD(一条命令)
或者IFCOND(条件)THEN(DO)
.
ENDDO
ELSECMD(DO)
.
ENDDO
∙无条件转移命令:
GOTOLABEL
∙操作符:
逻辑的*AND*OR*NOT
算术的+-*/
字符的*CAT*TCAT
关系的*EQ*GT*LT*GE*LE*NE
∙监视信息命令:
MONMSG
MONMSGMSGID(信息标识1…信息标识50)+
EXEC(CL命令)
系统对于CL命令执行错误所送出的信息都具有唯一的标识符,如果不进行监视,则系统会终断程序,自动显示错误信息。
2.3.3系统资源的获取
∙日期格式转换命令:
CVTDAT
CVTDATDATE(被转换日期)TOVAR(转换后日期)+
FROMFMT(原格式)TOFMT(新格式)TOSEP(新分隔符)
其中:
转换后日期的长度至少是:
◆对儒略日期(如YMD,DMY或JUL格式),不使用分隔符为5个字符,使用分隔符为6个字符。
◆对非儒略日期,不使用分隔符为6个字符,使用分隔符为8个字符。
日期格式和分隔符可以通过按F4键选择。
∙检索系统值命令:
RTVSYSVAL
RTVSYSVALSYSVAL(系统值名)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.1CALL命令的使用
调用程序:
CALLPGM(PGMA)PARM(&A&B)
被调用程序:
PGMPARM(&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程序中,调用的格式如下:
CALLPGM(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程序中,调用的格式如下:
CALLPGM(QRCVDTAQ)PARM(&QNAME&LIB&FLDLEN+
&FIELD&WAIT&ORDERKEYLEN&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程序中,调用的格式如下:
CALLPGM(QCLRDTAQ)PARMM(&QNAME&LIB)
3.2.5数据队列的检索
需要检索一个数据队列的描述项,只要在程序中调用QMHQRDQD。
在CL程序中,调用的格式如下:
CALLPGM(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.1CL程序的编译
CL源程序必须经过编译,生成*PGM方可运行。
建立程序的方法有两种:
一是,使用CL命令CRTCLPGM,二是,使用PDM菜单选项14,按F4键即可对命令参数进行选择。
系统编译的情况全部记录在编译清单中,通过WRKSPLF即可看到。
编译过程中的错误被列在相应命令后面,以及文件的最后,方便用户查找。
下列类型的错误将停止程序的建立:
∙值错
∙句法错
∙命令内部与参数间不符
∙有效性检查有错
CL程序可以通过反编译命令RTVCLSRC,重新建立CL源程序。
使用该命令时,必须满足建立编译程序的参数ALWRTVSRC为*YES。
当源程序被反编后,任何注释信息不再重新产生,以下程序序言将被建立:
∙所有者名
∙源程序的最终修改日期
∙源程序的重建日期和时间
∙最初编译时的许可程序级
4.2CL程序的测试
对于CL程序在编译和运行中的错误,系统提供以下几种测试功能:
∙程序转储。
在CL源程序中输入命令DMPCLPGM,运行后通过WRKSPLF即可看到转储内容。
包括程序信息队列的全部信息和全部变量的数值。
如果程序运行出错,出现提示画面时,输入D也可进行程序转储。
∙设置断点。
第一步,启动测试环境,使用命令STRDBGPGM(PGMA);第二步,设置断点,使用命令ADDBKPSTMT(1500)PGMVAR(‘&A’‘&B’);第三步,运行程序,显示断点信息;第四步,结束测试环境,使用命令ENDDBG。
∙设置跟踪。
跟踪是记录程序中语句执行顺序的过程。
系统并不自动显示跟踪信息,而须使用命令DSPTRCDTA请求显示跟踪信息,信息包括语句执行的顺序和ADDTRC命令中指定的变量值。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- CL 控制 语言 初步 知识 交流