Displaying global resource serialization information (GRS)
- Configuration information:
The status of each system associated with the current global resource serialization complex is displayed. Some of the information displayed depends on whether you are running a global resource serialization ring or star complex. For instance, the status of the systems in the complex and the manner in which the systems are connected are different for a ring and a star complex.
- RNL information:
The contents of the RESERVE conversion, SYSTEMS exclusion, and SYSTEM inclusion resource name lists (RNLs).
- Resource information:
Information on resources for which there is contention or information about a specific resource.
- Information on resources that are delaying or suspending RNL changes.If you do not code any keywords on the DISPLAY GRS command:
- The information displayed for a star complex is the same as if you entered DISPLAY GRS,SYSTEM.
- The information displayed for a ring complex is the same as if you entered DISPLAY GRS,SYSTEM, plus the configuration is displayed.
- Contention information:Note: When doing problem determination, IBM recommends starting with Runtime Diagnostics because their scope includes GRS-managed ENQs and Latches as well as other system diagnostics' analysis. For more information, see z/OS Problem Management.
A list of the units of work involved in contention for GRS-managed resources (both ENQ and Latch). This display can focus on the units of work that are waiting for the resources or those blocking the resources. In addition, the installation can display dependencies between requestors of GRS-managed resources. The display command provides both generic Contention and Analyze Contention functions. The Analyze function is recommended because it detects dependencies (including deadlock) between requestors, provides a complex wide view of System and Systems ENQ resources, and takes time into consideration to highlight the possible root cause of the contention. The Contention function only provides an alphabetical list of the resources that are in contention. The Contention function is not like the Analyze function in that a sysplex wide view of SYSTEM level ENQs is not provided in the former one. In addition to the SYSTEMS level ENQs, only the SYSTEM level ENQs that were requested from the issuing system are displayed. Also, time and dependencies are not considered. The Contention function is not like the Analyze function in that the former displays only System level ENQs that were requested from the issuing system and does not consider both time and dependencies.
- Information about the authorized qname level. The authorized qname level indicates the level of protection that exists for the system in the GRS complex through the use of different lists of qnames that are considered authorized.
When the keywords CONTENTION, RES=, RNL=, or any combination of them are specified together, the system will display a separate section for each keyword specified. Specifying the ALL keyword will override any parameters specified on the RNL= keyword.
The complete syntax for the DISPLAY GRS command is:
D GRS |
---|
|
- SYSTEM
- System information is to be displayed. The SYSTEM operand produces a display only when a global
resource serialization complex is active. The display of system information includes:
- The system name (the name specified on the SYSNAME system parameter) of each system in the global resource serialization complex.
- The state of each system in the global resource serialization star complex:
- Connecting: The system is processing the GRS=STAR parameter. It is not yet a member of the global resource serialization star complex.
- Connected: The system is a member of the global resource serialization star complex.
- Rebuilding: The system is a member of the global resource serialization star complex, but is currently rebuilding the global resource serialization lock structure, ISGLOCK. The system suspends any tasks that try to obtain any global resources.
- The state of each system in the global resource serialization ring complex:
- Active: The system is presently serializing global resources. It is a member of the global resource serialization ring. If ACTIVE and WAIT appear, a global resource serialization command was issued but is waiting because another global resource serialization command is executing. If ACTIVE and VARY appear, the system is executing an internally-issued or operator-issued global resource serialization command.
- Inactive: This system is not presently sending or receiving global requests in the global resource serialization ring. Any requests already held remain held, and any new requests remain pending until this system restarts back into the ring. The system suspends tasks that request global resources. The system can be used to restart the ring.
- Quiesced: This system is not presently sending or receiving global requests in the global resource serialization ring. Any requests that are held remain held, and any new requests remain pending until this system restarts back into the ring. The system suspends tasks that request global resources. The system must restart back into an already active ring to resume global request processing, or it can be reactivated to restart a new ring if no other active systems exist.
- Joining: This system is in the process of joining the global resource serialization complex.
- Restarting: This system was an inactive or quiesced system and is now in the process of rejoining the global resource serialization ring.
- Migrating: The system is participating in the process of migrating from a global resource serialization ring complex to a global resource serialization star complex.
- The communication status of each system in the global resource serialization ring or star
complex:
- The display for a ring complex shows the current settings for the following parameters:
- The minimum RSA-message residency time in milliseconds.
- The maximum tolerance time interval allowed for RSA-message to return to the system.
- Whether synchronous reserve processing is activated for the current system.
- The display for a star complex shows the current settings for the following parameters:
- The number of locks for the global resource serialization lock structure (ISGLOCK).
- Which system is the contention notifying system.
- Whether synchronous reserve processing is activated for the current system.
- The display for a ring complex shows the current settings for the following parameters:
- AUTHQLVL value that is in effect. This value indicates the level of protection provided through different lists of qnames that are considered to be authorized by the system.
- LINK
- CTC link information is to be displayed. The LINK operand produces a display only when a global
resource serialization complex is active.
When the global resource serialization ring complex is using XCF signalling, the display shows that XCF paths are used.
The display of global resource serialization CTC link information includes:- The device number of each CTC link assigned to global resource serialization on this system
- The status of each global resource serialization CTC link, which can be any one of the
following:
- In use: This system is using this link to send messages to and receive RSA messages from the system at the other end of the CTC link.
- Alternate: This system is not presently using this link to send or receive RSA messages, but it has the ability to do so. If your installation uses ring acceleration, global resource serialization might be using the link to send the ring acceleration signal.
- Disabled: This system cannot use this link to send or receive messages.
- Quiet: The system at the opposite end of the link does not respond.
- The system name (the name specified on the SYSNAME system parameter) of the system that last responded from the opposite end of the link.
- ALL or A
- The following information is to be displayed:
- System information
- CTC link information
- Resource contention information
- RNL change information
- The contents of all RNLs
- AUTHQLVL value that is in effect. This value indicates whether authorized qnames are enabled for the default list of IBM® product qnames (AUTHQLVL=1) or enabled for the default list and a second list of qnames for HSM (AUTHQLVL=2). You can change this value by using the SETGRS AUTHQLVL command.
Specify HEX if you want the resource names displayed in EBCDIC and in hexadecimal. If the global resource serialization complex is inactive, the display does not contain system information, CTC link information, or the contents of RNLs. If the system did not start or join an active global resource serialization ring at IPL, the display does not contain system, link, and RNL information. When an RNL change is in progress, the display shows DELAY and SUSPEND information.
- CONTENTION or C
- Resource contention information for the current global resource serialization complex is to be
displayed. If a DISPLAY GRS,CONTENTION command is entered without the LATCH or ENQ operands, the
system displays both ENQ and LATCH contention information.
Specify LATCHID or LID when you want to identify latch id information (displayed with the latch number in the output message ISG343I). The latch id can help with problem diagnosis when the latch creator has provided each latch number a name.
Specify HEX if you want resource names displayed in EBCDIC and in hexadecimal.
- DELAY or D
- Displays the jobs that are delaying an RNL change. The following information is displayed:
- Jobname
- ASID
- Resources held or waiting for
- DEV=[/]devnum
- Displays a list of non-converted RESERVE requests for the device identified by
devnum. The device number consists of 3 or 4 hexadecimal digits, optionally
preceded by a slash (/). You can use this command to:
- Determine which jobs have RESERVE requests for a particular device.
- Whether this system has reserved the device.
- Help resolve reserve contention problems.
- ENQ or E
- Resource contention information for ENQs and RESERVEs is to be displayed. If you specify ENQ, you must also specify CONTENTION.
- JOBNAME or JOB
- Latch information for a particular job is to be displayed. Specify the name of a job that you suspect either owns a latch or has a pending request to obtain a latch. If JOBNAME is specified, LATCH must also be specified.
- LATCH or L
- Latch information is to be displayed. If you specify LATCH, you must also specify CONTENTION or
JOBNAME or both:
- Specify LATCH,CONTENTION if you suspect that tasks or SRB routines are contending for a latch that is held by another task or SRB routine. The system displays information about latches that have contention (if any exist).
- Specify LATCH,JOBNAME to display information about latches that a specified job owns or is waiting for, regardless of whether contention for those latches exists.
- Specify LATCH,CONTENTION,JOBNAME to display information about latches that a specified job owns or is waiting for and for which contention exists.
- Specify the keyword LATCHID to the command to display the specified latch identity string (if any) by the latch set creator (for example, LATCH,CONTENTION,LATCHID or LATCH,JOBNAME,LATCHID).
The following are the various combinations of the CONTENTION, ENQ, JOBNAME, and LATCH parameters, and the information each produces:
- CONTENTION
- ENQ,LATCH,CONTENTION
- Both ENQ and latch contention information.
- ENQ,CONTENTION
- ENQ contention information.
- LATCH,CONTENTION
- Latch contention information.
- LATCH,JOBNAME
- Latch information for a particular job name, if the job owns or waits for a latch
- LATCH,CONTENTION,JOBNAME
- Latch information for a particular job name, if the job owns or waits for a latch, and contention exists for the latch.
- ENQ,LATCH,CONTENTION,JOBNAME
- ENQ and latch contention information for a particular job name.
- ENQ,LATCH,CONTENTION,LATCHID
- LATCH ID information about the contention displayed in message ISG343I.
- ENQ,LATCH,JOBNAME,LATCHID
- LATCH ID information for the job that owns the latch displayed in message ISG343I.
- LATCHID or LID
- When used in combination with LATCH,JOBNAME or LATCH,CONTENTION , the latch id number associated with the jobname or contention.
- SUSPEND or S
- Displays the jobs that are suspended, waiting for resources that are affected by the RNL change.
The following information is displayed:
- Jobname
- ASID
- Resources the job is waiting for
Note: DELAY and SUSPEND do not support the HEX operand. - RNL=
- The contents of one or all resource name lists (RNLs) in the current global resource
serialization complex are to be displayed. The RNL operand produces a display only when a global
resource serialization complex is active. Specify HEX if you want resource names displayed in EBCDIC
and in hexadecimal. When the GRSRNL=EXCLUDE option is in effect, the display shows this option is
being used.
- CONVERSION or CON or C
- The contents of the RESERVE conversion RNL are to be displayed.
- EXCLUSION or EXCL or E
- The contents of the SYSTEMS exclusion RNL are to be displayed.
- INCLUSION or INCL or I
- The contents of the SYSTEM inclusion RNL are to be displayed.
- ALL or A
- The contents of all RNLs are to be displayed.
- RES=(qname[,rname])
- A list of major names or resource information for the specified resource(s). Only resources that
have at least one requestor are displayed.
A resource name must consist of a qname (major name) and can include an rname (minor name). If you specify an asterisk (*) as the last character in the resource name, then the system treats the name as a generic name; the display includes all resources with names that match the portion of the name specified before the asterisk. For example, SYSV* indicates that set of resources whose names begin with SYSV. If you specify major name without a minor name, the system displays just a list of the specified major names of those resources that have requestors. You can specify a generic qname with a specific rname, and conversely, a specific qname with a generic rname.
Specify the HEX operand if you want the resource names to be displayed in EBCDIC and hexadecimal. Use it when you have resource names that contain characters that will not appear on your console (that is, those characters that are not defined in the figure, “;English (U.S) I/O Interface Code for 3277,” which appears in IBM 3270 Information Display System).
Note: The parentheses around the resource name(s) in RES=(qname[,rname]) are required.How you specify qname (the major name) depends on the characters in the name.
- qname
- If qname contains only characters that are alphanumeric (A-Z and 0-9), national (#, @, and $),
and a period (.), specify either:
- 1-8 alphanumeric characters (a specific major name)
- 1-7 alphanumeric characters followed by an asterisk (*) (a generic major name)
- ‘qname’
- If qname consists of characters that can be displayed other than alphanumeric, national, or a
period (excluding a single quotation mark), use the form ‘qname’. The single quotation marks are
required but do not count as part of the length specification for qname. For qname, specify either:
- 1-8 characters (a specific major name)
- 1-7 characters followed by an asterisk (*) after the closing single quotation mark (a generic major name)
- X‘qname’
- If qname contains hexadecimal values or a single quotation mark, specify the name in hexadecimal
in the form X‘qname’. The prefix X and the single quotation marks enclosing qname are required but
do not count as part of the length specification for qname. For qname, specify either:
- 2-16 hexadecimal digits (a specific major name)
- 2-14 hexadecimal digits followed by an asterisk (*) after the closing single quotation mark (a generic major name)
- *
- If you want a list of the major names of all resources that have requestors, specify ‘*’ to indicate a generic major name.
How you specify rname (the minor name) depends on the characters in the name.
- rname
- If rname contains characters that are alphanumeric (A-Z and 0-9), national (#, @, and $), and/or
a period (.), specify either:
- 1-52 alphanumeric characters (a specific minor name)
- 1-51 alphanumeric characters followed by an asterisk (*) (a generic minor name)
- ‘rname’
- If rname consists of characters that can be displayed other than alphanumeric, national, or a
period (excluding a single quotation mark), use the form ‘rname’. The single quotation marks are
required but do not count as part of the length specification for rname. For rname, specify either:
- 1-52 characters (a specific minor name)
- 1-51 characters followed by an asterisk (*) after the closing single quotation mark (a generic minor name)
- X‘rname’
- If rname contains hexadecimal values or a single quotation mark, specify the name in hexadecimal
in the form X‘rname’. The prefix X and the single quotation marks enclosing rname are required but
do not count as part of the length specification for rname. For rname, specify either:
- 2-104 hexadecimal digits (a specific minor name)
- 2-102 hexadecimal digits followed by an asterisk (*) after the closing single quotation mark (a generic minor name)
- *
- If you want information on all resources, specify (*) to indicate a generic minor name.
- HEX
- Resource information is to be displayed in hexadecimal as well as EBCDIC. The HEX operand does not affect the SYSTEM or LINK operands.
- ANALYZE or ANALYSE or AN
- Displays an analysis of system contention. The scope of the analysis is based on the input
specified by the command issuer, and can be:
- the entire sysplex
- one system
- one address space
- one task.
The default scope for the analysis is the entire sysplex.
- ANALYZE, LATCH
- Displays information about GRS latch contention. Choose either BLOCKER, WAITER, or DEPENDENCY
analysis for all latch sets and latches. The optional parameters are:
- cr-asid
- Specifies the ASID of the latch set creator space to analyze.
- cr-jobname
- Specifies the JOBNAME of the latch set creator space to analyze.
- xlsetnamelist
- Specifies the list of latch sets to be excluded from the display. Latch set names can be long, so wildcarding (*,?) is encouraged, where ? matches any single character, and * matches any string of zero or more characters. You can enter one to five latch set names.
- xjobnamelist
- Specifies the list of job names to be excluded from the display. You can enter generic job names by placing a (*) at the end of the job name. You can enter one to twenty-five job names.
- workunitaddr
- Specifies the address of the work unit of the latch requestor (TCB or WEB for an SRB) to analyze. The workunitaddr parameter is only valid with DEPENDENCY and ASID or JOBNAME.
- lsetname
- Specifies the name of the latch set to analyze. Either CASID or CJOBNAME must also be specified. Latch set names can be long, so wildcarding (*,?) is encouraged, where ? matches any single character, and (*) matches any string of zero or more characters. If no (*) characters are specified, the latch set name is padded with blanks. The Lsetname parameter is only valid with DEPENDENCY and CASID or CJOBNAME. Do not specify Lsetname with XLSetNM.
- latchnum
- Specifies the latch number to analyze. Either CASID or CJOBNAME must also be specified. This number is to be specified by one to eight decimal digits. The Lsetname parameter is only valid with DEPENDENCY and CASID or CJOBNAME. Do not specify latchnum with XLSetNM.
- jobname
- Specifies the JOBNAME of the latch requestor to analyze.
- xjobname
- Specifies the list of latch requestor JOBNAMEs to exclude from the display.
- asid
- Specifies the ASID of the latch requestor to analyze.
The default scope for the analysis is the entire system.
- BLOCKER or BLOCKE or BLOCK
- Displays an ordered list of the units of work blocking GRS-managed resources.
- WAITER or WAITE or WAIT
- Displays an ordered list of the units of work waiting for ownership of GRS-managed resources.
- DEPENDENCY or DEPENDENC or DEPENDEN or DEPEND or DEPEN or DEPE or DEP
- Displays the dependencies between the units of work and resources that are in contention.
- SYSTEM or SYS = sysname or *
- The scope of the analysis, where sysname is a valid system name in the sysplex, 1–8 characters, following sysname rules. Use of an asterisk (*) for SYSNAME will be the equivalent of specifying the name of the system from which the display command is entered.
- ASID or AS = asid
- A valid hexadecimal address space id, 1–4 hexadecimal digits. ASID requires specification of a valid sysname; you may NOT specify ASID with JOBNAME or XJOBNAME..
- JOBNAME or JOB = jobname
- A valid JOBNAME, 1–8 characters, following jobname rules. JOBNAME requires specification of a valid sysname; you may NOT specify JOBNAME with ASID or XJOBNAME.
- XJOBNAME or XJOB = (jobname1,jobname2,…jobname25)
- Jobname(s) to exclude from the analysis. You may specify up to 25 jobnames, and may enter an asterisk as a wildcard indicator as the last character of a jobname. You may NOT specify XJOBNAME with JOBNAME or ASID. If you specify XJOBNAME with XQNAME, exclusion will occur if either the jobnames or qnames match.
- XQNAME or XQN = (qname1,qname2,…qname25)
- Qname(s) (major names) to exclude from the analysis. You may specify up to 25 qnames, and may enter an asterisk (*) as a wildcard indicator as the last character of a qname. You may not specify XQNAME with RES. If you specify XQNAME with XJOBNAME, exclusion will occur if either the qnames or jobnames match.
- TCB=tcbaddr
- A valid TCB address, 1–8 hexadecimal digits. TCB is only valid with DEPENDENCY, SYSTEM, and ASID or JOBNAME, and requires specification of a valid ASID or jobname.
- RES=(qname,rname)
- The resource name with which to begin a dependency analysis. A resource name consists of a
qname (major name) and an rname (minor name) of the
'nn' (see COUNT=) longest owners of the resource. If you omit the RES= keyword,
the dependency analysis will display the nn longest waiters without regard to
resource. You may not specify RES with XQNAME. Note: When the ANALYZE keyword is specified, the HEX operand is not available for this keyword. qname indicates the resource major name and rname indicates the resource minor name with which to begin analysis. The valid characters are $, ., @, and #.
- SCOPE or SCO = SYSTEM(S) or SYS(S)
- Indicates the scope of the resource that begins the dependency analysis. If you specify SCOPE=SYSTEM, then you must also specify with which system to associate the ENQ. You do this by using the SYSTEM keyword.
- COUNT or CNT = nn
- The maximum number of blockers or waiters (in decimal) to display. Valid values are from 1 to 99. The default value is 10. COUNT is valid with any combination of keywords.
- DETAIL or DET
- Specifies the more detailed form of message ISG374I. Not specifying DETAIL gives the shorter form of the output.
- L=a, name, or name-a
- Specifies the display area (a), console name (name), or
both (name-a) where the displayis to appear.
If you omit this operand, the display is presented in the first available display area or the message area of the console through which you enter the command.
Example 1:
D GRS,RES=(*,*)
Performance implication: This command gives you data about every allocated ENQ/RESERVE resource on all systems in the global resource serialization complex; therefore, there might be a very large display. If this command produces a large amount of output, the command output might fill WTO buffers, and degrade system response time. If the display exceeds the current supply of WTO buffers, an ABEND 09A with reason code 46FA will occur.
ISG343I 15.08.31 GRS STATUS
NOT ENOUGH STORAGE TO COMPLETE THE REQUEST
Example 2:
D GRS,RES=(SYSDSN,*)
Example 3:
D GRS,DELAY
ISG343I 01:32:21 GRS STATUS
DELAY REASONS ON SYSTEM SYSA
JOBNAME ASID QNAME RNAME
USERJB1 0044 SYSDSN SYS1.XYZ
CATALOG 0007 SYSDSN SYS1.CHANGING.RESOURCE2
Example 4:
D GRS,SUSPEND
ISG343I 01:32:21 GRS STATUS
JOBS BEING SUSPENDED DUE TO RNL CHANGE ON SYSTEM SYSA
JOBNAME ASID QNAME RNAME
USERNM3 0089 SYSDSN SYS1.DATASET.CHANGING
USERNM4 0245 SYSDSN SYS1.XYZ.ABC
Example 5:
D GRS,RES=(SYSCTLG,*),HEX
SYSCTLG
EEECEDC
2823337
D GRS,RES=(GRJGQE07,*),HEX
ISG343I 15.17.06 GRS STATUS
S=SYSTEMS GRJGQE07 TESTCASE#SERIALIZATION#ENQ
CDDCDCFF ECEECCEC7ECDCCDCECECDD7CDD
79178507 35233125B2599139913965B558
SYSNAME JOBNAME ASID TCBADDR EXC/SHR STATUS
S1 MAINAS11 001F 007DEB90 EXCLUSIVE OWN
Example 6:
D GRS,LATCH,CONTENTION
ISG343I 23.00.04 GRS LATCH STATUS 886
LATCH SET NAME: MY.FIRST.LATCHSET
CREATOR JOBNAME: APPINITJ CREATOR ASID: 0011
LATCH NUMBER: 1
REQUESTOR ASID EXC/SHR OWN/WAIT WORKUNIT TCB ELAPSED TIME
MYJOB1 0011 EXCLUSIVE OWN 006E6CF0 Y 00:00:40.003
DATACHG 0019 EXCLUSIVE WAIT 006E6B58 Y 00:00:28.001
DBREC 0019 SHARED WAIT 006E6CF0 Y 00:00:27.003
LATCH NUMBER: 2
REQUESTOR ASID EXC/SHR OWN/WAIT WORKUNIT TCB ELAPSED TIME
PEEKDAT1 0011 SHARED OWN 007E6CF0 Y 00:01:00.002
PEEKDAT2 0019 SHARED OWN 007F6CF0 Y 00:00:32.040
CHGDAT 0019 EXCLUSIVE WAIT 007D6CF0 Y 00:00:07.020
LATCH SET NAME: SYS1.FIRST.LATCHSET
CREATOR JOBNAME: INITJOB2 CREATOR ASID: 0019
LATCH NUMBER: 1
REQUESTOR ASID EXC/SHR OWN/WAIT WORKUNIT TCB ELAPSED TIME
MYJOB2 0019 SHARED OWN 006E6CF0 Y 00:01:59.030
LATCH NUMBER: 2
REQUESTOR ASID EXC/SHR OWN/WAIT WORKUNIT TCB ELAPSED TIME
TRANJOB1 0019 SHARED OWN 006E7B58 Y 01:05:06.020
TRANJOB2 0019 EXCLUSIVE WAIT 006E9B58 Y 00:01:05.003
ISG343I 23.00.04 GRS LATCH STATUS 886
NO LATCH CONTENTION EXISTS
Example 7:
D GRS,L,JOB=LISTCHK or D GRS,LATCH,JOBNAME=LISTCHK
ISG343I 23.00.04 GRS LATCH STATUS 886
LATCH DISPLAY FOR JOB LISTCHK
LATCH SET NAME: SYS2.PAYROLLAPP.LATCHSET
CREATOR JOBNAME: INITJOB1 CREATOR ASID: 0011
LATCH NUMBER: 1
REQUESTOR ASID EXC/SHR OWN/WAIT WORKUNIT TCB ELAPSED TIME
GETDAT1 0011 EXCLUSIVE OWN 007E6CF0 Y 00:01:07.030
GETDAT2 0019 EXCLUSIVE WAIT 007A6CF0 Y 00:00:31.050
SHOWDAT 0019 SHARED WAIT 007E6CF0 Y 00:00:25.010
LATCH NUMBER: 2
REQUESTOR ASID EXC/SHR OWN/WAIT WORKUNIT TCB ELAPSED TIME
LISTREC 0011 SHARED OWN 007B6CF0 Y 00:03:07.040
FINDBLK 0019 SHARED OWN 007C6CF0 Y 00:02:07.030
CHNGBLK 0019 EXCLUSIVE WAIT 007F6CF0 Y 00:02:03.002
Example 8:
D GRS,L,C,JOB=FINDREC or
D GRS,LATCH,CONTENTION,JOBNAME=FINDREC
Example 9:
D GRS,E,C or D GRS,ENQ,CONTENTION
Example 10:
D GRS,RNL=ALL
ISG343I 18.10.38 GRS STATUS
LIST TYPE QNAME RNAME
INCL GEN SYSDSN
INCLPATT SYSDSN SYS1.*.*
EXCL SPEC SYSDSN PASSWORD
EXCL PATT SYSDSN SYS?.*.*LIB
EXCL PATT SYSDSN SYS?.TEST
EXCL PATT SYSDSN SYS1.*.LOGREC
EXCL PATT SYSDSN SYS1.*.MANX
EXCL SPEC SYSDSN SYS1.BRODCAST
CON PATT* *
Note the use of wildcard characters in this example.