dspf文件:
A*%%EC
A DSPSIZ(24 80 *DS3)
A CF12(12)
A CF05(05)
A R RCD
A N50 INVITE
A 4 13DATE
A EDTCDE(Y)
A 4 31TIME
A 10 26' 相隔 '
A REFSH 3Y 0O 10 33EDTCDE(3)
A 10 38' 秒自动刷新 '
A 11 26' 本次刷新时间 '
A ZDATE 26 O 11 41
A 51 23 13'F5= 自动刷新 '
A N51 23 13'F5= 禁止刷新 '
A 23 33'F12= 退出 '
A R SXW
A WINDOW(8 8 6 20 *NOMSGLIN *NORSTCSR)
A SXSJ 3Y 0B 3 14EDTCDE(3)
A COMP(GT 0)
A 5 2'ENTRY= 确定 '
A 3 1' 刷新时间 :'
A 6 1' 时间需要大于 0'
A DSPATR(HI)
A 30 DSPATR(ND)
rpgle程序:
/* 解释:
/* 1. 自动刷新屏幕需要将dspf文件定义为 usropn, 因为每次规定刷新
/* 时间时需要使用重订向来指定。
/* 2. dspf文件需要定义一个infds,因为当dspf文件被指定
/* 刷新时间后,一旦到达刷新时间系统会将文件的状态码置显示时间超时,
/* 这时需要将显示文件重新输出一次 , 这样就达到了刷新的效果 .
/*
/*
FTSDSP CF E WORKSTN MAXDEV(*FILE)
F INFDS(INFDS)
F USROPN
D
DOVRDSPF C 'OVRDSPF FILE(TSDSP) '
DINFDS DS
D STATUS 11 15S 0
D ERRID 46 52A
D SFLLOC 378 379B 0
DTT S Z INZ
C*初始化时没有刷新时间
C CLOSE TSDSP
C EVAL QCMD=OVRDSPF+' WAITRCD(5)'
C CALL 'QCMDEXC' QCMDEXC
C OPEN TSDSP
C EVAL *IN50='0'
C EVAL REFSH =5
C*显示
C AGN TAG
C*exfmt
C* WRITE FOOT
C TIME TT
C MOVE TT ZDATE
C*将记录写入界面
C WRITE RCD
C*读取界面的记录:需要刷新读取文件,不需要刷新读取记录
C N50 READ TSDSP 9699
C 50 READ RCD
C*post文件,当系统自动将文件从队列中取出时,表示需要刷新。
C POST TSDSP
C*error为cpf4737表示"Wait time exceeded for READ from WORKSTN file.",
C*所以需要从新写入记录或文件
C IF (STATUS = 1331 or STATUS=1299)
C AND ERRID = 'CPF4737'
C GOTO AGN
C ENDIF
C*F12=Exit
C IF *IN12='1'
C GOTO EXIT
C ENDIF
C*指定刷新时间
C IF *IN05
C EVAL *IN50=NOT *IN50
C IF NOT *IN50
C*设置需要刷新的时间长度
C EXFMT SXW
C CLOSE TSDSP
C EVAL REFSH =SXSJ
C EVAL QCMD=OVRDSPF+' WAITRCD('+%CHAR(SXSJ)+')'
C CALL 'QCMDEXC' QCMDEXC
C EVAL *IN51='0'
C EVAL SXSJ =0
C OPEN TSDSP
C GOTO AGN
C*不刷新
C ELSE
C CLOSE TSDSP
C EVAL REFSH =999
C EVAL QCMD=OVRDSPF+' WAITRCD(*NOMAX)'
C CALL 'QCMDEXC' QCMDEXC
C EVAL *IN51='1'
C OPEN TSDSP
C GOTO AGN
C ENDIF
C ENDIF
C
C GOTO AGN
C EXIT TAG
C EVAL *INLR='1'
C QCMDEXC PLIST
C PARM QCMD 200
C PARM 200 QLEN 15 5
本程序编译后可以直接运行,解释或程序中如有什么错误的地方请大家指正,万分感激!
阅读(1378) | 评论(0) | 转发(0) |