Excellent point, Harry!  It had only been an example, but even examples 
should be reliable.

I'm pretty sure the following should work, and be as reliable as the 4K 
block total supplied by 'CP QUERY queue EXP' 

Mike Walter
Aon Hewitt
The opinions expressed herein are mine alone, not my employer's.

/* Prolog; See Epilog for additional information ********************
 * Exec Name     - SPOOLBLK EXEC                                    *
 * Unit Support  -                                                  *
 * Status        - Version 1, Release 1.2                           *
 ********************************************************************/

   address 'COMMAND'
   parse source xos xct xfn xft xfm xcmd xenvir .
   parse upper arg parms 1 operands '(' options ')' parmrest

   hi='1DE8'x                               /* 3270 Hilite Char     */
   lo='1D60'x                               /* 3270 Default Char    */
   Signal ON Syntax
   Signal ON NoValue
/* Signal ON ERROR */
   If parms='?' then Signal Explain

   parse upper arg queue .

   If queue='' then queue='ALL'
   SumTotal=0

   If queue='' | queue='ALL' then
      Do
        Call SumQueue 'READER'
        Call SumQueue 'PRINTER'
        Call SumQueue 'PUNCH'
      End
   Else Call SumQueue queue

   say queue 'queue 4K SPOOL block total=' SumTotal
Call Exit rc


/********************************************************************/
/*                   Sub-Routines below this point                  */
/********************************************************************/

Exit:
   parse arg exitrc todo
   If todo='?' then say 'For more help, enter:' xfn '?'
   If verify(exitrc,'-0123456789')>0 then Exit 999999
Exit exitrc


Error:
   etxt.1='+++ "ERROR:" error rtn entered in:' xfn xft xfm', rc='rc
   etxt.2='+++ from line:' sigl', which reads:'
   etxt.3='+++'sourceline(sigl)
   cmdline=strip(sourceline(sigl),'B')
   If symbol(value('CMDLINE'))='VAR'      /* e.g cmd='CP FAIL'; cmd */
      then cmdline=value( value('CMDLINE') )
      else cmdline=value('CMDLINE')       /* e.g.    'CP FAIL'      */
   etxt.4='+++ which translates to:' cmdline
   etxt.0=4
  'PIPE STEM etxt. | CONS'
Call Exit 20


Syntax:
   etxt.1='+++ "SYNTAX:" error rtn entered in:' xfn xft xfm', rc='rc
   etxt.2='+++ from line:' sigl', which reads:'
   etxt.3='+++'sourceline(sigl)
   cmdline=strip(sourceline(sigl),'B')
   cmdline=value('CMDLINE')
   etxt.4='+++ which translates to:' cmdline
   etxt.0=4
  'PIPE STEM etxt. | CONS'
Call Exit 20


NoValue:
   etxt.1='+++ "NoValue:" error rtn entered in:' xfn xft xfm', rc='rc
   etxt.2='+++ from line:' sigl', which reads:'
   etxt.3='+++'sourceline(sigl)
   etxt.4='+++ Variable with no value is:' condition('Description')
   etxt.0=4
  'PIPE STEM etxt. | CONS'
Call Exit 24


SumQueue:
   parse arg thisqueue .

  'PIPE (NAME SumQueue)' ,
     '| CP QUERY' thisqueue 'EXP' ,
     '| DROP 1' ,                                /* Drop title line */
     '| SPECS' ,                                 /* Just the size   */
              'PRINTONLY EOF' ,                  /* Prt only total  */
              't: 77.4 .' ,                      /* Just SIZE value */
              'n: 77.3 .' ,                      /* Just nnn value  */
              'm: 80.1 .' ,                      /* Just nnn value  */
              'IF m=="K" THEN' ,
              '   SET #0+=(n*1000)' ,            /* Multiply nK * 1K*/
              'ELSEIF m=="M" THEN' ,
              '   SET #0+=(n*1000000)' ,         /* Multiple nK * 1M*/
              'ELSE' ,
              'SET #0+=t' ,                      /* Add all numeric */
              'ENDIF' ,
              'EOF' ,                            /* Mark EOF        */
              'PRINT #0 1' ,                     /* Print total     */
     '| VAR queuesum'
   SumTotal=SumTotal+queuesum
Return


Explain:
  'PIPE (NAME Explain)' ,
     '| <' xfn xft xfm ,
     '| INSIDE /ExplainBegin:/ /ExplainEnd:/' ,
     '| PREFACE STRLITERAL /'xfn xft xfm 'help.../' ,
     '| CONSOLE'
   Call Exit 0
/*
ExplainBegin:

SPOOLBLK total count of the number of 4K blocks reported allocated by the
command: CP Query queue EXP



            +----ALL--------+
>>-SPOOLBLK-+---------------+-----------------------------------------><
            +--+-Printer-+--+
            +  +-PRT-----+  +
            +--+-PUnch---+--+
            +  +-PCH-----+  +
            +--+-Reader--+--+
               +-RDR-----+


Usage note:

"ALL" is not a specific queue name.  ALL (Reader, Printer, and Punch)
4K block allocations will be totaled and reported when requested.

Not every 4K block may be completely full.

ExplainEnd:
*/

/* Epilog ***********************************************************
 * Function      - Display count of 4K SPOOL blocks                 *
 * Component of  -                                                  *
 * Command format-                                                  *
 * Called by     -                                                  *
 * Dependencies  - VM/SP 3 or higher.                               *
 *               - Privclass 'D' to report on all system files.     *
 * Program Lang. - CMS REXX                                         *
 * Date Written  - 20101022                                         *
 * Author        - Michael R. Walter, Aon Hewitt                    *
 * Changed | By  | Description of Change                            *
 * --------+-----+------------------------------------------------- *
 * yyyymmdd  iii -                                                  *
 *                                                                  *
 ********************************************************************/




"A. Harry Williams" <ha...@vm.marist.edu> 

Sent by: "The IBM z/VM Operating System" <IBMVM@LISTSERV.UARK.EDU>
10/22/2010 02:15 PM
Please respond to
"The IBM z/VM Operating System" <IBMVM@LISTSERV.UARK.EDU>



To
IBMVM@LISTSERV.UARK.EDU
cc

Subject
Re: Spool File Backup (SFB) BCHTIMER Files






On Wed, 20 Oct 2010 11:30:05 -0500 Mike Walter said:
>You can determine the number of 4K pages that each spool file command is
>currently using from a Privclass "D" userid with the commands:
>
>CP QUERY RDR EXP
>CP QUERY PRT EXP
>CP QUERY PUN EXP
>
>The 'SIZE' column has the answers.  This should get you started.
>
> 'PIPE (NAME SumRdr)' ,
>    '| CP QUERY RDR EXP' ,
>    '| DROP 1' ,                           /* Drop title line */
>    '| SPECS' ,                            /* Just the size   */
>    '         PRINTONLY EOF' ,             /* Prt only total  */
>    '         a: 77.4 .' ,                 /* Just SIZE col.  */
>    '         SET #0+=a' ,                 /* Add new value   */
>    '         EOF' ,                       /* Mark EOF        */
>    '         PRINT #0 1' ,                /* Print total     */
>    '| CONSOLE'


Make sure to read the HELP file for CPQUERY READER, especially
the Note section of Response #3.  If you have large spool files,
the size gets represented by K or M.  I'm sure there are many ways
to deal with them , but I usually do a simple multistream pipe to
split them into different streams and expand them.


>
>Mike Walter
/ahw






The information contained in this e-mail and any accompanying documents may 
contain information that is confidential or otherwise protected from 
disclosure. If you are not the intended recipient of this message, or if this 
message has been addressed to you in error, please immediately alert the sender 
by reply e-mail and then delete this message, including any attachments. Any 
dissemination, distribution or other use of the contents of this message by 
anyone other than the intended recipient is strictly prohibited. All messages 
sent to and from this e-mail address may be monitored as permitted by 
applicable law and regulations to ensure compliance with our internal policies 
and to protect our business. E-mails are not secure and cannot be guaranteed to 
be error free as they can be intercepted, amended, lost or destroyed, or 
contain viruses. You are deemed to have accepted these risks if you communicate 
with us by e-mail. 

Reply via email to