免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3253 | 回复: 6
打印 上一主题 下一主题

RPG中调用C函数,计算LOG10 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-11-03 15:34 |只看该作者 |倒序浏览
提供一个简单的RPG中调用C函数,计算LOG10的例子。
自己想的做法,不知道好不好,望大侠指正!

DSPF:(TST10RD)
    A                                      DSPSIZ(24 80 *DS3)        
     A                                      PRINT(*LIBL/QPRINT)      
     A                                      CA03                     
     A          R FMT10                                               
     A                                  2 18' 入力値: '              
     A            D1             8Y 2B  2 30TEXT(' 入力値 ')         
     A                                      EDTCDE(1)                 
     A                                  4 18' 戻り値: '              
     A            D2             8Y 5O  4 30TEXT(' 戻り値 ')         
     A                                      EDTCDE(1)                 
RPGLE:(TST10RLE)
H DEBUG                                                               
D****************************************************************     
D*          I N F O R M A T I O N                                    
D****************************************************************     
FTST10RD   CF   E             WORKSTN                                 
D*                                                                    
D SP1             S              8P 2 INZ(0) EXPORT                  
D SP2             S              8P 5 INZ(0) EXPORT                  
D*                                                                    
C****************************************************************     
C**        M A I N S Y O U R I                                       
C****************************************************************     
C                   DO        *HIVAL                                 
C                   EXFMT     FMT10                                   
C   KC              SETON                                        LR   
C   KC              RETURN                                            
C                   Z-ADD     D1            SP1                       
C                   CALLB     'PGMC'                                 
C                   Z-ADD     SP2           D2                        
C                   ENDDO                 
                           
C:(TST10C)
#include <stdio.h>                                
#include <math.h>
#include <decimal.h>
                                                  
extern decimal(8,2) SP1;
extern decimal(8,5) SP2;                        
void PGMC()                  
{
   SP2 = log10(SP1);
}                                                
     
作法:
1、CRTDSPF FILE(XXXLIB/TST10RD) SRCFILE(XXXLIB/QDSPSRC)  
2、CRTRPGMOD MODULE(XXXLIB/TST10RLE) SRCFILE(XXXLIB/QRPGSRC)
3、CRTCMOD MODULE(XXXLIB/TST10C) SRCFILE(XXXLIB/QRPGSRC)
4、CRTPGM PGM(XXXLIB/TST10RLE) MODULE(XXXLIB/TST10RLE XXXLIB/TST10C)
5、CALL TST10RLE

评分

参与人数 1可用积分 +2 收起 理由
fairyboy + 2 非常不错

查看全部评分

论坛徽章:
0
2 [报告]
发表于 2005-11-04 16:26 |只看该作者

天才啊!

我刚刚用过了,好用的很.

论坛徽章:
0
3 [报告]
发表于 2005-11-04 16:29 |只看该作者

高手!太感謝了!

厲害,果然厲害,行家之中的行家。
試了,挺好用的。

论坛徽章:
0
4 [报告]
发表于 2005-11-04 20:25 |只看该作者
既然log10()是一个现有的c函数,可以直接在rpg程序中定义好prototype之后直接调用。
  1. H BNDDIR('QC2LE') DFTACTGRP(*NO)
  2. D LOG10             PR                 8F         EXTPROC('log10')
  3. D input                                    8F          Value
  4. *
  5. C                                 EVAL             SP2=LOG10(SP1)
复制代码

这样省去了另外编写一个C程序的麻烦。

论坛徽章:
0
5 [报告]
发表于 2005-11-07 08:55 |只看该作者
好办法

论坛徽章:
0
6 [报告]
发表于 2005-11-14 14:31 |只看该作者
yoyoage   
精灵王:
你好,你说的写法是在RPGIV里的,请问,您知道在RPGIII里是如何写这几行代码吗?
请不吝指教!非常感谢!

论坛徽章:
0
7 [报告]
发表于 2005-11-14 21:02 |只看该作者
procedue 是ILE里面才有的概念,rpgiii里面只能用program call了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP