On: Tue, Feb 20, 2007 at 10:29:41AM -0500,Nick Laflamme Wrote:

} Has anyone mapped out the values to tape drives types returned by "Q cuu 
} ID"? Perhaps even listed which types are compatible with what sorts of 
} tapes? (Yes, Herndon, I'm looking in your direction.)

Nick,
Not sure if this will help because its old and doesn't include the newer
tapes, but this exec "TAPETYPE" may get you started.

/*
  TAPETYPE
  Rich Greenberg, Locus, 8/89.

  This exec, when called as a Rexx function or subroutine,
  will return a value which is the IBM model number of the
  real tape drive associated with the virtual address passed to it.

  To use:
           mod = 'TAPETYPE'(vaddr)       (Function call)
           call 'TAPETYPE' vaddr         (Subroutine
           mod = result                   call)
  Where:
           mod    Receives one of the o/p values.
           vaddr  Is the virtual address of the tape drive.

  Output; The value returned will be one of the following:

           2401         )
           2415         )  Real
           2420         )   tape
           3420         )    drive
           3410         )     is
           8809         )      this
           3430         )       model.
           3480         )
           9347         )

            0            Real device is a tape drive,
                           but type is not recognized.
           -1            Real device is not a tape drive
           -2            Virtual device exists but is not
                           associated with a real device.
           -3            Invalid device address OR the
                           virtual device does not exist.
           -4            Call error - Too many or too few
                           arguements.
         -100            Exit from HELP request.

  Note:  A 3411 tape drive will return 3410.
*/
address 'COMMAND'
trace 'O'
/*
  Get my arg.  If null, or more than 1, exit with -4.
  Check for HELP request.
*/
parse upper arg vaddr rest
if vaddr = '?' | vaddr = 'HELP'
   then do
           do n = 2 while substr(sourceline(n),1,2) ^= '*/'
              say sourceline(n)
           end
           exit -100
        end
if vaddr = '' | rest ^= ''
   then return -4
/*
  Now do a diag 24 against the vaddr and see what we get.
*/
parse value diag(24,vaddr) with . 5 rdevclas 6 rdevtyp 7 . 13 cc
select
   when cc = 0
      then do
           if rdevclas = '08'x
              then return Seltyp(rdevtyp)
              else return -1
           end
   when cc = 2
      then return -2
   when cc = 3
      then return -3
end
/*
  Devicetype matcher routine.
*/
Seltyp:
select
   when arg(1) = '80'x
      then return 2401
   when arg(1) = '40'x
      then return 2415
   when arg(1) = '20'x
      then return 2420
   when arg(1) = '10'x
      then return 3420
   when arg(1) = '08'x
      then return 3410
   when arg(1) = '02'x
      then return 3430
   when arg(1) = '01'x
      then return 3480
   when arg(1) = '04'x
      then return 8809
   when arg(1) = '84'x
      then return 9347
   otherwise
      return 0
end


-- 
Rich Greenberg  N Ft Myers, FL, USA richgr atsign panix.com  + 1 239 543 1353
Eastern time.  N6LRT  I speak for myself & my dogs only.    VM'er since CP-67
Canines:Val, Red, Shasta & Casey (RIP), Red & Zero, Siberians  Owner:Chinook-L
Retired at the beach                                     Asst Owner:Sibernet-L

Reply via email to