Chinaunix
标题:
写了个删除旧spool file 的东西,看可以用不?
[打印本页]
作者:
Eagle_wolf
时间:
2005-06-08 11:37
标题:
写了个删除旧spool file 的东西,看可以用不?
H* Programe No. :
H* Text :
H* Function : delete old splf
H*
H* Programer :
H*
H* Date Created :
H*
H**********************************************************************
HDATFMT(*ISO)
HDATEDIT(*YMD)
H**********************************************************************
D*Input parm
DParm1 S 3P 0
D* Err_Code
DRtnErrorDs Ds
D ErrBytes 1 4B 0
D ErrBytesAva 5 8B 0
D Exception 9 15
D Reserved 16 16
D Data 17 271
D*
D* Qusrobjd parm
D RecvValue S 16
D RecvSize S 9B 0
D ObjFmt S 8
D ObjType S 10
D*
D* quscrtus parm
D SpaceName S 20 Inz('DLTOLDSPLFQTEMP ')
D SpaceAtr S 10
D SpaceSize S 9 0 Inz(1)
D SpaceVal S 1 Inz(X'00')
D SpaceAut S 10
D SpaceRpl S 10
D SpaceText S 50 Inz('Creat for test')
D* qusptrus parm
D SpacePtr S *
D*
D* User space Ds
DSpaceDs Ds Based(SpacePtr)
D SpcInfStats 104 104A
D SpcOffsetHd 117 120B 0
D SpcHeadSize 121 124B 0
D SpcOffsetDa 125 128B 0
D SpcNumList 133 136B 0
D SpcEnySize 137 140B 0
D*
D
D*
D* qusplsp parm
DFmtName S 8
DUsrName S 10
DOutq S 20
DFormType S 10
DUsrData S 10
D*
D* qusrtvus parm
DSpoolDs Ds
D SplUser 1 10
D SplOutq 11 20
D SplOutqLib 21 30
D SplType 31 40
D SplJobId 51 66
D SplIntId 67 82
D*
D* qusrspla parm
DSplAtrDs Ds
D Spltmp 1 40
D DelJobName 41 50
D DelUser 51 60
D DelJobNum 61 66
D DelSplName 67 76
D DelSplNum 77 80B 0
D SplAtrtmp 81 202
D SplDate 203 209
D SplTime 210 215
D SplAtrFmt S 8
D Job S 26
D*JobId S 16
D*SplId S 16
D SplName S 10
D SplNum S 9B 0
D Recv_Len S 9B 0
D*
D* Qmhsndpm parm
D MsgFile S 20 Inz('QCPFMSG QSYS ')
D MsgData S 256
D MsgDataLen S 10I 0
D MsgType S 10
D MsgStackEnt S 10
D MsgStackCnt S 10I 0
D MsgKey S 4
D*
D* other var
DDelNum S 15P 0
DConstV C 'Num of spool file has been deleted:'
DCount S 15P 0 Inz(1)
DToDay S D
DDate S D
DSplCreDate S 8A
DSplCreDat S 8P 0
DDays S 8P 0
DPgmDs SDS
D PgmMsg 40 46
D PgmDate 276 281 0
D*--------------------------------------------------------------
C* input parm
C *Entry Plist
C Parm Parm1
C
C* initial value
C Exsr @ForeProcess
C*main process
C
C Exsr @MainProcess
C*
C Exsr @BackProcess
C*
C Exsr @Exit
C*---------------------------------------------------------------------
C* initial value
C*---------------------------------------------------------------------
C @ForeProcess Begsr
C Move PgmDate Today
C Endsr
C*---------------------------------------------------------------------
C* main process
C*---------------------------------------------------------------------
C @MainProcess Begsr
C
C*check user space
C Call 'QUSROBJD'
C Parm RecvValue
C Parm 8 RecvSize
C Parm 'OBJD0100' ObjFmt
C Parm SpaceName
C Parm '*USRSPC' ObjType
C Parm RtnErrorDs
C
C If ErrBytesAva >; 0
C If Exception = 'CPF9801'
C Call 'QUSCRTUS'
C Parm SpaceName
C Parm 'QSPLSPL' SpaceAtr
C Parm 1024 SpaceSize
C Parm ' ' SpaceVal
C Parm '*ALL' SpaceAut
C Parm SpaceText
C Parm '*YES' SpaceRpl
C Parm RtnErrorDs
C
C If ErrBytesAva >; 0
C Exsr @SubSndMsg
C Exsr @Exit
C EndIf
C
C Else
C
C Exsr @SubSndMsg
C Exsr @Exit
C EndIf
C EndIf
C
C*list the spoolfile
C Call 'QUSLSPL'
C Parm SpaceName
C Parm 'SPLF0100' FmtName
C Parm '*CURRENT' UsrName
C Parm '*ALL' OutQ
C Parm '*ALL' FormType
C Parm '*ALL' UsrData
C Parm RtnErrorDs
C
C If ErrBytesAva >; 0
C Exsr @SubSndMsg
C Exsr @Exit
C EndIf
C
C*Retrive the space's pointer
C Call 'QUSPTRUS'
C Parm SpaceName
C Parm SpacePtr
C Parm RtnErrorDs
C
C If ErrBytesAva >; 0
C Exsr @SubSndMsg
C Exsr @Exit
C EndIf
C
C 1 Add SpcOffsetHd SpcOffsetHd
C 1 Add SpcOffsetDa SpcOffsetDa
C
C Dou Count >; SpcNumList
C Add 1 Count
C Call 'QUSRTVUS'
C Parm SpaceName
C Parm SpcOffsetDa
C Parm SpcEnySize
C Parm SpoolDs
C Parm RtnErrorDs
C
C If ErrBytesAva >; 0
C Exsr @SubSndMsg
C Exsr @Exit
C EndIf
C
C*可以判断user and outq
C
C Call 'QUSRSPLA'
C Parm SplAtrDs
C Parm 215 Recv_len
C Parm 'SPLA0100' SplAtrFmt
C Parm '*INT' Job
C Parm SplJobId
C Parm SplIntId
C Parm '*INT' SplName
C Parm -1 SplNum
C Parm RtnErrorDs
C
C If ErrBytesAva >; 0
C Exsr @SubSndMsg
C Exsr @Exit
C EndIf
C
C If %subst(SplDate:1:1) = '1'
C Eval SplCreDate = '20' + %Subst(SplDate:2:6)
C Else
C Eval SplCreDate = '19' + %Subst(SplDate:2:6)
C EndIf
C Move SplCreDate SplCreDat
C *YMD Move SplCreDat Date
C ToDay SubDur Date Days:*D
C If Days >; Parm1
C Exsr @DltSplf
C EndIf
C Eval SpcOffsetDa = SpcOffsetDa + SpcEnySize
C EndDo
C Endsr
C*--------------------------------------------------------------------
C*
C*--------------------------------------------------------------------
C @BackProcess Begsr
C Call 'QUSDLTUS'
C Parm SpaceName
C Parm RtnErrorDs
C
C If ErrBytesAva >; 0
C Exsr @SubSndMsg
C Exsr @Exit
C EndIf
C Endsr
C*---------------------------------------------------------------------
C*
C*---------------------------------------------------------------------
C @SubSndMsg Begsr
C*
C Call 'QMHSNDPM'
C Parm Exception
C Parm MsgFile
C Parm *Blanks MsgData
C Parm 0 MsgDataLen
C Parm '*INFO' MsgType
C Parm '*' MsgStackEnt
C Parm 2 MsgStackCnt
C Parm *Blanks MsgKey
C Parm RtnErrorDs
C Exsr @Exit
C Endsr
C*---------------------------------------------------------------------
C*
C*--------------------------------------------------------------------
C @DltSplf Begsr
C Move DelSplNum del 4 0
C Call 'MYDLTSP'
C Parm DelSplName
C Parm DelJobName
C Parm DelUser
C Parm DelJobNum
C Parm Del
C Add 1 DelNum
C Endsr
C*---------------------------------------------------------------------
C*
C*---------------------------------------------------------------------
C *PSSR Begsr
C If PgmMsg <>; *Blanks
C 'Exception:' Dsply PgmMsg
C Eval *INLR = *ON
C Return
C EndIf
C Endsr
C*--------------------------------------------------------------------
C*
C*--------------------------------------------------------------------
C @Exit Begsr
C Constv Dsply Delnum
C Seton LR
C Return
C Endsr
------------------------------------------------------------------------------
mydltsp
-----------------------------------------------------------------------------=
Pgm Parm(&SplName &JobName &User &JobNum +
&SplNum)
DCl Var(&SplName) Type(*Char) Len(10)
Dcl Var(&JobName) Type(*Char) Len(10)
Dcl Var(&User) Type(*Char) Len(10)
Dcl Var(&JobNum) Type(*Char) Len(6)
DCL VAR(&SPLNUM) TYPE(*DEC) LEN(4)
DLTSPLF FILE(&SPLNAME) JOB(&JOBNUM/&USER/&JOBNAME) +
SPLNBR(&SPLNUM)
EndPgm
==============================================
cmd
==============================================
CMD PROMPT('DELETE OLD SPPLF')
PARM KWD(DAYS) TYPE(*DEC) LEN(3) DFT(15) +
PROMPT('间隔天数')
复制代码
[/code]
作者:
USING_AS400
时间:
2005-06-08 11:39
标题:
写了个删除旧spool file 的东西,看可以用不?
虽然还没试过,不过相信会是好东西!支持!!!
作者:
Eagle_wolf
时间:
2005-06-08 15:09
标题:
写了个删除旧spool file 的东西,看可以用不?
其实还可以加几个选择参数,入user outq 等等
作者:
xuguopeng
时间:
2005-06-08 15:12
标题:
写了个删除旧spool file 的东西,看可以用不?
程序好长 没怎么仔细看 对API的了解不是很多
希望楼主能给解说一下各个API的作用以及程序的思路
作者:
USING_AS400
时间:
2005-06-08 15:15
标题:
写了个删除旧spool file 的东西,看可以用不?
我也对API感兴趣,可惜平时知道的很少,一般都是看到别人用才知道怎么用!
所以,期待楼主给我们讲解一下!谢谢!
作者:
Eagle_wolf
时间:
2005-06-08 16:57
标题:
写了个删除旧spool file 的东西,看可以用不?
其实思路很简单,如果不用API 用wrksplf产生个spoolfile 然后分析这个spoolfile也能达到同样的效果.使用API只是想练习写个程序而已
主要就是利用quslspl列出需要的spoolfile,然后用qusrspla分析每个splf的属性,满足的就删除
作者:
Eagle_wolf
时间:
2005-06-08 17:34
标题:
写了个删除旧spool file 的东西,看可以用不?
其中用到了qusrobjd QUSCRTUS QUSLSPL QUSPTRUS QUSRTVUS
QUSRSPLA QUSDLTUS QMHSNDPM 这几个API
qusrobjd 是用来检查usrspace是否存在,如果不存在建立
QUSCRTUS 建立usrspace
QUSLSPL 列出splf
QUSPTRUS 获得space指针
QUSRTVUS 获得space的数据信息
QUSRSPLA 获得splf的属性
QUSDLTUS 删除usrspace
QMHSNDPM 等于sndpgmmsg
我也是刚刚学API的应用,希望大家多多指教
作者:
wildfish
时间:
2005-06-08 19:33
标题:
写了个删除旧spool file 的东西,看可以用不?
我对api一窍不通,所以看的云里雾里,我们一般是自己做一个spool file文件管理,然后删除~
作者:
pl421
时间:
2005-06-09 09:55
标题:
写了个删除旧spool file 的东西,看可以用不?
楼主H表是干嘛用的呀.麻烦解释解释.
作者:
Eagle_wolf
时间:
2005-06-09 10:35
标题:
写了个删除旧spool file 的东西,看可以用不?
h 表是程序编译和运行提供一些信息的 如版本 时间格式 等等
这里一个是日期格式 一个是日期编辑时的格式
其实不指定缺省也是可以的 只是写习惯了
作者:
Eagle_wolf
时间:
2005-06-09 18:02
标题:
写了个删除旧spool file 的东西,看可以用不?
发现一个问题,*date 是文件建立job的日期 不一定等于当前日期,
move *date today
这里需要用system value QDATE 代替,有空我在改
有点搞不懂 *date 到底是什么?
改完了
作者:
teresa99
时间:
2005-06-10 20:13
标题:
写了个删除旧spool file 的东西,看可以用不?
*DATE是JOB的日期,可以通过CHGJOB DATE()修改
作者:
Eagle_wolf
时间:
2005-06-15 14:27
标题:
写了个删除旧spool file 的东西,看可以用不?
我的用户jobd里面的 job date 指定的是 *sysval啊 难道这个job date 在 登陆的时候就定了
即 6月5号登陆后 一直不signoff *date 就一直等于
6月5号????
作者:
wangshy
时间:
2005-06-16 18:10
标题:
写了个删除旧spool file 的东西,看可以用不?
QSYCUSRS怎么样使用,在命令行上CALL时,需要哪些参数,请给个例子.先谢谢了.
作者:
Eagle_wolf
时间:
2005-06-20 13:05
标题:
写了个删除旧spool file 的东西,看可以用不?
http://www.dbg400.net/download/QMNSRBND.txt
这里有个程序 看看能不能帮你
作者:
wangshy
时间:
2005-06-20 20:09
标题:
写了个删除旧spool file 的东西,看可以用不?
高手,非常感谢楼主。
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2