LDVBK Back to Index page
 
Prolog 
Control Block Contents 
   LDVBK DSECT
Storage Layout 
Cross Reference (Contains links to field and bit definitions)
Programming Interface Information:
This information is NOT intended to be
used as Programming Interfaces of z/VM.


  LDVBK Prolog Top of page
 
 NAME       : HCPLDVBK
 DESCRIPTION: ISFC Link Device Extension
 DSECT      : LDVBK
 FUNCTION   :
              This structure acts as an extension of the RDEV
              for an ISFC link device.  One LDVBK exists for
              each device that is attached to ISFC.  One or more
              link devices (LDVBKs) may be associated with the
              same link (LNKBK).
 LOCATED BY :
              LNKDVTBL  (pointer) to the chain of LDVBK structures
              associated with this link.  The chain is
              linked by LDVFPNT and LDVBPNT pointers.
              RDEVCFDV  (pointer).
 CREATED BY :
              Operation of the 'ACTIVATE ISLINK' command.
 DELETED BY :
              Operation of the 'DEACTIVE ISLINK' command.
 SERIALIZED :
              - LDVLKWRD is held Exclusive to update these fields.
              - LDVLKWRD is held Shared or Exclusive to reference
              these fields.
              - LDVLKWRD may be held (exclusive) across some calls
              as LDVLKWRD ownership follows a given task.
              - LDVINUSE (TS lock) is obtained (NO SPIN) to indicate
              the device is busy.  If the TS fails, the device is
              presumed to be busy with some other task.  If the
              TS suceeds, a new data transfer operation may be
              performed before resetting LDVINUSE.
              - Exceptions are noted below.
 RELOCATION CONSIDERATIONS : None
 
 
  LDVBK Control Block Content Top of page
 

 LDVBK DSECT Top of page
Hex Dec Type/Val Lng Label (dup) Comments ---- ---- --------- ---- -------------- -------- 0000 0 Structure LDVBK ISFC Link Device Extension Device identification and linkage. 0000 0 Character 4 LDVDEVID Printable hex device number 0004 4 Signed 4 LDVDEVNO Real device address 0008 8 Address 4 LDVLNKBK Base LNKBK addr (Hold RDEV lock) 000C 12 Character 4 LDVTYPE Link Type (e.g. FCTC) 0010 16 Address 4 LDVRDEV RDEV address 0014 20 Address 4 LDVEXTBK Pointer to CTCBK (LNKDRV00) Device table pointers (LDVFPNT and LDVBPNT). When this device is disconnected (LDVLKWRD==0) these pointers link to other devices in the Disconnected Device chain at HCPBUTDV (serialized by the ISFC Global Lock). When this device is connected (LDVLKWRD==nonzero) these pointers link to other devices belonging to the same LNKBK (serialized by the LNKLKWRD). 0018 24 Address 4 LDVFPNT Pointer to next LDVBK 001C 28 Address 4 LDVBPNT Pointer to prev LDVBK When LDVDFNOD is not null, it is the defined NODEID. If the actual remote NODEID does not match the defined (expected) NODEID, this device is unuseable. 0020 32 Character 8 LDVDFNOD Defined Node ID LDVUSER records the VM userid that most recently activated or deactivated this device. 0028 40 Character 8 LDVUSER Command invoker Link device lock (LKWRD). 0030 48 Bitstring 24 LDVLKWRD LKWRD for device configuration Remote Node Information (only valid for type FCTC). These fields are serialized by LDVLKWRD. 0048 72 Bitstring 8 LDVRMVER Remote Driver Version 0050 80 Bitstring 8 LDVRMCAP Remote Driver Capabilities 0058 88 Character 8 LDVRMNOD Remote Node ID 0060 96 Character 4 LDVRMDEV Remote Device Address 0064 100 Signed 2 LDVRMMFL Remote Maximum Frame Length 0066 102 Character 18 LDVRMUID Remote Identifier 0078 120 Signed 2 LDVBUFCT Remote buffer count (LNKDRV00) 007A 122 Signed 2 LDVRFCTR Outstanding reference counter (the number of tasks that need this LDVBK but do NOT currently hold LDVLKWRD) 007C 124 Bitstring 1 LDVINUSE TS latch for data transfer 007D 125 Bitstring 1 LDVREASON Reason device reset 00000001 LDV_RSNRESET 1 LDV_RSNRESET - Device reset 00000002 LDV_RSNDEACT 2 LDV_RSNDEACT - Device deactivated 00000003 LDV_RSNMIH 3 LDV_RSNMIH - Missing Interrupt detected 00000004 LDV_RSNDUPID 4 LDV_RSNDUPID - Duplicate nodeid detected 00000005 LDV_RSNDRIVER 5 LDV_RSNDRIVER - Incompatible driver detected 00000006 LDV_RSNLINK 6 LDV_RSNLINK - Link Level reset 007E 126 Signed 2 LDVRMDID Remote Devno Device status. 0080 128 Bitstring 1 LDVDVFLG Device Flag 1... .... LDVDVINI X'80' LDVDVINI - Initializing device .1.. .... LDVDVDET X'40' LDVDVDET - Detached device ..1. .... LDVDVBUF X'20' LDVDVBUF - Device buffer is active ...1 .... LDVDVDSC X'10' LDVDVDSC - Disconnecting device 0081 129 Bitstring 1 LDVSETUP Initialization stages 1... .... LDVRESET X'80' LDVRESET - I/O reset was done .1.. .... LDVEXTMD X'40' LDVEXTMD - Extended Mode was set ..1. .... LDVWRXID X'20' LDVWRXID - Write XID was done ...1 .... LDVRDXID X'10' LDVRDXID - Read XID was done 0082 130 Bitstring 1 LDVSTAT Device status 00000000 LNKDVCTL 0 LNKDVCTL - Device Control mode 00000000 LNKINIT 0 LNKINIT - Initialization in progress 00000001 LNKIDLE 1 LNKIDLE - Idle 00000002 LNKBUSY 2 LNKBUSY - Busy 00000003 LNKWRITE 3 LNKWRITE - Write in progress 00000004 LNKREAD 4 LNKREAD - Read in progress 00000005 LNKRESET 5 LNKRESET - Reset in progress 00000006 LNKATTN 6 LNKATTN - Handling link attention 00000007 LNKFATAL 7 LNKFATAL - Fatal I/O on link 00000008 LNKDEACT 8 LNKDEACT - Deactivation in progress LDVMODE indicates the current operating mode. LDVDISC This side (the X-SIDE) is disconnected from the driver on the other side (the Y-SIDE). We need to initialize (or reset) our conversation with that driver. LDVINIMD Initialization is in progress for this device. We are involved in establishing a connection with the Y-SIDE driver. When we are in synch with the Y-SIDE driver, we can move to LDVLINK mode to create (or join) a logical link. LDVLINK We are connected to a Y-SIDE driver, and creating (or joining) a logical link. LDVIDLE We are connected to a logical link (LNKBK) and ready for data transfer. LDVXFRMD We are involved in a data transfer sequence. Normally we go to LDVIDLE mode when the sequence is done. LDVTRMMD We are terminating the prior mode for this device. When termination is complete, this device returns to LDVDISC mode (or is removed). 0083 131 Bitstring 1 LDVMODE Operational Mode 00000000 LDVDISC 0 LDVDISC - Disconnected from neighbor 00000001 LDVINIMD 1 LDVINIMD - Initialization in progress 00000002 LDVLINK 2 LDVLINK - Link formation in progress 00000003 LDVIDLE 3 LDVIDLE - Idle (ready for work) 00000004 LDVXFRMD 4 LDVXFRMD - Data Transfer Mode 00000005 LDVCTLMD 5 LDVCTLMD - Device Control Mode 00000006 LDVTRMMD 6 LDVTRMMD - Termination Mode 0084 132 Bitstring 1 LDVCONN Device connection status 1... .... LDVREADY X'80' LDVREADY - Interface is ready .1.. .... LDVDRVID X'40' LDVDRVID - Known driver level (LDVLEVEL) ..1. .... LDVLINIT X'20' LDVLINIT - Started by local node ...1 .... LDVRINIT X'10' LDVRINIT - Started by remote node .... 1... LDVRSTOP X'08' LDVRSTOP - Stopped by remote node 0085 133 Bitstring 1 LDVERROR Most recent error condition 00000000 LDV_NONE 0 LDV_NONE - No error 00000001 LDV_NOTREADY 1 LDV_NOTREADY - NOTREADY (Y-SIDE) 00000002 LDV_READSEQ 2 LDV_READSEQ - Read out of sequence 00000003 LDV_EOFSEQ 3 LDV_EOFSEQ - EOF out of sequence 00000004 LDV_BADLEN 4 LDV_BADLEN - Bad frame length 00000005 LDV_BADTYPE 5 LDV_BADTYPE - Bad frame type 00000006 LDV_TIMEOUT 6 LDV_TIMEOUT - I/O Timeout 00000007 LDV_STOPPED 7 LDV_STOPPED - Stopped by Y-SIDE 00000008 LDV_DRIVER 8 LDV_DRIVER - Incompatible Y-SIDE driver 00000009 LDV_DUPLICATE 9 LDV_DUPLICATE - Duplicate Node 0000000A LDV_IOMISC 10 LDV_IOMISC - Miscellaneous I/O error 0000000B LDV_FATAL 11 LDV_FATAL - Fatal I/O error Notes : LDVLEVEL is serialized by LDVLKWRD. 0086 134 Bitstring 1 LDVLEVEL Device Driver Level 00000000 LNKLVL00 0 LNKLVL00 - Driver not confirmed 00000001 LNKLVL01 1 LNKLVL01 - Driver using MDEBK 00000002 LNKLVL02 2 LNKLVL02 - Driver using MBHBK 0087 135 Bitstring 1 LDVMIH Current Device MIH State 00000000 LDVMIOFF 0 LDVMIOFF - No MIH support 00000001 LDVMIBYP 1 LDVMIBYP - MIH temporarily disabled 00000002 LDVMIALT 2 LDVMIALT - Alternate MIRATE in use 00000003 LDVMIENB 3 LDVMIENB - Normal MIRATE in use 00000006 LDVMIRAT 6 LDVMIRAT Normal MIRATE for a Link Device LDVMIRAT * 5 = # of Seconds Active work areas. 0088 136 Address 4 LDVTXWRK Pointer to TX LWKBK 008C 140 Address 4 LDVRXWRK Pointer to RX LWKBK Links for dispatch priority sequence. 0090 144 Address 4 LDVFPDS Ptr to next for device selection 0094 148 Address 4 LDVBPDS Ptr to prev for device selection Low level I/O activity. 0098 152 Signed 4 LDVUPARM ORB Word 0 (User PARM value) 009C 156 Signed 4 LDVOCTL ORB Word 1 (control flags) 00A0 160 Address 4 LDVCPA ORB Word 2 (CPA) HA 00A4 164 Address 4 LDVIORBK IORBK for outgoing I/O 00A8 168 Dbl-Word 8 LDVIOTOD TOD when I/O started 00B0 176 Dbl-Word 8 LDVLKTRC LDVLKWRD obtainer info (R13,R14) 00B8 184 Bitstring 1 LDVCFLG Control flags 1... .... LDVXRTRY X'80' LDVXRTRY - Enable ATTN+BUSY retry logic 00B9 185 Bitstring 1 LDVIOPND I/O Pending Status 1... .... LDVSIOPD X'80' LDVSIOPD - Start Pending .1.. .... LDVINTPD X'40' LDVINTPD - Interrupt Pending ..1. .... LDVATTPD X'20' LDVATTPD - ATTN status pending ...1 .... LDVDEPD X'10' LDVDEPD - DE status pending 00BA 186 Bitstring 1 LDVIOSTS Pending Device I/O Status 00BB 187 Bitstring 1 LDVRMCMD Remote CCW Command (SCB buffer) 00BC 188 Address 4 LDVRSCPA Pointer to Restart CPA 00C0 192 Signed 4 LDVRETRY Retry count 00C4 196 Bitstring 4 LDVXCCW0 (0) Last CCW (word 0) IORETCOD<>0 00C4 196 Bitstring 1 LDVXCMD CCW command 00C5 197 Bitstring 1 LDVXFLAG CCW flag 00C6 198 Bitstring 2 LDVXCNT CCW byte count Work area for CCWs. 00C8 200 Dbl-Word 8 LDV_CCW1 Space for a CCW 00D0 208 Dbl-Word 8 LDV_CCW2 Space for a CCW 00D8 216 Dbl-Word 8 LDV_CCW3 Space for a CCW Type 09 Accounting Record (Link Statistics) columns 29-78. Notes : Map LNKACOLS using HCPACOBK at ACOCFLS. - For LDVTYPE=CTCA, these fields are protected by the LNKBK lock. - For LDVTYPE=FCTC, these fields are protected by Compare and Swap logic. 00E0 224 Bitstring 50 LDVACOLS (29-78) for Type 09 Accounting 0112 274 Signed 2 LDVMFL Local DDBUF length 0114 276 Signed 4 LDVCTSI Validate UI currency (RDEVCTSI) Device level I/O activity counters. 0118 280 Dbl-Word 8 LDVRXMSG Receive Message Count 0120 288 Dbl-Word 8 LDVRXBYT Receive Byte Count 0128 296 Dbl-Word 8 LDVTXMSG Sent Message Count 0130 304 Dbl-Word 8 LDVTXBYT Sent Byte Count Device control latches. 0138 312 Bitstring 1 LDVOP Operational status 00000000 LDVOP_NORMAL 0 LDVOP_NORMAL - Normal operational status 000000FF LDVOP_SUSPEND 255 LDVOP_SUSPEND - Suspend / quiesce activity 0139 313 Bitstring 1 LDVDET Detach action 00000000 LDVDET_KEEP 0 LDVDET_KEEP - Keep this device 000000FF LDVDET_REMOVE 255 LDVDET_REMOVE - Remove this device 013A 314 Bitstring 6 * Reserved for IBM use Buffer for independent read operations. 0140 320 Dbl-Word 8 LDV_DDBUF (0) Array of device buffer frames 0140 320 Address 8 LDV_DDBUF1 HA Pointer to 4KB buffer 0148 328 Address 8 LDV_DDBUF2 HA Pointer to 4KB buffer 0150 336 Address 8 LDV_DDBUF3 HA Pointer to 4KB buffer 00000003 LDVMFC 3 LDV_DDBUF pages defined TOD when this LDVBK was defined (ACTIVATE ISLINK) 0158 344 Dbl-Word 8 LDVDFTOD TOD when LDVBK was defined TOD used while connecting to the Y-SIDE neighbor 0160 352 Dbl-Word 8 LDVCNTOD TOD when connecting to Y-SIDE Most recent LWKSEQNO frames processed on this device. 0168 360 Signed 2 LDVTXSEQ Latest TX LWKSEQNO on this dev 016A 362 Signed 2 LDVRXSEQ Latest RX LWKSEQNO on this dev 016C 364 Signed 2 LDVBUFLN Actual LDV_DDBUF length 016E 366 Bitstring 10 * Reserved for IBM Use 0178 376 Bitstring 8 LDVCT_WRCOLL Write collisions 0180 384 Bitstring 8 LDVCT_TXLWK Packages sent 0188 392 Bitstring 8 LDVCT_RXLWK Packages received 0190 400 Bitstring 16 * Reserved for IBM use 01A0 416 Bitstring 1 LDVBK$ (0) End of LDVBK 00000034 LDVSIZE (*-LDVBK+7)/8 Size, in doublewords, of LDVBK
 
 
  LDVBK Storage Layout Top of page
 
          
