- 论坛徽章:
- 0
|
回复 #1 Allen_2020 的帖子
1.线程
在rpgleV6r1以前支持线程,但是没法直接支持多线程,而在rpgleV6r1中开始就能支持多线程的环境运行.
在V6r1中H表能使用main定义多线程环境中的主线程,然后有主线程来管理其他的nomain_thread,在主线程中定以的变量必须为STATIC(*ALLTHREAD)类型的,因为nomain_thread需要共享main_thread的变量.
2.srvpgm:
1.创建module
module_name: m01:
module code:
Hnomain
DM01 pr
pM01 b export
Dm01 pi
D.....
C 'mo1 programm' dsply
C return
Pm01 e
module_name: m02:
module code:
Hnomain
DM02 pr
pM02 b export
Dm02 pi
D.....
C 'mo3 programm' dsply
C return
Pm02 e
module_name: m03:
module code:
Hnomain
DM03 pr
pM03 b export
Dm03 pi
D.....
C 'mo3 programm' dsply
C return
Pm03 e
2.创建bnd文件(这个文件可有可无,如果没有那么在编译srvpgm时需要将export(*srcfile)改为export(*all))
bnd_name: bm
bnd_code:
strpgmexp pgmlvl(*current)
export symbol('m01') //*这里使用M01是procedure的名字而不是程序的名字.
export symbol('m02')
export symbol('m03')
endpgmexp
3.创建srvpgm
crtsrvpgm srvpgm(mylib/sbm1) module(mylib/m01 mylib/m02 mylib/m03) export(*srcfile)
srcfile(mylib/bm) srcmbr(bm)
4.创建pgm同时邦定srvpgm
pgm_name: p01
pgm_code:
D p01 pr extproc('M01')
c
c callp p01
c
c
c
c eval *inlr =‘1’
4.1 将p01创建成module类型。
4.2 CRTPGM PGM(mylib/p) MODULE(mylib/p01) BNDSRVPGM(mylib/sbm1) OPTION(*DUPPROC)
建立pgm
CRTPGM PGM(yyTEMP1/RPG5) MODULE(yyTEMP1/RPG3) BNDSRVPGM(yyTEMP1/SRPG) OPTION(*DUPPROC) |
|