Programming Interface Information: This information is NOT intended to be used as Programming Interfaces of z/VM.

#### TAPBK

Prolog

Control Block Contents
TAPBK DSECT

Storage Layout

Cross Reference (Contains links to field and bit definitions)

#### TAPBK Prolog

     Name       : HCPTAPBK
     DESCRIPTION: SPXTAPE Tape Drive Control Block
     DSECT      : TAPBK
     FUNCTION   : Holds information about the tape drive, the
                  task managing it, and files processed on it
     Located by : Routines:  HCPSPYWT - SPXTAPE DUMP tape I/O
                  HCPSPZRT - SPXTAPE LOAD/SCAN tape I/O
                  Fields:    SPTTAPQ  - queue anchor in SPTBK
                  TAPNEXT  - chain forward pointer
     CREATED BY : HCPSPQBD - command parser
     DELETED BY : HCPSPYWT - SPXTAPE DUMP tape I/O
                  HCPSPZRT - SPXTAPE LOAD/SCAN I/O
     Notes      : The TAPBK is built at the top of a full page of
                  storage obtained by calling HCPPTFGF.  This page
                  of storage contains the TAPBK at the top, followed
                  by an IORBK, a CHPBK, another IORBK and another
                  CHPBK which are all built in this page.  The first
                  IORBK can be located directly at the end of the
                  TAPBK by using the TAPEND definition.

#### TAPBK Control Block Content

