Your Ad Here
首页 | 编程语言 | 网站建设 | 游戏天堂 | 冲浪宝典 | 网络安全 | 操作系统 | 软件时空 | 硬件指南 | 病毒相关 | IT 认证
软讯网络 > 操作系统 > 其他操作系统 > AS/400开发经验点滴(四)--如何在程序中获取系统ASP使用率等系统状态信息
【标  题】:AS/400开发经验点滴(四)--如何在程序中获取系统ASP使用率等系统状态信息
【关键字】:AS/400,ASP
【来  源】:http://www.cublog.cn/u/2405/showart.php?id=106079

AS/400开发经验点滴(四)--如何在程序中获取系统ASP使用率等系统状态信息

Your Ad Here
AS/400开发经验点滴(四)


七.如何在程序中获取系统ASP使用率等系统状态信息

AS/400系统管理员都对系统ASP空间增长情况很关心,当系统ASP空间涨满了以后将会引起系统DOWN机等安全问题。系统ASP空间与硬盘空间并不完全等同,如果系统只配置了一个ASP分区,那么系统ASP空间与硬盘空间是等同的,如果系统配置了多个ASP分区,则系统ASP只是ASP 1的分区。用WRKSYSSTS命令查看到的% system ASP used就是表示系统ASP空间的使用率。

与系统ASP空间使用率有关的系统值有两个:QSTGLOWLMT和QSTGLOWACN。QSTGLOWLMT系统值设定了最小硬盘空间警告线百分比,比如设定为5,即表示系统ASP使用率达到95%,即引起安全动作,安全动作由系统值QSTGLOWACN设定。

能不能在程序中自动获取系统ASP使用率,这样当硬盘空间达到危险值时,由程序提前报警呢?或者在程序中自动执行一些安全动作,比如自动清理一些过时的文件,或停止某些程序运行,以降低系统ASP使用率?

OS/400系统提供了一个叫QWCRSSTS的API函数,该函数功能就可以提取用WRKSYSSTS命令看到的系统状态信息,还可以提取更多的用WRKSTSSTS命令看不到的一些其他系统信息。可以在RPG、C、CL等程序里调用该API以获取系统信息。该函数的详细使用说明可以参看《System API Reference》这本书。

下面我用一个实际获取系统ASP使用率的CL程序做例子,来看看如何使用QWCRSSTS。

QWCRSSTS共有五个入口参数,第一个参数是接受返回系统状态信息的输出参数,存放的是返回系统状态信息块。该系统状态信息块是按照一定结构来存放各种系统状态信息的。第二个参数是输入参数,指定第一个接受系统状态信息块变量的长度,类型为Binary。第三个参数是指定第一个参数系统状态信息块中的系统信息存放结构名,共有三种不同的结构可选,分别是:SSTS0100、SSTS0200、SSTS0300。第四个参数是表示是否重新设置状态统计,通常我们选*YES。第五个参数是错误码。

在本示例CL程序中,指定使用SSTS0200系统状态信息结构。该结构中53-57位存放的就是% system ASP used。该值除上10000,就是正常百分比。在程序中先是提取QSTGLOWLMT系统值,指定100-QSTGLOWLMT-2为程序警告线,比如QSTGLOWLMT如果设为5,那么当系统ASP到93%的时候,程序会向用户发出一个消息。同时把ASP状态返回值设为1,以供其他程序调用,当调用程序判断ASP状态返回值为1的时候,就知道系统ASP空间利用率到了警告线,需要执行一些安全动作了。

/*===================================================================*/
/*                                                                       */
/*-----------------------------------------------------------------------------------------------------------------*/
/*     PROGRAM NAME    : MONASP                                         */
/*     CREATED BY      : BLOG LIOU                                        */
/*     CREATED DATE    : 2003.11.11                                          */
/*     DESCRIPTION     : Monitor ASP Used                                    */
/*                       MonASPPer: (100-STGLOWLMT)-2                      */
/*===================================================================*/
             PGM        PARM(&ASPFLAG)                                 
             DCL        VAR(&ASPFLAG) TYPE(*CHAR) LEN(1)               
             DCL        VAR(&FORMAT) TYPE(*CHAR) LEN(8)  +              
                          VALUE('SSTS0200')                           
             DCL        VAR(&LENFLD) TYPE(*CHAR) LEN(4) +              
                          VALUE(X'00000044')                           
             DCL        VAR(&SYSNAM) TYPE(*CHAR) LEN(8)                 
             DCL        VAR(&SYSUSEC) TYPE(*CHAR) LEN(4)               
             DCL        VAR(&SYSUSE) TYPE(*DEC) LEN(9 2)               
             DCL        VAR(&SYSINFO) TYPE(*CHAR) LEN(68)               
             DCL        VAR(&ERRCODE) TYPE(*CHAR) LEN(8) +              
                          VALUE(X'0000000000000000')                    
             DCL        VAR(&RESETSY) TYPE(*CHAR) LEN(10) VALUE(*YES)   
             DCL        VAR(&QMNPER) TYPE(*DEC) LEN(9 2) VALUE(1000000)
             DCL        VAR(&QALARM) TYPE(*DEC) LEN(9 2) VALUE(20000)   
             DCL        VAR(&STGLOWLMT) TYPE(*DEC) LEN(9 2)            
             DCL        VAR(&SNDMSG) TYPE(*CHAR) LEN(10)               
                                                                        
             CHGVAR     VAR(&ASPFLAG) VALUE('0')                        
             RTVSYSVAL  SYSVAL(QSTGLOWLMT) RTNVAR(&STGLOWLMT)        
             CHGVAR     VAR(&STGLOWLMT) VALUE(&STGLOWLMT * 10000)   
             CHGVAR     VAR(&QMNPER) VALUE(&QMNPER - &STGLOWLMT)     
             CHGVAR     VAR(&QMNPER) VALUE(&QMNPER - &QALARM)        
                                                                     
             CALL      PGM(QWCRSSTS) PARM(&SYSINFO &LENFLD &FORMAT +
                          &RESETSY &ERRCODE)                        
             MONMSG     MSGID(CPF0000) EXEC(GOTO CMDLBL(ERREND))   
             CHGVAR     VAR(&SYSUSEC) VALUE(%SST(&SYSINFO 53 4))     
             CHGVAR     VAR(&SYSUSE) VALUE(%BINARY(&SYSUSEC))        
             CHGVAR     VAR(&SYSNAM) VALUE(%SST(&SYSINFO 17 8))      
             IF         COND(&SYSUSE >; &QMNPER) THEN(DO)            
             CHGVAR     VAR(&SNDMSG) VALUE(&SYSUSE)                  
             SNDPGMMSG  MSG(&SYSNAM *BCAT ' - (ASP USED +            
                          PERCENT)*10000 = ' *BCAT &SNDMSG) +           
                          TOMSGQ(MYUSER)                                 
             SNDPGMMSG  MSG('*****SYSTEM OVER MonASP !!! ') +
TOMSGQ(MYUSER) MSGTYPE(*INFO)
             CHGVAR     VAR(&ASPFLAG) VALUE('1')                        
             ENDDO                                                      
             GOTO       CMDLBL(END)                                    
                                                                        
ERREND:    SNDPGMMSG  MSG(' ERROR ON QWCRSSTS CALL') +     
                          TOMSGQ(MYUSER) MSGTYPE(*INFO)                  
END:        ENDPGM                                                     
                                                         
该程序也可以与某些报警程序连起来使用,比如当系统ASP空间达到警告线后,程序调用某些拨号程序,就可以给系统管理员手机发短信息等。

如果再设计一个显示文件,把QWCRSSTS获取到的系统状态信息,比如系统ASP使用率、CPU使用率、系统出现Message进程数,都显示出来,我们就实现了一个系统状态信息的监视工具。 


AS/400开发经验点滴(五)--通用日志管理工具:【上一篇】
AS/400开发经验点滴(三)--分布式关系数据库编程:【下一篇】
【相关文章】
  • AS/400开发经验点滴(五)--通用日志管理工具
  • AS/400开发经验点滴(七)--在RPG程序中巧用相对记录号RRN
  • AS/400开发经验点滴(八)--使用共享文件打开提高软件性能
  • AS/400开发经验点滴(九)--SPECIAL文件的使用
  • asp.net面试题收集[2006.4.28更新]
  • re: 在程序中支持多语言环境,支持asp.net和winform。
  • re: 在ASP.NET Atlas中结合Membership进行身份验证
  • 用ASP实现邮箱访问
  • 创建一个ASP通用分页类
  • 创建一个ASP通用分页类(二)
  • 【随机文章】
  • 谈谈副作用的语句
  • 网络基础知识介绍
  • Win2000下的SYN Flood源代码
  • 待完成文章列表
  • (JS)Ch2 - ECMAScript Basic
  • PhotoImpact增加优化GIF图像的预设值
  • 为3D模型绑定AABB
  • Oracle 10g 在Solaris 8&9 环境中安装文档
  • CAM350 V8.0 快捷键
  • 可以预览一下360度全景图的效果
  • 【相关评论】
    没有相关评论
    【发表评论】
    姓名:
    邮件:
    随机码*
    评论*
          
    |  首 页  |  版权声明  |  联系我们   |  网站地图  |
    CopyRight © 2004-2007 bbb软讯网络 All Rigths Reserved.