免费注册 查看新帖 |

Chinaunix

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

如何将结构体中数据读出,并写入PF文件中 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-04-30 20:34 |只看该作者 |倒序浏览
具体问题为:
1、将PF文件中数据写入数据队列(RPGLE)
    FSTU_INF   IF   E           K DISK
     DMYDTAQ           S             10A

     D#STU_DATA        DS           150
     DSSTU_ID                  1      4A
     DSSTU_NME                 6     55
     DSSTU_ADD                56    105
     DSSTU_BTD               110    119D
     DSSTU_TEL               120    130A
     DSSTU_SEX               132    133A
     DSSTU_AGE               135    137A
     DSSTU_FLG               139    140A
     D
     D
     C     *LOVAL        SETLL     STU
     C                   DOW       1=1
     C                   READ      STU                                  1617
     C                   IF        *IN17='0'
     C
     C                   MOVEL     STU_ID        SSTU_ID
     C                   MOVEL     STU_NME       SSTU_NME
     C                   MOVEL     STU_ADD       SSTU_ADD
     C                   MOVEL     STU_BTD       SSTU_BTD
     C                   MOVEL     STU_TEL       SSTU_TEL
     C                   MOVEL     STU_SEX       SSTU_SEX
     C                   MOVEL     STU_AGE       SSTU_AGE
     C                   MOVEL     STU_FLG       SSTU_FLG
     C                   EVAL      MYDTAQ='STU_DTAQ'
     C                   ELSE
     C                   LEAVE
     C                   ENDIF
     C
     C                   CALL      'QSNDDTAQ'
     C                   PARM      MYDTAQ        QNAME            10
     C                   PARM      'STU60'       LIB              10
     C                   PARM      1000          FLDLEN            5 0
     C                   PARM      #STU_DATA     FIELD          1000
     C
     C                   ENDDO
     C                   SETON                                        LR
     C                   RETURN
2、再从数据队列里读取该数据,并存放到PF文件中(RPGLE程序如下:)

    FNSTU_INF  UF A E           K DISK
     DMYDTAQ           S             10A

     D#STU_DATA        DS           150
     DSSTU_ID                  1      4A
     DSSTU_NME                 6     55
     DSSTU_ADD                56    105
     DSSTU_BTD               110    119D
     DSSTU_TEL               120    130A
     DSSTU_SEX               132    133A
     DSSTU_AGE               135    137A
     DSSTU_FLG               139    140A
     D
     DNSTU_BTD         S              8P 0
     C****************** PGM *********************
     C                   EVAL      MYDTAQ='STU_DTAQ'
     C                   DOW       1=1
     C
     C                   CALL      'QRCVDTAQ'
     C                   PARM      MYDTAQ        QNAME            10
     C                   PARM      'STU60'       LIB              10
     C                   PARM      0             FLDLEN            5 0
     C                   PARM      #STU_DATA     FIELD          1000
     C                   PARM      10            WAIT              5 0
     C
     C     FLDLEN        IFEQ      0
     C                   LEAVE
     C                   ELSE
     C                   MOVEL     SSTU_ID       STU_ID
     C     SSTU_ID       DSPLY
     C                   MOVEL     SSTU_NME      STU_NME
     C     SSTU_NME      DSPLY
     C                   MOVEL     SSTU_ADD      STU_ADD
     C*                  MOVEL     SSTU_BTD      NSTU_BTD
     C*                  MOVEL     NSTU_BTD      STU_BTD
     C                   MOVEL     SSTU_TEL      STU_TEL
     C                   MOVEL     SSTU_SEX      STU_SEX
     C                   MOVEL     SSTU_AGE      STU_AGE
     C                   MOVEL     SSTU_FLG      STU_FLG
     C                   WRITE     STU
     C                   ENDIF
     C                   ENDDO
     C                   SETON                                        LR
     C                   RETURN
3、先运行第一个程序,在运行第二个。
出现的问题:
(1)
    C                   MOVEL     SSTU_ID       STU_ID
     C     SSTU_ID       DSPLY
     C                   MOVEL     SSTU_NME      STU_NME
     C     SSTU_NME      DSPLY
两个显示数据前者为0,后者为空。什么情况?
(2)
     C*                  MOVEL     SSTU_BTD      NSTU_BTD
     C*                  MOVEL     NSTU_BTD      STU_BTD
读取的时间,在格式转换方面有问题,具体不知道怎么转换?

论坛徽章:
1
操作系统版块每日发帖之星
日期:2015-11-05 06:20:00
2 [报告]
发表于 2012-04-30 21:23 |只看该作者
可能SNDQ没成功吧,看看Q有没有值 WRKDTAQ吧,如果定义的都是A,不存在转换的问题。

论坛徽章:
0
3 [报告]
发表于 2012-04-30 21:32 |只看该作者
回复 2# junlee1986

SNDQ成功啊,采用CL程序能够读取

         PGM                                                      
             DCL        VAR(&QNAME) TYPE(*CHAR) LEN(10) +              
                          VALUE('STU_DTAQ')                           
             DCL        VAR(&FLDLEN) TYPE(*DEC) LEN(5 0) VALUE(4)      
             DCL        VAR(&FIELD) TYPE(*CHAR) LEN(1000)              
             DCL        VAR(&WAIT) TYPE(*DEC) LEN(5 0) VALUE(5)        
             CHKOBJ     OBJ(STU_DTAQ) OBJTYPE(*DTAQ)                  
             MONMSG     MSGID(CPF9801) EXEC(GOTO CMDLBL(TAG_END))      
                                                                       
             CALL       PGM(QRCVDTAQ) PARM(&QNAME STU60 &FLDLEN +      
                          &FIELD &WAIT)                                
             SNDPGMMSG  MSG(&FIELD)                                    
             RETURN                                                   
TAG_END:    SNDPGMMSG  MSG('STU_DTAQ is not found')                  
             ENDPGM                                                   


执行此程序,每执行一次CL程序,显示一条记录。也就说明上面第一个程序没问题了,关键是第二个,待修改???   

论坛徽章:
1
操作系统版块每日发帖之星
日期:2015-11-05 06:20:00
4 [报告]
发表于 2012-05-01 20:12 |只看该作者
你的数据有多少啊,Q是读一个就少一个啊
把QRCVDRAQ放在循环里

论坛徽章:
0
5 [报告]
发表于 2012-05-02 09:15 |只看该作者
回复 4# junlee1986
5条
这个我知道
关键是读第一条就是空的


   

论坛徽章:
0
6 [报告]
发表于 2012-05-02 13:01 |只看该作者
目前发现错误:
C                   PARM      #STU_DATA     FIELD          1000
应改为
C                   PARM                             FIELD          1000
C                   EVAL      #STU_DATA=FIELD
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP