这是最早接触的实现延时的方法。。。。现在看来这个延时不是很稳定,并且不能进行ms级别的延时
FMT D DName+++++++++++ETDsFrom+++To/L+++IDc.Keywords+++++++++++++++++++++++++++++
*************** Beginning of data *****************************************
0001.00 D T1 S T
0002.00 D T2 S T
0003.00 *
0004.00 C TIME T1
0005.00 C T1 DSPLY
0006.00 C T1 ADDDUR 60:*S T1
0007.00 C T1 DSPLY
0008.00 C SETON LR
0009.00 C RETURN
****************** End of data ********************************************
运行结果如下:
延时功能的实现
FMT D DName+++++++++++ETDsFrom+++To/L+++IDc.Keywords+++++++++++++++++++++++++++++
*************** Beginning of data *****************************************
0001.00 D T1 S T
0002.00 D T2 S T
0003.00 *
0004.00 C TIME T1
0005.00 C T1 ADDDUR 60:*S T2
0006.00 C TIME T1
0007.00 C DOW 1 = 1
0008.00 C IF T1 = T2
0009.00 C '1MIN LATER' DSPLY
0010.00 C LEAVE
0011.00 C ELSE
0012.00 C TIME T1
0013.00 C ENDIF
0014.00 C ENDDO
0014.01 *
0018.00 C SETON LR
0019.00 C RETURN
****************** End of data ********************************************
哈哈,1min后会DSPLY哈~~~
这个延时程序运行时我特意新开了session用WRKSYSSTS查看当前负载,发现CPU没有什么异常变化.
参考:
(那个60不知道是什么意思)
----------------------------------------------------------------------------------------
2012-10-24 19:54:17 昨晚看code发现有几种别的延时方法。。。。
方法一
RPG Source
FMT H HKeywords++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
*************** Beginning of data *****************************************
0001.00 HDFTACTGRP(*NO)
0002.00 *
0003.00 DTMP S Z
0004.00 DSLEEP PR 10I 0 EXTPROC('SLEEP')
0005.00 D SECONDS 10U 0 VALUE
0006.00 *
0007.00 C EVAL TMP=%TIMESTAMP
0008.00 C TMP DSPLY
0009.00 C CALLP SLEEP(20)
0010.00 C EVAL TMP=%TIMESTAMP
0011.00 C TMP DSPLY
0012.00 C SETON LR
0013.00 C RETURN
****************** End of data ********************************************
杯具的发现竟然权限不足,编译都没过去。。。。
不够,这个code我也不怎么理解。。。
方法二
嘿嘿,这权限可以。。。。
先上code
FMT * *. 1 ...+... 2 ...+... 3 ...+... 4 ...+... 5 ...+... 6 ...+... 7 ...+... 8
*************** Beginning of data *****************************************
0001.00 *
0002.00 DTMP1 S Z
0003.00 DTMP2 S Z
0004.00 Dqcmdexc PR EXTPGM('QCMDEXC')
0005.00 D COMMAND 3000A CONST OPTIONS(*VARSIZE)
0006.00 D LENGTH 15P 5 CONST
0007.00 *
0008.00 C EVAL TMP1=%TIMESTAMP
0009.00 C CALLP QCMDEXC('DLYJOB DLY(5)': 13)
0010.00 C EVAL TMP2=%TIMESTAMP
0011.00 C TMP1 DSPLY
0012.00 C TMP2 DSPLY
0013.00 C SETON LR
0014.00 C RETURN
****************** End of data ********************************************
这个也是实现秒级别的延时,具体什么原理我现在水平有限,也解释不清,等以后懂了再更新过来吧,反正能延时。。。
啊,忘了上结果了。。。结果如下
sleep和usleep都是延时功能,sleep是秒级延时,usleep是ms级延时,但我没权限实验。。。。。使用方式也就是方法一里写的那样。
阅读(1453) | 评论(0) | 转发(0) |