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

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

文章分类

全部博文(90)

文章存档

2015年(5)

2013年(47)

2012年(38)

我的朋友

分类: 系统运维

2012-10-17 21:31:36

这是最早接触的实现延时的方法。。。。现在看来这个延时不是很稳定,并且不能进行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) |
给主人留下些什么吧!~~