> You could write an ASM program

The ISMF thing doesn't work for us as we snapshot our production volumes to
an offline set of volumes which are in the PPRC relationship.  We wrote a
little script that issues and then parses the CQUERY UNFORMAT information
for those volumes to get us the info when we need it.  Uses a DCOLLECT
report to drive the addresses needed for the CQUERYs as those snapshot
target addresses are all the production addresses + x'80'.....

The DCOLLECT report generated in a job that runs once a day to get a list
of production volumes....

//LISTC    EXEC PGM=IDCAMS
//SYSPRINT DD SYSOUT=*
//OUTDS    DD DISP=OLD,DSN=SE.PADMIN.BATCH.PRDRGENR.DCOLL
//SYSIN    DD *
     DCOLLECT -
         OFILE(OUTDS) -
         NODATAINFO -
         VOLUME(**)
//*


The script we run to get the info we want on the snapshot targets in the
PPRC relationship.  You could expand it to parse the primary/secondary info
you're looking for....
/* REXX

SSID.1 = 9080
SSID.2 = 9180
SSID.3 = 9280
SSID.4 = 9380
SSID.5 = 9480
SSID.6 = 9580
SSID.7 = 9680
SSID.8 = 9780
SSID.9 = 9880
SSID.10 = 9980
SSID.11 = 9A80
SSID.12 = 9B80
SSID.13 = 9C80
SSID.14 = 9D80
SSID.15 = 9E80
SSID.16 = 9F80
SSID.0 = 16
"ALLOC DA('SE.PADMIN.BATCH.PRDRGENR.DCOLL') F(INFILE) SHR"
"EXECIO * DISKR INFILE(STEM VOLS. FINIS"
"FREE F(INFILE)"

VOLSER. = "UNDEFD"
DO I = 1 TO VOLS.0
  PARSE VAR VOLS.I 25 VVVV 31 . 77 U1 78 U2 79 .
  UU=RIGHT(D2X(C2D(U1)),2,'0')||RIGHT(D2X(C2D(U2)),2,'0')
  T2 = RIGHT(D2X(X2D(UU)+128),4,'0')  /* ADD HEX80 */
  VOLSER.T2 = VVVV
END


  X = OUTTRAP( REP.)
  PENDING = 0
  DUPLEXD = 0
  DO J = 1 TO SSID.0
    PRIM = SSID.J
    DO I=0 TO 57
     DEVN=D2X(X2D(PRIM)+I)
     " CQUERY DEVN(X'"DEVN"') UNFORMAT"
   END
 END
 X = OUTTRAP(OFF)
 "ALLOC DA(VCU) F(OUTFILE) NEW CATALOG DELETE DATACLAS(STD80PS)"
 DO I = 1 TO REP.0 BY 7
   P3 = I + 2
   P6 = I + 5
   PARSE VAR REP.P3 UNIT","PORS","DUPORPEND",".
   PARSE VAR REP.P6 .",".","PERCENT",".
   IF DUPORPEND = "PENDING" THEN
     PENDING = PENDING + 1
   IF DUPORPEND = "DUPLEX" THEN
     DUPLEXD = DUPLEXD + 1
   IF PERCENT ="" THEN
     QUEUE VOLSER.UNIT UNIT DUPORPEND
   ELSE
     QUEUE VOLSER.UNIT UNIT DUPORPEND PERCENT" %"
   "EXECIO 1 DISKW OUTFILE"
  END
  SAY "NUMBER OF PENDING VOLUMES IS "PENDING
  PDUPLEX = DUPLEXD / 924
  SAY "NUMBER OF DUPLEXD VOLUMES IS "DUPLEXD
  SAY "PERCNT OF DUPLEXD VOLUMES IS "PDUPLEX
"EXECIO 1 DISKW OUTFILE(FINIS"
"ISPEXEC EDIT DATASET(VCU)"
"FREE F(OUTFILE)"


The result, for us, is a report that looks like this....
NUMBER OF PENDING VOLUMES IS 0
***
000001 MAGIC1 9080 DUPLEX
000002 M99001 9081 DUPLEX
000003 M99002 9082 DUPLEX
000004 LRK108 9083 DUPLEX
000005 LRK124 9084 DUPLEX
000006 LRK140 9085 DUPLEX
000007 LRK156 9086 DUPLEX
etc.....

if the volume is not DUPLEX then it says what percentage is pending.


The UNFORMAT format layout is for message ANTP0091I and can be found in the
MVS System Messages Volume 1 manual...



Jeffrey Deaver, Engineer
Systems Engineering
jeffrey.dea...@securian.com
651-665-4231(v)
IS - "Creating competitive advantage with technology.  Providing service
that excels."
OSS - " Where Innovation Happens"

----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO
Search the archives at http://bama.ua.edu/archives/ibm-main.html

Reply via email to