ASRBK - 64-bit CP - V4R4.0

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

#### ASRBK

Prolog

Control Block Contents
ASRBK DSECT

Storage Layout

Cross Reference (Contains links to field and bit definitions)

#### ASRBK Prolog

     Name       : HCPASRBK
     Description: Assert monitor call parameter mapping
     DSECT      : ASRBK
     Function   : This copy file contains a DSECT used to map the
                  parameter list for the monitor call instruction
                  generated by the HCPASERT macro.
     Located by : The first operand to the monitor call instruction,
                  the monitor code, is the host-logical address of the
                  parameter list.
     Created by : HCPASERT macro.
     Deleted by : The parameter list is static data.
     Notes      :
     In order to minimize the amount of storage used for the
     monitor call parameter list, its form varies according to
     what assertion is being made and possibly due to what
     operands are specified.  The following DSECT consequently
     contains many ORGs to remap sections of the parameter
     list, and labels for rebasing after examining a variable
     portion of the parameter list.
     All "addresses" in this parameter list are really S-type
     constants, which provide a base register and displacement
     that allows the calculation of the address.  This
     technique is used to avoid run-time code to generate an
     address, and to save space in the parameter list.

#### ASRBK Control Block Content

#### ASRBK DSECT

    Hex   Dec Type/Val   Lng Label (dup)    Comments
    ---- ---- --------- ---- -------------- --------
    0000    0 Structure      ASRBK          Assert monitor call parameter
                                            mapping
         The following area maps the parameter list header, which is the same
         for all assertion types. Note, however, that not all fields are
         significant for all assertion types. When this is the case, it is
         noted.
              00000000       ASRBKHDR       * Mapping for HCPASERT parameter
                                            list
    0000    0 Bitstring    1 ASRATYPE       Code indicating type of assertion
              00000001       ASRDFRLK       1 A defer lock is held
              00000002       ASRSYMLK       2 A symbolic lock is held
              00000003       ASRSPNLK       3 A spin lock is held
              00000004       ASRIOLK        4 An I/O lock is held
              00000005       ASRCB          5 A control block is addressed by
                                            a GR
              00000006       ASRUNUSD       6 Certain general registers are
                                            unused
              00000007       ASRCFM         7 Console-function mode is in
                                            effect
              00000008       ASRISTRM       8 Instruction-stream
                                            serialization is in effect.
              00000009       ASRCFMIS       9 Either console-function mode or
                                            istream serialization is in
                                            effect.
              0000000A       ASRDSPCH       10 A specified user is dispatched
              0000000B       ASRMSTON       11 Master-only serialization used
              0000000C       ASRINIT        12 System initialization is
                                            active
              0000000D       ASRNOLOC       13 No loss-of-control is
                                            permitted
              0000000E       ASRLSTRN       14 The "last translated"
                                            serialization is being used.
              0000000F       ASRVALUE       15 Perform a value comparison
              00000010       ASRCODE        16 Execute special checking code
              00000011       ASRCUSTM       17 Perform a customized assertion
                                            check
              00000012       ASRGROUP       18 Assertions are being grouped
              00000013       ASRCP390       19 CP ESA/390 nucleus is running
              00000014       ASRCPME        20 CP ESAME nucleus is running
              00000015       ASRAMO31       21 CP is running in 31-bit
                                            (basic) addressing mode
              00000016       ASRAMO64       22 CP is running in 64-bit
                                            (extended) addressing mode
    0001    1 Bitstring    1 ASRGFLGS       General flags
              1... ....      ASRGFGRP       X'80' This assertion is part of a
                                            group, and is "chained" to
                                            another set of parameters. This
                                            bit will never be set with
                                            ASRGFNAB.
              .1.. ....      ASRGFSAB       X'40' If this assertion is not
                                            true, a soft abend is desired
                                            instead of hard.
              ..1. ....      ASRGFNAB       X'20' If this assertion is not
                                            true, no abend is desired. This
                                            bit will never be set with
                                            ASRGFSAB. If either ASRGFSAB or
                                            ASRGFNAB is set, ASRFAILR may
                                            contain the address of a label to
                                            branch to in case of a failure.
    0002    2 Address      2 ASRVMDBK       Address of the VMDBK to which the
                                            assertion applies. This field is
                                            not used for all assertions.
    0004    4 Address      2 ASRFAILR       If ASRGFSAB or ASRGFNAB is set,
                                            then a non-zero value in this
                                            field is the address to which
                                            control should be returned when
                                            an untrue assertion is made.
    0006    6 Bitstring    1 ASRTFLGS       Flags that are unique for each
                                            assertion type. The bits are
                                            assigned with the specific
                                            assertion parameters below.
              1... ....      ASRLEXCL       X'80' Lock is held exclusive
              .1.. ....      ASRLSHR        X'40' Lock is held shared If both
                                            ASRLEXCL and ASRLSHR are set,
                                            then lock may be held either
                                            exclusive or shared.
              1... ....      ASRBLBEG       X'80' Beginning of block
              .1.. ....      ASRBLEND       X'40' End of block
              1... ....      ASRVLSLC       X'80' Source for comparisons is a
                                            location in storage.
              .1.. ....      ASRVLSGR       X'40' Source for comparisons is a
                                            general register.
              ..1. ....      ASRVLSGG       X'20' Source for comparisons is a
                                            large general register.
              ...1 ....      ASRVLSCC       X'10' Source for comparisons is
                                            the condition code.
              .... ...1      ASRVLSGN       X'01' Signed comparisons should
                                            be performed instead of unsigned,
                                            the default.
              .... ...1      ASRCSFPM       X'01' A parameter was specified
                                            via PARM=
              00000007       ASRVARST       * Start of variable portion of
                                            plist
         The following area maps the rest of the parameter list for when
         ASRATYPE contains ASRDFRLK, asserting that a defer lock is held. This
         is the sort of lock managed by HCPLCK, whose lockword is mapped by the
         LKWRD DSECT.
    0007    7 Address      2 ASRLKWRD       Address of lockword
              00000009       ASRDFRZ        * End of parameter list
         The following area maps the rest of the parameter list for when
         ASRATYPE contains ASRSYMLK, asserting that a symbolic lock is held.
         This is the sort of lock managed by HCPLOC, whose lockword is mapped by
         the LCKBK DSECT.
    0007    7 Address      2 *              Address of symbol (use ASRLKWRD)
    0009    9 Address      2 ASRSQANC       If non-zero, address of symbolic
                                            lock private queue anchor. If
                                            zero, the global resource queue
                                            is used.
              0000000B       ASRSYMZ        * End of parameter list
         The following area maps the rest of the parameter list for when
         ASRATYPE contains ASRSPNLK, asserting that a spin lock is held. This is
         the sort of lock managed by the HCPLKxxx and HCPULxxx macros, whose
         lockword is mapped by the SYNBK DSECT.
    0007    7 Address      2 *              Address of lockword (use
                                            ASRLKWRD)
              00000009       ASRSPNZ        * End of parameter list
         The following area maps the rest of the parameter list for when
         ASRATYPE contains ASRIOLK, asserting that an I/O lock is held. This is
         the sort of lock managed by HCPIOL, lockword is mapped by the LKIWD
         DSECT.
    0007    7 Address      2 *              Address of lockword (use
                                            ASRLKWRD)
              00000009       ASRIOLZ        * End of parameter list
         The following area maps the rest of the parameter list for when
         ASRATYPE contains ASRCB, asserting that a particular general register
         contains the address of a specific kind of control block. For control
         blocks that are defined in the CBITABLE control block, and are thus
         known by the IDOFFSET macro, we identify the control block by storing
         the displacement returned by IDOFFSET. We accept only a limited number
         of other, special, control blocks, and to those we assign specific
         codes.
    0006    6 Address      1 ASRCBSPC       Code indicating type of special
                                            CB
              00000000       ASRCBNTS       0 ASRCBOFF contains CBITABLE
                                            offset
              00000001       ASRCBVMD       1 VMDBK
              00000002       ASRCBCPE       2 CPEBK
              00000003       ASRCBSAV       3 SAVBK
              00000004       ASRCBPGM       4 PGMBK
              00000005       ASRCBSYS       5 SYSCM
              00000006       ASRCBRDV       6 RDEV
              00000007       ASRCBSNT       7 SNTBK
    0007    7 Address      2 ASRCBOFF       Offset returned by IDOFFSET macro
                                            This field is significant only
                                            when ASRCBSPC is zero.
    0009    9 Address      1 ASRCBGR        Bits 4-7 are the general register
                                            number of the GR which contains
                                            the address.
              0000000A       ASRCBZ         * End of parameter list
         The following area maps the rest of the parameter list for when
         ASRATYPE contains ASRUNUSD, asserting that a particular set of general
         registers is unused.
    0007    7 Bitstring    2 ASRGRMSK       Mask of unused general registers
                                            If bit n of the mask is set, then
                                            it is being asserted that GR n is
                                            not being used.
    0009    9 Bitstring    2 ASRGGRMK       Mask of unused large general
                                            registers: If bit n of the mask
                                            is set, then it is being asserted
                                            that large GR n is not being
                                            used.
              0000000B       ASRUNUGZ       * End of parameter list
         When ASRATYPE contains any of the following, there is no more parameter
         list data:
         ASRCFM - Console-function mode ASRISTRM - Instruction stream ASRCFMIS -
         Console-function mode or instruction stream ASRDSPCH - Dispatched
         ASRMSTON - Master Only ASRINIT - Initialization ASRGROUP - End of
         assertion group ASRCP390 - CP ESA/390 nucleus is running ASRCPME - CP
         ESAME nucleus is running ASRAMO31 - CP is running in 31-bit (basic)
         addressing mode ASRAMO64 - CP is running in 64-bit (extended)
         addressing mode
              00000007       ASRNPRMZ       * End of parameter list
         The following area maps the rest of the parameter list for when
         ASRATYPE contains ASRNOLOC, asserting either the beginning or the end
         of a block of code that is not permitted to lose control.
              00000007       ASRNLOCZ       * End of parameter list
         The following area maps the rest of the parameter list for when
         ASRATYPE contains ASRLSTRN, asserting either the beginning or the end
         of a block of code that is depending on the serialization mechanism of
         "last translated".
              00000007       ASRLTREZ       * End of END parameter list
    0007    7 Address      1 ASRLTRGR       Bits 4-7 are the general register
                                            number of the GR which contains
                                            the result of the last
                                            translation. Present only at the
                                            beginning of a block.
    0008    8 Address      2 ASRLTRIA       The address of the i-ASIT used
                                            for the last translation. Present
                                            only at the beginning of a block.
              0000000A       ASRLTRBZ       * End of BEGIN parameter list
         The following area maps the rest of the parameter list for when
         ASRATYPE contains ASRVALUE, asserting that a value from storage, from a
         general register, or from the condition code, relates to one or more
         other values in certain ways. The size of the remainder of this plist
         varies, depending on how many values to compare with are specified.
              00000007       ASRVLSRC       * Start of different mappings for
                                            difference source value types.
         The mapping for when the source is a storage location:
    0007    7 Address      2 ASRVSLOC       Address of source value
    0009    9 Address      1 ASRVSLEN       Length of source value, in bytes
              0000000A       ASRVSLCZ       * End of mapping for this source
         The mapping for when the source is a general register:
    0007    7 Address      1 ASRVSGRN       Bits 4-7 are the number of the
                                            general register.
              00000008       ASRVSGRZ       * End of mapping for this source
         The mapping for when the source is a large general register:
    0007    7 Address      1 ASRVSGGN       Bits 4-7 are the number of the
                                            general register.
              00000008       ASRVSGGZ       * End of mapping for this source
         The mapping for when the source is the condition code:
         No further parameters exist for the condition code source.
              00000007       ASRVSCCZ       * End of mapping for this source
              00000007       ASRVLOPL       * Start of mapping for the
                                            operands
    0007    7 Address      1 ASRVLOPR       Code indicating what comparitor
                                            is to be used.
              0000000F       ASRVLCMP       X'0F' Bits of ASRVLOPR containing
                                            comparitor code.
              00000000       ASRVLCEQ       0 EQ - equality
              00000001       ASRVLCNE       1 NE - inequality
              00000002       ASRVLCLT       2 LT - less-than
              00000003       ASRVLCLE       3 LE - less-than-or-equal
              00000004       ASRVLCGT       4 GT - greater-than
              00000005       ASRVLCGE       5 GE - greater-than-or-equal
              00000006       ASRVLCON       6 ON - selected bits are set
              00000007       ASRVLCOF       7 OFF - selected bits are not set
              000000F0       ASRVLOPS       X'F0' Bits of ASRVLOPR containing
                                            operand source code.
              00000000       ASRVLEND       0*X'10' End of operand list
              00000010       ASRVLOLC       1*X'10' Operand is in storage
              00000020       ASRVLOGR       2*X'10' Operand is in a general
                                            register
              00000030       ASRVLOGG       3*X'10' Operand is in a large
                                            general register
              00000040       ASRVLOXP       4*X'10' Operand is an absolute
                                            expression
              00000004       ASRCLOSH       4 Bits to shift ASRVLOPR right to
                                            get an index representing the
                                            operand location.
              00000008       ASRVLOPD       * Start of different mappings for
                                            difference operand value types.
         The mapping for when the operand is a storage location:
    0008    8 Address      2 ASRVOLOC       Address of operand value
              0000000A       ASRVOPSZ       * End of parameter list
         The mapping for when the operand is a general register:
    0008    8 Address      1 ASRVOGRN       Bits 4-7 are the number of the
                                            general register.
              00000009       ASRVOPGZ       * End of parameter list
         The mapping for when the operand is a large general register:
    0008    8 Address      1 ASRVOGGN       Bits 4-7 are the number of the
                                            general register.
              00000009       ASRVOGGZ       * End of parameter list
         The mapping for when the operand is an absolute expression:
    0008    8 Address      4 ASRVOXVL       Value of absolute expression
              0000000C       ASRVOPXZ       * End of parameter list
         The following area maps the rest of the parameter list for when
         ASRATYPE contains ASRCODE, asserting something which special-case code
         has been written to test.
    0007    7 Address      2 ASRCDSRT       Address of special-case code
              00000009       ASRCODEZ       * End of parameter list
         Define labels to branch to when returning from a CODE block.
    000A   10 Signed       2 ASRCDEXT (0)   Base value for USING
              0000000A       ASRSUCCD       * Branch here to succeed
    000A   10 Bitstring    1 * (8)          Separation between CDSUCCES and
                                            CDFAILUR in HCPASR. See code in
                                            HCPASRCK for how this is used.
              00000012       ASRFAIL        * Branch here to fail
         The following area maps the rest of the parameter list for when
         ASRATYPE contains ASRCUSTM, asserting something for which a customized
         checking routine has been added to the monitor call processing routine,
         HCPASR. The TYPE is intended to be the number of the custom check,
         permitting several such checks. The BEGIN and END parameters are
         accepted in case the custom check is the type declaring a beginning and
         an end. The PARM value can pass anything to the checking routine.
    0007    7 Address      1 ASRCSTYP       Type code. Intended to be
                                            ascending number declaring which
                                            custom check should be performed.
              00000008       ASRCSNPZ       * End of parameter list if no
                                            parm
    0008    8 Address      2 ASRCSPRM       Parameter, to be used however the
                                            customized checking code wants to
                                            use it.
              0000000A       ASRCSHPZ       * End of parameter list if parm

#### ASRBK Storage Layout

    *** ASRBK - Assert monitor call parameter mapping
    *
    *     +------+------+-------------+-------------+------+
    *   0 |:ATYPE|:GFLGS|  ASRVMDBK   |  ASRFAILR   |:TFLGS| 7
    *     +------+------+-------------+-------------+------+
    *
    *** ASRBK - Assert monitor call parameter mapping

    *** Overlay for ASRVARST in ASRBK
    *
    *                                                      +------+
    *     ...                                            7 |(007)-|
    *     +------+-----------------------------------------+------+
    *   8 |-(007)| 9
    *     +------+
    *
    *** Overlay for ASRVARST in ASRBK

    *** Overlay for ASRVARST in ASRBK
    *
    *                                                      +------+
    *     ...                                            7 |//////|
    *     +------+-------------+---------------------------+------+
    *   8 |//////|  ASRSQANC   | B
    *     +------+-------------+
    *
    *** Overlay for ASRVARST in ASRBK

    *** Overlay for ASRVARST in ASRBK
    *
    *                                                      +------+
    *     ...                                            7 |//////|
    *     +------+-----------------------------------------+------+
    *   8 |//////| 9
    *     +------+
    *
    *** Overlay for ASRVARST in ASRBK

    *** Overlay for ASRVARST in ASRBK
    *
    *                                                      +------+
    *     ...                                            7 |//////|
    *     +------+-----------------------------------------+------+
    *   8 |//////| 9
    *     +------+
    *
    *** Overlay for ASRVARST in ASRBK

    *** Overlay for ASRTFLGS in ASRBK
    *
    *                                               +------+------+
    *   0 ...                                     6 |:CBSPC|(007)-|
    *     +------+------+---------------------------+------+------+
    *   8 |-(007)|:CBGR | A
    *     +------+------+
    *
    *** Overlay for ASRTFLGS in ASRBK

    *** Overlay for ASRVARST in ASRBK
    *
    *                                                      +------+
    *     ...                                            7 |(007)-|
    *     +------+-------------+---------------------------+------+
    *   8 |-(007)|  ASRGGRMK   | B
    *     +------+-------------+
    *
    *** Overlay for ASRVARST in ASRBK

    *** Overlay for ASRVARST in ASRBK
    *
    *                                                      +------+
    *   0 ...                                            7 |:LTRGR|
    *     +-------------+----------------------------------+------+
    *   8 |  ASRLTRIA   | A
    *     +-------------+
    *
    *** Overlay for ASRVARST in ASRBK

    *** Overlay for ASRVLSRC in ASRBK
    *
    *                                                      +------+
    *     ...                                            7 |(007)-|
    *     +------+------+----------------------------------+------+
    *   8 |-(007)|:VSLEN| A
    *     +------+------+
    *
    *** Overlay for ASRVLSRC in ASRBK

    *** Overlay for ASRVLSRC in ASRBK
    *
    *                                                      +------+
    *   0 ...                                            7 |:VSGRN|
    *                                                      +------+
    *   8
    *
    *** Overlay for ASRVLSRC in ASRBK

    *** Overlay for ASRVLSRC in ASRBK
    *
    *                                                      +------+
    *   0 ...                                            7 |:VSGGN|
    *                                                      +------+
    *   8
    *
    *** Overlay for ASRVLSRC in ASRBK

    *** Overlay for ASRVLSRC in ASRBK
    *
    *                                                      +------+
    *   0 ...                                            7 |:VLOPR|
    *                                                      +------+
    *   8
    *
    *** Overlay for ASRVLSRC in ASRBK

    *** Overlay for ASRVLOPD in ASRBK
    *
    *     +-------------+
    *   8 |  ASRVOLOC   | A
    *     +-------------+
    *
    *** Overlay for ASRVLOPD in ASRBK

    *** Overlay for ASRVLOPD in ASRBK
    *
    *     +------+
    *   8 |:VOGRN| 9
    *     +------+
    *
    *** Overlay for ASRVLOPD in ASRBK

    *** Overlay for ASRVLOPD in ASRBK
    *
    *     +------+
    *   8 |:VOGGN| 9
    *     +------+
    *
    *** Overlay for ASRVLOPD in ASRBK

    *** Overlay for ASRVLOPD in ASRBK
    *
    *     +---------------------------+
    *   8 |         ASRVOXVL          | C
    *     +---------------------------+
    *
    *** Overlay for ASRVLOPD in ASRBK

    *** Overlay for ASRVARST in ASRBK
    *
    *                                                      +------+
    *     ...                                            7 |(007)-|
    *     +------+------+----------------------------------+------+
    *   8 |-(007)|//////|/////////////////////////////////////////|
    *     +------+------+-----------------------------------------+
    *  10 |/////////////| 12
    *     +-------------+
    *
    *** Overlay for ASRVARST in ASRBK

    *** Overlay for ASRVARST in ASRBK
    *
    *                                                      +------+
    *   0 ...                                            7 |:CSTYP|
    *     +-------------+----------------------------------+------+
    *   8 |  ASRCSPRM   | A
    *     +-------------+
    *
    *** Overlay for ASRVARST in ASRBK