*** LDVBK - ISFC Link Device Extension
*
*     +---------------------------+---------------------------+
*   0 |         LDVDEVID          |         LDVDEVNO          |
*     +---------------------------+---------------------------+
*   8 |         LDVLNKBK          |         LDVTYPE           |
*     +---------------------------+---------------------------+
*  10 |         LDVRDEV           |         LDVEXTBK          |
*     +---------------------------+---------------------------+
*  18 |         LDVFPNT           |         LDVBPNT           |
*     +---------------------------+---------------------------+
*  20 |                       LDVDFNOD                        |
*     +-------------------------------------------------------+
*  28 |                       LDVUSER                         |
*     +-------------------------------------------------------+
*  30 |                                                       |
*     =                       LDVLKWRD                        =
*     |                                                       |
*     +-------------------------------------------------------+
*  48 |                       LDVRMVER                        |
*     +-------------------------------------------------------+
*  50 |                       LDVRMCAP                        |
*     +-------------------------------------------------------+
*  58 |                       LDVRMNOD                        |
*     +---------------------------+-------------+-------------+
*  60 |         LDVRMDEV          |  LDVRMMFL   |             |
*     +---------------------------+-------------+             |
*     |                       LDVRMUID                        |
*     |                                                       |
*     +-------------+-------------+------+------+-------------+
*  78 |  LDVBUFCT   |  LDVRFCTR   |:INUSE|(07D) |  LDVRMDID   |
*     +------+------+------+------+------+------+------+------+
*  80 |:DVFLG|:SETUP|:STAT |:MODE |:CONN |:ERROR|:LEVEL|LDVMIH|
*     +------+------+------+------+------+------+------+------+
*  88 |         LDVTXWRK          |         LDVRXWRK          |
*     +---------------------------+---------------------------+
*  90 |         LDVFPDS           |         LDVBPDS           |
*     +---------------------------+---------------------------+
*  98 |         LDVUPARM          |         LDVOCTL           |
*     +---------------------------+---------------------------+
*  A0 |          LDVCPA           |         LDVIORBK          |
*     +---------------------------+---------------------------+
*  A8 |                       LDVIOTOD                        |
*     +-------------------------------------------------------+
*  B0 |                       LDVLKTRC                        |
*     +------+------+------+------+---------------------------+
*  B8 |:CFLG |:IOPND|:IOSTS|:RMCMD|         LDVRSCPA          |
*     +------+------+------+------+------+------+-------------+
*  C0 |         LDVRETRY          |:XCMD |:XFLAG|  LDVXCNT    |
*     +---------------------------+------+------+-------------+
*  C8 |                       LDV_CCW1                        |
*     +-------------------------------------------------------+
*  D0 |                       LDV_CCW2                        |
*     +-------------------------------------------------------+
*  D8 |                       LDV_CCW3                        |
*     +-------------------------------------------------------+
*  E0 |                                                       |
*     =                       LDVACOLS                        =
*     |             +-------------+---------------------------+
* 110 |             |   LDVMFL    |         LDVCTSI           |
*     +-------------+-------------+---------------------------+
* 118 |                       LDVRXMSG                        |
*     +-------------------------------------------------------+
* 120 |                       LDVRXBYT                        |
*     +-------------------------------------------------------+
* 128 |                       LDVTXMSG                        |
*     +-------------------------------------------------------+
* 130 |                       LDVTXBYT                        |
*     +------+------+-----------------------------------------+
* 138 |LDVOP |LDVDET|/////////////////////////////////////////|
*     +------+------+-----------------------------------------+
* 140 |                      LDV_DDBUF1                       |
*     +-------------------------------------------------------+
* 148 |                      LDV_DDBUF2                       |
*     +-------------------------------------------------------+
* 150 |                      LDV_DDBUF3                       |
*     +-------------------------------------------------------+
* 158 |                       LDVDFTOD                        |
*     +-------------------------------------------------------+
* 160 |                       LDVCNTOD                        |
*     +-------------+-------------+-------------+-------------+
* 168 |  LDVTXSEQ   |  LDVRXSEQ   |  LDVBUFLN   |/////////////|
*     +-------------+-------------+-------------+/////////////|
*     |///////////////////////////////////////////////////////|
*     +-------------------------------------------------------+
* 178 |                     LDVCT_WRCOLL                      |
*     +-------------------------------------------------------+
* 180 |                     LDVCT_TXLWK                       |
*     +-------------------------------------------------------+
* 188 |                     LDVCT_RXLWK                       |
*     +-------------------------------------------------------+
* 190 |///////////////////////////////////////////////////////|
*     |///////////////////////////////////////////////////////|
*     +-------------------------------------------------------+
*
*** LDVBK - ISFC Link Device Extension
 
 
  LDVBK Cross Reference Top of page
 
 
