SKA - SKP subtask control area

      CONTROL BLOCK NAME = DFHSKAPS
      DESCRIPTIVE NAME = CICS TS (SKP) Subtask Control Area.
           Licensed Materials - Property of IBM
            Restricted Materials of IBM 
           5655-Y04
           (C) Copyright IBM Corp. 1983, 1996 
      FUNCTION =
           Describe 'per-subtask' storage definition.
           DFHSKAPS belong to the General Purpose Subtasking facility
           of CICS.
           Each instance of this control block describes the state
           of one subtask.
      LIFETIME =
           That of CICS static storage.
      STORAGE CLASS = CICS static storage.
      LOCATION =
           Located in the static storage for module DFHSKP.
      INNER CONTROL BLOCKS = None.
      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.
                          SUBTASK CONTROL AREA
Table 1.
Offset Hex Type Len Name (Dim) Description
(0) STRUCTURE 176 DFHSKAPS Subtask control area
         SKASKENA contains the entry point of DFHSKE - the subtask
         executor. This field must remain at the start of DFHSKAPS.
         It is set by SKC and referenced by SIP on MVS, and by SKC on
         DOS.
(0) ADDRESS 4 SKASKENA DFHSKENA entry point
         SKASTGP contains the address of automatic storage to be used
         by SKE.
(4) ADDRESS 4 SKASTGP add of subtask auto storage
         SKAQUES contain the WQE queues for the subtask. SKAWORKQ
         contains WQEs as yet unprocessed by the subtask. SKAPROGQ
         contains WQEs currently being processed. SKAWAITQ contains
         WQEs that have issued a DFHSK CTYPE= WAIT macro.
(8) CHARACTER 12 SKAQUES WQE queues for subtask
(8) ADDRESS 4 SKAWORKQ work
(C) ADDRESS 4 SKAPROGQ in_progress
(10) ADDRESS 4 SKAWAITQ waiting
         SKAINWQE contains the address of the WQE currently being
         processed by SKE.
(14) ADDRESS 4 SKAINWQE WQE being processed
         SKAEWRK is the work ECB for the subtask. It is posted by SKM
         when it adds a WQE onto the work queue. When SKE has no work
         to do, it waits on this ECB.
(18) UNSIGNED 4 SKAEWRK work ECB for subtask
         SKASCOMP is the subtask completion ECB. It is waited on by
         SKC, and is posted by the operating system when the subtsk
         terminates.
(1C) CHARACTER 4 SKASCOMP subtask completion ECB
         SKADTECB is posted by SKC when either it DETACHes the
         subtask(MVS) or the subtask DETACHes itself(DOS). SKM,
         processing a DFHSK CTYPE=TERMINATE waits for subtasks to go
         away, before allowing DFHSTP to continue.
(20) UNSIGNED 4 SKADTECB MVS DETACH issued for subtask
         SKAINECB is an ECB that is posted by the subtask to indicate
         it has been attached. SKC waits for this to be posted before
         assuming the subtask is running.
(24) UNSIGNED 4 SKAINECB ECB for sub initialisation
         SKASRETC contains the completion code of the subtask and is
         used to indicate to SKC the type of completion.
(28) UNSIGNED 1 SKASRETC subtask completion code
         SKAESFCD contains the completion code of an ESTAE or STXIT
         AB macro if not zero. SKC examines this field and outputs it
         in a message if the exit macro failed in the subtask.
(29) UNSIGNED 1 SKAESFCD ESTAE/STXIT failure code
         SKAFAILS is a count of failures that occur when SKE code is
         executing (not SK exit code). It is set and referenced by
         SKE.
(2A) HALFWORD 2 SKAFAIL count of our code failures
         SKAFLAG1 IS A FLAG BYTE. UPDATED BY DFHSKC ONLY
(2C) BIT(8) 1 SKAFLAG1 flags - TRUE means..
         SKAFLAG1 HAS BEEN SPLIT OVER FLAG1,2 AND 3
         TO OVERCOME MULTIPLE PROCESSORS UPDATING
         SHARED STORAGE CONCURRENTLY.
         Following 5 flags are spare.
(2C) 1... ....   * moved to FLAG2
         deleted by APAR
         deleted by APAR
