VSWA - FC VSAM work area

      CONTROL BLOCK NAME = DFHVSWAS
      DESCRIPTIVE NAME = CICS/ESA (FC) VSAM WORK AREA
           Licensed Materials - Property of IBM
            Restricted Materials of IBM 
           5655-Y04
           (C) Copyright IBM Corp. 1982, 2008 
      FUNCTION =
           The VSWA is the File Control VSAM Work Area.
           The VSAM Work Area is created by the File Control Program
           DFHFCVS at the start of processing of a VSAM request
           (GET, PUT) or series of requests (GET UPDATE - PUT UPDATE,
           STARTBR - READNEXT - END BROWSE, etc.) and contains
           information related to the request. The VSWA consists of
           a CICS part and a VSAM part. The VSAM part is the
           VSAM RPL that represents the request to VSAM. The VSWA
           is deleted when the request is terminated.
      LIFETIME =
           Created by DFHFCVS at the start of a request or series of
           requests. Destroyed by FCVS when the request/series ends.
      STORAGE CLASS =
           Above 16M line.
      LOCATION =
           VSWA is pointed to by the field FRT_WORK_AREA_ADDRESS in
           the File Request Thread Element (FRTE).
      INNER CONTROL BLOCKS =
           The VSWA contains within it (at offset 8) the VSAM
           Request Parameter List (RPL).
      NOTES :
       DEPENDENCIES = S/370
       RESTRICTIONS = None.
       MODULE TYPE = Control block definition
     ------------------------------------------------------------------
      EXTERNAL REFERENCES = None
        DATA AREAS = None.
        CONTROL BLOCKS = None.
        GLOBAL VARIABLES (Macro pass) = None.
                        VSAM WORK AREA
Table 1.
Offset Hex Type Len Name (Dim) Description
(0) STRUCTURE * DFHVSWA VSAM work area
(0) CHARACTER 8 VSWA_SAA This section replaces the old storage accounting area
(0) CHARACTER 1 VSWACLS Stg class
(1) CHARACTER 1 * Reserved
(2) UNSIGNED 2 VSWALNTH Length of VSWA
(4) ADDRESS 4 VSWANXT Next VSWA on free chain
(8) CHARACTER 76 VSWARPL VSAM Request Parameter List
(8) FULLWORD 4 VSWAIDWD RPL identification word
(8) UNSIGNED 1 VSWAID RPL identifier
(9) UNSIGNED 1 VSWASTYP RPL subtype
(A) UNSIGNED 1 VSWAREQ Request type
(B) UNSIGNED 1 VSWARLEN RPL length
(C) ADDRESS 4 VSWAPLHP PLH address
(10) ADDRESS 4 VSWAECB Event control block (ECB) or address of ECB if VSWAECBS = '1'B
(10) CHARACTER 4 VSWAECBC ECB as string
(14) CHARACTER 4 VSWARESP RPL response bytes
(14) UNSIGNED 1 VSWASTAT RPL status flags
(15) CHARACTER 3 VSWAFDBK RPL feedback area
(15) UNSIGNED 1 VSWARTNC RPL return code
(16) CHARACTER 2 VSWACNDC RPL condition code
(16) UNSIGNED 1 VSWACMPN Component issuing the code
(17) UNSIGNED 1 VSWAERRC Error Code
(18) HALFWORD 2 VSWARKYL RPL key length
(1A) HALFWORD 2 VSWASTID RPL string identifier
(1C) ADDRESS 4 VSWACCHR Control character address
(20) ADDRESS 4 VSWAACB ACB address
(24) ADDRESS 4 VSWATCB TCB address
(28) ADDRESS 4 VSWAREA Area Address
(2C) ADDRESS 4 VSWAARG Argument address
(30) CHARACTER 4 VSWAOPTC Option codes
(30) UNSIGNED 1 VSWAOPT1 Option code byte 1
(30) 1... ....   * Reserved
(30) .1.. ....   VSWADIR Direct search access
(30) ..1. ....   VSWASEQ Sequential access
(30) ...1 ....   * Reserved
(30) .... 1...   VSWAASY Asynchronous request
(30) .... .11.   * Reserved
(30) .... ...1   VSWAECBS VSWAECB has ADDR(ECB)
(31) UNSIGNED 1 VSWAOPT2 Option code byte 2
(31) 1111 11..   * Reserved
(31) .... ..1.   VSWAUPD Update Processing
(31) .... ...1   * Reserved
(32) UNSIGNED 1 VSWAOPT3 Option code byte 3
(33) UNSIGNED 1 VSWAOPT4 Option code byte 4
(34) ADDRESS 4 VSWANRPL Next RPL Address
(38) FULLWORD 4 VSWALEN Record length
(3C) FULLWORD 4 VSWABUFL Buffer length
(40) FULLWORD 4 * Reserved
(44) CHARACTER 8 VSWARBAR RBA return field
(44) FULLWORD 4 *
(48) UNSIGNED 4 VSWALRBA Record RBA
(4C) UNSIGNED 1 * Reserved
(4D) UNSIGNED 1 VSWACTIV Check not issued
(4E) HALFWORD 2 VSWAEML Error message length
(50) ADDRESS 4 VSWAEMA Error message area address
(54) CHARACTER 8 VSWA_SUSPEND_CHN VSWA suspend chain
(54) ADDRESS 4 VSWA_NEXT_ACT - Next in chain
(58) CHARACTER 4 VSWA_TASK_TOK - Task token END OF FIXED SECTION
         VARIABLE SECTION
(5C) CHARACTER 20 VSWAVRS0 Variable section 0
(5C) ADDRESS 4 VSWAFCT File control table entry addr
(60) ADDRESS 4 VSWA_RECORD_LOCK Addr record lock area
(64) ADDRESS 4 VSWA_DELETE_LOCK Addr delete lock area
(68) HALFWORD 2 VSWAENQL Length of ENQ argument
(6A) HALFWORD 2 VSWA_BKL Base key/RBA/RRN length
(6C) ADDRESS 4 * Reserved
(70) CHARACTER 12 VSWAVRS2 Variable section 2
(70) ADDRESS 4 VSWARIF Record ID field address
(74) CHARACTER 1 VSWAFLG1 Flag byte 1
(74) 1... ....   VSWABGEN Generic browse
(74) .1.. ....   VSWABRBA RBA browse
(74) ..1. ....   VSWABIP Browse in progress
(74) ...1 ....   VSWA_SEQUENTIAL Browse positioned for SEQ
(74) .... 1...   VSWA_XRBA_BROWSE XRBA Browse
(74) .... .1..   VSWA_DT_WAIT Data table open is waiting for this request to complete
(74) .... ..1.   VSWA_080X14 Index and Base maybe out of sync
(74) .... ...1   VSWA_INFLIGHT VSAM request is in flight
(75) CHARACTER 1 VSWAFLG2 Flag byte 2
(75) 1... ....   VSWA_SUSPENDED Resume is required
(75) .1.. ....   VSWA_NQ_WAIT_REQD NQ/busy abt to WAIT
(75) ..1. ....   VSWA_PURGE_PROTECT Start Purge Prot
(75) ...1 ....   VSWA_REPAIR Reposition needed
(75) .... 1...   VSWA_RETRY_USING_BASE Use Base ACB
(75) .... .111   * Reserved
(76) HALFWORD 2 VSWAKEYL Key length
(78) ADDRESS 4 * Reserved
(7C) CHARACTER 68 VSWAVRS3 Variable section 3
(7C) ADDRESS 4 VSWACHN General VSWA chain field
(80) ADDRESS 4 VSWANEXT Pointer to next VSWA in base cluster chain.
(84) ADDRESS 4 VSWAPREV Pointer to previous VSWA in base cluster chain.
(88) ADDRESS 4 VSWAXCHN Pointer to next VSWA waiting for my owner.
(8C) ADDRESS 4 VSWAOWND Pointer to VSWA chain for me.
(90) ADDRESS 4 VSWAOWNR Pointer to VSWA for which I am waiting.
(94) UNSIGNED 1 VSWA_VICTIM_COUNT No. of attempts to kill this VSWA
(95) CHARACTER 1 VSWAIND VSAM work area indicators
(95) 1... ....   VSWAEREQ VSAM ENDREQ is required
(95) .1.. ....   VSWABRZI This is a browse VSWA
(95) ..1. ....   VSWAMASS Mass insert VSWA
(95) ...1 ....   VSWAFRST First request in BROWSE or MASS INSERT sequence or single ADD.
(95) .... 1...   VSWASTRG VSAM string acquired
(95) .... .1..   * Reserved
(95) .... ..1.   VSWALSRP Path browse request to LSR file.
(95) .... ...1   VSWARLO Record lock only update
(96) HALFWORD 2 VSWASTG Number of strings allocated to access request for a file using LSR.
(98) FULLWORD 4 VSWARQST VSAM Request code
(9C) CHARACTER 4 VSWA_JECN System log event number
(A0) CHARACTER 4 VSWA_SAVE_OPTC Saved RPL option bytes
(A4) ADDRESS 4 VSWASV12 TCA address
(A8) ADDRESS 4 VSWA_FRTE Address of related FRTE
(AC) HALFWORD 2 VSWA_REQD_STRINGS Number of strings required for a request (LSR only)
(AE) BIT(8) 1 *
(AE) 1... ....   VSWA_REM Need to release exclusive conflict resources.
(AE) .1.. ....   VSWA_MASS_INSERT Mass insert
(AE) ..1. ....   VSWA_ADD_DELETE Single add or delete
(AE) ...1 ....   VSWALOCK End of range id. is locked and must be released
(AE) .... 1...   VSWA_ESDS_LOCK ESDS WRITE lock held
(AE) .... .1..   VSWA_UPDATE Performing an update
(AE) .... ..1.   VSWA_NONRECOV_LOCK Record lock held for duration of read update of non-recoverable file.
(AE) .... ...1   VSWA_SET_BROWSE 1st after STARTBR/RESETBR
(AF) BIT(8) 1 *
(AF) 1... ....   VSWA_0890_POST DFHFCVR is waiting for this request to complete. Set by DFHFCVR to indicate its interest in completion of request
(AF) .1.. ....   VSWA_BACKWARDS Backward browse
(AF) ..11 1111   * Reserved
(B0) ADDRESS 4 VSWA_DATA_BUFFER1 1st work-buffer address
(B4) ADDRESS 4 VSWA_DATA_BUFFER2 2nd work-buffer address
(B8) HALFWORD 2 VSWA_LAST_LEN Last specified keylength
(BA) HALFWORD 2 VSWA_LOG_LENGTH Length for logging
(BC) CHARACTER 4 VSWA_SUSPEND_TOKEN Suspend token for exclusive control conflict.
         Ensure 32 byte boundary for dump viewing
(C0) CHARACTER 288 VSWA_TRACE_TABLE
(C0) CHARACTER 28 VSWA_TRACE_DIAGS Diags for this task
(C0) CHARACTER 4 VSWA_TASKID owning taskid
(C4) CHARACTER 4 VSWA_TRANID owning tranid
(C8) CHARACTER 4 VSWA_XTASKID taskid of excl ctrl conflict owning VSWA
(CC) CHARACTER 4 VSWA_XTRANID tranid of excl ctrl conflict owning VSWA
(D0) CHARACTER 8 VSWA_SUSP last suspend call
(D8) UNSIGNED 1 VSWA_DEADLOCK_RSN deadlock reason
(D9) CHARACTER 3 * Spare
(DC) ADDRESS 4 VSWA_TRACE_NEXT Next trace entry
(E0) CHARACTER 0 VSWA_TRACE_START Start of trace table
(E0) CHARACTER 32 VSWA_TRACE_RECORD (7) Trace table
(1C0) CHARACTER 0 VSWA_TRACE_END End of trace table
    We used to have 8 trace entries above. The last one was split
    off and is now used to collect the parameters of the last
    call to UPADEXIT. The layout of this is below.
(1C0) CHARACTER 32 VSWA_TRACE_UPAD UPAD data
(1C0) CHARACTER 8 VSWA_TRACE_UPAD_TOD TOD
(1C8) CHARACTER 24 VSWA_TRACE_UPAD_DATA Rest of entry
(1C8) ADDRESS 4 VSWA_TRACE_UPADRPLA RPL address
(1CC) ADDRESS 4 VSWA_TRACE_UPADACBA ACB address
(1D0) ADDRESS 4 VSWA_TRACE_UPADECBA ECB address
(1D4) ADDRESS 4 VSWA_TRACE_UPADPRTN POST return code
(1D8) ADDRESS 4 VSWA_TRACE_UPAD_RSV reserved
(1DC) CHARACTER 1 VSWA_TRACE_UPADTYPE X type(Wait/Post)
(1DD) CHARACTER 3 * unused
(1E0) CHARACTER * VSWADBA End of fixed part of VSWA
     Reference key copy.
