悲剧了,家里网络不给力,在公司写的回家后上传不上丢了。。。。。。。。
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) |