欢迎来到天天文库
浏览记录
ID:50178481
大小:425.19 KB
页数:57页
时间:2020-03-06
《AS400服务程序笔记.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、Serviceprogram一基本概念: Serviceprogram是由module和其他Serviceprogram组成的,在系统中用*SRVPGM来表示(好像是废话--!),其包含了很多可被其他程序调用的procedure。 Serviceprogram是用byreference方式绑定,功能类似于其他语言的函数库,提供了很多procedure供其他ILEprogram调用。 Serviceprogram中哪些procedure可以被其他program调用,哪些不可以呢?这就牵扯到了
2、Serviceprogram中一个非常重要的概念:publicinterface。二公共接口(publicinterface) Serviceprogram的publicinterface规定了哪些procedure和dataitem可以被外界使用,哪些不可。如果publicinterface设置的不合理,很容易产生program与Serviceprogram不兼容的问题,导致程序发生异常。那么如何定义Serviceprogram的publicinterface呢,如下: CRTSRVPGM命令的E
3、XPROT参数规定了Serviceprogram如何对外提供接口,并提供2个参数值: 1EXPORT(*ALL)。选择*all的话,那么Serviceprogram里所有使用keyword:EXPORT修饰的procedure和dataitem都可以被外界程序使用。 2EXPROT(*SRCFILE)。*SRCFILE是默认的参数值。使用*SRCFILE的话,可以使用binderlanguage(BND文件)来自定义publicinterface,自己选择哪些procedure和dataitem可以
4、被外界使用(这些procedure、dataitem也必须使用keyword:EXPROT修饰)。 注:binderlanguage的文件类型是BND,默认的SOURCEFILE是QSRVSRC,并且BND文件是不需要编译的。 下面说一下*ALL和*SRCFILE各自的优缺点: *ALL的优点:使用起来非常方便,不需要额外的辅助文件,Serviceprogram中所有的exportprocedure和dataitem就都可以被其他程序调用。 *ALL的缺点:兼容性太差,无论增加或
5、者减少Serviceprogram的exportprocedure、dataitem,都会导致program与Serviceprogram的不兼容。那么所有用到此Serviceprogram的program都需要重新绑定(UPDPGM)或者重新编译(CRTPGM)才能正常使用。就算是这种变化并不会影响程序的正常运行(比如说你向Serviceprogram中追加了一个新的procedure,并且现程序并不使用此procedure,即增加procedure不影响现在的程序运行)那么所有用到此Serviceprogram的p
6、rogram也要重新绑定或编译。很麻烦吧。 *SRCFILE的缺点:*SRCFILE使用起来要比*ALL麻烦些,因为要使用binderlanguage定义BND文件才能使用。 *SRCFILE的优点:提供了很好的兼容性。即增加或者减少Serviceprogram的export的procedure、dataitem,程序仍然运行,不需要重新编译相关的program。 那到底是什么原因产生的兼容性问题?听我慢慢道来三signature与binderlanguage1signature
7、 首先系统为Serviceprogram提供了一个类似PF的levelcheck的功能,来检查ILEprogram与Serviceprogram当前的接口是否一致。大概的过程如下: 1)CRTSRVPGM时,系统会根据Serviceprogram的exportprocedure、dataitem的数量、名称、顺序产生一个signature(类型于PF的recordformatID,具有唯一性),并保存在*SRVPGM中。例如: DSPSRVPGM SRVPGM(PASS) DETAI
8、L(*SIGNATURE) splayServiceProgramInformation Display1of1Serviceprogram ............: PASS
此文档下载收益归作者所有