(1E0) CHARACTER * VSWAXKEY Reference key
       Extension for base key copy.
Table 2.
Offset Hex Type Len Name (Dim) Description
(0) STRUCTURE * VSWAENID Enqueue identifier
(0) ADDRESS 4 VSWABCAD Addr of base cluster block
(4) CHARACTER * VSWABKEY Primary key of record
Table 3.
Offset Hex Type Len Name (Dim) Description
(0) STRUCTURE 32 VSWA_TRACE
(0) CHARACTER 8 VSWAT_TOD TOD High Word
(8) ADDRESS 4 VSWAT_VSWAFCT FCT address
(8) CHARACTER 1 * Hi bit used for
(8) 1... ....   VSWAT_BASE_RETRY retry using base
(C) FULLWORD 4 VSWAT_W2
(C) CHARACTER 1 VSWAT_VSWAOPT1 Opt code 1
(D) CHARACTER 1 VSWAT_VSWAOPT2 Opt code 2
(E) CHARACTER 1 VSWAT_VSWAOPT3 Opt code 3
(F) BIT(8) 1 VSWAT_VSWARQST VSAM request code
(10) CHARACTER 4 VSWAT_VSWA_TASKID Task issuing request
(14) CHARACTER 4 VSWAT_VSWARESP FFFFFFFFx if inflight
(14) UNSIGNED 1 VSWAT_VSWASTAT RPL status flags
(15) UNSIGNED 1 VSWAT_VSWARTNC RPL return code
(16) UNSIGNED 1 VSWAT_VSWACMPN Component issuing code
(17) UNSIGNED 1 VSWAT_VSWAERRC Error Code
(18) ADDRESS 4 VSWAT_VSWA_PLH PLH address
(1C) ADDRESS 4 VSWAT_VSWA_TCB TCB address
(20) CHARACTER 0 *

Constants

Table 4.
Len Type Value Name Description
4 DECIMAL 7 VSWAT_NRECS # trace entries
4 DECIMAL 32 VSWAT_SIZE Size of entries
   Values of VSWA_DEADLOCK_RSN for deadlock handling
   We decide whether to terminate our task or the task
   that we are in deadlock with (the victim)
   The decision is based on whether either task has priority
   This table describes the options
1 DECIMAL 0 VSWA_DR_KILL_VICTIM
1 DECIMAL 1 VSWA_DR_NO_VICTIM
1 DECIMAL 2 VSWA_DR_MULTIPLE_ OFFENDER
1 DECIMAL 3 VSWA_DR_VICTIM_BROKE_ AIX
1 DECIMAL 4 VSWA_DR_BOTH_TASKS_ NORMAL