#### ASRBK Cross Reference

    Symbol         Dspl Value
    -------------- ---- -----
    ASRAMO31       0000 00000015
    ASRAMO64       0000 00000016
    ASRATYPE       0000
    ASRBKHDR       0000 00000000
    ASRBLBEG       0006 80
    ASRBLEND       0006 40
    ASRCB          0000 00000005
    ASRCBCPE       0006 00000002
    ASRCBGR        0009
    ASRCBNTS       0006 00000000
    ASRCBOFF       0007
    ASRCBPGM       0006 00000004
    ASRCBRDV       0006 00000006
    ASRCBSAV       0006 00000003
    ASRCBSNT       0006 00000007
    ASRCBSPC       0006
    ASRCBSYS       0006 00000005
    ASRCBVMD       0006 00000001
    ASRCBZ         0009 0000000A
    ASRCDEXT       000A
    ASRCDSRT       0007
    ASRCFM         0000 00000007
    ASRCFMIS       0000 00000009
    ASRCLOSH       0007 00000004
    ASRCODE        0000 00000010
    ASRCODEZ       0007 00000009
    ASRCPME        0000 00000014
    ASRCP390       0000 00000013
    ASRCSFPM       0006 01
    ASRCSHPZ       0008 0000000A
    ASRCSNPZ       0007 00000008
    ASRCSPRM       0008
    ASRCSTYP       0007
    ASRCUSTM       0000 00000011
    ASRDFRLK       0000 00000001
    ASRDFRZ        0007 00000009
    ASRDSPCH       0000 0000000A
    ASRFAIL        000A 00000012
    ASRFAILR       0004
    ASRGFGRP       0001 80
    ASRGFLGS       0001
    ASRGFNAB       0001 20
    ASRGFSAB       0001 40
    ASRGGRMK       0009
    ASRGRMSK       0007
    ASRGROUP       0000 00000012
    ASRINIT        0000 0000000C
    ASRIOLK        0000 00000004
    ASRIOLZ        0007 00000009
    ASRISTRM       0000 00000008
    ASRLEXCL       0006 80
    ASRLKWRD       0007
    ASRLSHR        0006 40
    ASRLSTRN       0000 0000000E
    ASRLTRBZ       0008 0000000A
    ASRLTREZ       0009 00000007
    ASRLTRGR       0007
    ASRLTRIA       0008
    ASRMSTON       0000 0000000B
    ASRNLOCZ       0009 00000007
    ASRNOLOC       0000 0000000D
    ASRNPRMZ       0009 00000007
    ASRSPNLK       0000 00000003
    ASRSPNZ        0007 00000009
    ASRSQANC       0009
    ASRSUCCD       000A 0000000A
    ASRSYMLK       0000 00000002
    ASRSYMZ        0009 0000000B
    ASRTFLGS       0006
    ASRUNUGZ       0009 0000000B
    ASRUNUSD       0000 00000006
    ASRVALUE       0000 0000000F
    ASRVARST       0006 00000007
    ASRVLCEQ       0007 00000000
    ASRVLCGE       0007 00000005
    ASRVLCGT       0007 00000004
    ASRVLCLE       0007 00000003
    ASRVLCLT       0007 00000002
    ASRVLCMP       0007 0000000F
    ASRVLCNE       0007 00000001
    ASRVLCOF       0007 00000007
    ASRVLCON       0007 00000006
    ASRVLEND       0007 00000000
    ASRVLOGG       0007 00000030
    ASRVLOGR       0007 00000020
    ASRVLOLC       0007 00000010
    ASRVLOPD       0007 00000008
    ASRVLOPL       0007 00000007
    ASRVLOPR       0007
    ASRVLOPS       0007 000000F0
    ASRVLOXP       0007 00000040
    ASRVLSCC       0006 10
    ASRVLSGG       0006 20
    ASRVLSGN       0006 01
    ASRVLSGR       0006 40
    ASRVLSLC       0006 80
    ASRVLSRC       0008 00000007
    ASRVMDBK       0002
    ASRVOGGN       0008
    ASRVOGGZ       0008 00000009
    ASRVOGRN       0008
    ASRVOLOC       0008
    ASRVOPGZ       0008 00000009
    ASRVOPSZ       0008 0000000A
    ASRVOPXZ       0008 0000000C
    ASRVOXVL       0008
    ASRVSCCZ       0007 00000007
    ASRVSGGN       0007
    ASRVSGGZ       0007 00000008
    ASRVSGRN       0007
    ASRVSGRZ       0007 00000008
    ASRVSLCZ       0009 0000000A
    ASRVSLEN       0009
    ASRVSLOC       0007

This information is based on z/VM V4R4.0. Last updated on 30 Jul 2003 at 12:29:10 EDT.
Copyright IBM Corporation, 1990, 2003