免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 7168 | 回复: 11
打印 上一主题 下一主题

RPG程序中AS400系统日期问题请教。 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-08-25 11:23 |只看该作者 |倒序浏览
最近公司里的AS/400开始24小不间断使用了,有用户8/24日登录的系统,一直没有退出,
到了8/25,显示文件中的*DATE显示的竟然仍是8/24,退出程序再进入仍然如此。非要完全AS/400,重新登录后
日期才会变成8/25,有人遇到过这样的怪事吗?

[ 本帖最后由 V01619 于 2008-8-25 11:24 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2008-08-25 12:48 |只看该作者
用CHGJOB查看日期异常的用户,发现DATE值是080824。
也就是说RPG程序所读的系统日期是JOBD里的日期,而不是真正的系统日期。
如何做才能让RPG程序读到真正的系统日期呢?

论坛徽章:
0
3 [报告]
发表于 2008-08-25 12:48 |只看该作者
你把系统值QINACTITV:*NONE改为指定时间,到了限制时间会用户自动signoff。

论坛徽章:
0
4 [报告]
发表于 2008-08-25 12:52 |只看该作者
原帖由 V01619 于 2008-8-25 12:48 发表
用CHGJOB查看日期异常的用户,发现DATE值是080824。
也就是说RPG程序所读的系统日期是JOBD里的日期,而不是真正的系统日期。
如何做才能让RPG程序读到真正的系统日期呢?

或者试试程序直接RTVSYSVAL QDATA

论坛徽章:
0
5 [报告]
发表于 2008-08-26 09:28 |只看该作者
那个用户调用的程序是不是SBMJOB出去的?

论坛徽章:
0
6 [报告]
发表于 2008-08-26 09:32 |只看该作者
感谢老大提供思路,编写了一个CL程序,解决了这个问题。
取得JOB DATE和SYS DATE进行比较,
若两日期不一致,则用SYS DATE替换JOB DATE。

PGM                                                      
DCL        VAR(&JOB1)  TYPE(*CHAR) LEN(10)               
DCL        VAR(&USER1)  TYPE(*CHAR) LEN(10)               
DCL        VAR(&NBR1)  TYPE(*CHAR) LEN(6)                 
DCL        VAR(&DATE1)  TYPE(*CHAR) LEN(6)               
DCL        VAR(&DATE2)  TYPE(*CHAR) LEN(6)               
RTVJOBA    JOB(&JOB1) USER(&USER1) NBR(&NBR1) DATE(&DATE1)
RTVSYSVAL  SYSVAL(QDATE) RTNVAR(&DATE2)                  
IF         COND(&DATE1 *NE &DATE2) THEN(DO)               
CHGJOB     JOB(&NBR1/&USER1/&JOB1) DATE(&DATE2)
ENDDO   
ENDPGM

论坛徽章:
0
7 [报告]
发表于 2008-08-27 10:05 |只看该作者
学习了,谢谢。

论坛徽章:
0
8 [报告]
发表于 2008-08-27 14:57 |只看该作者
原帖由 V01619 于 2008-8-26 09:32 发表
感谢老大提供思路,编写了一个CL程序,解决了这个问题。
取得JOB DATE和SYS DATE进行比较,
若两日期不一致,则用SYS DATE替换JOB DATE。

PGM                                                      
D ...


这不是脱裤子放屁吗?这和直接用系统日期有什么不一样?

论坛徽章:
0
9 [报告]
发表于 2008-08-27 16:39 |只看该作者
呵呵,只能说取错值了

论坛徽章:
0
10 [报告]
发表于 2008-08-29 16:47 |只看该作者
RPG程序里一般都是用Z-ADD *DATE 来获取当前日期的,一般情况下也没有问题。
可自从AS/400用到了生产线后,一个用户登录到了系统后是从来不退系统的,有可能超过24小时,所以这个用户的JOB DATE会一直保持着登录时的日期。这时如果用Z-ADD *DATE取日期的话,会发现取到的是登录时的日期,而不是真正的系统日期。所以需要用CL程序来处理一下。
楼上两位不相信的话,可用用WRKACTJOB找到自己当前的JOB,修改一下JOB DATE,然后再CALL个RPG程序试试看,显示的日期是当前系统日期还是你改过的JOB DATE。

[ 本帖最后由 V01619 于 2008-8-29 16:53 编辑 ]
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP