免费注册 查看新帖 |

Chinaunix

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

HELP ME!JAVA 调用RPG向PF中插数据问题! [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-04-28 13:45 |只看该作者 |倒序浏览
1,直接用CALL PGM(DHCLIB/IN01) PARM(X'F0000000005F' X'F1111111115F' 'DDDDD' 'FFFFF')数据能够插入到物理文件;
2,使用java程序调用IN01,JAVA程序执行到 if(pgm.run())就没有反应了。
请多指教,thanks!
PF:
Columns . . . :    1  71            Edit                        DHCLIB/QDDSSRC
SEU==>                                                                   PF001
FMT PF .....A..........T.Name++++++RLen++TDpB......Functions++++++++++++++++++
        *************** Beginning of data *************************************
0011.00                                             UNIQUE
0013.00                 R PF001R                    TEXT('PF001')
0014.00                   PFP1          10P 0       TEXT('PF001 P1')
0018.00                   PFP2          10P 0       TEXT('PF001 P2')
0026.00                   PFSTR1        50A         TEXT('PF001 STR1')
0031.00                   PFSTR2        50A         TEXT('PF001 STR2')
0035.00                 K PFP1
        ****************** End of data ***************************************

RPG:
Columns . . . :    6  76            Edit                      DHCLIB/QRPGLESRC
SEU==>                                                                INSERT01
FMT FX FFilename++IPEASF.....L.....A.Device+.Keywords+++++++++++++++++++++++++
        *************** Beginning of data *************************************
0005.00 FPF001     O    E             DISK
0006.01 DP1               S             10P 0
0006.02 DP2               S             10P 0
0006.03 DA1               S             50A
0006.04 DA2               S             50A
0007.00 C     *entry        PLIST
0008.00 C                   PARM                    P1
0009.00 C                   PARM                    P2
0011.00 C                   PARM                    A1
0012.00 C                   PARM                    A2
0018.00 C                   MOVE      P1            PFP1
0019.00 C                   MOVE      P2            PFP2
0020.00 C                   MOVE      A1            PFSTR1
0021.00 C                   MOVE      A2            PFSTR2
0022.00 C                   WRITE     PF001R
0023.00 C                   SETON                                            LR

JAVA:
package rpgtest;

import java.math.*;
import com.ibm.as400.access.AS400;
import com.ibm.as400.access.ProgramCall;
import com.ibm.as400.access.AS400Text;
import com.ibm.as400.access.AS400PackedDecimal;
import com.ibm.as400.access.ProgramParameter;

/**
* <p>Title: </p>
*
* <p>Description: </p>
*
* <p>Copyright: Copyright (c) 2006</p>
*
* <p>Company: </p>
*
* @author not attributable
* @version 1.0
*/
public class In01 {
    private AS400 as400;
    private ProgramCall pgm;
    private String progname = "/QSYS.LIB/DHCLIB.LIB/IN01.PGM";

     public In01() {

     }

     /**
      * Application entry point.
      *
      * @param args String[]
      */

     public void connectDPC(String system,String user,String password){
     as400=new AS400(system,user,password);

    try
    {
      System.out.println("开始连接远程服务!");
      as400.connectService(AS400.COMMAND);
      System.out.println("远程服务连接成功!");
    }
    catch(Exception e)
    {
      System.out.println("连接AS/400服务失败!");
      System.exit(0);
    }
     //建立远程程序对象
    pgm=new ProgramCall(as400);

     //设置参数,并转换为AS/400格式


       ProgramParameter[] parmlist = new ProgramParameter[4];
       AS400PackedDecimal p1 = new AS400PackedDecimal(10,0);
       parmlist[0] = new ProgramParameter(p1.toBytes(new BigDecimal(1100000019)),10);
       AS400PackedDecimal p2 = new AS400PackedDecimal(10,0);
       parmlist[1] = new ProgramParameter(p2.toBytes(new BigDecimal(1100000019)),10);
       AS400Text a1 = new AS400Text(50);
       parmlist[2] = new ProgramParameter(a1.toBytes("TEST005"));
       AS400Text a2 = new AS400Text(50);
       parmlist[3] = new ProgramParameter(a2.toBytes("test005"));
    try
    { //将程序路径、参数表与ProgramCall对象捆绑

      pgm.setProgram(progname,parmlist);

    }
    catch(Exception e)
    {
        System.out.println("设置参数失败!");
    }

    try
    {
       System.out.println("开始远程调用!");
        if(pgm.run())
        {
             System.out.println("远程调用成功!");

        }
      else
        {
            System.out.println("远程调用失败!");
        }
    }
    catch(Exception e)
    {
         System.out.println("远程调用异常!");
         e.printStackTrace();
    }
   }

     public static void main(String[] args) {
         In01 rt=new In01();
         rt.connectDPC("192.195.29.110","wuser","demo2pwd");
         rt.as400.disconnectAllServices();


     }

}

论坛徽章:
0
2 [报告]
发表于 2006-04-28 15:31 |只看该作者
查看系统有没有需要回复的提示信息?

还有,可以WRKOUTQ QEZDEBUG去查查DUMP的提示信息。

论坛徽章:
0
3 [报告]
发表于 2006-04-28 15:47 |只看该作者
没有!我看执行上面的命令后列出的文件都是前几天的,没有今天的,您能帮我看看rpg程序有问题吗?我是新手,麻烦了。thanks!

[ 本帖最后由 chenzhy 于 2006-4-28 15:58 编辑 ]

论坛徽章:
0
4 [报告]
发表于 2006-04-28 16:03 |只看该作者
PF001在RPG中为什么定义为O型呢?是打印文件才定义这个类型。

调用PF应该定义为I型(输入)或U型(输入/输出)。

论坛徽章:
0
5 [报告]
发表于 2006-04-28 16:17 |只看该作者
我把rpg程序最上面的一行改为
0001.00 FPF001     IF A E             DISK
并且用call命令调用,数据能够插入pf中,用java调用还是没有反应~~~

[ 本帖最后由 chenzhy 于 2006-4-28 16:19 编辑 ]

论坛徽章:
0
6 [报告]
发表于 2006-05-09 15:29 |只看该作者
这个问题好多天了,查看以前的帖子也有一样的问题,但是都么有解决的方法,不知道是不是真的不能这么做还是怎么的了,要是有其他的替代方法,麻烦哪位老兄给个建议,谢谢了。

论坛徽章:
0
7 [报告]
发表于 2006-05-09 15:41 |只看该作者
哥们儿,好象你的JAVA程序有点问题?

[ 本帖最后由 span1024 于 2006-5-9 15:49 编辑 ]

论坛徽章:
0
8 [报告]
发表于 2006-05-09 15:50 |只看该作者
具体说说呗。


我的其他的rpg程序不操作数据库,就能返回数据(简单的传入一个参数,返回3个参数就行),涉及到数据库操作就出来这样的问题。

[ 本帖最后由 chenzhy 于 2006-5-9 15:54 编辑 ]

论坛徽章:
0
9 [报告]
发表于 2006-05-09 16:53 |只看该作者
原帖由 chenzhy 于 2006-4-28 16:17 发表
我把rpg程序最上面的一行改为
0001.00 FPF001     IF A E             DISK
并且用call命令调用,数据能够插入pf中,用java调用还是没有反应~~~

没用过这种方式。想问一下:这种java call rpg 程序 ,在400上能不能debug rpg 程序?

如果不能debug,将传递的参数都改为字符型的先试一下可以吗?
另外f表改为0001.00 FPF001     UF A E             DISK  //难道我记错了? 我记得声明为i型是只读的?!

[ 本帖最后由 sunokla 于 2006-5-9 17:01 编辑 ]

论坛徽章:
0
10 [报告]
发表于 2006-05-09 17:28 |只看该作者
sunokla    兄
能提供个类似的例子吗?多谢了。我现在真是一头雾水。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP