Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1292739
  • 博文数量: 287
  • 博客积分: 11000
  • 博客等级: 上将
  • 技术积分: 3833
  • 用 户 组: 普通用户
  • 注册时间: 2007-08-16 08:43
文章分类
文章存档

2013年(15)

2012年(17)

2011年(17)

2010年(135)

2009年(85)

2008年(18)

分类: 系统运维

2011-06-16 12:35:27

RPGLE例子(二):BNDDIR>服务程序>ServiceC 随机函数>随机数

 

要求:在数字1000000和数字5000000直接产生一个随机数。

 

步骤一、

TC.cle:(ile环境下C语言)

#include                  

#include                   

#include                 

extern  int  RANF(int start, int end)

{                                  

    int j, result;                 

                                   

    srand((unsigned)time(NULL));   

    j = rand()%(end - start);      

    result = j+start;              

    return result;                 

}                                  

这里TC的后缀必须是cle,或cpple,即ile环境下的语言后缀。

CRTCMOD/CRTCPPMOD指定生成到MyLib下。

 

步骤二、

RTVBNDSRC 命令在MyLib目录的QBNDSRC下,生成TCBND)文件:

RTVBNDSRC  MODULE(MyLib/TC)     

          SRCFILE(Mylib/QBNDSRC)

          SRCMBR(TC) 

生成结果,即TCBND)文件的内容:

STRPGMEXP PGMLVL(*CURRENT)                                            

/*********************************************************/

/*   *MODULE      TC    MYLIB   11/06/15  17:09:04      */

/*********************************************************/

    EXPORT SYMBOL("RANF")                                               

ENDPGMEXP

 

步骤三、

    用命令CRTSRVPGM生成服务程序TOOLS*SRVPGM:
CRTSRVPGM SRVPGM(MYLIB/TOOLS)  

          MODULE(MYLIB/TC)     

          SRCFILE(MYLIB/QBNDSRC)

          SRCMBR(TC)

 

步骤四、

CRTBNDDIR生成MYLIB/BTEST BNDDIR

CRTBNDDIR BNDDIR(MYLIB/BTEST)

加载:

ADDBNDDIRE BNDDIR(MYLIB/BTEST)  OBJ((MYLIB/TOOLS))

 

步骤五、

   测试程序TEST.rpgle:

H OPTION(*ShowCpy)                                   

h DFTACTGRP(*NO)                                     

H BNDDIR('BTEST')                                     

 *                                                   

d Randam          pr            10i 0 extproc('RANF')

d  s_Start                       10i 0 value          

d  s_End                        10i 0 value          

 *                                                    

d  s_Start        s              10i 0 inz1000000

d  s_End          s             10i 0 inz5000000

d s_Result        s               10i 0 inz            

 /free                                               

    s_Result = Randam(s_Start:s_End) ;               

                                                      

    *inlr = *on ;                                    

    return ;                                         

 /end-free

用选项14直接在MYLIB下生成TEST*PGM

 

注意地方:

1)    C语言生成module,作为服务程序的一个serviceC语言的后缀必须是CLE,或CPPLE

2)    C语言的原型接口是int时,调用程序rpgle的原型定义必须是10i 0

                                                                                                                

阅读(1582) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~