Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1298649
  • 博文数量: 287
  • 博客积分: 11000
  • 博客等级: 上将
  • 技术积分: 3833
  • 用 户 组: 普通用户
  • 注册时间: 2007-08-16 08:43
文章分类
文章存档

2013年(15)

2012年(17)

2011年(17)

2010年(135)

2009年(85)

2008年(18)

分类: 系统运维

2010-06-05 09:14:52

List Spooled Files
 Here's a program written in free-form RPG which demonstrates a simple use of the QUSLSPL API.
Perhaps you can use this to help you understand what needs to be changed in your program...  

H DFTACTGRP(*NO)
D QUSLSPL     PR                     ExtPgm('QUSLSPL')
 * required parameters
D UsrSpc                     20A     const
D Format                      8A     const
D UserName                   10A     const
D QualOutQ                   20A     const
D FormType                   10A     const
D UserData                   10A     const
 * optional group 1:
D ErrorCode               32766A     options(*nopass: *varsize)
 * optional group 2:
D QualJob                    26A     options(*nopass) const
D FieldKeys                  10I 0   options(*nopass: *varsize)
D                                    dim(9999)
D NumFields                  10I 0   options(*nopass) const
 * optional group 3:
D AuxStgPool                 10I 0   options(*nopass) const
 * optional group 4:
D JobSysName                  8A     options(*nopass) const
D StartCrtDate                7A     options(*nopass) const
D StartCrtTime                6A     options(*nopass) const
D EndCrtDate                  7A     options(*nopass) const
D EndCrtTime                  6A     options(*nopass) const
D QUSCRTUS       PR                  ExtPgm('QUSCRTUS')
D UsrSpc                      20A    CONST
D ExtAttr                     10A    CONST
D InitialSize                 10I 0  CONST
D InitialVal                    1A   CONST
D PublicAuth                   10A   CONST
D Text                         50A   CONST
D Replace                      10A   CONST
D ErrorCode                 32766A   options(*nopass: *varsize)
D QUSPTRUS       PR                  ExtPgm('QUSPTRUS')
D UsrSpc                       20A   CONST
D Pointer                        *
D QUSDLTUS       PR                  ExtPgm('QUSDLTUS')
D UsrSpc                       20A   CONST
D ErrorCode                 32766A   options(*varsize)
D GetStatus      PR             4A
D StatusCode                   10I 0 value
D p_UsrSpc       s               *
D dsLH           DS                  BASED(p_UsrSpc)
D                                    qualified
D Filler1                     103A
D Status                        1A
D Filler2                      12A
D HdrOffset                    10I 0
D HdrSize                      10I 0
D ListOffset                   10I 0
D ListSize                     10I 0
D NumEntries                   10I 0
D EntrySize                    10I 0
D p_Entry        s               *
D dsSF           DS                   BASED(p_Entry)
D                                     qualified
D JobName                      10A
D UserName                     10A
D JobNumber                     6A
D SplfName                     10A
D SplfNbr                      10I 0
D SplfStatus                   10I 0
D OpenDate                      7A
D OpenTime                      6A
D Schedule                      1A
D SysName                      10A
D UserData                     10A
D FormType                     10A
D OutQueue                     10A
D OutQueueLib                  10A
D AuxPool                      10I 0
D SplfSize                     10I 0   
D SizeMult                     10I 0
D TotalPages                   10I 0
D CopiesLeft                   10I 0
D Priority                      1A
D Reserved                      3A
D dsEC          DS                    qualified
D BytesProvided                10I 0  inz(%size(dsEC))
D BytesAvail                   10I 0  inz(0)
D MessageID                     7A
D Reserved                      1A
D MessageData                   240A
D MYSPACE       C                     CONST('SPLLIST QTEMP ')
D Keys          s               10I 0 dim(1)
D size          s               10I 0
D sf            s               10I 0
D msg           s               52A
 /free
     // set this to zero to let OS/400 handle errors, instead
     // of handling them ourselves... dsEC.BytesProvided = 0;
     // Create a user space.. make space for (approx) 300
     // spooled files to be listed.
     size = %size(dsLH) + 512 + (%size(dsSF) * 300);
     QUSCRTUS(MYSPACE: 'USRSPC': size: x'00': '*ALL': 'Temp User Space for QUSLSPL API': '*YES': dsEC);
     // List spooled files to the user space
     QUSLSPL(MYSPACE: 'SPLF0300': *blanks: *blanks: *blanks: *blanks: dsEC: '*': Keys: 0);
     // Get a pointer to the returned user space
     QUSPTRUS(MYSPACE: p_UsrSpc);
     // Loop through list, for each spooled file, display the
     // spooled file name, number and status.
     p_Entry = p_UsrSpc + dsLH.ListOffset;
     for sf = 1 to dsLH.NumEntries;
        if (dsSF.SplfStatus <> 10);
            msg = %trim(dsSF.SplfName) + ' ' + %trim(%editc(dsSF.SplfNbr:'L')) + ' ' + GetStatus(dsSF.SplfStatus);
            dsply msg;
        endif;
        p_Entry += dsLH.EntrySize;
     endfor;
     // delete user space, we're done with it
     QUSDLTUS(MYSPACE: dsEC);
     // give user a chance to read the screen before ending
     msg = 'Press ENTER to end';
     dsply '' '' msg; *inlr = *on;
 /end-free
 *+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 * get human-readable status code for a numeric status code:
 *+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
P GetStatus     B
D GetStatus     PI              4A
D StatusCode                   10I 0   value
 /free
     if (StatusCode = 1);
        return 'RDY';
     elseif (StatusCode = 2);
        return 'OPN';
     elseif (StatusCode = 3);
        return 'CLO';
     elseif (StatusCode = 4);
        return 'SAV';
     elseif (StatusCode = 5);
        return 'WTR';
     elseif (StatusCode = 6);
        return 'HLD';
     elseif (StatusCode = 7);
        return 'MSGW';
     elseif (StatusCode = 8);
        return 'PND';
     elseif (StatusCode = 9);
        return 'PRT';
     elseif (StatusCode = 10);
        return 'FIN';
     elseif (StatusCode = 11);
        return 'SND';
     elseif (StatusCode = 12);
        return 'DFR';
     else; return '???';
        endif;
 /end-free
P                E

Thanks to Scott Klement

 

阅读(1040) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~