求助如何写求助信CL程序

[原创] 赠送:AS/400 初级培训课程--CL 控制语言初步 - ChinaUnix.net
[原创] 赠送:AS/400 初级培训课程--CL 控制语言初步
http://www.chinaunix.net 作者:&&发表于: 10:48:48
说明:该文档为本人获得的某培训教程的一部分,原为WORD文档,
我不会打包上传东西给大家共享,其实六一儿童节那天就想上传,
但是捉摸了半天不会,呵呵,只好贴了一首MP3链接,到现在还没弄明白,
只好这样贴了,而且也不知道此贴内容以前有没有,
仅以此送给支持我的诸位朋友,
WORD文档转为文本文档是可能有些符号不对,改了一些,
可能还有一些误漏,
敬请批评指正!!!
如果诸位觉得有用请鼓励一下,谢谢!!!
AS/400&初级培训课程
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&命令中指定的
变量值。
& 回复于: 12:13:13
word版我传到这了
ftp://sunnyliang.vicp.net:24&
拖到了upload里,
不知有没有???
& 回复于: 14:12:42
已经收到,谢谢!
http://sunnyliang.vicp.net
& 回复于: 16:02:34
你这样传,小心长联找你算帐。
& 回复于: 19:27:59
呵呵,不是长联的,绝对不是!!!
& 回复于: 22:54:19
不错不错。
& 回复于: 23:02:33
是啊,不过要真的学起来,还是挺累的。
& 回复于: 09:12:30
有没有RPG编程初步?
& 回复于: 12:53:59
谢谢,很是感谢!!!
& 回复于: 15:38:33
As400上一般用什麽语言开发项目?RPG吗?
& 回复于: 15:41:53
很多,有RPG,COBOL,ILE&XXX(RPG,C,COBOL),CL。
一般在数据库用RPG效率要高些。
通讯用C,
系统控制等方面用CL。
当然也不是绝对的了,跟应用的设计,结构等有比较大的关系。
& 回复于: 23:29:03
那要把一个系统搞定岂不是要掌握好几门语言!!!
& 回复于: 22:30:59
虽然看不大懂,但是还是要顶。
& 回复于: 10:48:48
有没有&其他的相关的as/400的学习资料呢?有的话请上传一下,拜托!!!
原文链接:
转载请注明作者名及原文出处『 C语言论坛 』-论坛列表
C语言图形编程专区,专门讨论基于C的图形、游戏等编程技术
主题:作者:阚闯
&总在线 8151 人,其中『 C语言论坛 』上共有 47 位会员与 4271 位客人,今日贴子 28 []
已投 82 票
76512521/1531页1
1 天以来主题
2 天以来主题
1 周以来主题
1 个月以来主题
3 个月以来主题
6 个月以来主题
1 年以来主题
按降序排列
按升序排列
-=> 图标说明
开放的话题
热门的话题
锁定的话题
加精的话题
(总、区、版)固顶话题
版权所有,并保留所有权利。
Powered by , Processed in 0.021116 second(s), 4 queries.
Copyright&, BCCN.NET, All Rights Reserved第八章处理信息;这章介绍在用户和程序之间用信息做通讯的一些方法,;OPM程序或ILE过程可发送立即信息或预先定义的;接收信息;从信息文件中取得信息描述且把它放到程序变量中从信;8.1给系统用户发送信息下列命令可用来向系统用户;SNDMSG(发送信息);SNDBRKMSG(发送中断信息)SNDPGMM;SNDUSRMSG(发送用户信息);SNDUSRMSG和S
这章介绍在用户和程序之间用信息做通讯的一些方法,信息可以用如下方法发送:
从一个系统用户到另一个系统用户,信息的接收者当前没使用系统也可。
从一个OPM程序或ILE过程到另一个OPM程序或ILE过程。
从过程或程序向系统用户,信息的接收者当前没使用系统也可。 交互系统用户仅可发送立即信息和回答信息。
OPM程序或ILE过程可发送立即信息或预先定义的有用户定义数据的信息,另外,过程或程序也能:
从信息文件中取得信息描述且把它放到程序变量中 从信息队列中移出信息 监控信息
给系统用户发送信息
下列命令可用来向系统用户发送信息:
SNDMSG(发送信息)
SNDBRKMSG(发送中断信息) SNDPGMMSG(发送程序信息)
SNDUSRMSG(发送用户信息)
SNDUSRMSG和SNDPGMMSG可用在批及交互的OPM程序和ILE过程中,不能在命
令行中输入。SNDMSG往QSYSOPR,显示工作站信息队列或用户信息队列中发送信息或查询。
可以同时向多个信息队列发送查询信息,也可只向一个信息队列发送查询信息,信息是由信息队列规定的交付方式交付的,如果信息不是中断方式,就不能中断用户的当前操作。
下面的SNDMSG命令由显示工作站用户发送信息给系统操作员:
MSG('Mount tape on device TAP1') TOUSR(*SYSOPR)
SNDBRKMSG命令从工作站、程序或作业送一个立即信息给一个或多个工作站,它会
以中断方式交付而不管接收的信息队列是什么方式。这个命令只能往显示工作站信息队列发送信息,可在需要工作站用户立即干预时用此命令,但不能保证此信息都会引起中断。因为每个作业可用CHGJOB命令中的BRKMSG参数来控制这件事。
如果发送查询信息,可规定回答返回给哪个信息队列而不是你的显示工作站。
下面的命令是由系统操作员给所有的工作站用户发送信息:
SNDBRKMSG MSG('System going down in 15 minutes')
TOMSGQ(*ALLWS)
此命令把信息发送给所有用户,而不是此时正活动的用户。
从CL程序中发送信息
用SNDPGMMSG或SNDUSRMSG命令从CL过程或程序中发送信息。
用SNDPGMMSG命令可发送下列类型的信息:
消息、查询、完成、诊断、请求、逃逸、状态、通知。
可从CL过程或程序往下列类型的队列发送信息:
作业的外部信息队列(看7.4.2)
程序的调用信息队列(看7.4.2)
QSYSQPR队列
工作站信息队列 用户信息队列
要从过程或程序中发送信息,在SNDPGMMSG命令中要规定下列内容:
信息标识或立即信息:信息标识是预先定义信息的信息描述的名字。
信息文件:在发送预先定义信息时,包含信息描述的信息文件的名字。
信息数据字段:如果发送预先定义信息,这些字段包含信息中替换变量的值。每
个字段的格式化须在信息描述中说明。如果发送立即信息,就没
有信息数据字段。
接收信息的信息队列或用户。
信息类型:下表给出哪类信息可以发送给哪类队列(√=有效)
CCSID:规定提供信息或信息数据所用的编码字符集标识。
回答信息队列:接收对查询回答的信息队列的名字,缺省为回答送往发送查询信息的
过程或程序的调用信息队列。
键字变量名:包含信息引用键的CL变量名。 要往7.2.9生成的信息队列发送信息,可用下列命令:
MSGID(USR4310) MSGF(QGPL/USRMSG) +
MSGDTA(&CUSNO) TOPGMQ(*EXT) +
MSGTYPE(*INFO)
信息的替换变量是客户号,由于客户号可变,不能在信息中规定确切的客户号,那么,要在过程或程序中对客户号说明一个CL变量(&CUSNO),然后把它规定为信息数据字段。在发送信息时,变量的当前值传给信息。
另外,也不总是知道哪个显示工作站使用过程或程序, 故在TOPGMQ参数中也不能规定确切的显示工作站信息队列。这样,可以规定外部信息队列*EXE。 8.2.1
查询和消息
用SNDUSRMSG命令,可向显示工作站用户、系统操作员或用户定义的信息队列发送查询或消息。如果发送查询信息,过程或程序要等待用户的回答,信息可以是立即信息或预先定义的信息,对交互作业,信息用缺省值送往显示工作站用户,对批作业,信息用缺省值送往系统操作员。要用SNDUSRMSG发送信息,可在命令中规定以下内容:
信息标识或立即信息:信息标识是预先定义信息的信息描述的名字 信息文件:发送预先定义信息时,包括信息描述的信息文件的名字
信息数据字段:如果发送预先定义信息,这些字段包含信息中替换变量的值。每
个字段的格式化须在信息描述中说明。如果发送立即信息,就没
有信息数据字段
对查询信息有效的回答 信息类型
接收的信息队列
信息回答:一个CL变量,它包括对查询信息响应的回答 转换表:用来转换回答值,通常用来做大小写转换 CCSID:规定提供信息或信息数据所用的编码字符集
完成和诊断信息
SNDPGMMSG命令,可发送诊断和完成信息,可发送给任何信息队列。诊断信息告诉调用过程或程序检查到的错误,完成信息告诉所做的工作结果。
通常,逃逸信息是送往过程或程序来告诉调用者有什么问题或发送诊断信息。对完成信息,通常不发送逃逸信息,因为所要求的功能已经完成。例如,假定系统操作员用菜单来调用程序SAYPAY来保存某个目标,用下面的程序来保存然后发布完成信息:
SAVOBJ OBJ(PAY1 PAY2) LIB(PAYROLL) CLEAR(*YES)
SNDPGMMSG MSG('Payroll objects have been saved') MSGTYPE(*COMP)
如果SAVOBJ失败,CL功能检测且系统操作员要显示详细的信息来发布逃逸信息,以
解释失败的原因。如果成功地完成SAVOBJ,要往显示菜单程序的调用信息队列发送完成信息,完成信息要与IBM支持的命令一致。多数IBM命令会发送完成信息指出成功地完成,查看送往作业日志的信息类型会有助于做问题分析。
可用SNDPGMMSG命令从CL过程或程序中往作业的调用信息队列或*EXT发送状态信息。在送往调用信息队列时,接收的过程或程序能监控状态信息的到达及能处理描述的条件。如果不能监控这些信息,控制要返给发送者来重处理。请看8.3的说明。
逃逸和通知信息
可用SNDPGMMSG命令从CL过程或程序中往调用过程或程序的调用信息队列发送逃逸信息,它告诉调用者过程或程序非正常结束以及原因。调用者能监控逃逸信息的到达且处理发生的条件,当调用者处理这个条件时,控制不会返给逃逸信息的发送者。假如调用者是同一程序用的另外过程,程序本身不结束,发出逃逸的过程也可以继续。如果逃逸信息送往
程序本身的调用者,所有程序中活动的过程都立即结束,结果是程序不能继续运行。如果调用者没有监控这个逃逸信息,那么采取缺省的系统动作。
可以从CL过程或程序往调用程序或过程的信息队列或外部信息队列发送通知信息,它告诉调用者继续运行的条件,调用过程或程序能监控这些信息的到达并处理它产生的条件。如果调用者是ILE过程,过程能处理这个条件返回一个回答然后让过程或程序继续进行。如果没有监控,则返回给发送者一个缺省值,然后发送者重新操作,请看8.3
不能用立即信息做逃逸和通知信息,系统定义了信息CPF9898,它用做立即的逃逸和通知信息。例如:
SNDPGMMSG MSGID(CPF9898) MSGF(QCPFMSG) MSGDTA('Error condition') +
MSGTYPE(*ESCAPE)
发送信息的例子
例1:此例允许显示工作站用户调用有这个过程的CL程序来提交作业而不用
SBMJOB命令,在提交作业后会发送一个完成信息。
SBMJOB JOB(WKLYPAY) JOBD(USERA) RQSDTA('CALL WKLY PARM(PAY1)')
SNDPGMMSG MSG('WKLYPAY job submitted') MSGTYPE(*COMP)
例2:此例基于从被调用程序接收的参数来修改信息,然后由过程发送一个完成信息。
DCL &RCDCNT TYPE(*CHAR) LEN(3)
CALL PGMA PARM(&RCDCNT)
SNDPGMMSG MSG('PGMA completed' *BCAT &RCDCNT *BCAT +
'records processed') MSGTYPE(*COMP)
例3:此过程发送信息请示系统操作员装入一个特别格式,RCVMSG命令等待回答。
系统操作员要给出至少一个字符做回答,但过程不使用这个回答的值。
DCL &MSGKEY TYPE(*CHAR) LEN(4)
MSG('Load special form') TOUSR(*SYSOPR) +
KEYVAR(&MSGKEY) MSGTYPE(*INQ)
RCVMSG MSGTYPE(*RPY) MSGKEY(&MSGKEY) WAIT(120)
在RCVMSG命令中必须规定WAIT参数,这样过程能等待回答。如果没规定WAIT,过程继续执行RCVMSG后的指令,而不接收回答,在RCVMSG中使用的MSGKEY参数
允许过程接收回答,在SNDPGMMSG中的变量&MSGKEY返给过程用在RCVMSG命令中。
例4:下面过程在批作业时把信息发送给系统操作员,作业在工作站运行时发送给工
作站用户,过程接收大写或小写的Y或N(小写由转换表(TRNTBL参数)转 成大写)。如果回答的不是这四种,操作员发送信息指出回答无效。
DCL &REPLY *CHAR LEN(1)
SNDUSRMSG MSG('Update YTD Information Y or N') VALUES(Y N) +
MSGRPY(&REPLY)
IF (&REPLY *EQ Y)
例5:下面的过程使用CPF9898发送逃逸信息,信息内容为‘procedure
failure’。立刻信息不能做逃逸信息,故CPF9898用做信息数据。
SNDPGMMSG MSGID(CPF9898) MSGF(QCPFMSG) MSGTYPE(*ESCAPE)
MSGDTA('Procedure detected failure')
例6:下面的过程允许系统操作员给几个显示工作站发送信息。在系统操作员调用程
序时,这个过程包括在被调用程序中,显示一个提示让系统操作员进入发送信息
包含各类专业文献、行业资料、各类资格考试、生活休闲娱乐、应用写作文书、文学作品欣赏、专业论文、CL-885等内容。 
 已知( ? -1 E [ Ag(s)|AgCl(s)|Cl]=0.2223V, 25℃时 1mol?kg HCl 的? ±=0.809) 。 习题 8 原电池 Pt | H2(p?) | H2SO4(b=0.01mol...  0.8800 ? 0.6968 ? 0.1832g Cl 35.45 ?x ? 0.1832 AgCl 143.32 Cl% ? ? 100 ? ? 100 ? 5.15 m0 0.8800 6. 将0.3600 g 纯BaCl2? 2...  8.用银量法测定下列试剂,各应选择何种方法确定终点较为合适 (1)BaCl2 (2)KCl (3)NH4Cl (4)Na2CO3+NaCl (5)NaBr 四、计算题 9. 已知 25℃时, AgI ...  CH3CH2CHCH3 Cl &( 7. 按 E2 消除反应活性大小排列的顺序是: ()&()。 a. H3C CH3 Br b. H3C CH3 Br c. ) H3C CH3 Br 8. 按沸点由高到低排列...  (BX)=12FFH 1)MOV CL,8 执行后, (CL)=8 2)ROL BX,CL 循环左移 8 位,相当于低 8 位和高 8 位交换,CF 中保存高 8 位的最低位 执行后, (BX)...  MOV DX,8F70H MOV AX,54EAH OR AX,DX AND AX,DX NOT AX XOR AX,DX ...STC MOV CX,0403H MOV AX,0A433H SAR AX,CL XCHG CH,CL SHL AX,CL (...  6.HOCH2 CH2 Cl + KI 丙酮 + (CH3 )2 CuLi 7. Br 8.ClCH=CHCH2 Cl +CH3COONa 9. Cl NO2 Na2 CO3 H2O 100 ℃ Cl + LiAlH4 10. NO2 三...  1-L-8Na.Cl部分用化学方程式解释问题(宋) 隐藏&& 1-L-8 晚自习用化学方程式解释下列问题 1、 1溶洞的形成过程 8、 8氯气的化学性质比氧气活泼,在与金属 ...  验证内容 6.1 设计确认(DQ) 6.1.1 仪器的主要技术参数 CL8R 超大容量冷冻离心机主机主要技术指标 最高转速 最大离心加速度 最大容量 温度设置范围 定时范围 ...

我要回帖

更多关于 如何写求助信 的文章

 

随机推荐