Chinaunix首页 | 论坛 | 博客
  • 博客访问: 354614
  • 博文数量: 90
  • 博客积分: 847
  • 博客等级: 准尉
  • 技术积分: 1373
  • 用 户 组: 普通用户
  • 注册时间: 2012-08-02 10:54
个人简介

跌打滚爬中的小菜鸟...

文章分类

全部博文(90)

文章存档

2015年(5)

2013年(47)

2012年(38)

我的朋友

分类: 系统运维

2012-10-30 10:15:34

悲剧了,家里网络不给力,在公司写的回家后上传不上丢了。。。。。。。。

QSNDDTAQ, QRCVDTAQ两个API自己查手册。。。要吐了

1. 先上SEND数据的RPG程序
 FMT *   *. 1 ...+... 2 ...+... 3 ...+... 4 ...+... 5 ...+... 6 ...+... 7 ...+... 8
        *************** Beginning of data *****************************************
0001.00 |*=====================================================================|  
0002.00 |*                                                                     |  
0003.00 |*     USE: CALL RPG19 PARM('DTANAME' 'LIBNAME' 'TEXT')                |  
0004.00 |*     DESCRIPTION:                                                    |  
0005.00 |*       SEND SOME TEXT(LEN<=20) TO A SPECIFIED DATA QUEUE DIRCETLY    |  
0006.00 |*                                                                     |  
0007.00 |*     AUTHOR:                                                         |  
0008.00 |*     COPYRIGHT @            2012-2100                                |  
0009.00 |*=====================================================================|  
0010.00 DDTAQNM           S             10A                                        
0011.00 DDTAQLIB          S             10A                                        
0012.00 DDTALEN           S              5P 0 INZ(20)                              
0013.00 DSNDDTA           S             20A                                        
0014.00 D NUM             S              5S 0 INZ(0)                              
0015.00  *                                                                        
0016.00 C     *ENTRY        PLIST                                                  
0017.00 C                   PARM                    DTAQNM                        
0018.00 C                   PARM                    DTAQLIB                        
0019.00 C                   PARM                    SNDDTA                        
0020.00  *                                                                        
0021.00 C                   CALL      'QSNDDTAQ'                                  
0022.00 C                   PARM                    DTAQNM                        
0023.00 C                   PARM                    DTAQLIB                        
0024.00 C                   PARM                    DTALEN                        
0025.00 C                   PARM                    SNDDTA                        
0026.00 C     'DONE'        DSPLY                                                  
0027.00 C     EXITPGM       TAG                                                    
0028.00 C                   SETON                                        LR        
0029.00 C                   RETURN                                                
0030.00 C*                                                                        
0031.00 C     *INZSR        BEGSR                                                  
0032.00 C                   EVAL      NUM=%PARMS                                  
0033.00 C                   IF        NUM <> 3                                    
0034.00 C     'PARM ERR'    DSPLY                                                  
0035.00 C                   GOTO      EXITPGM                                      
0036.00 C                   ENDIF                                                  
0037.00 C                   ENDSR                                                  
        ****************** End of data ********************************************
使用方法:
CALL RPG19 PARM('DTAQ01' 'QIANTEST' 'HELLO NO.8')

2. 再上RECEIVE数据的RPG程序
 FMT *   *. 1 ...+... 2 ...+... 3 ...+... 4 ...+... 5 ...+... 6 ...+... 7 ...+... 8
        *************** Beginning of data *****************************************
0001.00  *                                                                        
0002.00 FRCVDTAQ   O    E             DISK                                        
0003.00  *                                                                        
0004.00 DDTAQNM           S             10A                                        
0005.00 DDTAQLIB          S             10A                                        
0006.00 DDTALEN           S              5P 0 INZ(20)                              
0007.00 DDTARCV           S             20A                                        
0008.00 DDTAWAIT          S              5P 0 INZ(0)                              
0009.00 DNUM              S              5S 0 INZ(0)                              
0010.00  *                                                                        
0011.00 C     *ENTRY        PLIST                                                  
0012.00 C                   PARM                    DTAQNM                        
0013.00 C                   PARM                    DTAQLIB                        
0014.00  *                                                                        
0015.00 C                   EXSR      @READ                                        
0016.00 C                   DOW       DTARCV <> *BLANKS                            
0017.00 C                   EVAL      ST = %TIMESTAMP                              
0018.00 C                   EVAL      DTA = DTARCV                                
0019.00 C                   WRITE     RCVDTA                                      
0020.00 C                   EVAL      DTARCV = *BLANKS   //没这句话会是个死循环。。。
0021.00 C                   EVAL      NUM=NUM+1                                    
0022.00 C                   EXSR      @READ                                        
0023.00 C                   ENDDO                                                  
0024.00 C     NUM           DSPLY                                                  
0025.00 C     EXITPGM       TAG                                                    
0026.00 C                   SETON                                        LR        
0027.00 C                   RETURN                                                
0028.00  *                                                                        
0029.00 C     *INZSR        BEGSR                                                  
0030.00 C*----*INZSR-------------                                                  
0031.00 C                   IF        %PARMS <> 2                                  
0032.00 C     'PARM ERR'    DSPLY                                                  
0033.00 C                   GOTO      EXITPGM                                      
0034.00 C                   ENDIF                                                  
0035.00 C                   ENDSR                                                  
0036.00 C*----*INZSR-------------                                                  
0037.00  *                                                                        
0038.00 C     @READ         BEGSR                                                  
0039.00 C*----@READ--------------                                                  
0040.00 C                   CALL      'QRCVDTAQ'                                  
0041.00 C                   PARM                    DTAQNM                        
0042.00 C                   PARM                    DTAQLIB                        
0043.00 C                   PARM                    DTALEN                        
0044.00 C                   PARM                    DTARCV                        
0045.00 C                   PARM                    DTAWAIT                        
0046.00 C                   ENDSR                                                  
0047.00 C*----@READ--------------                                                  
        ****************** End of data ********************************************
使用方法:
CALL RPG20 PARM('DTAQ01' 'QIANTEST')

然后是PF定义
 FMT A* .....A*. 1 ...+... 2 ...+... 3 ...+... 4 ...+... 5 ...+... 6 ...+... 7 ...+... 8
        *************** Beginning of data **********************************************
0001.00       *                                                                        
0002.00      A          R RCVDTA                                                        
0003.00      A            DTA           20A                                            
0004.00      A            ST              Z                                            
0005.00       *                                                                        
        ****************** End of data *************************************************
最后是结果。。。。
(略)


几点说明:
1. 发送程序可以做成带界面的,给出一个input Field,按一次回车发送一次数据。。。
2. 监听程序运行一次,将data queue中的数据全部取出并写入PF。。。
3. 监听程序可以做成一直在线监听,即无限循环。。。但估计会耗CPU
   也可以在job schedule里设置定时运行,这样的话。。。


to be continued...


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