Symbol         Dspl Value
-------------- ---- -----
LDV_BADLEN     0085 00000004
LDV_BADTYPE    0085 00000005
LDV_CCW1       00C8
LDV_CCW2       00D0
LDV_CCW3       00D8
LDV_DDBUF      0140
LDV_DDBUF1     0140
LDV_DDBUF2     0148
LDV_DDBUF3     0150
LDV_DRIVER     0085 00000008
LDV_DUPLICATE  0085 00000009
LDV_EOFSEQ     0085 00000003
LDV_FATAL      0085 0000000B
LDV_IOMISC     0085 0000000A
LDV_NONE       0085 00000000
LDV_NOTREADY   0085 00000001
LDV_READSEQ    0085 00000002
LDV_RSNDEACT   007D 00000002
LDV_RSNDRIVER  007D 00000005
LDV_RSNDUPID   007D 00000004
LDV_RSNLINK    007D 00000006
LDV_RSNMIH     007D 00000003
LDV_RSNRESET   007D 00000001
LDV_STOPPED    0085 00000007
LDV_TIMEOUT    0085 00000006
LDVACOLS       00E0
LDVATTPD       00B9 20
LDVBK$         01A0
LDVBPDS        0094
LDVBPNT        001C
LDVBUFCT       0078
LDVBUFLN       016C
LDVCFLG        00B8
LDVCNTOD       0160
LDVCONN        0084
LDVCPA         00A0
LDVCT_RXLWK    0188
LDVCT_TXLWK    0180
LDVCT_WRCOLL   0178
LDVCTLMD       0083 00000005
LDVCTSI        0114
LDVDEPD        00B9 10
LDVDET         0139
LDVDET_KEEP    0139 00000000
LDVDET_REMOVE  0139 000000FF
LDVDEVID       0000
LDVDEVNO       0004
LDVDFNOD       0020
LDVDFTOD       0158
LDVDISC        0083 00000000
LDVDRVID       0084 40
LDVDVBUF       0080 20
LDVDVDET       0080 40
LDVDVDSC       0080 10
LDVDVFLG       0080
LDVDVINI       0080 80
LDVERROR       0085
LDVEXTBK       0014
LDVEXTMD       0081 40
LDVFPDS        0090
LDVFPNT        0018
LDVIDLE        0083 00000003
LDVINIMD       0083 00000001
LDVINTPD       00B9 40
LDVINUSE       007C
LDVIOPND       00B9
LDVIORBK       00A4
LDVIOSTS       00BA
LDVIOTOD       00A8
LDVLEVEL       0086
LDVLINIT       0084 20
LDVLINK        0083 00000002
LDVLKTRC       00B0
LDVLKWRD       0030
LDVLNKBK       0008
LDVMFC         0150 00000003
LDVMFL         0112
LDVMIALT       0087 00000002
LDVMIBYP       0087 00000001
LDVMIENB       0087 00000003
LDVMIH         0087
LDVMIOFF       0087 00000000
LDVMIRAT       0087 00000006
LDVMODE        0083
LDVOCTL        009C
LDVOP          0138
LDVOP_NORMAL   0138 00000000
LDVOP_SUSPEND  0138 000000FF
LDVRDEV        0010
LDVRDXID       0081 10
LDVREADY       0084 80
LDVREASON      007D
LDVRESET       0081 80
LDVRETRY       00C0
LDVRFCTR       007A
LDVRINIT       0084 10
LDVRMCAP       0050
LDVRMCMD       00BB
LDVRMDEV       0060
LDVRMDID       007E
LDVRMMFL       0064
LDVRMNOD       0058
LDVRMUID       0066
LDVRMVER       0048
LDVRSCPA       00BC
LDVRSTOP       0084 08
LDVRXBYT       0120
LDVRXMSG       0118
LDVRXSEQ       016A
LDVRXWRK       008C
LDVSETUP       0081
LDVSIOPD       00B9 80
LDVSIZE        01A0 00000034
LDVSTAT        0082
LDVTRMMD       0083 00000006
LDVTXBYT       0130
LDVTXMSG       0128
LDVTXSEQ       0168
LDVTXWRK       0088
LDVTYPE        000C
LDVUPARM       0098
LDVUSER        0028
LDVWRXID       0081 20
LDVXCCW0       00C4
LDVXCMD        00C4
LDVXCNT        00C6
LDVXFLAG       00C5
LDVXFRMD       0083 00000004
LDVXRTRY       00B8 80
LNKATTN        0082 00000006
LNKBUSY        0082 00000002
LNKDEACT       0082 00000008
LNKDVCTL       0082 00000000
LNKFATAL       0082 00000007
LNKIDLE        0082 00000001
LNKINIT        0082 00000000
LNKLVL00       0086 00000000
LNKLVL01       0086 00000001
LNKLVL02       0086 00000002
LNKREAD        0082 00000004
LNKRESET       0082 00000005
LNKWRITE       0082 00000003
 
This information is based on z/VM 7.3.0 Last updated on 22 Jun 2022 at 15:52:07 EDT.
Copyright IBM Corporation, 1990, 2022