(2C) .1.. ....   * moved to FLAG2
         deleted by APAR
         deleted by APAR
         deleted by APAR
(2C) ..1. ....   * moved to FLAG2
         deleted by APAR
         deleted by APAR
(2C) ...1 ....   * moved to FLAG3
         ----------------------------- deleted by APAR
         FOLLOWING FLAG IS SPARE. deleted by APAR
(2C) .... 1...   * reserved
         SKASINIT indicates that this subtask has been initialised
         and is running.
(2C) .... .1..   SKASINIT subtask is initialised
         deleted by APAR
         Following flag is spare.
(2C) .... ..1.   * moved to FLAG2
         SKASDEAD indicates the subtask has encountered an error
         preventing further execution. It is set by SKC and
         referenced by SKM.
(2C) .... ...1   SKASDEAD subtask is dead
         SKAFLAG2 IS A FLAG BYTE UPDATED BY DFHSKE ONLY
(2D) BIT(8) 1 SKAFLAG2 FLAGS - TRUE MEANS..
         SKARGPSW indicates the presence of the regs and
         PSW at the time of failure in DFHSKAPS. It is
         set by the SKE exit code, and tested thereafter
         in SKE mainline code.
(2D) 1... ....   SKARGPSW regs&psw are in SKA
         SKAABCP indicates the presence of the operating
         system abend code in DFHSKAPS.
(2D) .1.. ....   SKAABCP abend code is in SKA
         SKARUNNG is set by SKE on entry, and turned off
         on exit from SKE. SKC references this field to
         see if the subtask was running when it
         terminated.
(2D) ..1. ....   SKARUNNG subtask running
         Following 3 flags are spare.
(2D) ...1 11..   * spare flags
         SKAUSCOD indicates this subtask is currently
         executing an SK exit routine.
(2D) .... ..1.   SKAUSCOD user code in progress
         Following flag is spare.
(2D) .... ...1   * spare flag
         SKAFLAG3 IS A FLAG BYTE UPDATED BY DFHSKM ONLY
(2E) BIT(8) 1 SKAFLAG3 FLAGS - TRUE MEANS..
         Following 3 flags are spare.
(2E) 111. ....   * spare flags
         SKAQUIES is set by SKM to indicate that the
         subtask should terminate processing.
(2E) ...1 ....   SKAQUIES quiesce requested
         Following 4 flags are spare.
(2E) .... 1111   * spare flags
         SKAMWLST is a list of pointers used for an operating system
         multiple wait. It is used by DFHSKE. On MVS the list is
         terminated by the top bit in the last ECB ptr being on, and
         on DOS the byte after the last ECB ptr is non-zero ('FF'X).
(30) ADDRESS 4 SKAMWLST (4294967302:456215728) multiple WAIT list
(30) CHARACTER 1 SKAMFB first byte of each address
(30) 1... ....   SKAMEOL first bit thereof
         SKASAV13 is set by SKE on entry to point to the MVS save
         area.
(48) UNSIGNED 4 SKASAV13 ADDR(MVS save area)
         SKAPICA is an MVS Program Interrupt Control Area used by
         SKE.
(4C) UNSIGNED 4 SKAPICA (4294967300:456208384) subtask MVS PICA (ESPIE)
         SKAABC contains the operating system abend code, and is used
         by SKE. An existance bit is in SKAFLAG1.
(5C) CHARACTER 4 SKAABC operating system abend code
         SKAPSAV contains the registers at time of failure, and is
         used by SKE. An existance bit is in SKAFLAG1.
(60) CHARACTER 64 SKAPSAV program check save area
(60) FULLWORD 4 * (4294967312:456208384) registers
         SKAPSW contains the PSW at time of failure, and is used by
         SKE. An existance bit is in SKAFLAG1.
(A0) CHARACTER 8 SKAPSW EC mode program check PSW
         SKAINT contains extran interrupt information, and is used by
         SKE.
(A8) CHARACTER 8 SKAINT interrupt information
(A8) HALFWORD 2 SKAINTL instruction length
(AA) HALFWORD 2 SKAINTC instruction code
(B0) CHARACTER 0 SKAEND end of DFHSKAPS