免费注册 查看新帖 |

Chinaunix

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

写了个删除旧spool file 的东西,看可以用不? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-06-08 11:37 |只看该作者 |倒序浏览
  1.   H*  Programe No. :
  2.      H*          Text :
  3.      H*      Function : delete old splf
  4.      H*
  5.      H*     Programer :
  6.      H*
  7.      H*  Date Created :
  8.      H*
  9.      H**********************************************************************
  10.      HDATFMT(*ISO)   
  11.      HDATEDIT(*YMD)
  12.      H**********************************************************************
  13.      D*Input parm
  14.      DParm1            S              3P 0
  15.      D*                  Err_Code
  16.      DRtnErrorDs       Ds
  17.      D  ErrBytes               1      4B 0
  18.      D  ErrBytesAva            5      8B 0
  19.      D  Exception              9     15
  20.      D  Reserved              16     16
  21.      D  Data                  17    271
  22.      D*
  23.      D*     Qusrobjd  parm
  24.      D RecvValue       S             16
  25.      D RecvSize        S              9B 0
  26.      D ObjFmt          S              8
  27.      D ObjType         S             10
  28.      D*
  29.      D*     quscrtus  parm
  30.      D SpaceName       S             20      Inz('DLTOLDSPLFQTEMP     ')
  31.      D SpaceAtr        S             10
  32.      D SpaceSize       S              9  0   Inz(1)
  33.      D SpaceVal        S              1      Inz(X'00')
  34.      D SpaceAut        S             10
  35.      D SpaceRpl        S             10
  36.      D SpaceText       S             50    Inz('Creat for test')
  37.      D*     qusptrus  parm
  38.      D SpacePtr        S               *
  39.      D*
  40.      D*     User space Ds
  41.      DSpaceDs          Ds                  Based(SpacePtr)
  42.      D SpcInfStats           104    104A
  43.      D SpcOffsetHd           117    120B 0
  44.      D SpcHeadSize           121    124B 0
  45.      D SpcOffsetDa           125    128B 0
  46.      D SpcNumList            133    136B 0
  47.      D SpcEnySize            137    140B 0
  48.      D*
  49.      D
  50.      D*
  51.      D* qusplsp parm
  52.      DFmtName          S              8
  53.      DUsrName          S             10
  54.      DOutq             S             20
  55.      DFormType         S             10
  56.      DUsrData          S             10
  57.      D*
  58.      D* qusrtvus  parm
  59.      DSpoolDs          Ds
  60.      D SplUser                 1     10
  61.      D SplOutq                11     20
  62.      D SplOutqLib             21     30
  63.      D SplType                31     40
  64.      D SplJobId               51     66
  65.      D SplIntId               67     82
  66.      D*
  67.      D* qusrspla parm
  68.      DSplAtrDs         Ds
  69.      D Spltmp                  1     40
  70.      D DelJobName             41     50
  71.      D DelUser                51     60
  72.      D DelJobNum              61     66
  73.      D DelSplName             67     76
  74.      D DelSplNum              77     80B 0
  75.      D SplAtrtmp              81    202
  76.      D SplDate               203    209
  77.      D SplTime               210    215
  78.      D SplAtrFmt       S              8
  79.      D Job             S             26
  80.      D*JobId           S             16
  81.      D*SplId           S             16
  82.      D SplName         S             10
  83.      D SplNum          S              9B 0
  84.      D Recv_Len        S              9B 0
  85.      D*
  86.      D*  Qmhsndpm parm
  87.      D  MsgFile        S             20    Inz('QCPFMSG   QSYS      ')
  88.      D  MsgData        S            256
  89.      D  MsgDataLen     S             10I 0
  90.      D  MsgType        S             10
  91.      D  MsgStackEnt    S             10
  92.      D  MsgStackCnt    S             10I 0
  93.      D  MsgKey         S              4
  94.      D*
  95.      D* other var
  96.      DDelNum           S             15P 0
  97.      DConstV           C                   'Num of spool file has been deleted:'
  98.      DCount            S             15P 0   Inz(1)
  99.      DToDay            S               D
  100.      DDate             S               D
  101.      DSplCreDate       S              8A
  102.      DSplCreDat        S              8P 0
  103.      DDays             S              8P 0
  104.      DPgmDs           SDS
  105.      D PgmMsg                 40     46
  106.      D PgmDate              276   281 0
  107.      D*--------------------------------------------------------------
  108.      C* input parm
  109.      C     *Entry        Plist
  110.      C                   Parm                    Parm1
  111.      C
  112.      C* initial value
  113.      C                   Exsr      @ForeProcess
  114.      C*main process
  115.      C
  116.      C                   Exsr      @MainProcess
  117.      C*
  118.      C                   Exsr      @BackProcess
  119.      C*
  120.      C                   Exsr      @Exit
  121.      C*---------------------------------------------------------------------
  122.      C* initial value
  123.      C*---------------------------------------------------------------------
  124.      C     @ForeProcess  Begsr
  125.      C                   Move      PgmDate       Today
  126.      C                   Endsr
  127.      C*---------------------------------------------------------------------
  128.      C* main process
  129.      C*---------------------------------------------------------------------
  130.      C     @MainProcess  Begsr
  131.      C
  132.      C*check user space
  133.      C                   Call      'QUSROBJD'
  134.      C                   Parm                    RecvValue
  135.      C                   Parm      8             RecvSize
  136.      C                   Parm      'OBJD0100'    ObjFmt
  137.      C                   Parm                    SpaceName
  138.      C                   Parm      '*USRSPC'     ObjType
  139.      C                   Parm                    RtnErrorDs
  140.      C
  141.      C                   If        ErrBytesAva >; 0
  142.      C                   If        Exception = 'CPF9801'
  143.      C                   Call      'QUSCRTUS'
  144.      C                   Parm                    SpaceName
  145.      C                   Parm      'QSPLSPL'     SpaceAtr
  146.      C                   Parm      1024          SpaceSize
  147.      C                   Parm      ' '           SpaceVal
  148.      C                   Parm      '*ALL'        SpaceAut
  149.      C                   Parm                    SpaceText
  150.      C                   Parm      '*YES'        SpaceRpl
  151.      C                   Parm                    RtnErrorDs
  152.      C
  153.      C                   If        ErrBytesAva >; 0
  154.      C                   Exsr      @SubSndMsg
  155.      C                   Exsr      @Exit
  156.      C                   EndIf
  157.      C
  158.      C                   Else
  159.      C
  160.      C                   Exsr      @SubSndMsg
  161.      C                   Exsr      @Exit
  162.      C                   EndIf
  163.      C                   EndIf
  164.      C
  165.      C*list the spoolfile
  166.      C                   Call      'QUSLSPL'
  167.      C                   Parm                    SpaceName
  168.      C                   Parm      'SPLF0100'    FmtName
  169.      C                   Parm      '*CURRENT'    UsrName
  170.      C                   Parm      '*ALL'        OutQ
  171.      C                   Parm      '*ALL'        FormType
  172.      C                   Parm      '*ALL'        UsrData
  173.      C                   Parm                    RtnErrorDs
  174.      C
  175.      C                   If        ErrBytesAva >; 0
  176.      C                   Exsr      @SubSndMsg
  177.      C                   Exsr      @Exit
  178.      C                   EndIf
  179.      C
  180.      C*Retrive the space's  pointer
  181.      C                   Call      'QUSPTRUS'
  182.      C                   Parm                    SpaceName
  183.      C                   Parm                    SpacePtr
  184.      C                   Parm                    RtnErrorDs
  185.      C
  186.      C                   If        ErrBytesAva >; 0
  187.      C                   Exsr      @SubSndMsg
  188.      C                   Exsr      @Exit
  189.      C                   EndIf
  190.      C
  191.      C     1             Add       SpcOffsetHd   SpcOffsetHd
  192.      C     1             Add       SpcOffsetDa   SpcOffsetDa
  193.      C
  194.      C                   Dou       Count >; SpcNumList
  195.      C                   Add       1             Count
  196.      C                   Call      'QUSRTVUS'
  197.      C                   Parm                    SpaceName
  198.      C                   Parm                    SpcOffsetDa
  199.      C                   Parm                    SpcEnySize
  200.      C                   Parm                    SpoolDs
  201.      C                   Parm                    RtnErrorDs
  202.      C
  203.      C                   If        ErrBytesAva >; 0
  204.      C                   Exsr      @SubSndMsg
  205.      C                   Exsr      @Exit
  206.      C                   EndIf
  207.      C
  208.      C*可以判断user and  outq
  209.      C
  210.      C                   Call      'QUSRSPLA'
  211.      C                   Parm                    SplAtrDs
  212.      C                   Parm      215           Recv_len
  213.      C                   Parm      'SPLA0100'    SplAtrFmt
  214.      C                   Parm      '*INT'        Job
  215.      C                   Parm                    SplJobId
  216.      C                   Parm                    SplIntId
  217.      C                   Parm      '*INT'        SplName
  218.      C                   Parm      -1            SplNum
  219.      C                   Parm                    RtnErrorDs
  220.      C
  221.      C                   If        ErrBytesAva >; 0
  222.      C                   Exsr      @SubSndMsg
  223.      C                   Exsr      @Exit
  224.      C                   EndIf
  225.      C
  226.      C                   If        %subst(SplDate:1:1) = '1'
  227.      C                   Eval      SplCreDate = '20' + %Subst(SplDate:2:6)
  228.      C                   Else
  229.      C                   Eval      SplCreDate = '19' + %Subst(SplDate:2:6)
  230.      C                   EndIf
  231.      C                   Move      SplCreDate    SplCreDat
  232.      C     *YMD          Move      SplCreDat     Date
  233.      C     ToDay         SubDur    Date          Days:*D
  234.      C                   If        Days >; Parm1
  235.      C                   Exsr      @DltSplf
  236.      C                   EndIf
  237.      C                   Eval      SpcOffsetDa = SpcOffsetDa + SpcEnySize
  238.      C                   EndDo
  239.      C                   Endsr
  240.      C*--------------------------------------------------------------------
  241.      C*
  242.      C*--------------------------------------------------------------------
  243.      C     @BackProcess  Begsr
  244.      C                   Call      'QUSDLTUS'
  245.      C                   Parm                    SpaceName
  246.      C                   Parm                    RtnErrorDs
  247.      C
  248.      C                   If        ErrBytesAva >; 0
  249.      C                   Exsr      @SubSndMsg
  250.      C                   Exsr      @Exit
  251.      C                   EndIf
  252.      C                   Endsr
  253.      C*---------------------------------------------------------------------
  254.      C*
  255.      C*---------------------------------------------------------------------
  256.      C     @SubSndMsg    Begsr
  257.      C*
  258.      C                   Call      'QMHSNDPM'
  259.      C                   Parm                    Exception
  260.      C                   Parm                    MsgFile
  261.      C                   Parm      *Blanks       MsgData
  262.      C                   Parm      0             MsgDataLen
  263.      C                   Parm      '*INFO'       MsgType
  264.      C                   Parm      '*'           MsgStackEnt
  265.      C                   Parm      2             MsgStackCnt
  266.      C                   Parm      *Blanks       MsgKey
  267.      C                   Parm                    RtnErrorDs
  268.      C                   Exsr      @Exit
  269.      C                   Endsr
  270.      C*---------------------------------------------------------------------
  271.      C*
  272.      C*--------------------------------------------------------------------
  273.      C     @DltSplf      Begsr
  274.      C                   Move      DelSplNum     del               4 0
  275.      C                   Call      'MYDLTSP'
  276.      C                   Parm                    DelSplName
  277.      C                   Parm                    DelJobName
  278.      C                   Parm                    DelUser
  279.      C                   Parm                    DelJobNum
  280.      C                   Parm                    Del
  281.      C                   Add       1             DelNum
  282.      C                   Endsr
  283.      C*---------------------------------------------------------------------
  284.      C*
  285.      C*---------------------------------------------------------------------
  286.      C     *PSSR         Begsr
  287.      C                   If        PgmMsg <>; *Blanks
  288.      C     'Exception:'  Dsply                   PgmMsg
  289.      C                   Eval      *INLR = *ON
  290.      C                   Return
  291.      C                   EndIf
  292.      C                   Endsr
  293.      C*--------------------------------------------------------------------
  294.      C*
  295.      C*--------------------------------------------------------------------
  296.      C     @Exit         Begsr
  297.      C     Constv        Dsply                   Delnum
  298.      C                   Seton                                          LR
  299.      C                   Return
  300.      C                   Endsr
  301. ------------------------------------------------------------------------------
  302. mydltsp
  303. -----------------------------------------------------------------------------=
  304.              Pgm        Parm(&SplName &JobName &User &JobNum +
  305.                              &SplNum)
  306.              DCl        Var(&SplName)  Type(*Char) Len(10)
  307.              Dcl        Var(&JobName)  Type(*Char) Len(10)
  308.              Dcl        Var(&User)     Type(*Char) Len(10)
  309.              Dcl        Var(&JobNum)   Type(*Char) Len(6)
  310.              DCL        VAR(&SPLNUM) TYPE(*DEC) LEN(4)

  311.              DLTSPLF    FILE(&SPLNAME) JOB(&JOBNUM/&USER/&JOBNAME) +
  312.                           SPLNBR(&SPLNUM)

  313.              EndPgm
  314. ==============================================
  315. cmd
  316. ==============================================
  317.             CMD PROMPT('DELETE OLD SPPLF')
  318.              PARM       KWD(DAYS) TYPE(*DEC) LEN(3) DFT(15) +
  319.                           PROMPT('间隔天数')
复制代码
[/code]

论坛徽章:
0
2 [报告]
发表于 2005-06-08 11:39 |只看该作者

写了个删除旧spool file 的东西,看可以用不?

虽然还没试过,不过相信会是好东西!支持!!!

论坛徽章:
0
3 [报告]
发表于 2005-06-08 15:09 |只看该作者

写了个删除旧spool file 的东西,看可以用不?

其实还可以加几个选择参数,入user outq 等等

论坛徽章:
0
4 [报告]
发表于 2005-06-08 15:12 |只看该作者

写了个删除旧spool file 的东西,看可以用不?

程序好长 没怎么仔细看 对API的了解不是很多

希望楼主能给解说一下各个API的作用以及程序的思路

论坛徽章:
0
5 [报告]
发表于 2005-06-08 15:15 |只看该作者

写了个删除旧spool file 的东西,看可以用不?

我也对API感兴趣,可惜平时知道的很少,一般都是看到别人用才知道怎么用!
所以,期待楼主给我们讲解一下!谢谢!

论坛徽章:
0
6 [报告]
发表于 2005-06-08 16:57 |只看该作者

写了个删除旧spool file 的东西,看可以用不?

其实思路很简单,如果不用API 用wrksplf产生个spoolfile 然后分析这个spoolfile也能达到同样的效果.使用API只是想练习写个程序而已

主要就是利用quslspl列出需要的spoolfile,然后用qusrspla分析每个splf的属性,满足的就删除

论坛徽章:
0
7 [报告]
发表于 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的应用,希望大家多多指教

论坛徽章:
0
8 [报告]
发表于 2005-06-08 19:33 |只看该作者

写了个删除旧spool file 的东西,看可以用不?

我对api一窍不通,所以看的云里雾里,我们一般是自己做一个spool file文件管理,然后删除~

论坛徽章:
0
9 [报告]
发表于 2005-06-09 09:55 |只看该作者

写了个删除旧spool file 的东西,看可以用不?

楼主H表是干嘛用的呀.麻烦解释解释.

论坛徽章:
0
10 [报告]
发表于 2005-06-09 10:35 |只看该作者

写了个删除旧spool file 的东西,看可以用不?

h 表是程序编译和运行提供一些信息的 如版本 时间格式 等等
这里一个是日期格式 一个是日期编辑时的格式
其实不指定缺省也是可以的 只是写习惯了
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP