Programming Interface Information:
This information is NOT intended to be used as Programming Interfaces of z/VM. |
ASRBK
Control Block Contents
ASRBK DSECT
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. RELOCATION CONSIDERATIONS : None 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 ASRDFRLK A defer lock is held 00000002 ASRSYMLK 2 ASRSYMLK A symbolic lock is held 00000003 ASRSPNLK 3 ASRSPNLK A spin lock is held 00000004 ASRIOLK 4 ASRIOLK An I/O lock is held 00000005 ASRCB 5 ASRCB A control block is addressed by a GR 00000006 ASRUNUSD 6 ASRUNUSD Certain general registers are unused 00000007 ASRCFM 7 ASRCFM Console-function mode is in effect 00000008 ASRISTRM 8 ASRISTRM Instruction-stream serialization is in effect. 00000009 ASRCFMIS 9 ASRCFMIS Either console-function mode or istream serialization is in effect. 0000000A ASRDSPCH 10 ASRDSPCH A specified user is dispatched 0000000B ASRMSTON 11 ASRMSTON Master-only serialization used 0000000C ASRINIT 12 ASRINIT System initialization is active 0000000D ASRNOLOC 13 ASRNOLOC No loss-of-control is permitted 0000000E ASRLSTRN 14 ASRLSTRN The "last translated" serialization is being used. 0000000F ASRVALUE 15 ASRVALUE Perform a value comparison 00000010 ASRCODE 16 ASRCODE Execute special checking code 00000011 ASRCUSTM 17 ASRCUSTM Perform a customized assertion check 00000012 ASRGROUP 18 ASRGROUP Assertions are being grouped 00000013 ASRRESVD 19 ASRRESVD Reserved 00000014 ASRRESV2 20 ASRRESV2 Reserved 00000015 ASRAMO31 21 ASRAMO31 CP is running in 31-bit (basic) addressing mode 00000016 ASRAMO64 22 ASRAMO64 CP is running in 64-bit (extended) addressing mode 00000017 ASRTmoPR 23 ASRTmoPR CP is running in Primary Space mode 00000018 ASRTmoSE 24 ASRTmoSE CP is running in Secondary Space mode 00000019 ASRTmoAR 25 ASRTmoAR CP is running in Access Register mode 0000001A ASRTmoHO 26 ASRTmoHO CP is running in Home Space mode 0000001B ASRNoSAC 27 ASRNoSAC No HCPSAC exits 0000001C ASRNoSPI 28 ASRNoSPI No HCPSPIE exits 0000001D ASRPGMBK 29 ASRPGMBK A PGMBK is addressed by a GR 0000001E ASRPTE 30 ASRPTE A PTE is addresssed by a GR 0000001F ASRPGSTE 31 ASRPGSTE A PGSTE is addressed by a GR 00000020 ASRASATE 32 ASRASATE An ASATE is addressed by a GR 0001 1 Bitstring 1 ASRGFLGS General flags 1... .... ASRGFGRP X'80' ASRGFGRP 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' ASRGFSAB If this assertion is not true, a soft abend is desired instead of hard. ..1. .... ASRGFNAB X'20' ASRGFNAB 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' ASRLEXCL Lock is held exclusive .1.. .... ASRLSHR X'40' ASRLSHR Lock is held shared If both ASRLEXCL and ASRLSHR are set, then lock may be held either exclusive or shared. 1... .... ASRBLBEG X'80' ASRBLBEG Beginning of block .1.. .... ASRBLEND X'40' ASRBLEND End of block 1... .... ASRVLSLC X'80' ASRVLSLC Source for comparisons is a location in storage. .1.. .... ASRVLSGR X'40' ASRVLSGR Source for comparisons is a general register. ..1. .... ASRVLSGG X'20' ASRVLSGG Source for comparisons is a large general register. ...1 .... ASRVLSCC X'10' ASRVLSCC Source for comparisons is the condition code. .... ...1 ASRVLSGN X'01' ASRVLSGN Signed comparisons should be performed instead of unsigned, the default. .... ...1 ASRCSFPM X'01' ASRCSFPM 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 ASRPGMBK, ASRPTE, ASRPGSTE or ASRASATE asserting that a particular general register contains the address of a specific kind of control block. 0007 7 Address 1 ASRPGMGR Bits 4-7 are the general register number of the GR which contains the address. 00000008 ASRPGMZ * 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 ASRCBNTS ASRCBOFF contains CBITABLE offset 00000001 ASRCBVMD 1 ASRCBVMD VMDBK 00000002 ASRCBCPE 2 ASRCBCPE CPEBK 00000003 ASRCBSAV 3 ASRCBSAV SAVBK 00000004 ASRCBSYS 4 ASRCBSYS SYSCM 00000005 ASRCBRDV 5 ASRCBRDV RDEV 00000006 ASRCBSNT 6 ASRCBSNT 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 ASRAMO31 - CP is running in 31-bit (basic) addressing mode ASRAMO64 - CP is running in 64-bit (extended) addressing mode ASRTmoPR - CP is running in Primary Space translation mode ASRTmoSE - CP is running in Secondary Space translation mode ASRTmoAR - CP is running in Access Register translation mode ASRTmoHO - CP is running in Home Space translation mode ASRNoSAC - CP is running with no HCPSAC exits specified ASRNoSPI - CP is running with no HCPSPIE exits specified 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' ASRVLCMP Bits of ASRVLOPR containing comparitor code. 00000000 ASRVLCEQ 0 ASRVLCEQ EQ - equality 00000001 ASRVLCNE 1 ASRVLCNE NE - inequality 00000002 ASRVLCLT 2 ASRVLCLT LT - less-than 00000003 ASRVLCLE 3 ASRVLCLE LE - less-than-or-equal 00000004 ASRVLCGT 4 ASRVLCGT GT - greater-than 00000005 ASRVLCGE 5 ASRVLCGE GE - greater-than-or-equal 00000006 ASRVLCON 6 ASRVLCON ON - selected bits are set 00000007 ASRVLCOF 7 ASRVLCOF OFF - selected bits are not set 00000008 ASRVLCMX 8 ASRVLCMX MIX - selected bits are mixed 00000009 ASRVLCNO 9 ASRVLCNO NOTOFF - selected bits not all off 000000F0 ASRVLOPS X'F0' ASRVLOPS Bits of ASRVLOPR containing operand source code. 00000000 ASRVLEND 0*X'10' ASRVLEND End of operand list 00000010 ASRVLOLC 1*X'10' ASRVLOLC Operand is in storage 00000020 ASRVLOGR 2*X'10' ASRVLOGR Operand is in a general register 00000030 ASRVLOGG 3*X'10' ASRVLOGG Operand is in a large general register 00000040 ASRVLOXP 4*X'10' ASRVLOXP Operand is an absolute expression 00000004 ASRCLOSH 4 ASRCLOSH 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 * (16) Separation between CDSUCCES and CDFAILUR in HCPASR. See code in HCPASRCK for how this is used. 0000001A 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 ASRVARST in ASRBK * * +------+ * 0 ... 7 |:PGMGR| * +------+ * 8 * *** 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)|//////|/////////////////////////////////////////| * +------+------+/////////////////////////////////////////| * |///////////////////////////////////////////////////////| * |/////////////+-----------------------------------------+ * |/////////////| 1A * +-------------+ * *** 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 ASRASATE 0000 00000020 ASRATYPE 0000 ASRBKHDR 0000 00000000 ASRBLBEG 0006 80 ASRBLEND 0006 40 ASRCB 0000 00000005 ASRCBCPE 0006 00000002 ASRCBGR 0009 ASRCBNTS 0006 00000000 ASRCBOFF 0007 ASRCBRDV 0006 00000005 ASRCBSAV 0006 00000003 ASRCBSNT 0006 00000006 ASRCBSPC 0006 ASRCBSYS 0006 00000004 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 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 0000001A 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 ASRNoSAC 0000 0000001B ASRNoSPI 0000 0000001C ASRNLOCZ 0009 00000007 ASRNOLOC 0000 0000000D ASRNPRMZ 0009 00000007 ASRPGMBK 0000 0000001D ASRPGMGR 0007 ASRPGMZ 0007 00000008 ASRPGSTE 0000 0000001F ASRPTE 0000 0000001E ASRRESVD 0000 00000013 ASRRESV2 0000 00000014 ASRSPNLK 0000 00000003 ASRSPNZ 0007 00000009 ASRSQANC 0009 ASRSUCCD 000A 0000000A ASRSYMLK 0000 00000002 ASRSYMZ 0009 0000000B ASRTmoAR 0000 00000019 ASRTmoHO 0000 0000001A ASRTmoPR 0000 00000017 ASRTmoSE 0000 00000018 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 ASRVLCMX 0007 00000008 ASRVLCNE 0007 00000001 ASRVLCNO 0007 00000009 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
Copyright IBM Corporation, 1990, 2011