#### TAPBK DSECT

    Hex   Dec Type/Val   Lng Label (dup)    Comments
    ---- ---- --------- ---- -------------- --------
    0000    0 Structure      TAPBK          SPXTAPE Tape Drive Control Block
    0000    0 Signed       4 TAPNEXT        Next in queue
    0004    4 Signed       4 TAPCHPBK       First of the list of CHPBK's
    0008    8 Character    8 TAPIDENT       TAPBK Id for dump debug
    0010   16 Character    4 TAPCVDEV       Virtual device number in char
    0014   20 Signed       4 TAPVNUM        Virtual device number in binary
    0018   24 Signed       4 TAPRDEV        Real device block
    001C   28 Character    6 TAPVOLID       Volume ID from label if there is
                                            one or zeroes
    0022   34 Bitstring    2 *              Reserved
         Statistics
    0024   36 Bitstring    1 TAPFLAG        Status flags
              1... ....      TAPNOMNT       X'80' No mount msg - drive is out
                                            of work
              .1.. ....      TAPSKIP        X'40' Skip data load for current
                                            file
              ..1. ....      TAPNTALY       X'20' No msg and tally on trailer
                                            write request
              ...1 ....      TAPSTRTD       X'10' Task has been started for
                                            drive
              .... .1..      TAPWRTR        X'04' Writing trailer
              .... ..1.      TAPAPPWT       X'02' Tape is APPEND WAITING
              .... ...1      TAPEOT         X'01' Hit end-of-tape; stop
                                            reads/writes
    0025   37 Bitstring    1 TAPHFLAG       Halt flag - why processing
                                            stopped
              1... ....      TAPHEND        X'80' END: LOAD/SCAN - no tapes
                                            left
              .1.. ....      TAPHEFND       X'40' Logical end of volume, no
                                            more reads
              ..1. ....      TAPHCANC       X'20' CANCEL: end processing
                                            immediately
              ...1 ....      TAPERR         X'10' Permanent error occurred
              .... 1...      TAPLEOT        X'08' Logical EOT requested
              .... .1..      TAPEMPT        X'04' Tape is empty - nothing is
                                            written on it
              .... ..1.      TAPHDET        X'02' DETACH: end processing
                                            immediately
              .... ...1      TAPTRRD        X'01' Trailer record has been
                                            read
    0026   38 Bitstring    1 TAPOCFLG
              1... ....      TAPLOGO        X'80' Log response only
              .1.. ....      TAPSOMER       X'40' Some file had an error of
                                            some kind recorded in the log for
                                            volume
              ..1. ....      TAPABORT       X'20' Tape was aborted
              ...1 ....      TAPLABCK       X'10' Tape has been checked for
                                            presence of Standard Labels
              .... 1...      TAPPOS         X'08' Position tape for LOAD
    0027   39 Bitstring    1 *              Reserved
    0028   40 Signed       4 TAPPAGWT       Times drive waited for more pages
    002C   44 Signed       4 TAPFILWT       Times drive waited for more files
    0030   48 Signed       4 TAPSEQ         Sequence number
         EOV processing
    0034   52 Signed       4 TAPORR13       Original R13 for restarting tape
                                            write task after EOV or error
                                            processing.
    0038   56 Dbl-Word     8 TAPPRGLK (3)   Lock held while purging files
                                            processed by tape
    0050   80 Signed       4 TAPPRGCT       Count of volumes being actively
                                            purged/logged.
    0054   84 Character   16 TAPTKTQ        Queue of tkts committed on this
                                            volume that are waiting for the
                                            volume to complete. Used to
                                            restart all files that are on the
                                            volume in case of failure of the
                                            volume or drive. Single- threaded
                                            double-headed FIFO queue
                                            terminated by zero.
    0054   84 Address      4 TAPTKTQH       Head of TAPTKTQ
    0058   88 Address      4 TAPTKTQT       Tail of TAPTKTQ
    005C   92 Signed       4 *              Reserved
    0060   96 Signed       4 TAPTKTQC       Count of files on TAPTKTQ
         Orientation
    0064  100 Signed       4 TAPCURHD       Current slot in block header
    0068  104 Character   16 TAPTKTS        Queue of files completed in this
                                            buffer. Moved to CHPTKTQ when I/O
                                            is ready to be started. Single-
                                            threaded double-headed FIFO queue
                                            terminated by zero.
    0068  104 Address      4 TAPTKTSH       Head of TAPTKTS
    006C  108 Address      4 TAPTKTST       Tail of TAPTKTS
    0070  112 Signed       4 TAPTKTCT       Corresponding count of files on
                                            TAPTKTS
    0074  116 Signed       4 *              Reserved
    0078  120 Signed       4 TAPSSQ         Current SSQ block
         Commit and recovery control data. Last items in the current block are
         used to update commit cursors when successfully sent to tape.
    007C  124 Signed       4 TAPCURTK       Last ticket contained in current
                                            block
    0080  128 Signed       4 TAPCMSSQ       Address of SSQBK that has the
                                            next Vpage slot (TAPCMCUR)
    0084  132 Signed       4 TAPCMCUR       Address of next Vpage slot in
                                            last SSQBK
    0088  136 Signed       4 TAPCMXAB       Amount of XAB data associated
                                            with last tkt remaining to be
                                            written
    008C  140 Signed       4 TAPLSTCW       CCW address of the last piece of
                                            data for files that completed in
                                            the current block.
    0090  144 Signed       4 TAPLLPTR       Last offset in page list +1 used
    0094  148 Signed       4 TAPLSTHD       Header address for last completed
                                            file
    0098  152 Signed       4 TAPLBLKZ       Block size at last complete
                                            file/tkt in this block.
         Working storage
    009C  156 Signed       4 TAPPGSCN       Pages skipped by SCAN in current
                                            ticket. Can't be in TKTBK because
                                            of re-entrancy.
    00A0  160 Dbl-Word     8 TAPLTIME       TAPTIME of last good header
                                            record- used in reorienting after
                                            error.
    00A8  168 Signed       4 TAPRTCT        Count of the number of contiguous
                                            records bypassed due to I/O
                                            errors while trying to reorient.
         Channel program controls
    00AC  172 Signed       4 TAPCURCW       Current channel program slot
         TAPBK Lock - must be held during interrupt processing
    00B0  176 Dbl-Word     8 TAPLOCK (3)    For DUMP, synchronizes the main
                                            I/O starting task (front end)
                                            with the completion of the I/O
                                            interrupt processing (back end).
                                            Acquired by front end and
                                            released by back end of the I/O
                                            interrupt processing when
                                            interrupt processing is complete.
                                            For LOAD/SCAN, allows only one
                                            buffer to be deblocked at a time.
         Buffer for the trailer record for the whole tape
    00C8  200 Dbl-Word     8 TAPTRAIL (0)   Summarize contents of cartridge
    00C8  200 Signed       4 TAPTRLID       ID the trailer record
         Counters
    00CC  204 Signed       4 TAPSEQNO       Cartridge number for this drive
    00D0  208 Signed       4 TAPBKCNT       Record count this reel
    00D4  212 Signed       4 TAPFILCT       File count this reel
    00D8  216 Signed       4 TAPDPGCT       Data page count for reel
    00DC  220 Signed       4 TAPSPLPG       Total spool space represented
    00E0  224 Signed       4 TAPRETPL       Pages to return to pool when
                                            block done
    00E4  228 Signed       4 *
         File ID's in Character
    00E8  232 Character    1 TAPTRLOW (8)   Owner last file (partial or
                                            whole)
    00F0  240 Signed       4 TAPTRLI        User spid of last file
    00F4  244 Signed       4 *              Reserved
    00F8  248 Character    1 TAPTRLN (8)    Filename of last file
    0100  256 Character    1 TAPTRLT (8)    Filetype of last file
         Tape Drive Output
    0108  264 Signed       4 TAPLOGVD       Vdev for LOG - pseudo output
                                            console
    010C  268 Signed       2 *              Reserved
    010E  270 Signed       2 TAPRESPL       Length of response in TAPRESPS
                                            for logging - must immediately
                                            precede TAPRESPS
    0110  272 Character  240 TAPRESPS       Work area for responses by drive
         Working channel program - being built
              00000008       TAPBUFPG       8 Number pages in buffer -
                                            determines max tape block size.
              00000018       TAPMXCCW       3*TAPBUFPG CCW for descriptor,
                                            XAB, and data page per page
    0200  512 Dbl-Word     8 TAPCHPGM (0)   Start of channel program
    0200  512 Dbl-Word     8 TAPCCWMS (0)   Modeset CCW, if needed
    0200  512 Bitstring    1 TAPMSOP        Modeset CCW op code
    0201  513 Bitstring    1 * (3)          Flags and length field
    0204  516 Signed       4 TAPMSADR       Address if data transfer
    0208  520 Dbl-Word     8 TAPCCWHD       CCW for block header
    0210  528 Dbl-Word     8 TAPCCWW1       First write CCW for spool file
    0218  536 Dbl-Word     8 TAPCCWX (23)   All the rest Modeset + hdr + 3*8
                                            (desc + xab + data)
              000000D0       TAPCPLEN       *-TAPCHPGM Length of maximum CCW
                                            string
         List of pages locked for this I/O operation
    02D0  720 Signed       4 TAPLPTR        Current offset in page list
    02D4  724 Signed       4 *              Reserved
    02D8  728 Signed       4 TAPPLIST (14)  Pages locked for the current
                                            block
              00000038       TAPPLEN        *-TAPPLIST Length of list to copy
                                            or clear
    0310  784 Signed       4 *              End flag for PLIST - zero = end
    0314  788 Signed       4 *              Reserved - future IBM use
         Buffer for the header section of each block.
         Notes : The TAPHDENT section is based independently from the TAPBK and
         should follow all parts based on the primary TAPBK base register.
    0318  792 Dbl-Word     8 TAPSPHDR (0)   Define the contents of 1 tape
                                            record
    0318  792 Signed       4 TAPBLKID       ID for header of a blocked record
    031C  796 Signed       4 TAPBLKSZ       Size of this block
    0320  800 Dbl-Word     8 TAPTIME        Time stamp when command issued
              00000328       TAPHSLOT       *-TAPBK First entry slot
         Single header entry
    0328  808 Dbl-Word     8 TAPHDENT (0)   Each file entry - mapped by
                                            TAPSPHDR
    0328  808 Character    8 TAPHOWNR       File owner
    0330  816 Signed       4 TAPHSEQ        File sequence number
    0334  820 Signed       4 TAPHSYSI       System spool file ID when dumped
    0338  824 Signed       2 TAPHSPID       User spool file ID when dumped
              00000012       TAPHCOPY       *-TAPHDENT Portion to copy to
                                            next block
              0000033A       TAPHCLRS       * Start of portion to clear
    033A  826 Bitstring    1 TAPHFLG        File status flags
              1... ....      TAPHSPF        X'80' Spool file descriptor in
                                            block
              .1.. ....      TAPHXAB        X'40' XAB at least partially in
                                            block
              ..1. ....      TAPHDATA       X'20' Data pages in block
              ...1 ....      TAPHEOF        X'10' End of file with last data
                                            page
              .... 1...      TAPHVOLN       X'08' File continued from prev
                                            volume
              .... .1..      TAPHERR        X'04' DASD read error - page
                                            omitted
    033B  827 Bitstring    1 *              Reserved
    033C  828 Signed       4 TAPPAGNO       Rel page number of 1st data page
    0340  832 Signed       4 TAPHPCNT       Count of data pages in block
    0344  836 Signed       2 TAPHSEGC       Segment count (# parts on tape)
    0346  838 Signed       2 TAPMAPCT       Count of map pages
    0348  840 Signed       2 TAPHSOFF       Offset in block of SPFBK
                                            descriptor
    034A  842 Signed       2 TAPHXOFF       Offset in block of XAB, if any
    034C  844 Signed       2 TAPHDOFF       Offset in block of first data
    034E  846 Signed       2 TAPHRES        Reserved
         Header section portions
              00000028       TAPHLEN        *-TAPHDENT Size of one entry
              00000106       TAPHCLR        *-TAPHCLRS Portion to clear for
                                            next use
              00000128       TAPHDRSZ       *-TAPSPHDR Total header size to
                                            tape
         Sizing up the block
              00000440       TAPEND         * End of TAPBK
              00000440       TAPSIZE        *-TAPBK Size of the TAPBK

#### TAPBK Storage Layout

    *** TAPBK - SPXTAPE Tape Drive Control Block
    *
    *     +---------------------------+---------------------------+
    *   0 |         TAPNEXT           |         TAPCHPBK          |
    *     +---------------------------+---------------------------+
    *   8 |                       TAPIDENT                        |
    *     +---------------------------+---------------------------+
    *  10 |         TAPCVDEV          |         TAPVNUM           |
    *     +---------------------------+---------------------------+
    *  18 |         TAPRDEV           |        TAPVOLID-          |
    *     +-------------+-------------+------+------+------+------+
    *  20 |   -(01C)    |/////////////|:FLAG |:HFLAG|:OCFLG|//////|
    *     +-------------+-------------+------+------+------+------+
    *  28 |         TAPPAGWT          |         TAPFILWT          |
    *     +---------------------------+---------------------------+
    *  30 |          TAPSEQ           |         TAPORR13          |
    *     +---------------------------+---------------------------+
    *  38 |                                                       |
    *     =                       TAPPRGLK                        =
    *     |                                                       |
    *     +---------------------------+---------------------------+
    *  50 |         TAPPRGCT          |                           |
    *     +---------------------------+                           |
    *     |                       TAPTKTQ                         |
    *     |                           +---------------------------+
    *     |                           | 64
    *     +---------------------------+
    *
    *** TAPBK - SPXTAPE Tape Drive Control Block

    *** Overlay for TAPTKTQ in TAPBK
    *
    *                                 +---------------------------+
    *  50 ...                      54 |         TAPTKTQH          |
    *     +---------------------------+---------------------------+
    *  58 |         TAPTKTQT          |///////////////////////////|
    *     +---------------------------+---------------------------+
    *  60 |         TAPTKTQC          |         TAPCURHD          |
    *     +---------------------------+---------------------------+
    *  68 |                       TAPTKTS                         |
    *     |                                                       |
    *     +-------------------------------------------------------+
    *  78
    *
    *** Overlay for TAPTKTQ in TAPBK

    *** Overlay for TAPTKTS in TAPBK
    *
    *     +---------------------------+---------------------------+
    *  68 |         TAPTKTSH          |         TAPTKTST          |
    *     +---------------------------+---------------------------+
    *  70 |         TAPTKTCT          |///////////////////////////|
    *     +---------------------------+---------------------------+
    *  78 |          TAPSSQ           |         TAPCURTK          |
    *     +---------------------------+---------------------------+
    *  80 |         TAPCMSSQ          |         TAPCMCUR          |
    *     +---------------------------+---------------------------+
    *  88 |         TAPCMXAB          |         TAPLSTCW          |
    *     +---------------------------+---------------------------+
    *  90 |         TAPLLPTR          |         TAPLSTHD          |
    *     +---------------------------+---------------------------+
    *  98 |         TAPLBLKZ          |         TAPPGSCN          |
    *     +---------------------------+---------------------------+
    *  A0 |                       TAPLTIME                        |
    *     +---------------------------+---------------------------+
    *  A8 |         TAPRTCT           |         TAPCURCW          |
    *     +---------------------------+---------------------------+
    *  B0 |                                                       |
    *     =                       TAPLOCK                         =
    *     |                                                       |
    *     +---------------------------+---------------------------+
    *  C8 |         TAPTRLID          |         TAPSEQNO          |
    *     +---------------------------+---------------------------+
    *  D0 |         TAPBKCNT          |         TAPFILCT          |
    *     +---------------------------+---------------------------+
    *  D8 |         TAPDPGCT          |         TAPSPLPG          |
    *     +---------------------------+---------------------------+
    *  E0 |         TAPRETPL          |///////////////////////////|
    *     +---------------------------+---------------------------+
    *  E8 |                       TAPTRLOW                        |
    *     +---------------------------+---------------------------+
    *  F0 |         TAPTRLI           |///////////////////////////|
    *     +---------------------------+---------------------------+
    *  F8 |                       TAPTRLN                         |
    *     +-------------------------------------------------------+
    * 100 |                       TAPTRLT                         |
    *     +---------------------------+-------------+-------------+
    * 108 |         TAPLOGVD          |/////////////|  TAPRESPL   |
    *     +---------------------------+-------------+-------------+
    * 110 |                                                       |
    *     =                       TAPRESPS                        =
    *     |                                                       |
    *     +------+--------------------+---------------------------+
    * 200 |:MSOP |////////////////////|         TAPMSADR          |
    *     +------+--------------------+---------------------------+
    * 208 |                       TAPCCWHD                        |
    *     +-------------------------------------------------------+
    * 210 |                       TAPCCWW1                        |
    *     +-------------------------------------------------------+
    * 218 |                                                       |
    *     =                       TAPCCWX                         =
    *     |                                                       |
    *     +---------------------------+---------------------------+
    * 2D0 |         TAPLPTR           |///////////////////////////|
    *     +---------------------------+---------------------------+
    * 2D8 |                                                       |
    *     =                       TAPPLIST                        =
    *     |                                                       |
    *     +---------------------------+---------------------------+
    * 310 |///////////////////////////|///////////////////////////|
    *     +---------------------------+---------------------------+
    * 318 |         TAPBLKID          |         TAPBLKSZ          |
    *     +---------------------------+---------------------------+
    * 320 |                       TAPTIME                         |
    *     +-------------------------------------------------------+
    * 328 |                       TAPHOWNR                        |
    *     +---------------------------+---------------------------+
    * 330 |         TAPHSEQ           |         TAPHSYSI          |
    *     +-------------+------+------+---------------------------+
    * 338 |  TAPHSPID   |:HFLG |//////|         TAPPAGNO          |
    *     +-------------+------+------+-------------+-------------+
    * 340 |         TAPHPCNT          |  TAPHSEGC   |  TAPMAPCT   |
    *     +-------------+-------------+-------------+-------------+
    * 348 |  TAPHSOFF   |  TAPHXOFF   |  TAPHDOFF   |  TAPHRES    |
    *     +-------------+-------------+-------------+-------------+
    * 350
    *
    *** Overlay for TAPTKTS in TAPBK

#### TAPBK Cross Reference

    Symbol         Dspl Value
    -------------- ---- -----
    TAPABORT       0026 20
    TAPAPPWT       0024 02
    TAPBKCNT       00D0
    TAPBLKID       0318
    TAPBLKSZ       031C
    TAPBUFPG       0110 00000008
    TAPCCWHD       0208
    TAPCCWMS       0200
    TAPCCWW1       0210
    TAPCCWX        0218
    TAPCHPBK       0004
    TAPCHPGM       0200
    TAPCMCUR       0084
    TAPCMSSQ       0080
    TAPCMXAB       0088
    TAPCPLEN       0218 000000D0
    TAPCURCW       00AC
    TAPCURHD       0064
    TAPCURTK       007C
    TAPCVDEV       0010
    TAPDPGCT       00D8
    TAPEMPT        0025 04
    TAPEND         034E 00000440
    TAPEOT         0024 01
    TAPERR         0025 10
    TAPFILCT       00D4
    TAPFILWT       002C
    TAPFLAG        0024
    TAPHCANC       0025 20
    TAPHCLR        034E 00000106
    TAPHCLRS       0338 0000033A
    TAPHCOPY       0338 00000012
    TAPHDATA       033A 20
    TAPHDENT       0328
    TAPHDET        0025 02
    TAPHDOFF       034C
    TAPHDRSZ       034E 00000128
    TAPHEFND       0025 40
    TAPHEND        0025 80
    TAPHEOF        033A 10
    TAPHERR        033A 04
    TAPHFLAG       0025
    TAPHFLG        033A
    TAPHLEN        034E 00000028
    TAPHOWNR       0328
    TAPHPCNT       0340
    TAPHRES        034E
    TAPHSEGC       0344
    TAPHSEQ        0330
    TAPHSLOT       0320 00000328
    TAPHSOFF       0348
    TAPHSPF        033A 80
    TAPHSPID       0338
    TAPHSYSI       0334
    TAPHVOLN       033A 08
    TAPHXAB        033A 40
    TAPHXOFF       034A
    TAPIDENT       0008
    TAPLABCK       0026 10
    TAPLBLKZ       0098
    TAPLEOT        0025 08
    TAPLLPTR       0090
    TAPLOCK        00B0
    TAPLOGO        0026 80
    TAPLOGVD       0108
    TAPLPTR        02D0
    TAPLSTCW       008C
    TAPLSTHD       0094
    TAPLTIME       00A0
    TAPMAPCT       0346
    TAPMSADR       0204
    TAPMSOP        0200
    TAPMXCCW       0110 00000018
    TAPNEXT        0000
    TAPNOMNT       0024 80
    TAPNTALY       0024 20
    TAPOCFLG       0026
    TAPORR13       0034
    TAPPAGNO       033C
    TAPPAGWT       0028
    TAPPGSCN       009C
    TAPPLEN        02D8 00000038
    TAPPLIST       02D8
    TAPPOS         0026 08
    TAPPRGCT       0050
    TAPPRGLK       0038
    TAPRDEV        0018
    TAPRESPL       010E
    TAPRESPS       0110
    TAPRETPL       00E0
    TAPRTCT        00A8
    TAPSEQ         0030
    TAPSEQNO       00CC
    TAPSIZE        034E 00000440
    TAPSKIP        0024 40
    TAPSOMER       0026 40
    TAPSPHDR       0318
    TAPSPLPG       00DC
    TAPSSQ         0078
    TAPSTRTD       0024 10
    TAPTIME        0320
    TAPTKTCT       0070
    TAPTKTQ        0054
    TAPTKTQC       0060
    TAPTKTQH       0054
    TAPTKTQT       0058
    TAPTKTS        0068
    TAPTKTSH       0068
    TAPTKTST       006C
    TAPTRAIL       00C8
    TAPTRLI        00F0
    TAPTRLID       00C8
    TAPTRLN        00F8
    TAPTRLOW       00E8
    TAPTRLT        0100
    TAPTRRD        0025 01
    TAPVNUM        0014
    TAPVOLID       001C
    TAPWRTR        0024 04

This information is based on z/VM V4R3.0. Last updated on 30 Apr 2002 at 18:05:14 EDT.
Copyright IBM Corporation, 1990, 2002