Querys For I5 OS
Querys For I5 OS
System i
Query for i5/OS
Version 6 Release 1
SC41-5210-05
System i
Query for i5/OS
Version 6 Release 1
SC41-5210-05
Note
Before using this information and the product it supports, be sure to read the information in
Appendix F, Notices, on page 253.
This edition applies to version 6, release 1, modification 0 of IBM i5/OS (product number 5761-SS1) and to all
subsequent releases and modifications until otherwise indicated in new editions. This version does not run on all
reduced instruction set computer (RISC) models nor does it run on CISC models.
Copyright International Business Machines Corporation 2000, 2008. All rights reserved.
US Government Users Restricted Rights Use, duplication or disclosure restricted by GSA ADP Schedule Contract
with IBM Corp.
Contents
About Query for i5/OS . . . . . . . . ix Selecting a library for your Query for i5/OS
Who should read the Query for i5/OS book . . . ix queries . . . . . . . . . . . . . . . 16
Prerequisite and related information . . . . . . ix Other considerations when you are trying to
How to send your comments . . . . . . . . ix locate or use a particular Query for i5/OS
query . . . . . . . . . . . . . . 17
Displaying the format of constants in Query for
Part 1. Introduction to Query for i5/OS . . . . . . . . . . . . . . . . 17
i5/OS . . . . . . . . . . . . . . . . 1 Query for i5/OS profile information . . . . . . 18
Handling Query for i5/OS messages and errors . . 18
Chapter 1. What is Query for i5/OS? . . 3 Changing your Query for i5/OS queries . . . . 18
Query for i5/OS fundamentals . . . . . . . . 3
Files, fields, and record formats in Query for Part 2. Defining and using Query
i5/OS . . . . . . . . . . . . . . . . 3
for i5/OS query definitions . . . . . 21
Double-byte character set (DBCS) fields in
Query for i5/OS . . . . . . . . . . . 4
UCS2 level 1 character set support in Query for Chapter 3. Creating a Query for i5/OS
i5/OS . . . . . . . . . . . . . . . 4 query definition . . . . . . . . . . . 25
Data definition languages and utilities support Starting Query for i5/OS query definition . . . . 25
in Query for i5/OS . . . . . . . . . . 4 Selecting definition steps when defining a Query for
Query for i5/OS definitions . . . . . . . . 5 i5/OS query . . . . . . . . . . . . . . 26
Libraries in Query for i5/OS . . . . . . . . 5 Selecting options for a Query for i5/OS query
Major functions of Query for i5/OS . . . . . . 5 definition . . . . . . . . . . . . . . 27
Moving through the Query for i5/OS definition
Chapter 2. General operating displays . . . . . . . . . . . . . . 28
information for Query for i5/OS . . . . . 7 When you return to the Query for i5/OS Define
the Query display . . . . . . . . . . . 28
Practicing with Query for i5/OS . . . . . . . . 7
Considerations for creating Query for i5/OS queries 28
Getting started with Query for i5/OS . . . . . . 7
Selecting files, records, and fields for Query for
When you are finished working with Query for
i5/OS . . . . . . . . . . . . . . . 28
i5/OS . . . . . . . . . . . . . . . . 7
Suggested sequence of tasks for creating Query
Telling Query for i5/OS what you want . . . . . 7
for i5/OS queries . . . . . . . . . . . 29
Using prompts and default values in Query for
i5/OS . . . . . . . . . . . . . . . . 7
Using Query for i5/OS function keys . . . . . 8 Chapter 4. Specifying and selecting
Checking the results before printing the Query files for a Query for i5/OS query . . . . 31
for i5/OS report . . . . . . . . . . . 8 Specifying file selections for a Query for i5/OS
Printing what you see on your Query for i5/OS query . . . . . . . . . . . . . . . . 31
display . . . . . . . . . . . . . . 9 Choosing a file for a Query for i5/OS query . . 32
Using lists in Query for i5/OS . . . . . . . 9 Choosing a library for a Query for i5/OS query 32
Displaying a Query for i5/OS list . . . . . 9 Choosing a member or record format for a Query
Selecting items in a Query for i5/OS list . . . 10 for i5/OS query . . . . . . . . . . . . 33
Special library names in Query for i5/OS . . 10 Selecting multiple files for a Query for i5/OS
Using Query for i5/OS commands. . . . . . . 11 query . . . . . . . . . . . . . . . 33
Using the Query Utilities menu . . . . . . . . 11 Using file IDs for a Query for i5/OS query . . 34
Using the Work with Queries display . . . . . . 12 Confirming your options for a Query for i5/OS
Choosing a single Query for i5/OS task . . . . 12 query . . . . . . . . . . . . . . . 34
Specifying a Query for i5/OS query and its Removing a option for a Query for i5/OS
library . . . . . . . . . . . . . . 13 query . . . . . . . . . . . . . . 34
Choosing multiple Query for i5/OS tasks . . . 13 Handling errors on the Query for i5/OS Specify
Working with a list of Query for i5/OS queries 14 File Selections display . . . . . . . . . . 34
Selecting a Query for i5/OS query name from Selecting files on the Query for i5/OS Select File
a list . . . . . . . . . . . . . . . 14 display . . . . . . . . . . . . . . . . 35
Using Query for i5/OS list subsets . . . . 14 Selecting file members on the Query for i5/OS
Positioning a list of Query for i5/OS queries 15 Select Member display . . . . . . . . . . . 37
Using F11 to display additional information Selecting record formats on the Query for i5/OS
about Query for i5/OS queries . . . . . . 15 Select Record Format display . . . . . . . . 38
Contents v
Types of summary functions in Query for i5/OS File . . . . . . . . . . . . . . 155
reports . . . . . . . . . . . . . . . 133 Library in Query for i5/OS reports . . . 155
Summarizing columns in Query for i5/OS reports 135 Member in Query for i5/OS reports . . . 155
Location of column summary values in Query for Data in file in Query for i5/OS reports 156
i5/OS reports . . . . . . . . . . . . . 135 Authority in Query for i5/OS reports . . 157
Text in Query for i5/OS reports . . . . 157
Chapter 12. Defining Query for i5/OS Print definition in Query for i5/OS
report breaks . . . . . . . . . . . 137 reports . . . . . . . . . . . . 157
Summary-only output of a Query for i5/OS
Defining a Query for i5/OS report break . . . . 137
report to a database file . . . . . . . . 158
Defining report break formatting in Query for
Using an output database file created by Query
i5/OS reports . . . . . . . . . . . . . 141
for i5/OS . . . . . . . . . . . . . . 159
Skip to new page in Query for i5/OS reports 141
Suppress summaries in Query for i5/OS reports 141
Break text in Query for i5/OS reports . . . . 142 Chapter 14. Specifying Query for
i5/OS processing options . . . . . . 161
Chapter 13. Selecting output type and Purpose of Query for i5/OS processing options 161
output form in Query for i5/OS reports 143 Rounding numeric field values during Query for
i5/OS processing . . . . . . . . . . . . 161
Selecting the output type and form you want in
Ignoring decimal data errors during Query for
Query for i5/OS reports . . . . . . . . . . 143
i5/OS processing . . . . . . . . . . . . 162
Form of output of Query for i5/OS reports . . 144
Ignoring character substitution warnings during
Line wrapping in Query for i5/OS reports . . 144
Query for i5/OS processing . . . . . . . . 163
Wrapping width in Query for i5/OS reports . . 145
Using collating sequence for all character
Record on one page in Query for i5/OS reports 145
comparisons during Query for i5/OS processing 163
Displaying wrapping widths in Query for i5/OS
reports . . . . . . . . . . . . . . 145
Defining output to the printer in Query for Chapter 15. Exiting and running a
i5/OS reports . . . . . . . . . . . . 146 Query for i5/OS query . . . . . . . . 165
Printer device in Query for i5/OS reports 147 Ending a Query for i5/OS query definition . . . 165
Form size in Query for i5/OS reports . . . 147 Saving a Query for i5/OS query definition . . 165
Start line in Query for i5/OS reports . . . 148 Storing the Query for i5/OS query definition 165
End line in Query for i5/OS reports . . . . 148 Describing the Query for i5/OS query
Line spacing in Query for i5/OS reports . . 148 definition . . . . . . . . . . . . . 166
Print definition in Query for i5/OS reports 148 Giving authority to others to your Query for
Specifying spooled output overrides in i5/OS query . . . . . . . . . . . . 166
Query for i5/OS reports . . . . . . . . 148 Running a Query for i5/OS query . . . . . . 167
Spool the output in Query for i5/OS Using function key F5 when running a Query
reports . . . . . . . . . . . . 149 for i5/OS query . . . . . . . . . . . 167
Form type in Query for i5/OS reports . . 149 Running a Query for i5/OS query from the
Copies in Query for i5/OS reports . . . 150 Query for i5/OS menu . . . . . . . . . 167
Hold in Query for i5/OS reports . . . . 150 Running a Query for i5/OS query from the Exit
Defining the printout cover page of Query This Query display . . . . . . . . . . 167
for i5/OS reports . . . . . . . . . . 150 Running a Query for i5/OS query from the
Print cover page of Query for i5/OS Work with Queries display . . . . . . . . 168
reports . . . . . . . . . . . . 150 Running a Query for i5/OS query using the
Cover page title of Query for i5/OS RUNQRY command . . . . . . . . . . 169
reports . . . . . . . . . . . . 151
Defining the page headings and footings in Chapter 16. Working with Query for
Query for i5/OS reports . . . . . . . . 151 i5/OS query definitions . . . . . . . 171
Print standard page headings in Query for
Changing a Query for i5/OS query definition . . 171
i5/OS reports . . . . . . . . . . 152
Starting changes by copying a Query for i5/OS
Page heading in Query for i5/OS reports 152
query definition . . . . . . . . . . . 171
Page footing in Query for i5/OS reports 152
Changes you can make to a Query for i5/OS
Defining output of Query for i5/OS reports to a
query . . . . . . . . . . . . . . . 171
database file . . . . . . . . . . . . . 152
Considerations for changing Query for i5/OS
Using an existing output file definition in Query
queries . . . . . . . . . . . . . . 174
for i5/OS reports . . . . . . . . . . . 153
Changing your collating sequence on Query
Building a new output file definition in Query
for i5/OS queries . . . . . . . . . . 174
for i5/OS reports . . . . . . . . . . . 154
Copying a Query for i5/OS query definition . . . 175
Specifying an output database file for Query
Renaming a Query for i5/OS query definition . . 176
for i5/OS reports . . . . . . . . . . 155
Deleting a Query for i5/OS query definition . . . 176
Contents vii
Defining a collating sequence in Query for CCSID and column formatting and editing in
i5/OS . . . . . . . . . . . . . . . 245 Query for i5/OS . . . . . . . . . . . 248
Getting a list of formats or members with text CCSID and report breaks in Query for i5/OS 248
in Query for i5/OS . . . . . . . . . . 246 CCSID and break and final text in Query for
Saving a Query for i5/OS query definition . . 246 i5/OS . . . . . . . . . . . . . . . 249
Running a Query for i5/OS query . . . . . 246 CCSID and cover page, page headings and
Running a default query in Query for i5/OS 246 footings in Query for i5/OS . . . . . . . 249
Selecting records at run time in Query for i5/OS 247 CCSID compatibility considerations in Query for
CCSIDs and Query for i5/OS query definition i5/OS . . . . . . . . . . . . . . . . 249
items . . . . . . . . . . . . . . . . 247
CCSID and file selections in Query for i5/OS 247 Appendix F. Notices . . . . . . . . 253
CCSID and join tests in Query for i5/OS . . . 247 Programming interface information . . . . . . 254
CCSID and result field expressions in Query for Trademarks . . . . . . . . . . . . . . 255
i5/OS . . . . . . . . . . . . . . . 247
CCSID and result field column headings in
Bibliography . . . . . . . . . . . . 257
Query for i5/OS . . . . . . . . . . . 248
CCSID and sort fields in Query for i5/OS . . . 248
CCSID and record selection tests in Query for Index . . . . . . . . . . . . . . . 259
i5/OS . . . . . . . . . . . . . . . 248
CCSID and summary functions in Query for
i5/OS . . . . . . . . . . . . . . . 248
You may need to refer to other IBM books for more specific information about a particular topic.
Before you use this book, you must be familiar with the introductory material for using the System i
product. You do not have to understand how to use a high-level programming language to use Query for
i5/OS.
The i5/OS Information Center contains new and updated system information, such as software and
hardware installation, Linux, WebSphere, Java, high availability, database, logical partitions, CL
commands, and system application programming interfaces (APIs). In addition, it provides advisors and
finders to assist in planning, troubleshooting, and configuring your system hardware and software.
With every new hardware order, you receive the System i Access for Windows DVD, SK3T-4098. This DVD
provides for the installation of the IBM System i Access for Windows licensed program. System i Access
Family offers client and server capabilities for connecting PCs to System i models.
You use Query to select, arrange, and analyze information (data) stored in one or more database files to
produce reports and other data files. You can create your own query definitions and then run them, you
can run existing queries that you did not create, or you can even run a default query against a particular
database file (using an unnamed query). You determine what data the query is to retrieve, the format of
the report, and whether it should be displayed, printed, or sent to another database file.
You can use Query to obtain information from a single file or a combined set of up to 32 files. You can
select all the fields, or a few of the fields and organize them as you want them to appear in the type of
output chosen. You can have all records in the files included in the output, or you can select only a few
to be included, using record selection tests. These and other functions are described in detail later.
This chapter begins by introducing basic information about Query, and then it introduces all the major
tasks (such as creating, displaying, or running query) that can be done using Query.
When you run a query to produce a report, Query uses the files, fields, and record formats to get the
information you want from the database, in the form of records, and uses those records to produce a
query report.
For example, an employee name and address file named NAMEADDR might contain a group of records that
identify one employee in each record (see Figure 1). Each record has several fields that contain the name
and address of an employee. The fields in each record might have names like NAME, STREETADDR, CITY,
STATE, and ZIPCODE. This order of the fields might be specified in a record format also named NAMEADDR.
Query retrieves the data you want from the files you choose. It uses certain fields (and record formats)
from those files to select, sort, calculate, and summarize that data in the form you want. It also produces
the query reports containing that data.
Query for i5/OS treats UCS2-graphic data the same as GRAPHIC or VARGRAPHIC data. A
UCS2-graphic field is a DBCS-graphic field tagged with a UCS2 CCSID.
The VARCHAR and VARGRAPHIC functions help you write queries that include UCS2 data.
If you are not a programmer and you want to create a file that you can query from Query for i5/OS, you
might want to use IDDU to create the file. If a programmer can create the file for you, he might use
IDDU, DDS and control language (CL), or DB2 for i5/OS. Consider the following items:
v IDDU is a menu-driven utility used to define files, fields, and record formats, to store all those
definitions in a data dictionary, and to create the files so they can be used to store data. A file defined
using IDDU can have more than one format. For more information about IDDU, see the IDDU Use
book.
Library Collection. Consists of a library, journal, journal receiver, data dictionary, and DB2 for i5/OS
catalog. A collection groups related objects and allows the user to find the objects by name.
Physical file Table. A set of columns and rows.
Record Row. The horizontal part of a table containing a serial collection of columns.
Field Column. The vertical part of a table of one data type.
Logical file View. A subset of columns and rows of one or more tables.
To create a query definition, you follow a sequence of displays that guide you through the process of
defining and saving a query definition. Once you have defined your query (and even while you are
defining your query), you can run it (as a query) to produce the reports that you need.
Figure 3. Major Tasks on the Query Menu and the Work with Queries Display
From the Query menu, you can choose to work with queries, run a query, delete a query, work with files,
or do an office-related task.
Query gathers all of this information from what you enter on the displays.
Also, when a display appears, some of the prompts are already filled in. These values are called default
valuesthey are the values assumed by the system if you do not specify anything yourself. You can
Checking the results before printing the Query for i5/OS report
Function keys F5 (Report) and F13 (Layout) can be used to check the results of your work at many points
in the query definition process. That is, during query definition, you can use these keys to see if you are
getting the output results you expected. If so, you can continue on with confidence; if not, you can make
whatever changes are necessary to get what you want before you move on to the next definition step. In
some situations, looking at the layout may be more useful than looking at the report, and vice versa (for
example, F13 can be used when there is no data in a file that is used by the query).
Note: If Query finds errors in numeric fields when your query is run, an error message might be
displayed or the field value might be shown in the output as plus signs (++++). Plus signs are
also used to indicate division by zero and overflow (when the overflow occurs as data is being
taken from the file). You can specify that Query ignore any numeric field errorssee Ignoring
decimal data errors during Query for i5/OS processing on page 162 for more information.
Asterisks (*****) are shown if the field length and/or number of decimal positions was changed
on the Specify Report Column Formatting display to a size too small for the value to be shown.
When the query is run, if Query finds conversion errors either in the date, time, or timestamp
fields, or in character fields due to the coded character set identifier (CCSID), plus signs (++++)
are shown in the output. Plus signs are also shown if the data is not good or overflows.
Field, break text, minimum, maximum, average, and total values can be null and are represented by a
dash (-) on the display.
v F13 (Layout) uses all the information that you have defined so far to show the column heading and
field layout without actually running the report.
On the Display Report Layout display, Xs show SBCS character data and 9s show numeric data. The
current date, time, or timestamp shows where date, time, or timestamp data is.
If you are using a DBCS-capable display and if DBCS fields are present, you may see:
v Double-byte Js, which represent DBCS-only data. DBCS-only fields contain only DBCS data.
v Double-byte Os, which represent DBCS-open (mixed) data. DBCS-open (mixed) fields contain DBCS
data, SBCS data, or a mixture of both types of data.
v Double-byte Es, which represent DBCS-either data. DBCS-either fields contain either all SBCS data or
all DBCS data, but not both in the same field.
DBCS characters take twice the amount of space of SBCS characters. In addition, a shift-out character
precedes DBCS data, and a shift-in character follows the data. The shift-out and shift-in characters are
called DBCS bracket characters. DBCS-graphic data is stored in the database without bracket characters;
however, the bracket characters are present when DBCS-graphic data is displayed or printed.
Although you must use a DBCS display to type or read data contained in DBCS fields, you do not need
to use a DBCS display to display the layout of a report that uses DBCS fields. However, the layout may
not be readable.
You can look at the displayed results and determine whether the spacing between columns, the length of
each field, and the column headings produce the results you want.
Note: The displayed report or report layout contains all the entries or changes that you have made this
far, including those typed just before you pressed F5 or F13.
You can also use the Print key, when needed, to print the displayed output of the function keys F5
(Report) and F13 (Layout). However, only what is shown on the display is printed. If your report or
layout is wider than the display and you have not specified that line wrapping be used, the far right side
of the report is cut off and is not printed. In this case, you could use the shift function keys to move text
lines to the right and then press the Print key again to obtain a printout of the remainder (or possibly just
more) of the report.
The lists eliminate the need to memorize names, and they also reduce the number of potential typing
errors.
You can also obtain a particular subset of a list of items by typing a generic name or a special library
name in the prompt or prompts before you press F4. (For more information about special library names,
The number of items shown in the list part of the display varies, depending on what form the list is in
and the amount of space used by the prompt part of the display. Sometimes a new display will appear
that shows the list. If all items in a list do not fit on the display, you can use the page keys to page
forward and backward through the list.
You may be able to display, from a list, a long comment about a file, a record format, a file member, or a
field. Long comments may provide extensive information about their content. If a long comment is
defined for a file, a record format, a file member, or a field, you can move the cursor to its name and
press F23 to display the long comment.
Note: If the field is a result field, the entire expression defining the result field is shown as a long
comment.
If you specify *CURLIB in the Library prompt, Query changes it to the name of the library currently being
used in your job. That library name is displayed in place of *CURLIB.
Note: You can use only those libraries for which you have the necessary authority. If you specify a
special library name that contains libraries you do not have authority for, you will see queries in
only those libraries in that list for which you do have the authority.
Query has four commands, which can be entered from any command line:
v STRQRY brings up the Query menu.
v WRKQRY brings up the Work with Queries display.
v Run Query (RUNQRY) runs an existing query, or you can use it to run a default query. This command
can also be embedded in CL programs so that you could, for example, run several queries overnight.
v Delete Query (DLTQRY) deletes one or several query definitions.
For detailed information about how you can use these commands, see the Control language topic in the
i5/OS Information Center.
Query management
20. Work with query management forms
21. Work with query management queries
22. Start a query
23. Analyze a Query for i5/OS definition
More...
Selection or command
===>
If you select option 1 (Work with queries) and press the Enter key, the Work with Queries display is
shown. On that display, you can specify which query you want to work with and in what way. The tasks
that can be started using that display (including additional ways for running and deleting queries) are
introduced in Using the Work with Queries display on page 12.
If you select option 2 (Run an existing query) on the Query Utilities menu, you are shown the prompt
displays for the Run Query (RUNQRY) command. You can use this command to run a query and
produce a query report of the data selected from one or more database files. You can use this command
to run an existing query (one that is defined and stored by name on the system) or to run a default
query (one that is unnamed and that uses mostly system-supplied values). If you do not know the name
of a query or library, use option 1 (Work with queries) so that you can get a list of queries and libraries.
There are other tasks that you can do that are not part of Query but may be related to it or may be
convenient to get to from the Query Utilities menu:
v If you select option 30 to work with files, the Files (FILE) menu is displayed. From that menu, you can
perform a file-related task (display, copy, delete, save, restore, or edit) or you can use a different
file-related utility such as IDDU or DFU, or a licensed program, such as DB2 for i5/OS. For example,
you can use IDDU to define and create files, and you can use either IDDU or DFU to type data into
the files.
v If you select option 31 to do an office-related task, the Office Tasks (OFCTSK) menu is displayed. From
that menu, you can choose to work with documents or folders, with office security, or with
OfficeVision or Client Access.
Part 2 of this book describes these primary Query tasks. Creating query definitions is described in
Chapters 3 through 14, running queries is described in Chapter 15, and the remaining tasks (changing,
copying, displaying, printing, and deleting query definitions) are described in Chapter 16.
If you specify the name of a query, Query assumes that it already exists and searches for it in the library
specified in the Library prompt. If you specified a special library name (such as *LIBL) or a generic library
name (such as ABC*), the first query found with the name you specified is used; libraries are searched in
alphabetical order (except for *LIBL and *USRLIBL).
If you are creating a query, you do not need to name it unless you want to save it for later use. For more
information on creating queries, see Chapter 3, Creating a Query for i5/OS query definition.
You can type any option number (except a 1) beside the name of each query that you want to select from
the list. If you need to select multiple queries, you can select and mix the options according to the types
of work you need to do. For example, if you need to run a query, delete another query, and copy a third
query, you can page through the list looking for the query names and select all three options on this
display at one time. You can also type an option number (including 1) and a query name in the top
position of the list as well.
When you select multiple options and the list contains multiple columns of names only (such as in
Figure 4 on page 13), the processing order of the columns is top to bottom and left to right. That is,
Query processes all the selected queries in the leftmost column first, then the second column, and so on.
(However, if the selected options include queries that are to be copied or deleted, Copy Queries or
Confirm Delete of Queries displays are shown when the first query with one of those options is found.
Then Query groups together all others with the same option, by library, for you to verify what you want
done.)
You can also specify a complete name (without an *) in the Subset prompt. Continuing the previous
example, if you want to see which libraries contain queries named INVENTORY, type that complete query
name in the Subset prompt.
If you want to return to the full list previously shown, blank out the subset value (or type an * as the
subset value) and press the Enter key again.
You can use the special values *TOP or *BOT to position to the top or bottom of the list. If it is a long list,
you may want to move (change the position within) the list so that it starts with a particular query name.
You can do this by typing one of the following in the Position to prompt:
v All of the characters in an existing query name
v One or more of the starting characters in the name
When you press the Enter key, Query moves the list so that the fully specified name (or, in a list for a
specific library, the first name with the specified starting characters) is now shown at the top of the list.
If there is no Library column present and if there is no query name in the list that starts with those
characters, Query moves the list to the name closest to, and in front of, the position that the name would
have been in. However, if there is a Library column present and there is no query name that exactly
matches the value in the Position to prompt, the list is not repositioned.
Two other methods are also available to move through a long list of queries:
v You can use the page up and page down keys to go forward or backward through the list.
v You can use F19 (Next group) to advance to the start of the next librarys list of query names.
Using F11 to display additional information about Query for i5/OS queries
When a list is displayed, you can use F11 (Display text) to alternate between showing a list of just the
item names (such as queries, fields, and so on) and showing a list of both the items name and the text
that describes each item. When you press F11, the textif any was specified when the item was created
or changedis shown next to each item name in the list. Some additional information may also be
shown; for example, when you display the text for a list of queries, the date that each of the queries was
created or last changed is also displayed.
Following is an example of how the Work with Queries display might appear when F11 is used.
After you press F11, all lists on all the Query displays that use F11 are shown in the form you chose until
you press F11 again.
If this is the first time you are using Query, your current library is supplied as the library name. If you
do not have a current library, QGPL is used. When you specify a different library name, a special library
name, or a generic library name, Query supplies that name the next time you use this display. You can
use the same value each time, or you can change it to a different library or library group. (See Query for
i5/OS profile information on page 18 for more information.)
To look at or use a different library, or a list of libraries from which you can choose, do either of the
following:
v Type the name of the library, a generic library name, or a special library name in the Library prompt
and press the Enter key. A list of all the queries in that library or group of libraries for which you have
the authority to use is shown. If there are multiple libraries, the queries are listed in alphabetical order
within each library. The libraries themselves are shown in alphabetical order if *ALL, *ALLUSR, or a
generic library name is specified. If you specify *LIBL or *USRLIBL, the libraries are shown in the order
that they are listed in the library list.
If you specify a library name or special value that contains no query definitions (or none that you have
authority to use), a message is displayed indicating there were no queries.
If the list of queries is not empty but one of the libraries in the group is being used or is damaged, a
message is displayed indicating that the list may be incomplete.
v Move the cursor to the Library prompt and either leave the prompt blank or type a generic name or a
special library name, then press F4 to list the libraries. A list of the libraries that you are authorized to
use is shown.
Note: If you are sending queries between countries that use the comma for a decimal separator, put a
blank after each comma separating arguments in a function, such as SUBSTR or VALUE.
Display Constants Format
F12=CANCEL
i5/OS date formats are MDY, YMD, DMY, and JUL. The valid i5/OS time format is HHMMSS.
You may notice that some prompts on some of the displays are already filled in when the display is first
presented to you. These values may have been obtained from your profile, because Query uses it to make
your definition tasks easier by providing certain information at the appropriate time.
If you are still creating or changing your query, you can go back to previous displays by using F12. If
you press F12 on a display, all of the new entries or changes you made on that display are ignored.
Pressing F10 on a display keeps all of your new entries or changes and shows you the previous display.
You can also return to the Define the Query display and choose the option(s) that you want to change or
add.
If you just want to quit, press F3 (Exit) to go to the Exit This Query display. On the Exit This Query
display, indicate whether you want to save or run the query (or do both), and then press the Enter key.
Afterwards, if you have not selected other options, the Work with Queries display appears. Press F3 to
exit Query.
To specify a query name, you can type the name of the query (Query prompt) that you want to define,
and you can specify the name of the library (Library prompt) in which it is to be stored. Or, you can look
at a list of query names or library names to select the query name and the library name you want to use.
For example, you might specify CUSNAMQRY as the name of a query definition that you would use to query
the CUSTNAME file. If you do not specify a library name, the query is stored in the library identified in the
Library prompt (the QGPL library in this example).
Work with Queries
If you are creating a query (definition), you do not need to name it unless you want to save it for later
use. (The query does not exist as a definition object on the system until you save it.) If you do name it,
use the normal rule for naming objects, which follows:
The query name must begin with an alphabetic character (A through Z, $, #, or @) and can be followed
by no more than 9 alphanumeric characters (A through Z, 0 through 9, $, #, @, ., or _).
Because most system-supplied objects begin with Q, do not start your query names with a Q.
When you are creating a query, you can check this list to see what names are already used before you
choose a new name. Type the new name in the first list position (in its input field) and type a 1 next to it.
For more information on using lists on the Work with Queries display, see Working with a list of Query
for i5/OS queries on page 14.
The only definition step that you are required to select is Specify file selections. You do not have to select all
of these definition stepsuse only those that you need. Most of these steps do not have to be done in a
specific order (although the order shown is recommended when you need to use most of them). Each
step you select is a separate process that shows you one or more displays as you need them.
Define the Query
The Define the Query display is the primary display from which you start defining your query.
From this display, you can select options that define, generally speaking, the four major parts of a
complete query definition:
v The first six options define the query itself, including the files you want to query, the fields to be used
in each file, and the records to be selected.
v The next three options define what the report is to look like, including which columns are to be
summarized and when (using report breaks).
v The second to last option defines where the report is to go and what values are to be used when it is
sent there.
v The last option defines how numeric calculation results are processed and if substitution characters
are allowed during the conversion of character fields.
After you go forward through all of the options that you need, press the Enter key to return to the Define
the Query display. Then, you can select more options, change your selections, or end the definition of this
query.
When you return to the Query for i5/OS Define the Query display
When you return to this display, Query displays a > symbol beside all those definition steps that
currently have definition values that are different from the system-supplied (default) values. This is also
true if you are changing or displaying an existing definition.
Also, if you are creating or changing a definition, a message is shown to remind you to press F3 (Exit) to
save the query changes and/or run the query at this time. When you press F3, the Exit this Query
display is shown so you can specify both choices. (If you want to look at or change more definition steps
first, you can type a 1 next to each option as before, and press the Enter key.)
If there are any definition errors in the options you used, they are highlighted in reverse image when you
return to this display; you should correct the errors before you use the Exit key.
When you create a query, if you do not select and sequence the fields to be reported by the query, Query
selects the following:
v For reports, the first 500 of the following:
Fields chosen as sort fields on the Select Sort Fields display, in the sequence they appear on that
display
Result fields in the order they are defined on the Define Result Fields display
Fields that can be used by Query in the record format(s), in the sequence they appear in the record
format(s) (those in the first file selection, followed by those from the second, and so on)
v For database output:
All data in the record format
Result fields defined on the Define Result Fields display
For database output, maximum record length is limited to 32 766 bytes (32 740 bytes if variable-length or
null-capable fields are part of the record). In some cases, the maximum record length will be less than
these limits.
You can use a query to quickly sort records in a data file. Simply select the sort fields, choose database as
the output device, and specify the output database name.
After you have selected your definition steps on the Define the Query display and you press the Enter
key or F21 (Select all), the first display that you see is the Specify File Selections display.
BOTTOM
F3=Exit F4=Prompt F5=Report F9=Add file
F12=Cancel F13=Layout F24=More keys
The Specify File Selections display is used to specify one or more database files that you want to query
for the data in your report. You can specify as many as 32 files to be queried, and you can assign unique
3-character identifiers to each one. (You can also specify the same file twice, if you need to join it to itself;
if you do, it counts as two files in the query definition. For example, you might specify the same file
twice but use two different record formats.)
If you are creating or changing a query definition, you should complete all the information needed for
one file selection before you start on the next one. Based on the values you enter and the key you press,
Query shows you the displays you need. The order of prompting within each file selection is: file, library,
member, and record format. (If you have not completed all the information in a file selection, several of
the F keys will not work until you supply the needed information.)
The following special values are shown in the prompts for each file selection group when it is first
shown: *FIRST (for members and record formats) and *ID (for file IDs if shown). These and others that
you may specify (like *LIBL for libraries) are changed when you press the Enter key; they are changed to
the actual values that will be used when the query is run. Special values for member names are not
changed.
The initial value shown in the Library prompt of the first file selection group is the value that you used in
the file selection step in a previous query definition. For the remainder of the file selections, the initial
value is the same as is used in the first group.
If you want to choose a file from a list of file names, you can press F4 (with the cursor at the File
prompt). The Select File display is shown, and on this display you can choose one or more files for your
query.
Note: If the File prompt is blank before you press F4, you can select multiple files from the Select File
display; if it is not blank, you can select only one file.
If you specify *CURLIB as the library name for a file selection and you do not have a current library, QGPL
replaces the *CURLIB value.
If you are working with multiple files on this display, use the page keys to move forward or backward in
the list of file selections. If you press F18 (Files), you can also see this information in a different form. F18
takes you to the Display File Selections display and shows you the names of all the files, libraries, file
members, record formats, and file IDs for all the files currently defined in this query definition.
If you try to leave the Specify File Selections display before you specify how multiple files are to be
joined, Query assumes that the type of join is a 1 (Matched records) and shows you the Specify How to
Join Files display so you can specify the necessary join test specifications.
Chapter 4. Specifying and selecting files for a Query for i5/OS query 33
Using file IDs for a Query for i5/OS query
File IDs are used when you select more than one file. Although Query assigns a file ID value to each file
selection, you can specify your own identifier.
Note: When you are creating a query, the File ID prompt is not shown for your first file selection.
However, if you select more than one file, you will see that Query has assigned the value T01 as
the file ID of your first file. You will have to go back and change the file ID if you want to assign
your own file ID values.
The file ID allows you to uniquely identify fields that have the same name but are in different files. You
can specify from one to three characters; the first character must be alphabetic, $, #, or @, and the last two
can be alphabetic, numeric, or $, #, or @. Examples of valid identifiers are: A, B, B03, AEX, and $99.
Note: If you are creating queries that are distributed to other systems or are used in a multilingual
environment, use only A-Z and 1-9.
If you do not specify a file ID (that is, you do not change the value *ID in the File ID prompt), Query
resolves the value *ID to the number of the file selection, if not already used, or to the lowest possible
value that is available in the range of Tnn, where nn is a number from 1 to 32.
Although file IDs are assigned to each file on the Specify File Selections display, you do not have to use
them in other parts of the query definition unless you need to use a field that has the same name in more
than one of the files in the query. You must use file IDs every time for identical field names, to ensure
that the correct field is used from the files. For all the other field names, (that is, those that occur in only
one file in the query definition), you do not need to use the file IDs.
If you decide to change a file ID, Query keeps any definition values already assigned for field selection,
sort field selection, and so on. (You must change the ID, if used, for join tests, result field expressions,
record selection values, and break text.) However, if you move a file ID to a different selection group, all
the definition values you specified are lost, even if all of the names in the from and to file selections are
the same.
When you are changing an existing query definition, you see a different message when you press the
Enter key, and the values that you changed are shown in reverse image. Again, you should verify your
changes and then press the Enter key a second time to actually have them changed in the definition. You
do not have to press the Enter key twice if you make no changes or if you change only member names.
By removing a file selection, you may cause an error elsewhere in your definition. This occurs if the file
you removed was used in a join test or a field from a removed file was used to define a result field.
Handling errors on the Query for i5/OS Specify File Selections display
An error message is shown when you press the Enter key, F5, F10, or F13.
v If you did not type a file name
The cursor is positioned to the blank prompt or the prompt in error, and the message describes the error
for that prompt. For example, you may have typed the name of a file that you do not have the authority
to use.
If there is more than one error, you will see the next one after you have corrected the first one.
File ID . . . . : T01
Opt File
_ FILE1
_ CUSTMAST_1
_ CUSTMAST_2
_ CUSTMAST_3
_ EXAMPFILE1
_ EXAMPFILE2
_ INVMAST
_ TESTFILE_A
_ TESTFILE_B
At the top of the display, a field named File ID may or may not appear. The File ID field is shown only if
you came from the Specify File Selections display and pressed F4 (Prompt) in a nonblank File prompt. If
the file ID is shown, it is the file ID of the file selection group that the cursor was positioned to on the
previous display.
If the File prompt was blank and you pressed F4 on the Specify File Selections display, the File ID field is
not shown on this display, and you can then select multiple files here. If the File prompt had a name or a
generic name to get a subsetted list and you pressed F4 on the Specify File Selections display, the File ID
field is shown as Tnn on this display, and you can select only one file.
If you came from the Define Database File Output display or Specify Dependent Value Qualifiers display,
you can select only one file on this display.
The list on this display includes all files (for which you have the needed authority) that are in the library
shown at the top of the display. If you came from the Specify File Selections display, that library is the
one indicated in the Library prompt below the File prompt in which the cursor was positioned when you
pressed F4 for this list. If you specified a generic file name (in the form of ABC*) as a file name on the
Chapter 4. Specifying and selecting files for a Query for i5/OS query 35
Specify File Selections display, it is used as a subset value on this display, and only file names starting
with those generic characters are included in the list. (You can specify another subset value on this
display to change the subset shown.)
You can use the Library prompt to see the files that exist in a different library or group of libraries.
If you want to select a particular library from a list of libraries, press F4 with the cursor positioned in the
Library prompt. The list that is shown contains only the libraries that you have the authority to use.
v If you press F4 when the prompt contains a library name, *LIBL, or blanks, you see the libraries that
are in the *LIBL library list.
v If you press F4 when the prompt contains a generic library name or any of the other special library
names, you see the group of libraries represented by that value.
If you do not want or need to see a list of libraries, type the name of a library, a generic library name (in
the form of ABC*), or one of the following special library names: *CURLIB, *LIBL, *USRLIBL, *ALLUSR, or
*ALL.
Note: If you type *CURLIB and you do not have a current library, QGPL is used.
After you have entered a value in the Library prompt at the top of the display, press the Enter key and a
list of the files that you are authorized to use from that library appears.
If you typed in a generic library name or special library name, a Library column appears on the display
so that you are able to determine in which library a particular file resides.
Select File
Bottom
F4=Prompt F11=Display text F12=Cancel F24=More keys
If a Library column is present, you can specify a library name, generic library name, or special library
name in the Library prompt in conjunction with a typed-in option number and file name to complete a
file selection. If you typed a generic name or special library name in the Library prompt, it will be
resolved to the name of the first library (in the specified group of libraries) that contains a file with that
name.
To see a smaller group of file names, move the cursor to the Subset prompt and type the starting
characters followed by an asterisk (*) to identify the group you want to see, and press the Enter key. All
the files whose names begin with those characters in the specified library or library group are shown. (If
no * is used, only the file(s) with the specified name is shown.)
To move (position) the list of file names so that it starts with a particular name, move the cursor to the
Position to prompt and type all of the characters or one or more of the starting characters in the name you
want, and press the Enter key. (Do not add an * after the starting characters in this prompt.) If a specific
library name is used in the Library prompt, Query moves the list so that the first position shown contains
the first file name that starts with the characters you typed.
If there is no file name in the list that starts with those characters, Query moves the list to the name
closest to, and in front of, the position where the name would have appeared. If a special library name or
generic library name is used in the Library prompt, the list is repositioned only if the Position to prompt
value exactly matches a complete file name.
Use F11 to alternate between showing a list of only file names to showing a list of both file names and
text describing the files.
Once you have located the files you want, type a 1 beside each file name (if more than one is allowed),
including the file name in the top position in the list. If you are selecting multiple files, you can select as
many 32 files, including those previously selected for this query. Note that if join logical files are used,
you are only able to select less than 32 files because each file used in the join logical file is counted as one
of the 32 files. For example, if three physical files were joined into one join logical file, this join logical file
is counted as three files, not one.
After you have made your file selections, press the Enter key to return to the Specify File Selections
display. All the files you selected are added to the file selections, if any, that were there previously. (Any
blanked out file selections are filled in first and new ones are added at the end as needed.) The files are
added, each with its own group of file selection prompts, in the same order as they existed on the Select
File display. They are also assigned file IDs to match the number of the file selection or, if that number is
taken, to the lowest possible value that is available in the range of T01 through T32, which you can
change if you wish.
Selecting file members on the Query for i5/OS Select Member display
The Select Member display appears when you position the cursor on the Member prompt of a display and
press F4 (Prompt). The Select Member display shows you a list of members and allows you to select the
one from which your query can obtain data or the one to which the output from your query is received.
This display appears only when you are creating or changing a query definition.
Chapter 4. Specifying and selecting files for a Query for i5/OS query 37
Select Member
File ID . . . . . : T01
File . . . . . . . : EXAMPFILE1
Library . . . . : CUSTINV
Opt Member
_ __________
_ EXAMPMBR1
_ EXAMPMBR2
_ EXAMPMBR3
Bottom
If you came from the Specify File Selections display or Specify Dependent Value Qualifiers display, you
can specify which member you want your query to get data from. If you came from the Define Database
File Output display, you can specify which member you want the query data to be put into.
At the top of the display, the File ID field is shown if you came here from the Specify File Selections
display. The file ID is the file identifier of the file that is shown in the File field. This file is the one for
which you want to choose a member. The Library field shows the library in which the file is stored.
The names of the member that currently exist in the file shown at the top of the display are shown in the
Member column. You can choose a member by either typing a 1 in the Opt column to the left of the
member or by typing a member name (and a 1 in the Opt column next to it) in the first position in the
list. If you specify a member name in the top position, that member must also exist at this time. If you
specify *FIRST or *LAST, the member name on the previous display is changed to that value. Then, either
the first or the last member that exists in the file at the time the query is run is the member that is used.
If you came from the Define Database File Output display, you can also specify *FILE in the first position
in the list.
You can use F11 to alternate between showing a list of only member names to showing a list of both
member names and text describing the members.
When you press the Enter key on the Select Member display, the member that you specify is then shown
in the Member prompt on the display that you return to. If you return to the previous display without
selecting or specifying a name, the previous member name or value is not changed.
Selecting record formats on the Query for i5/OS Select Record Format
display
The Select Record Format display appears when you position the cursor on the Format prompt of the
Specify File Selections display and press F4 (Prompt). The Select Record Format display shows you a list
of record formats from which you can select the one you want your query to use with a selected file
member. This display appears only when you are creating or changing a definition.
File ID . . . . . : T01
File . . . . . . . : EXAMPFILE1
Library . . . . : CUSTINV
Opt Format
_ __________
_ EXAMPFMT1
_ EXAMPFMT2
_ EXAMPFMT3
Bottom
At the top of the display, the File ID field shows the file ID of the file that appears in the File field. This
file is the one for which you want to choose a record format. The Library field shows the library in which
the file is stored.
The names of the record formats that you can select for the file shown at the top of the display are
shown in the Format column. You can choose a record format by either typing a 1 in the Opt column to
the left of the record format or by typing a record format name (and a 1 in the Opt column next to it) in
the first position in the list.
If you specify a record format name in the top position, that record format must also exist at this time. If
you specify *FIRST, the format name on the previous display is changed to the actual name of the first
record format in the file. It is possible that some record formats cannot be used with certain file members,
but this is not determined until the Specify File Selections display is processed.
You can use F11 to alternate between showing a list of only record format names to showing a list of both
record format names and text describing the record formats.
When you press the Enter key, you return to the Specify File Selections display, and the name of the
format that you selected is shown in the Format prompt that you came from. If you return to the previous
display without selecting or specifying a name, the previous record format name or value is not changed.
Displaying all files selected on the Query for i5/OS Display File
Selections display
The Display File Selections display appears when you press F18 (Files) from a display where F18 is listed
on the bottom of the display. The Display File Selections display shows all the files that you selected for
use in the query. For each file, this display shows you the file ID, the library containing the file, and the
file member and record format that are to be used. The information on this display is for your
information only; it cannot be changed here.
Chapter 4. Specifying and selecting files for a Query for i5/OS query 39
Display File Selections
Bottom
Press Enter to display the join tests.
F12=Cancel
If multiple file selections are shown, you can press the Enter key to show the join type and all the join
tests for these same files. However, if you came to this display from the Specify File Selections, Change
File Selections, Specify Type of Join, or Specify How to Join Files display, the Enter key returns you to the
previous display. F12 and the Enter key (not F18) can be used to alternate between the Display Join Tests
display and this display.
For a record to be selected, the join specifications for all the files are used to determine whether a
matching record exists in each of the files joined in the query. A match occurs when, for each specified
file, the contents of its fields selected for comparison match the test condition(s) given on the Specify
How to Join Files display. Depending on whether there is a match and which type of join is specified on
this display, the records are then selected and used in the output as determined by the other join
specifications given on the Specify How to Join Files display and the record selection specifications given on
the Select Records display.
When Query determines that a record is to be selected from the specified files, it uses the data in all the
fields and files selected for the query to produce a single output record. This output record is included in
the query report or in an output database file.
There are three types of joins, or three ways that you can select matched or unmatched records from the
specified files. You can:
v Select only records that have matching records in all the specified files.
v Select all primary records, and include all matching secondary records. Primary records exist in the
primary file. The primary file is the first file selected on the Specify File Selections display. Secondary
records exist in secondary files. Secondary files are all of the files selected after the primary file on the
Specify File Selections display. After the join is done, the record selection tests, if any, are applied to
determine which records are selected.
v Select only the primary records that have one or more unmatched secondary records, and include all the
secondary records that also match.
All three types of joins use the same join fields and join tests specified on the Specify How to Join Files
display. They also all use the other specifications in the query definition the same way to select records
and produce the output.
Use the second join type (type 2) if you want to use every record in the primary file, whether or not it
has a matching record in the secondary file(s).
Use the third join type (type 3) if you want to see which records in the primary file do not have matching
records in the secondary file(s).
When comparing character values, all values must be marked with compatible CCSIDs. When comparing
SBCS character values, all values and any collating sequence to be applied must be marked with
compatible CCSIDs.
Chapter 4. Specifying and selecting files for a Query for i5/OS query 41
Note: See CCSID and join tests in Query for i5/OS on page 247 for information on how CCSIDs can
affect your join selections.
Specify How to Join Files
Field Field
A.NBR B.NAME
A.NAME B.PHONE
A.ADDR B.SERIAL#
A.ZIP
B.NBR
Bottom
F3=Exit F5=Report F10=Process/previous F11=Display text
F12=Cancel F13=Layout F18=Files F24=More keys
For each test, you specify two fields to be tested and the test value to be used. Look for a field in one file
that contains the same (or similar) information that can be found in a field of the other file, such as a
name or identification number. Specify the names of the fields (including their file identifiers, if needed)
on either side of the test value.
For example, if you specify the EQ (equal) test value between two fields, the test result is true if both
fields contain the same value. (The EQ value is almost always used.)
Field Test Field
A.NAME EQ B.NAME
In this example, both fields are named NAME, so the file identifiers (A and B) are included with the field
names.
Note: When comparing a date, time, or timestamp field with an SBCS, DBCS-either, or DBCS-open
character field, use a character field for which each value can be recognized as an SAA
formatted date, time, or timestamp. If the character field contains a correct representation of a
date, time, or timestamp but in other than an SAA format, you may get unexpected results.
When you run a query that uses a non-SAA format for date, time, or timestamp values in
character fields, and query has no setting for a non-SAA literal date value, use the CHGJOB
command to make sure your job date format and separator match the format and separator in
the character field values.
If some of the fields contain bracketed double-byte characters, you can use these DBCS fields for both
fields, or you can use an SBCS character field for one field and a DBCS-either or DBCS-open field for
the other field. Bracketed-DBCS fields are identified by a J, O, or E in the Dec column in the list of
fields. Press F11 to see the Dec column if it is not currently shown.
A DBCS-graphic field can be compared only to another DBCS-graphic field. DBCS-graphic fields are
identified by a G in the Dec column. Collating sequence is not applied to DBCS-graphic fields used in
join comparisons.
Valid comparisons for join tests are:
Numeric field with numeric field
SBCS character field with:
- SBCS character
- Date
- Time
- Timestamp
- DBCS-either
- DBCS-open
Date field with:
- Date
- SBCS character
- DBCS-either
- DBCS-open
Time field with:
- Time
- SBCS character
- DBCS-either
- DBCS-open
Timestamp field with:
- Timestamp
- SBCS character
- DBCS-either
Chapter 4. Specifying and selecting files for a Query for i5/OS query 43
- DBCS-open
DBCS-either field with:
- SBCS character
- Date
- Time
- Timestamp
- DBCS-either
- DBCS-open
- DBCS-only
DBCS-open field with:
- SBCS Character
- Date
- Time
- Timestamp
- DBCS-either
- DBCS-open
- DBCS-only
DBCS-only field with:
- DBCS-either
- DBCS-open
- DBCS-only
DBCS-graphic field with:
- DBCS-graphic
UCS2-graphic field with:
- UCS2-graphic
v Only the data fields specified in the join specifications for each file are used to join the files. For the
purposes of joining the files, the other fields in the files are ignored.
v Character fields of different lengths can be joined.
v A fixed-length character field can be compared to a variable-length character field. Variable-length
fields are identified by a V in the Dec column in the list of fields.
v If you specified option 1, matched records, on the Specify Type of Join display, you can type *ALL in
the first four spaces of the left field, but only in the first field name position, rather than specifying any
join test. If *ALL is used, each record in the first file is joined to every record in the other files. For
example, if a file of 2000 records is joined to a file of 3000 records using *ALL, the result is a joined file
of 6000000 records. Using *ALL can significantly degrade the performance of your query. If join tests
are not specified between each file, those files without a test are joined using the *ALL method.
Note: The fields you use to join the files do not have to be used in selecting the records or included in
the query report. You can use those same fields in other ways in the query definition, such as for
record selection or as part of the output of the query.
Following are some examples of how you might use the three different types of joins. All of the examples
assume that A.NAME EQ B.NAME was specified on the Specify How to Join Files display.
Example: Selecting matched records from all selected files in a Query for i5/OS
query
Type a 1 if you want records selected from each file only if they have a match with at least one record in
each and every one of the other selected files. That is, for a record to be selected, all the files must have a
matching record as determined by the join specification(s). A match occurs when, for each file used in the
query, the contents of its fields selected for comparison match the test condition(s) given on the Specify
How to Join Files display. (This type, option 1, has no primary or secondary files; all files are treated
equally.)
In this example, if you join files A and B using option 1 (Matched records), the query report contains the
following records. (The report fields and layout are not important here.)
Chapter 4. Specifying and selecting files for a Query for i5/OS query 45
Example: Selecting matched records using a primary file in a Query for i5/OS
query
Type a 2 if you want to include in the query output every record in the primary file and all the matching
records from all the other (secondary) files, whenever they exist. Every record in the primary file is
selected whether or not it has a match. (The primary file is always the one that was selected first in your
query definition.) Exception: if a field from the primary file used in a join test is null, the primary record
is not selected.
In this example, the RESIDENTS file is the primary file, so all of its records (numbered 1 through 6) are
included in the query report, assuming all of the records meet the selection tests on the Select Records
display. The PHONELIST file is the only secondary file being used, and it supplies a telephone number for
each primary record that it matches; the NAME field is used as the comparison test field in both files. Note
also that record 4 is included twice in the report, because Richard A Klein has two records, each with a
different telephone number, in the secondary file.
If a secondary file does not have a record that matches the join specifications of the primary files record,
blanks (for character fields), zeros (for numeric fields), or January 1, 0001 (for date fields) are used as
data for that secondary files selected fields. If these fields are included as output fields in the query
report, the substituted characters or values are used in the report. In the example, the PHONE field shows
blanks because it was coded as a character field. In the case where the fields are null-capable, the
specified default values are used as data for that secondary files selected fields. If a default value is not
specified, a null value is shown as a dash (-).
Note: If the secondary file was defined using DDS, values other than blanks zeros, and January 1, 0001
can be used when the DFT keyword defines default values for any of the fields. If the DFT
keyword specifies a default value for a field that is used in the query report, the default value is
substituted in the report when the secondary file does not have a matching record.
Example: Selecting unmatched primary file records in a Query for i5/OS query
Type a 3 if you want to select, in the primary file, only records that lack matches in at least one
secondary file. That is, you want to select every primary record that does not have a matching record in
all the secondary files. For example, if four files were joined and only two of the three secondary files had
matching records, then a record containing the selected information in the primary and two matching
secondary files (and the default data, if any, from the unmatched secondary file) is included as a single
record in the query output.
In our example, the RESIDENTS file is still the primary file, so only its records that do not have a matching
secondary record are included in the query report. The PHONELIST file has two such unmatched records;
the residents identified in records 2 and 6 do not have a telephone number, so there are no records for
them in the secondary file. (The NAME field is used again as the comparison test field in both files.)
As with the previous type of join, blanks (for character fields) or zeros (for numeric fields) are used as
the data for a missing record in a secondary files selected fields. Or, if the DDS DFT keyword was used
to define default values, those default values are used instead. (In our example, the PHONE field shows
blanks, since it was coded as a character field and no DFT value was defined for the PHONE field.)
Specifically, the order of secondary files is important if all of the following are true:
v The join type is 2 (primary matched) or 3 (primary unmatched). Both types have one primary file,
followed by secondary files.
v The query specifies three or more files in all.
v One or more secondary files do not have join tests connecting them to the primary file.
If these points apply to your query, then follow the secondary file sequence rule:
Use join tests to connect each secondary file to a file listed above it on the Specify File Selections display.
For instance, when joining four files, use a join test to connect the second file to the first, and use another
test to join the third file to the first or second file. The fourth file can be connected to any of the other
files.
Three files named CUSTOMER, PURCHASE, and ITEM are to be joined so that a report can be produced that
lists each customers name and city, the item purchased (one item per line in the report), and a
Chapter 4. Specifying and selecting files for a Query for i5/OS query 47
description of the item. (For example, if Monique Pottier bought three items, the report should have three
lines for her, with each line listing her name, city, one item, and the item description.) If the customer did
not make any purchases, the report should include the customer once in the list with blank item and
description fields.
Correct method:
On the Specify File Selections display, type the CUSTOMER file first, the PURCHASE file second, and the ITEM
file third. Specify the file IDs A, B, and C, respectively. The join type is 2 (Matched records with primary
file). The join tests are:
A.NAME EQ B.NAME
B.ITEM EQ C.ITEM
Query joins the files in the order listed, starting with file A (CUSTOMER), and file B (PURCHASE). Query joins
each record in file A to any record in file B for which the NAME field in A is equal to the NAME field in B.
Because this query is join type 2 (primary matched), every record in the primary file A is included in the
join. If a record in file A (such as Martinez) has no match in B, Query joins it to a default record for file B,
which has blank values for fields. The result of step 1 in our example is a file called AB. (Note that AB is a
working file used to build the joined file that you want in your report. You cannot see file AB.)
Incorrect method:
On the Specify File Selections display, type the CUSTOMER file first, and specify the file ID as A. Type the
ITEM file second (file C), and the PURCHASE file third (file B), which is in the opposite order from the correct
method. Note that each file has the same file ID as before. Specify the join type and join tests the same as
before. This method does not follow the secondary file sequence rule because file C is not connected by a
join test to the file (A) listed above it.
Chapter 4. Specifying and selecting files for a Query for i5/OS query 49
Query performs the file join in two steps:
Query joins the files in the order listed, starting with file A (CUSTOMER), and file C (ITEM). But there is no
join test that compares a field in A to a field in C. Query joins every record in file A (one record at a time)
Query joins each record in file AC to every record in PURCHASE file B for which A.NAME equals B.NAME and
B.ITEM equals C.ITEM. If a record in AC (such as Martinez) has no match in B, Query joins it to a default
record for file B, which is blank. This completes the join operation.
The incorrect method produces 15 records, which is 10 too many. Each customer has five records, one for
each item description, even if the customer made no purchases. Note that if the ITEM file has 1000 records
instead of five, the correct method still selects five records, but the incorrect method selects 3000 records.
Also, the ITEM and DESCRIPT values for Martinez are not blank as they should be.
In summary, this problem does not affect queries with join type 1 (matched), queries with just two files,
or queries that use the primary file in each join test. In this example, the logical order to specify files is
CUSTOMER, PURCHASE, and ITEM, with PURCHASE in the middle because it is the connection between the
CUSTOMER and ITEM files. This logical order is also the correct order.
Bottom
Press Enter to continue.
F12=Cancel
Chapter 4. Specifying and selecting files for a Query for i5/OS query 51
The Field columns show the fields being used to join the files. Each field name can have two parts: the
file ID and the actual name of the field, separated by a period. For example, if a field named CUSTNUM
exists in files T01 and T02 used in this query, they would be shown as T01.CUSTNUM and T02.CUSTNUM.
To find the files associated with the file IDs (such as T01), press F12 to show the Display File Selections
display.
The Test column shows the test values that determine how the files are to be joined.
The following fields may have been used in the query, and were expected
in this file definition, but were not found.
Field
NAME
ADDR
PHONE
SERIAL#
F12=Cancel
This display is shown at least once for each file selection that has missing fields. Once you are aware that
fields are missing, you may want to press F12 (Cancel) to bypass seeing any additional displays of
missing fields. Or, if you want to see which of the other file selections may have missing fields, use the
Enter key to see each display, one after the other. You might also want to return to a previous display
and use F5 (Report) to run the query and see how the report is affected by the missing fields.
Either you must remove the fields from wherever they are used in the query definition, or you must
select different files or formats that contain those fields. Or, you can leave Query and check the files or
formats themselves. If this display appeared when you first started to change or display a query,
something may have changed in the files or formats since the query was created or last changed. For
example, a record format definition may have had one or more of its fields deleted, or an IDDU-defined
file may have been linked to a dictionary definition but is now unlinked or is linked to a different
definition.
For this situation, when you press F12 or the Enter key, you return to the Specify File Selections display
without affecting your previous file (and format) selections. Once there: you can still confirm the file
selections and continue by pressing the Enter key (even though Query found fields missing in the current
file selections); you can specify a different file on the display and then press Enter; or you can press F12
to leave the file selections unchanged and then leave Query to go do something about the file (or format)
definitions.
If you press the Enter key as soon as you return to the Specify File Selections display, confirming that
you want to use the current file selections, Query for i5/OS uses as much of the file, format, and field
information as it can for the file selections now in this query. It removes all the missing fields from the
query definition for some of the definition steps, such as Select and sequence fields and Select sort fields.
When you select a logical file for use with Query for i5/OS or DB2 for i5/OS without specifying any sort
fields, unpredictable results might occur. For example, you might not receive the logical view of the
physical file.
After Query has done all it can, it shows the Specify How to Join Files display if the query uses multiple
files and there are errors caused by missing fields; otherwise, it continues with the definition steps
selected on the Define the Query display, or it returns you to the Define the Query display. On the Define
the Query display, any other field-related definition steps affected by the missing fields are shown in
reverse image. You must select each of these definition steps, such as Define result fields and Select records,
and correct the problems caused by the missing fields. On the definition displays for the affected steps,
the expressions or selection tests that use fields that are now missing are highlighted.
For these two situations, when the Fields Missing from File Definition display is shown, you can either
press F12 or press the Enter key:
v If you press the Enter key, you might see the Fields Missing from the File Definition display again if
there are additional missing fields to be displayed for this or another file. If not, Query for i5/OS uses
as much of the file, format, and field information as it can for the file selections now in this query. It
removes all the missing fields from the query definition for some of the definition steps, such as the
Select and sequence fields and Select sort fields steps. When you select a logical file for use with Query for
i5/OS or DB2 for i5/OS without specifying any sort fields, unpredictable results might occur. For
example, you might not receive the logical view of the physical file.
After Query has done all it can, it shows the Define the Query display. On it, other field-related
definition steps affected by the missing fields are shown in reverse image. You must select each of
these definition steps, such as Specify file selections, Define result fields, and Select records, and correct the
Chapter 4. Specifying and selecting files for a Query for i5/OS query 53
problems caused by the missing fields. You must also ensure that none of the fields were used in break
test values on the Format Report Break display. On the definition displays for the affected steps, the
expressions or selection tests that use fields that are now missing are highlighted.
v If you press F12 (Cancel), you return to the Work with Queries display without affecting your previous
file (and field) selections. You can press the Enter key to go again (assuming you were there once) to
the Change File Selections display and select another file. Or, you can press F3 (Exit) to stop working
with queries, leave Query, and then work with the files or formats.
After you have defined a result field, you can use it like any other field that exists in your selected file(s).
You can include the result field in your output, you can use it to define another result field, you can use
it as a sort field, and so on.
While you are defining result fields, a list in the lower part of the display assists you by showing the
names of fields in the files selected for your query. If you want to see additional information about each
field such as descriptive text, length, and decimal positions, use F11 (Display text) to switch between the
multiple-column list and the single-column list. This information is very useful when you are deciding on
a result field name and when you are building your expressions. The page keys will present all the fields
available, four at a time. For more information on using F11, see Using F11 to display additional
information about Query for i5/OS queries on page 15.
In most cases, the result fields that you define appear in your query output, but selecting them for output
is optional since some result fields are only needed as an intermediate step to obtain a final result. For
example, you might define a result field only for the purpose of selecting records, and you do not want
the result field to appear on the report.
Type definitions using field names or constants and operators, press Enter.
Operators: +, -, *, /, SUBSTR, ||, DATE...
To define a result field, you specify a unique name for the result field by entering a name in the Field
column on the Define Result Fields display. You cannot specify the name of a field that exists in your
selected file(s)the list in the lower part of the display shows you these field names. To page through the
You can specify the length and number of decimal positions for a numeric result field by filling in the Len
and Dec prompts on this display, or you can have Query determine the length and decimal positions for
you by leaving the prompts blank.
You can specify a column heading for any result field. If you leave the prompt blank, the result field
name is used as the column heading for the result-field definition.
Note: Use A-Z or 1-9 if this query is sent to other systems or used in a multilingual environment.
v Do not use any names from the list on the lower part of the display or the names of other result fields.
Enter an expression that creates the desired value for your result field.
Note: See CCSID and result field expressions in Query for i5/OS on page 247 to see how CCSIDs
are handled for the concatenation symbol.
v A date expression performs an operation on a date. Date expressions can contain the following
operators or functions:
+ (Addition)
(Subtraction)
If any argument can be null, the result field can be null. If any argument is null, the result is null.
When you do more than one calculation within a numeric expression, use parentheses to tell Query in
what order to do the calculations and to make the expression easier to understand. If you use nested
parentheses for example, 60 * (A (B + C)), the calculations are done for the innermost pair first (in the
example, B + C), then the next innermost pair, and so on. If you do not use parentheses, Query first does
multiplication and division, left to right, and then addition and subtraction, left to right. For example, (5
+ 4) * 2 equals 18, but 5 + 4 * 2 equals 13.
Be aware that the result of a numeric expression, especially one containing division and multiplication
operations, is truncated or rounded depending on what you specify on the Specify Processing Options
display (see Chapter 14, Specifying Query for i5/OS processing options). If you divide by zero, your
query may not run.
value-1 || value-2
v Value-1 and Value-2 are the character fields or character constants that are to be concatenated. You can
use SBCS- and DBCS-character field names (including character result fields) and character constants
(including DBCS-open, DBCS-only, and DBCS-graphic constants). A DBCS-graphic field can be
concatenated only with another DBCS-graphic field or constant.
For example, if a character constant Dr. and a character field named LASTNAME containing the value
Smith are concatenated, the result is a field containing the value Dr. Smith. Other examples of character
expressions are:
NAME
Mr.
Mr. || NAME
FIRSTINIT || MIDINIT
If any field is null-capable, the resulting field is null-capable. If any field used in a concatenation is null,
the resulting expression is null.
Except for the case of two DBCS-open fields, if all concatenated values are either fixed-length fields or
constants, the result is a fixed-length field. The concatenation of two DBCS-open fields results in a
DBCS-open field that allows for the varying lengths that can result from concatenating DBCS-open fields.
If any field is variable-length, the result is a variable-length field.
v Value is the name of a character field (including result fields that are already defined), a character
expression, or a character constant. It can be an SBCS or DBCS field, an SBCS constant, a DBCS-open
constant, a DBCS-only constant, or a DBCS-graphic constant. A SUBSTR operation on a DBCS-only or
DBCS-either field produces an SBCS character data type. A SUBSTR operation on a DBCS-open field
produces a DBCS-open data type. A SUBSTR operation on a DBCS-graphic field produces a
DBCS-graphic data type. If Value is a field, the CCSID of the result is the CCSID of the field. If Value is
a constant, the CCSID of the result is the associated CCSID of the job of the user who creates the query
(or of the user who changes the query, if the original CCSID was 65535).
v Offset is the starting character position within the field or character constant. An expression can also be
used for the offset.
v Length is the number of characters that make up the substring. An expression may be used for length.
You do not need to specify a length. If you do not, the resulting substring is the entire field or
character constant from Offset to the end.
Example of a character field substring: If a character field named ALPHA containing the value ABCDEFGHI is
used in SUBSTR(ALPHA,4,3), the result is a character field containing DEF. If you do not specify a value for
Length, the result is DEFGHI.
If the Offset and Length values cause the substring to exceed the right end of the field, you will receive an
error message. If any argument can be null, the result field can be null. If any argument is null, the result
is null.
If a variable-length field is used for Value, the result is a variable-length field. If either Offset or Length is
an expression, the result is a variable-length field.
For SBCS, DBCS-open, DBCS-only, and DBCS-either fields, Offset and Length refer to bytes, including
shift-out and shift-in characters. For example, if FIELD1 contains string <A1B1C1D1E1F1>, the operation
SUBSTR(FIELD1,2,3) results in a character field containing A1B.
For DBCS-graphic fields, Offset and Length refer to the number of double-byte characters. Shift-out and
shift-in characters in a graphic constant are ignored. For example, the operation
SUBSTR(G<A1B1C1D1E1F1>,2,3) results in a graphic field containing B1C1D1.
DIGITS ( expression )
The argument must be an integer or decimal value. The result of the function is a fixed-length character
string. The CCSID of the string is the default SBCS CCSID at the application server. If the argument can
be null, the result can be null. If the argument is null, the result is a null value.
The result is a string of digits that represents the absolute value of the argument without regard to its
scale. The result does not include a sign or a decimal point. The result includes any necessary leading
zeros so that the length of the string is:
v 5, if the argument is a small binary value with no decimal positions.
v 10, if the argument is a large binary value with no decimal positions.
v The length of the argument, if the value is a packed, zoned, or binary field with decimal positions.
Example:
DIGITS(JOBCODE)
The result can be null only if all arguments can be null; the result is null only if all arguments are null.
The X value is not checked to determine if it is null-capable.
Example:
VALUE(commission, 0)
Note: If you are sending queries between countries that use the comma for a decimal point, put a blank
after each comma separating values in a list of numeric values.
The selected argument is converted, if necessary, to the attributes of the result. The attributes of the result
are determined as follows:
v If the arguments are dates, the result is a date. If the arguments are times, the result is a time. If the
arguments are timestamps, the result is a timestamp.
v If the arguments are constants, the CCSID of the result is the CCSID that would result if the arguments
were concatenated.
v If all arguments are fixed-length, the result is a fixed length of n, where n is the length of the longest
argument.
v If any argument is variable length, the result is variable-length with length attribute n, where n is the
length attribute of the argument with the greatest length attribute.
v If the arguments are numbers, the data type of the result is the data type that would result if the
arguments were added.
v If all arguments are DBCS-only, the result is DBCS-only.
v If the arguments are any combination of bracketed-DBCS, the result is DBCS-open.
v If the arguments are DBCS-graphic, the result is DBCS-graphic.
If X is a DBCS-graphic field, Y fields and constants must all be DBCS-graphic. If X is not a DBCS-graphic
field, no Y fields or constants may be DBCS-graphic.
VARCHAR ( expression )
, length
DEFAULT , ccsid
The first argument must be a string expression; it must not be DBCS-graphic data.
The second argument, if specified as a length, is the length attribute of the resulting varying-length string.
The second argument must be an integer constant between 1 and 32740 if the first argument is not
nullable or between 1 and 32739 if the first argument is nullable. If the first argument is mixed data, the
second argument cannot be less than 4. If the second argument is not specified or DEFAULT is specified,
the result length is determined as follows, where n is the length attribute of the first argument.
v If the first argument is SBCS or mixed data, the result length is n.
Chapter 5. Defining result fields in Query for i5/OS 61
v If the first argument is UCS2 graphic data and the result is SBCS data, the result length is n.
v If the first argument is UCS2 graphic data and the result is mixed data, the result length is (2.5*(n-1)) +
4.
The third argument, if specified, must be a valid SBCS or mixed CCSID. If it is a SBCS CCSID, the first
argument cannot be a DBCS-either or DBCS-only string.
The result of the function is the character string that would result if the character string expression was
assigned to a varying-length host variable with a length attribute of n, where n is the length attribute of
the result. If the length attribute of the argument is greater than the length attribute of the result,
truncation is performed and no warning is returned.
If the first argument can be null, the result can be null; if the first argument is null, the result is the null
value.
Following are examples of using VARCHAR to convert from CHARACTER to VARCHAR and UCS-2
GRAPHIC to VARCHAR:
RESCHAR varchar(char1,10,37)
Following are examples of using VARCHAR to convert from CHARACTER to VARCHAR and UCS-2
GRAPHIC to VARCHAR:
VARGRAPHIC ( expression )
,
length DEFAULT ,ccsid
The first argument must be a string expression and must not be bit data.
The second argument, if specified as length, is the length attribute of the result and must be an integer
constant between 1 and 16370 if the first argument is not nullable or between 1 and 16369 if the first
argument is nullable.
If the second argument is not specified or DEFAULT is specified, the length attribute of the result is the
same as the length attribute of the first argument.
If the third argument is specified, the CCSID of the result is the third argument. It must be a DBCS or
UCS2 CCSID. The CCSID cannot be 65535.
If the third argument is not specified, the CCSID of the result is determined by a mixed CCSID, let M
denote that mixed CCSID. M is determined as follows:
v If the CCSID of S is a mixed CCSID, M is that CCSID.
v If the CCSID of S is an SBCS CCSID:
If the CCSID of S has an associated mixed CCSID, M is that CCSID.
Otherwise the operation is not allowed.
DBCS Substitution
M Result CCSID Description Character
930 300 Japanese EBCDIC XFEFE
933 834 Korean EBCDIC XFEFE
935 837 S-Chinese EBCDIC XFEFE
937 835 T-Chinese EBCDIC XFEFE
939 300 Japanese EBCDIC XFEFE
5026 4396 Japanese EBCDIC XFEFE
5035 4396 Japanese EBCDIC XFEFE
The actual length of the result depends on the number of characters in the argument. Each character of
the argument determines a character of the result. Regardless of the CCSID, every double-byte code point
in the argument is considered a DBCS character, and every single-byte code point in the argument is
considered an SBCS character with the exception of the EBCDIC mixed data shift codes X0E and X0F.
v If the nth character of the argument is a DBCS character, the nth character of the result is that DBCS
character.
v If the nth character of the argument is an SBCS character that has an equivalent DBCS character, the
nth character of the result is that equivalent DBCS character.
v If the nth character of the argument is an SBCS character that does not have an equivalent DBCS
character, the nth character of the result is the DBCS substitution character.
If the result is UCS2 then, each character of the argument determines a character of the result. The nth
character of the result is the UCS2 equivalent of the nth character of the argument.
Character constants can represent date, time, or timestamp values when used with date, time, or
timestamp fields or functions. They can be used in expressions and treated like a date, time or timestamp.
For example, a date constant may be subtracted from a date field.
A date starts with a digit and has a length of at least 6 characters. Trailing blanks can be included.
Leading zeros can be omitted from the month and day portions. Valid formats allowed for dates are
listed in Table 1. Each format is identified by name and includes an associated abbreviation (used by the
CHAR function) and an example of its use.
Table 1. Formats for Representations of Date Data Types
Format Name Abbreviation Date Format Example
International Standards ISO yyyy-mm-dd 1987-10-12
Organization
IBM USA Standard USA mm/dd/yyyy 10/12/1987
IBM European Standard EUR dd.mm.yyyy 12.10.1987
Japanese Industrial JIS yyyy-mm-dd 1987-10-12
Standard Christian era
i5/OS format DMY DD/MM/YY 12/10/87
YMD YY/MM/DD 87/12/10
MDY MM/DD/YY 12/10/87
JUL YYDDD 87/344
YYYYDDD 1987/344
Note about using SAA date format: To prevent confusion about the date value, use the Systems
Application Architecture (SAA) date formats (ISO, USA, EUR, or
JIS) when specifying date constants in a multilingual environment
or when a query is to be displayed or changed by different people.
If the i5/OS two-digit year format is used, the range of dates is from 1940 through 2039. Any year from
40 through 99 is assumed to have a century of 19. Any year from 00 through 39 is assumed to have a
century of 20. If a value outside of that range is in a field with a two-digit year format, it is shown on a
report as +s. Use the CHAR function on that field specifying an SAA date format, and then select the
result field for the report.
1. Historical dates do not always follow the Gregorian calendar. Dates between 1582-10-04 and 1582-10-15 are accepted as valid
dates although they never existed in the Gregorian calendar.
Valid formats for times are listed in Table 2. Each format is identified by name and includes an associated
abbreviation (for use by the CHAR function) and an example of its use.
Table 2. Formats for Representations of Time Data Types
Format Name Abbreviation Time Format Example
International Standards Organization ISO hh.mm.ss 13.30.05
IBM USA Standard USA hh:mm am or pm 1:30 pm
IBM European Standard EUR hh.mm.ss 13.30.05
Japanese Industrial Standard JIS hh:mm:ss 13:30:05
Christian era
i5/OS format - HMS 13:30:05
Note: Time separators can be either a period (.), slash (/), comma (,), dash (-), or a blank space. Use the
CHGJOB command to change the i5/OS date or time format separators.
In the USA time format, the hour must not be greater than 12 and cannot be 0 except for the special case
of 00:00 AM. Using the International Standards Organization (ISO) format of the 24-hour clock, the
correspondence between the USA format and the 24-hour clock is as follows:
USA Format
24 Hour-Clock
12:01 am through 12:59 am
00.01.00 through 00.59.00
01:00 am through 11:59 am
01.00.00 through 11.59.00
12:00 pm (noon) through 11:59 pm
12.00.00 through 23.59.00
12:00 am (midnight)
24.00.00
00:00 am (midnight)
00.00.00
The system always uses 00.00.00. Only the user can enter 24.00.00.
A timestamp data type starts with a digit and has a length of at least 16 characters. The complete
representation of a timestamp has the form yyyy-mm-dd-hh.mm.ss.nnnnnn. Trailing blanks can be included.
Leading zeros can be omitted from the month, day, and hour part of the timestamp. Trailing zeros can be
truncated or omitted entirely from microseconds. You do not need to specify microseconds. A timestamp
of yyy-mm-dd-hh.mm.ss is acceptable. If you choose to omit any digit of the microseconds portion, an
implicit specification of 0 is assumed. Thus, 1990-3-2-8.30.00.10 is equivalent to 1990-03-02-08.30.00.100000.
F12=CANCEL
i5/OS date formats are MDY, YMD, DMY, and JUL. The valid i5/OS time format is HHMMSS.
Note: If an addition operand is a date, time, or timestamp value, the other operand must be a duration.
For example, the result of DATE(3/15/2000) - 12/31/1999 is 215, or a duration of 0 years, 2 months,
and 15 days.
If a duration of months is added or subtracted, only the months and years are affected. The day portion
is unchanged unless the result is not valid (September 31, for example).
Adding or subtracting a duration of days affects the day portion and possibly the month and year.
Date durations, either positive or negative, may be added to and subtracted from dates. The result is a
date that has been incremented or decremented by a specified number of years, months, and days.
When adding durations to dates, adding one month to a given date gives the same date one month later
unless that date does not exist. Then, the date is set to the last day of the later month. For example,
January 28 plus one month gives you February 28. But January 29, 30, or 31 plus one month results in
February 28 or in a leap year, February 29.
Note: If one or more months is added to a given date and the same number of months is subtracted
from the result, the final date is not necessarily the same as the original date.
In this example, the job date format is YMD and the job date separator is /. A file contains a numeric date
field call NUMDATE, length 6, which contains dates in the format MDY (month day year). The first value
in NUMDATE is 011392.
CHARDATE DIGITS(NUMDATE)
CHARDAT2 SUBSTR(CHARDATE,5,2)||/||
SUBSTR(CHARDATE,1,2)||/||
SUBSTR(CHARDATE,3,2)
NEWDATE DATE(CHARDAT2)
NEWDATE contains the internal representation of year 1992 month 01 day 13. If the date is shown on the
report, it shows as 92/01/13.
Note: If the date value resulting is outside the range of 1940 through 2039, it will show as +s on the
report. Use the CHAR function to see the correct value.
Example 1: Working with numeric dates in Query for i5/OS: The following query defines a MMDDYY
numeric field conversion to a YYMMDD numeric field, which is more suitable for sorting and for
Chapter 5. Defining result fields in Query for i5/OS 69
selection on specific year, month, and day values. The marked (*) lines are necessary and a sample report
follows. If you require rounding for fields in the report (instead of truncation), you can add to each of the
intermediate expressions a minus one half, as follows: MM = (MMDDYY/10000)-0.5.
Example 1
Query . . . . . . . . . . . . . . . . . YYMMDD02
Library . . . . . . . . . . . . . . . CRP
Query text . . . . . . . . . . . . . . MMDDYY to YYMMDD
Collating sequence . . . . . . . . . . Hexadecimal
Processing options
* Use rounding . . . . . . . . . . . . No
Ignore decimal data errors . . . . . No (default)
Selected files
ID File Library Member Record Format
T01 MMDDYY QTEMP MMDDYY MMDDYY
Result fields
Name Expression Column Heading Len Dec
* MM (mmddyy/10000) 2 0
* DD (mmddyy/100 - (mm * 100)) 2 0
* YY (mmddyy - (mm*10000 + dd*100)) 2 0
* YYMMDD (yy*10000)+(mm*100)+dd 6 0
* * * * * E N D O F Q U E R Y P R I N T * * * * *
MM DD YY YYMMDD MMDDYY
02 15 08 080215 021508
* * * E N D O F R E P O R T * * *
Example 2: Working with numeric dates in Query for i5/OS: This example shows the reverse in
formatting converting a numeric YYMMDD to MMDDYY. The marked (*) lines are necessary and a
sample report follows.
Example 2
Query . . . . . . . . . . . . . . . . . YYMMDD01
Library . . . . . . . . . . . . . . . CRP
Query text . . . . . . . . . . . . . . YYMMDD to MMDDYY
Collating sequence . . . . . . . . . . EBCDIC
Processing options
* Use rounding . . . . . . . . . . . . No
Ignore decimal data errors . . . . . No (default)
Special conditions
*** All records selected by default ***
Selected files
ID File Library Member Record Format
T01 YYMMDD QGPL JUNK YYMMDD
Result fields
Name Expression Column Heading Len Dec
* YY (yymmdd/10000) 2 0
* MM (yymmdd/100 - (yy * 100)) 2 0
* DD (yymmdd - (yy*10000 + mm*100)) 2 0
* MMDDYY (mm*10000)+(dd*100)+yy 6 0
* * * * * E N D O F Q U E R Y P R I N T * * * * *
MM DD YY MMDDYY YYMMDD
08 31 90 083190 900831
* * * E N D O F R E P O R T * * *
A labeled duration can only be used as an operand if the other operand is of type date, time or
timestamp. For example:
HIREDATE + 2 MONTHS + 14 DAYS
is a valid expression.
HIREDATE + (2 MONTHS + 14 DAYS)
is not a valid expression. In both expressions, the labeled durations are 2 MONTHS and 14 DAYS.
CHAR ( expression )
,ISO
,USA
,EUR
,JIS
The result of the function is a fixed-length character constant. If the first argument can be null, the result
can be null. If the first argument is null, the result is null. Other rules depend on the data type of the first
argument as follows:
v If the first argument is a date:
A format should be specified, especially if:
- The query is to be used by different users.
- The query is to be sent to a different machine.
- A date has a two-digit year format attribute and the values may not be in the range of 1940
through 2039. Use this function to see the date in a four-digit year SAA format.
If the second argument is omitted, the string format is the job format.
The result is the character string representation of the date in the format specified by the second
argument.
The result length is 10 if a format is specified, 8 if no format is specified.
v If the first argument is a time:
If the second argument is omitted, the string format is the job format.
The result is the character string representation of a time in the format specified by the second
argument.
The result length is 8.
v If the first argument is a timestamp:
The second argument is not applicable and must not be specified.
The result is the character string representation of a timestamp.
The result length is 26.
Example:
CHAR(HIREDATE,USA)
DATE ( expression )
If the argument is a character representation of length 7, it must represent a valid date in the form
yyyynnn where yyyy represents the year digits and nnn represents digits between 001 and 366, signifying
a day in that year.
The result of this function is a date. If the argument can be null, the result can be null. If the argument is
null, the result is null.
v If the argument is a timestamp, the result is the date part of the timestamp.
v If the argument is a date, the result is that date.
v If the argument is a number, the result is the date that is n1 days after January 1, 0001.
v If the argument is a character value, the result is the date represented by the character string.
Note: If the i5/OS two-digit year format is used, the range of dates is 1940 through 2039. Any year from
40 through 99 is assumed to have a century of 19. Any year 00 through 39 is assumed to have a
century of 20. If a value outside of that range is in a field with a two-digit year format, it is shown
on a report as +s. Use the CHAR function on that field specifying an SAA date format, and then
select the result field for the report.
Example:
DATE(STRDATE)
DAY ( expression )
The result of the function is a binary field. If the argument can be null, the result can be null. If the
argument is null, the result is null.
If the argument is a date or a timestamp, the result is the day part of the value, which is a binary field
with a value between 1 and 31.
If the argument is a date duration or a timestamp duration, the result is the day part of the value, a
binary field with a value between 99 and 99. A nonzero result has the same sign as the argument.
Example:
RESULT(DAY) = DAY(HIREDATE)
DAYS ( expression )
The result of the function is a binary field. If the argument can be null, the result can be null. If the
argument is null, the result is null.
The result is one more than the number of days from January 1, 0001 to D, where D is the date that
would occur if the DATE function were applied to the argument.
Example:
RESULT(DAY) = DAYS(CURRDATE) - DAYS(HIREDATE)
RESULT(DAY) equals a number representing the number of days between these two dates.
HOUR ( expression )
The result of the function is a binary field. If the argument can be null, the result can be null. If the
argument is null, the result is null.
If the argument is a time or a timestamp, the result is the hour part of the value, which is a binary field
with a value between 0 and 24.
If the argument is a time duration or a timestamp duration, the result is the hour part of the value, which
in a binary field with a value between 99 and 99. A nonzero result has the same sign as the argument.
Example:
HOUR(TIME) where time = 12:11:22
MICROSECOND ( expression )
The result of the function is a binary field. If the argument can be null, the result can be null. If the
argument is null, the result is null.
If the argument is a timestamp, the result is the microsecond part of the timestamp, which is a binary
field with a value between 0 and 999999.
If the argument is a timestamp duration, the result is the microsecond part of the timestamp duration,
which is a binary field with a value between 999999 and 999999.
Example:
MICROSECOND(TIMESTAMP) where TIMESTAMP = 1991-10-22-12.15.23.123456
MINUTE ( expression )
The result of the function is a binary field. If the argument can be null, the result can be null. If the
argument is null, the result is null.
If the argument is a time duration or a timestamp duration, the result is the minute part of the value,
which is a binary field with a value between &minus 99 and 99. A nonzero result has the same sign as
the argument.
Example:
MINUTE(TIMESTAMP) where TIMESTAMP = 1991-10-22-12.15.23.123456
MONTH ( expression )
The result of the function is a binary field. If the argument can be null, the result can be null. If the
argument is null, the result is null.
If the argument is a date duration or a timestamp duration, the result is the month part of the value,
which is a binary field with a value between &minus 99 and 99. A nonzero result has the same sign as
the argument.
Example:
MONTH(TIMESTAMP) where TIMESTAMP = 1991-10-22-12.15.23.123456
SECOND ( expression )
The result of the function is a binary field. If the argument can be null, the result can be null. If the
argument is null, the result is null.
If the argument is a time or timestamp, the result is the seconds part of the value, which is a binary field
with a value between 0 and 59.
If the argument is a time duration or a timestamp duration, the result is the seconds part of the value,
which is a binary field with a value between 99 and 99. A nonzero result has the same sign as the
argument.
Example:
SECOND(TIMESTAMP) where TIMESTAMP = 1991-10-22-12.15.23.123456
TIME ( expression )
The result of the function is a time value. If the argument can be null, the result can be null. If the
argument is null, the result is null.
v If the argument is a timestamp, the result is the time part of the timestamp.
v If the argument is a time, the result is that time.
v If the argument is a character string, the result is the time represented by the character string.
Example:
TIME(TIMESTAMP) where TIMESTAMP = 1991-10-22-12.15.23.123456
TIMESTAMP ( expression )
expression
The rules for the arguments depend on whether or not the second argument is specified.
v If only one argument is specified, it must be either a:
Timestamp
Valid character representation of a timestamp
Character string of length 14
Note: A character string of length 14 must be a string of digits that represents a valid date and time in
the form yyyyMMddhhmmss where yyyy is the year, MM is the month, dd is the day, hh is the
hour, mm is the minute, and ss is the seconds.
v If both arguments are specified, the first argument must be a date or a valid character representation of
a date. The second argument must be a time or a valid character representation of a time.
The result of the function is a timestamp. If either argument can be null, the result can be null. If either
argument is null, the result is null.
If both arguments are specified, the result is a timestamp with the date specified by the first argument
and the time specified by the second argument. The microsecond part of the timestamp is zero.
If only one argument is specified and it is a timestamp, the result is that timestamp. If only one argument
is specified and it is a character string, the result is the timestamp represented by that character string.
The timestamp represented by a string of length 14 has a microsecond part of zero.
Example:
YEAR ( expression )
The result of the function is a binary field. If the argument can be null, the result can be null. If the
argument is null, the result is null.
If the argument is a date or a timestamp, the result is the year part of the value, which is a binary field
with a value between 1 and 9999.
If the argument is a date duration or a timestamp duration, the result is the year part of the value, which
is a binary field with a value between 9999 and 9999. A nonzero result has the same sign as the
argument.
Example:
YEAR(TIMESTAMP) where TIMESTAMP = 1991-10-22-12.15.23.123456
Note: If these functions are used more than once within a Query definition, all values are based on a
single clock reading.
If your job date format is different than the format used in the query, Query for i5/OS uses the job date
format. If you use CURRENT(DATE) as a break field, you might get unexpected results when the job and
query date format are different.
Example:
CURDAT = CURRENT(DATE)
CURTSP = CURRENT(TIMESTAMP)
Note: For ease of reading, multiple panel views are merged into single screen images.
Type definitions using field names or constants and operators, press Enter.
Operators: +, -, *, /, SUBSTR, ||, DATE...
Bottom
F3=Exit F5=Report F9=Insert F11=Display names only
F12=Cancel F13=Layout F20=Reorganize F24=More keys
Type definitions using field names or constants and operators, press Enter.
Operators: +, -, *, /, SUBSTR, ||, DATE...
Bottom
_______________________________________________________________________________
Field Text Len Dec
MMDDYY Date field in MMDDYY format 8 L
Bottom
F3=Exit F5=Report F9=Insert F11=Display names only
F12=Cancel F13=Layout F20=Reorganize F24=More keys
Type definitions using field names or constants and operators, press Enter.
Operators: +, -, *, /, SUBSTR, ||, DATE...
Bottom
F3=Exit F5=Report F9=Insert F11=Display names only
F12=Cancel F13=Layout F20=Reorganize F24=More keys
Type definitions using field names or constants and operators, press Enter.
Operators: +, -, *, /, SUBSTR, ||, DATE...
Bottom
_______________________________________________________________________________
Field Text Len Dec
YYDDD Date field in YYDDD format 6 L
Bottom
F3=Exit F5=Report F9=Insert F11=Display names only
F12=Cancel F13=Layout F20=Reorganize F24=More keys
FIELD = P / (X + S)
Note: In the expression S, the number of zero digits before the 1 digit should be two more than the
decimal precision of the original expression.
If a dividend for the definition of the result field will not be zero when the divisor is, the following
change to the expression prevents an overflow condition.
Original expression--> FIELD = P / X
Query determines the data type of the result field according to the following:
If the first value in the expression is a numeric field name, a numeric constant (like the number 7 or
3.14), or a function that returns a numeric value, then the result field is numeric.
If the SUBSTR function is used, the result field is an SBCS character field if the value is SBCS,
DBCS-only, or DBCS-either. The result field is a DBCS-open field if the value is DBCS-open. The result
field is a DBCS-graphic field if the value is DBCS-graphic. A substring of a fixed-length field can be
either a variable- or fixed-length field, depending on how you define the length and offset.
If the expression is a constant, field, or function, the data type of the result field is the data type of the
constant, field, or value returned by the function.
If the concatenation operation is used and all of the values being concatenated are DBCS-only, the
result field is DBCS-only.
If the concatenation operation is used and all of the values being concatenated are DBCS-graphic, the
result field is DBCS-graphic.
If the concatenation operation is used and one of the values being concatenated is DBCS-either, or if
the expression contains a mixture of SBCS and bracketed-DBCS fields or constants, the result field is
DBCS-open.
If a variable-length field is concatenated to either a fixed or variable-length field, the result is a
variable-length field.
If two or more fixed-length fields are concatenated, the result is a fixed-length field.
If two fixed-length DBCS fields are concatenated, the result is a variable-length field.
If you do not want any heading for a result field, type *NONE in the first five positions on the first line for
that field. (You must use all capital letters, and the remainder of the line and the next two lines must be
blank.) If you do not specify either a heading or *NONE, Query uses the result field name as the column
heading.
For date, time, or timestamp fields, look at the length of the current date, time, or timestamp in the result
field.
For numeric result fields, length is the total number of digits in the field. It includes the number of digits
to the left and right of the decimal point but not the decimal point itself. Decimal is the number of
decimal positions to the right of the decimal point. If you want to type your own value for the length, to
prevent unexpected results, you should first read Length and decimal positions in Query for i5/OS
reports on page 118 and Result field length and decimal positions in Query for i5/OS on page 186.
Also, observe the following:
v If you specify a value for Len, you must also specify a value for Dec (decimal positions).
v If you increase or decrease the value in Dec, you should increase or decrease the value in Len the same
amount. Also, you may need to change these values later if you make changes to the numeric
expression.
v If you leave Len and Dec blank, Query changes the value if the expression changes.
If you are creating result fields by using multiplication and division operations, you may be able to
reduce the length value if the actual data in your files will not require the maximum field size as
established by Query. For example, an inventory master file would typically have a PRICE field and a
QUANTITY field. Both fields would have to have sufficient length to handle the largest value possible.
When these two fields are multiplied to create a result field called AMOUNT, the maximum length would be
the sum of the sizes of both fields. Since items with high prices are usually stocked in low quantities, the
maximum field size for AMOUNT would probably be too large for practical use (for example, in a report).
Note: If you want to decrease the field length because you only want a certain number of positions
shown on a report, you should not change the field length on the Define Result Fields display.
Change the field length on the Specify Report Column Formatting display instead. If you specify a
field length on the Define Result Fields display, the result of an numeric expression may be
truncated or rounded, depending on what you specify on the Specify Processing Options display.
Bottom
_________________________________________________________________________
Field
MONTHS
WEEKS
YEAR
Bottom
F3=Exit F5=Report F9=Insert F11=Display text
F12=Cancel F13=Layout F20=Reorganize F24=More keys
Note: See CCSID and result field expressions in Query for i5/OS on page 247 for information on how
CCSIDs affect result fields.
Once you have positioned the cursor in the top half of the display, the page down key will continue to
show you the next two field definitions until you reach the last nonblank definition in the list. Page up
shows you the previous two definitions until you reach the beginning of the list.
To remove a result field, blank out all references to the field and its definition on the Define Result Fields
display. You must remove all other occurrences of it from your query, but Query leads you to any
occurrence of that result field in other expressions or in other parts of the query definition.
The Select and Sequence Fields display is shown during query definition if you typed a 1 next to the
Select and sequence fields option on the Define the Query display. You can press F12 (Cancel) to return you
to the previous display if you have changed your mind and now want Query to select and sequence
fields for you. (Anything you typed on the display is ignored.)
You make your selections by specifying a sequence number from 0 through 9999 in front of each field
you want to select. Use the numbers in ascending sequence. The lowest numbered field is positioned on
the far left of your output (or is the first field in your database file). If you change your mind about the
fields you have selected, you can delete a field from the output by removing the number you specified in
front of it. To change the sequence of the selected fields, just change the numbers.
Only those fields that you have selected so far appear in your output. If you want the remaining fields
(those with no numbers to the left of them) to appear in your output and you do not particularly care
how they are arranged, press F21 (Select all). Query arranges the list beginning with those fields that you
already selected, and then it supplies sequence numbers for all of the remaining fields in the order that
they appeared in the list. (F21 is available only if you are creating or changing a query definition.)
When you make selections or change the sequence and press the Enter key, Query rearranges the fields to
match the sequence you specified and displays the message Press Enter to confirm. If you are satisfied
with the selections and sequence, press the Enter key again to end field selection. If you make any
changes before you press the Enter key, the message is shown again, and you must press the Enter key
once more to continue.
Following is an example of how you might select and sequence fields so that a query of the customer
master file produces a report that shows COMPANY, ACCTNUMBER, and PASTDUE in that order.
Select and Sequence Fields
If you then pressed the Enter key, the Query would rearrange the fields so that COMPANY is in the first
position in the list, ACCTNUMBER is in the second position, and PASTDUE is in the third position. You could
also press F20 so that the selected fields are renumbered in added amounts of 10.
You could then select the remaining fields for output on the report by pressing F21 (Select all). Query
would then select and supply sequence numbers for the remaining fields in the order that they appeared
in the list.
Select and Sequence Fields
Another way of making your selections is to first specify the same sequence number (a 1, for example) for
all of the fields you want to select. Press the Enter key, and Query pulls all of those fields to the top of
the list. You can then specify new sequence numbers to arrange the fields in the order you want for your
report. This is particularly useful when there are too many fields to appear on a single display.
Query has the ability to show you additional information about the fields in the list area of the display. If
only the field names are shown in the list and you press F11, you see the descriptive text, the length, and
the decimal positions for the fields. For more information on using F11, see Using F11 to display
additional information about Query for i5/OS queries on page 15. You can also display a long comment
(if one exists) for a field (or display the expression defining a result field) by moving the cursor to that
field and pressing F23.
This selection process involves creating comparison tests that Query uses to select the desired records.
You can specify one test or as many as 100 tests. If the result of the test or the combined result of several
tests is true, the record being tested is selected and included in your query output.
The Select Records display is shown during query definition if you typed a 1 next to the Select records
option on the Define the Query display. Press F12 (Cancel) to return to the previous display if you have
changed your mind and now want all records in your output. (Anything you typed on this display is
ignored.)
To select a record, you compare the contents of one or more fields (including result fields) with one or
more specified values to see if a condition, or test, is true. For example, you want all persons with the
last name (LASTNAM) equal to Clarke to appear in your output.
Test
|
Field | Value
| | |
| | |
LASTNAM EQ Clarke
The Select Records display lists fields you can use (including result fields) and asks you to specify your
comparisons. This display is shown below with some sample fields from a customer master file shown in
the Field column.
Note: The value is not limited to the length of the line on the input display. If you need more space,
continue on to the next line. You must separate all values with blanks. If one value ends at the end
of the line and you continue on to the next line, you must include a blank space before the value
on the next line. You can split DBCS character constants by placing a DBCS shift-in character in the
last position of the first line and a DBCS shift-out character in the first position of the next line.
You can specify up to a maximum of 100 comparisons. Each comparison can use as many lines (up to 30
characters per line) as needed, up to a maximum of 100 lines total for all comparisons.
The Select Records display provides six input lines at a time for you to enter comparisons. If you need
more than this, press the Page Down key to get more blank input lines. If the cursor is positioned on any
of the input lines (whether you have typed a comparison on it or not), you can use the page keys to view
all of the comparisons that you have entered.
When you specify a field in a comparison, you must put the file identifier followed by a period in front
of any field name that appears in more than one selected file in the list. For example, if the field
ACCTNUMBER exists in two of your selected files that have file IDs T01 and T02, you would have to specify
T01.ACCTNUMBER or T02.ACCTNUMBER. If you did not include the file identifier, Query would not know from
which file to get the account number needed for the comparison test. You can press F18 (Files) to see a
list of the files that you selected and the file ID associated with each file.
The field and the value you are comparing must be compatible data types. The following are valid
comparisons for record selection tests:
v SBCS character field with:
SBCS character
DBCS-either
DBCS-open
v DBCS-either field with:
SBCS character
DBCS-either
DBCS-open
DBCS-only
v DBCS-open field with:
SBCS character
DBCS-either
DBCS-open
DBCS-only
v DBCS-only field with:
DBCS-either
DBCS-open
DBCS-only
v DBCS-graphic field with:
DBCS-graphic
v UCS2-graphic field with:
UCS2-graphic
v Numeric field with a numeric field
v Date field with:
SBCS character
Date
DBCS-either
DBCS-open
v Time field with:
SBCS character
Time
DBCS-either
DBCS-open
v Timestamp field with:
Note: When comparing a date, time, or timestamp field with an SBCS, DBCS-either, or DBCS-open
character field, use a character field for which each value can be recognized as an SAA formatted
date, time, or timestamp. If the character field contains a correct representation of a date, time, or
timestamp, but in other than an SAA format, you may get unexpected results. When you run a
query that uses a non-SAA format for date, time, or timestamp values in character fields, and
query has no setting for a non-SAA literal date value, use the CHGJOB command to make sure
your job date format and separator match the format and separator in the character field values.
Usually you specify only one value per comparison. The exceptions are discussed in Comparison tests in
Query for i5/OS on page 93.
An example of a situation where you might use a field as a value is if you want only the recordsfrom a
customer master filewith a balance due (in a field named BALDUE) greater than their credit limit (in a
field named CRLIMIT). In this example, you are comparing a field (BALDUE) with a value which is also a
field (CRLIMIT).
The fields being compared do not have to be the same length, and numeric fields do not have to have the
same number of decimal positions.
For example, if you want only the records for Jan Alison, you compare the NAME field with Jan Alison.
Also, note that if you do not use the apostrophes, Query tells you: Only one value is allowed for test.
The characters in the constant can be any combination of letters, numbers, or special characters (such as *,
?, #, $, @) that might be found in the tested field. You must use apostrophes around a character constant,
even if it contains only numbers. You must also type uppercase and lowercase letters exactly as you want
them. The special characters underscore (_) and percent (%) have certain meanings when used in a LIKE
test.
If the character constant you specify contains an apostrophe, you must enter it as two apostrophes, so
Query does not think it has reached the end of the constant. For example, if you are looking for records
that list the street address as Grangers Circle, you type the constant as Grangers Circle. Query
counts two apostrophes within a constant as a single apostrophe.
Note: If you are sending queries between countries that use the comma for a decimal separator, put a
blank after each comma separating the offset and length in the SUBSTR function and between
numeric values in a list in the VALUE function. Press F17 to show which decimal separator to use
in the query (see Displaying the format of constants in Query for i5/OS on page 17).
Character fields and constants are compared character by character for all tests except LIKE, NLIKE, IS,
and ISNOT.
v If two fields or a field and a constant being compared are not the same length, Query treats the shorter
field as if it has enough blanks at the end to make both fields the same length.
Comparisons of time values and character representations of time values always include seconds. If the
character representation omits seconds, zero seconds are assumed. A time or timestamp value that
includes 24:00:00 is not the same as 00:00:00.
Testing for equal (EQ) and not equal (NE) in Query for i5/OS
You use the equal and not equal tests to determine if the contents of a field is equal or not equal to the
value you specify.
If the test is EQ, records are selected only if the field contains data that is exactly the same as the
specified value. For example, if the only comparison is:
INTRAT EQ 18
records are selected only if INTRAT, a numeric field, contains a value equal to 18. For example, INTRAT
could contain 18., 18.00, 00018, and so on.
If the test is NE, records are selected only if the field contains data that is different than the specified
value. For example, if you want to select records that contain anything other than a value of SMITH in the
field NAME, you specify:
NAME NE SMITH
It does not matter to Query if the field called NAME is defined to be longer than five characters. Query
looks for all records that do not exactly match SMITH. SMITHSON, Smith, and NEISMITH would all be selected
as names that are not equal to SMITH.
Testing for IS Null (IS) and ISNOT Null (ISNOT) in Query for i5/OS
You use the IS and ISNOT tests to determine if the contents of any field is or is not null. Any field can be
compared to null using the IS or ISNOT test. Some examples of IS and ISNOT are:
NAME IS NULL
Records are selected if the field NAME does not contain a null value.
Testing for greater (GT or GE), less (LT or LE), and range (RANGE) in Query for
i5/OS
You use the greater and less tests to determine if the contents of a field is greater than, greater than or
equal to, less than, or less than or equal to the specified value. You use the range test to determine if the
contents of a field lies within the specified range of values. In addition to using these to test numeric
data, you can also test character data.
When you test for RANGE, the contents of the field must be within the range of two values (greater than
or equal to the first value but less than or equal to the second) for the record to be selected. On the Select
Records display, you must specify two values in the Value column, and you must separate them by a
blank. If the first value is greater than the second value for a record, that record will not be selected.
For example, you want to select records only for the months of February through August. The field
named MONTH is a numeric field, and it contains a 1 to represent January, a 2 to represent February, a 3 to
represent March, and so on. On the Select Records display, you would specify:
Select Records
To use the GT, GE, LT, LE, and RANGE tests for SBCS character fields and values, you may need to
know the collating sequence. The collating sequence determines what characters are greater than or less
than others. If you do not select a different one, the hexadecimal collating sequence is used and:
v Most special characters are less than letters.
v Lowercase letters are less than uppercase.
v Letters are less than numbers.
For example, the characters A, 8, &, and b would sort from low to high as follows:
&
b
A
8
For more information about selecting or defining a collating sequence, see Chapter 9, Selecting a
collating sequence in Query for i5/OS.
Note: See CCSID and record selection tests in Query for i5/OS on page 248 for information on CCSIDs
and how they affect the Select Records display.
When you compare a field with a list, the record is selected if the contents of the field exactly match one
of the values you specify. The values you specify in the list:
v Must be numeric constants if you are comparing a numeric field with them.
v Must be SBCS character constants if you are comparing an SBCS character field with them.
v Must be SBCS, DBCS-only, or DBCS-open character constants if you are comparing a bracketed-DBCS
field with them. (If the field being tested is a DBCS-only field, the constant can only be a DBCS-only
constant.)
Your list must contain at least two values, and they need not be in any particular order. You must enclose
each character constant in apostrophes and use two apostrophes where the character constant itself
contains an apostrophe (see the name OGrady in Example 2: Testing for values in a list (LIST NLIST) in
Query for i5/OS).
If all of the values in the list do not fit on one line, just continue them on the next line under Value. If one
value ends in the last position of a line and you continue on the next line, you must put a blank space
before the value on the next line. You can split DBCS character constants by placing a DBCS shift-in
character in the last position of the first line and a DBCS shift-out character in the first position of the
next line.
Example 1: Testing for values in a list (LIST NLIST) in Query for i5/OS: If you want to select only
records that have 04567, 00976, and 85432 in the ITEMNO field, you specify:
Select Records
Example 2: Testing for values in a list (LIST NLIST) in Query for i5/OS: The following tests the field
LASTNAME for a number of different last names:
Select Records
Testing for values that are similar (LIKE NLIKE) in Query for i5/OS
You use the LIKE test to determine if a field has a pattern that is similar to the test pattern you specify.
You use the NLIKE test to determine if a field is not similar to the test pattern that you specify. You can
use LIKE comparisons for SBCS and DBCS character fields, but specifying a LIKE or NLIKE comparison
for any other field types causes an error message.
When you use a LIKE test, a record is selected if a certain part of the field has the same characters as the
test pattern you specify for the comparison value. For example, you would use the LIKE test if you
wanted to select all records that have a last name that begins with an A.
You can use some special characters to represent the positions in the field that you do not care about:
v An underscore (_) means skip one character at that position and do not test for that character. Each
underscore takes the place of one character in the field.
v A percent sign (%) means skip as many characters as necessary to get to the end of the field or to the
next specified character. Each % takes the place of zero or more characters in the field. (Thus, you need
not write a test pattern that is 32 characters long just because the field is 32 characters long.)
A test pattern must be no longer than, but it can be as long as, the actual field. Query does not count a %
as a character and counts two apostrophes within a constant as one character when checking pattern
length.
For example, if you are testing for an A in the first position of the LASTNAME field, and if:
v The field length is 1, you could specify A
v The field length is 3, you could specify A__
v The field length is at least 1, you could specify A%
If you are testing for an A in the last position of the field, you could specify %A. But note that if an
8-character field contained ANNA , the LIKE test would fail because the last position in the field is a
blank.
If you are testing for an E followed by an A two positions after it, and the field length is at least 3, you
could specify:
%E_A%
Note that if an 8-character field contained any of the following, the LIKE test would be true:
ANNE A. EVAN E. ANNE EVA
Note: A LIKE, NLIKE test cannot be used for a date, time, or timestamp field. Only character constants
are allowed for LIKE, NLIKE. To circumvent this, create a result field and use the CHAR function
on the date, time, or timestamp field. Then use the result field on the Select Records display.
Testing for DBCS LIKE (like) and NLIKE (not like) in Query for i5/OS
DBCS LIKE or NLIKE tests can be used in the Value column of the Select Records display to select
records. The following types of LIKE patterns can be used for DBCS fields that are being tested: standard
SBCS character constants, DBCS-only character constants, DBCS-open character constants, and
DBCS-graphic character constants.
Non-DBCS character LIKE, NLIKE (not like) pattern in Query for i5/OS: This pattern, which contains
no DBCS data, can be used to test DBCS-either and DBCS-open fields. Use a % sign to skip any number
of characters or none at all. Use an underscore (_) to represent any single SBCS character. Although the
DBCS-only LIKE, NLIKE (not like) pattern in Query for i5/OS: This pattern, which contains only
double-byte characters, can be used for any bracketed-DBCS field, but not for a DBCS-graphic field. Start
the pattern with a shift-out character and end it with a shift-in character. Use the DBCS percent sign
(%%) to skip any number of characters or none at all. Use the DBCS underscore (__) to indicate that any
double-byte character is accepted for that position. Although the LIKE pattern contains only double-byte
characters, it can test DBCS-open fields that contain both double-byte character data and alphanumeric
data because a %% sign can skip over both kinds of data.
DBCS-open LIKE, NLIKE (not like) pattern in Query for i5/OS: This pattern, which contains both
DBCS and SBCS character data, can be used only for DBCS-open fields.
v The percent sign (%) skips any number of SBCS characters or double-byte characters, or none at all. It
ignores shift-out and shift-in characters.
v The DBCS percent sign (%%) works the same way as the standard percent sign (%).
v The underscore (_) represents one SBCS character. It does not represent a double-byte, shift-out, or
shift-in character.
v The DBCS underscore (__) represents one double-byte character. It cannot be used to represent an
alphanumeric, shift-out, or shift-in character.
DBCS-Graphic LIKE, NLIKE (not like) pattern in Query for i5/OS: This pattern, which contains only
double-byte characters, can be used only for a DBCS-graphic field. A DBCS-graphic test pattern must
have an uppercase or lowercase G before the apostrophe. Within the apostrophes, the pattern must start
with a shift-out character and end with a shift-in character. Use the DBCS percent sign (%%) to skip any
number of characters or none at all. Use the DBCS underscore (__) to indicate that any double-byte
character is accepted for that position.
Examples: In the following examples, %% represents the DBCS percent sign, __ represents the DBCS
underscore, s/o represents the shift-out character, s/i represents the shift-in character, and a pair of the
same SBCS characters, such as DD, represent a single DBCS character.
Example 1: DBCSFLD1 LIKE s/o__DD__%%HH%%s/i
Example 1 selects only records in which the second character in field DBCSFLD1 is DD, the first and third
characters are any double-byte characters, and at least one of the fourth through last characters is HH. This
test could be used for any bracketed-DBCS field that is at least ten characters long. This test could also be
used for a DBCS-graphic field by putting a G in front of the test pattern:
Gs/o__DD__%%HH%%s/i
If DBCSFLD1 is a DBCS-open field, this test could select data that has alphanumeric characters, such as
s/oXXDDMMs/iAnns/oGGHHs/i, for which the DBCS percent sign would skip over both double-byte
characters and alphanumeric characters before reaching HH.
Example 2: DBCSFLD2 LIKE s/o%%__%%s/i
Example 2 selects only records in which field DBCSFLD2 contains at least one double-byte character. The
DBCS underscore (__) can stand for a double-byte character, but not for an alphanumeric character. A
different value, %_%, selects records that have at least one alphanumeric character. A value of
s/o__________s/i selects those that have all double-byte characters for a field that is ten characters
long.
Example 3: DBCSFLD3 LIKE s/oYY%%s/i A_o
Example 3 selects all records in which the field DBCSFLD3 begins with the double-byte character YY and
ends with alphanumeric characters, the first of which is blank, the second of which is A, and the fourth of
which is o. This test selects fields such as s/oYYs/i Amo; s/oYYZZXXs/iMary Abo; or
If the test pattern consists of two apostrophes alone ( or G) or two apostrophes enclosing only DBCS
shift-out and shift-in characters (s/os/i or Gs/os/i), the test pattern is treated as an empty string.
These patterns will select records in which the field contains an empty string.
If you do not specify anything in the AND/OR column between comparisons, Query assumes AND. All of
the comparisons that are connected by ANDs must be true for the record to be selected by that group of
comparisons.
For example, to select records for all customers with the last name of Clarke and who live in Arizona
(AZ) requires an AND connection:
Select Records
Although this example shows the AND typed in the AND/OR column, it is not necessary. (If you leave
the AND/OR column blank, Query assumes an AND connection.) Comparisons connected with one or
more ANDs are considered a group of comparisons.
The other kind of connection between comparisons is OR; that is, one or more of the comparisons (or
groups of comparisons) must be true for the record to be selected.
Because Query assumes AND connections unless told otherwise, you must specify OR in the AND/OR
column whenever you want an OR connection.
For example, to select records in which the last name is Kingsbury or the credit limit is greater than or
equal to $5,000 requires an OR connection:
You can use AND and OR connections together to be even more specific about which records to include
in your report. The following example selects records for customers who placed orders from November
1986, through January 1987. Note that numeric constants are used for months.
Select Records
Because using a combination of AND and OR connections can be confusing, you might want to use F5 to
look at your report and make sure your comparisons work the way you expect.
If a combination of AND and OR connections seems particularly complex, you should probably look at
the comparisons closely to see if you can use fewer connections to make the same record selection. For
example, following are two ways of selecting records for customers from Rhode Island (RI) who have a
balance due from $900 to $1000 during 1986 OR 1987.
The second method, which uses the LIST test and AND connections, selects the same records but needs
fewer lines and is easier to read:
Note: CCSIDs can affect how records are selected. See CCSID and record selection tests in Query for
i5/OS on page 248 for information on CCSIDs and how they affect record selections.
If you want to add another comparison between two comparisons that you have already typed, you can
press F9 to insert a blank line where you need it so that you do not have to retype everything. The new
line is added after the line on which the cursor is positioned when you press F9. You can also press F9
instead of the Page Down key to add lines as you type in comparisons.
If you change your mind about a comparison and want to remove it from the group, just use the
spacebar or Field Exit to blank it out. If you change your mind and want to remove all of your
comparisons, press F12 (Cancel). Anything that you entered on the Select Records display is then ignored.
If you have blanked out a line or two and are at the last available blank line and need more lines, you
can press F20 to reorganize the space. Query moves the blank lines to the end of the comparisons. You
see the first six comparison lines on your display and must press the Page Down key to get to the blank
lines or to the place where you want to insert a line. If you run out of space but have no blank lines to
move, you have to redesign your comparisons so that they fit into the 100-line limit.
Letting Query for i5/OS determine the order of records for you
You can let Query retrieve the data directly from the database and include it in your query without any
sorting. If the sequence of the data in your report is not important, you do not need to worry about
selecting sort fields. When running a query that does not have a sort field specified, the order in which
rows are retrieved is not guaranteed. If the order is important, you should define a sort field in the query.
A thorough knowledge of database concepts, including file type and access paths, is needed if you want
to predict the sequence of your output.
Note: When you select a logical file for use with Query for i5/OS or DB2 for i5/OS without specifying
any sort fields, unpredictable results might occur. For example, you might not receive the logical
view of the physical file.
If you did not type a 1 next to the Select sort fields option on the Define the Query display, the Select Sort
Fields display is not shown while you work with your query definition, and the data is not sorted when
you run the query.
If you typed a 1 next to the Select sort fields option on the Define the Query display, the Select Sort Fields
display is shown during query definition. Press F12 (Cancel) to return to the previous display if you have
changed your mind and do not want to select any sort fields. (Anything you typed on the display is
ignored.)
Selecting the sort fields you want to use in Query for i5/OS
On the Select Sort Fields display, as shown below, you select the sort fields that you want by entering a
sort priority number in the Sort Prty column. You can select up to 32 sort fields from the list. (The list on
this display shows only those fields that were selected on the Select and Sequence Fields display; if no
fields were selected, the list shows all the fields.) The total length of all the sort fields cannot be greater
than 10 000 characters (that is, if you add up the lengths of the sort fields, the total cannot exceed 10 000
characters).
Based on the number you type for each field you select as a sort field, Query establishes a sort priority.
You can use any numbers from 0 to 999use the lowest number for your highest priority sort field. If
you use numbers like 10, 20, 30, and so on, you can easily add another sort field later.
You can also specify whether you want the sort field sorted in ascending order (from lowest to highest
value) or descending order (from highest to lowest value) by typing an A (for ascending) or a D (for
descending) in the A/D column. (If you leave the A/D column blank for a field, the sort for that field is
done in ascending order.)
Sort
Prty A/D Field
___ _ ACCTNUMBER
30 _ INIT
20 _ LASTNAME
___ _ STREETADDR
___ _ STATE
___ _ CITY
___ _ ZIPCODE
10 D CRLIMIT
Bottom
When you press the Enter key after typing your sort priority numbers, Query rearranges the fields on the
display in the following order:
v If fields were selected on the Select and Sequence Fields display, they are listed in the following order:
1. All sort fields (if any) previously selected on this display, in the order specified.
2. Fields selected for the query, but not selected as a sort field. These fields are listed in the order they
were specified on the Select and Sequence Fields display.
v If no fields were selected on the Select and Sequence Fields display, the fields on this display are
shown in the following order:
1. All sort fields (if any) previously selected on this display, in the order specified.
2. Any result fields that have been defined for this query.
3. All other fields, in the order they exist in the record format definitions for the selected files. Fields
from the first file are listed first, followed by those in the second file, and so on.
Query then displays a message Press Enter to confirm. so that you have a second chance to review
your sort fields and change them if you want.
To remove a sort field from your selections, blank out the number in front of that field name. It is not
necessary to renumber the other fields. To change the priorities of the sort fields, just change the
numbers.
If you make any changes, press the Enter key again. The list of field names is rearranged and is shown
with the sort fields first, in the sort priority you specified followed by the remaining fields that were
selected for output. If you want to renumber the fields in added amounts of 10 (10, 20, 30, and so on),
press F20.
When you are satisfied that your sort field selections are correct, press the Enter key a final time to end
sort field selection.
Assume that you are the credit manager for the United States division of an international mail-order
company, and you want a report of customer names and addresses organized as follows:
v Customers with the highest credit limit should appear first, then the next highest, and so on.
In order to obtain the order you want, your first sort field is credit limit (CRLIMIT), in descending order
(from highest to lowest); your second sort field is state (STATE); your third sort field is last name
(LASTNAME); and your last sort field is first name (INIT).
Sort
Prty A/D Field Text Len Dec
___ _ ACCTNUMBER Account number 6
40 _ INIT Customer first and middle initial 2
30 _ LASTNAME Customer last name 20
___ _ STREETADDR Street address 20
___ _ CITY City 15
20 _ STATE State abbreviation 2
___ _ ZIPCODE Zip code 5
10 D CRLIMIT Credit limit amount 7 2
Bottom
Notice that a D has been typed in the A/D column for the CRLIMIT field. The STATE, LASTNAME, and INIT
fields will all be sorted in ascending order (which is the order you want).
Also notice that this display shows additional information including the text, length, and decimal
positions for each field. While you are selecting sort fields you can press F11 to alternate between
showing only the names of the fields and showing both the names and additional information about the
fields. For more information about using F11, see Using F11 to display additional information about
Query for i5/OS queries on page 15.
After pressing the Enter key, the Select Sort Fields display appears again, but this time the fields given
priority are listed first in the order specified and the fields not used as sort fields are moved to the
bottom of the list:
Sort
Prty A/D Field Text Len Dec
10 D CRLIMIT Credit limit amount 7 2
20 A STATE State abbreviation 2
30 A LASTNAME Customer last name 20
40 A INIT Customer first and middle initial 2
___ _ ACCTNUMBER Account number 6
___ _ STREETADDR Street address 20
___ _ CITY City 15
___ _ ZIPCODE Zip code 5
Bottom
Notice that because you left the A/D column blank for the STATE, LASTNAME, and INIT fields, Query
replaces the blank with an A to show that ascending order is used.
The sort in this example provides a report that looks something like this:
Account Last Street Zip Credit
Number Init Name Address City State Code Limit
------- ---- -------------- -------------- ---------- ----- ----- -------
The highest credit limits (9999.00) are listed first, followed by the next highest. Within each group of
credit limits, the records are listed alphabetically by state. Within each group of states, the customers are
listed alphabetically by last name (such as Brown and Tyron in New York, and Doe and Hubbard in
California). If two or more customers with the same last name live in the same state and have the same
credit rating, the order of the records is determined alphabetically by first and middle initials (such as AC
Jones and JS Jones in New York).
DBCS data in character fields is sorted by the hexadecimal representation of the data. The collating
sequence is not applied to DBCS data in DBCS character fields.
UCS2-graphic data is sorted by the hexadecimal representation of the data. The collating sequence is not
applied to UCS2-graphic data in UCS2-graphic fields.
For all data types, null values are sorted last if the sort is in ascending order and are represented by a
dash (-). For example, for the following data:
field1 value
record
1 B
3 A
2 null value
4 null value
The collating sequence is only used for SBCS character data in SBCS, DBCS-open, and DBCS-either fields.
It is not used for numeric, date, time, timestamp, DBCS-only, DBCS-graphic, or UCS2-graphic data.
Note: To provide the intended effect regardless of the hexadecimal representations of the characters in
the data, coded character set identifiers (CCSIDs) are stored with collating sequences when they
are saved. For more information about how CCSIDs affect the collating sequence used see CCSIDs
and collating sequences in Query for i5/OS on page 243.
After you have selected the collating sequence option that you want on the Select Collating Sequence
display, you can save your option as a default value in your query user profile by pressing F23 (Save as
default) while you are still viewing the display.
If you decide to define your own collating sequence (option 3 on the Select Collating Sequence display),
you can also save your collating sequence (as a default) on the Define Collating Sequence display by
pressing F23 while you are still viewing that display. The coded character set identifier (CCSID) of the
sequence, assumed from the CCSID of your job, is saved with the profile.
Unless you select a collating sequence, the standard sequence used for collating is the same as the
numeric sequence of the hexadecimal values used to represent the characters.
A CCSID is saved with a collating sequence so that the collating sequence can be converted for use with
data in a different code page. Conversion of a collating sequence is a matter of rearranging the numbers
in the table so that the appropriate collating weight is found for each character.
Note: Query for i5/OS does not use the collating sequence for EQ, NE, LIST, NLIST, LIKE, and NLIKE
comparisons, or apply it to SBCS characters in DBCS fields and constants, when the Use
collating sequence for all character comparisons option is set to NO on the Specify
Processing Options display.
v When you select an SBCS, DBCS-open, or DBCS-either character field for sorting records
v When you define minimum and maximum summary functions for an SBCS DBCS-open, or
DBCS-either character field
v When you define report breaks on an SBCS, DBCS-open, or DBCS-either character field
The selected collating sequence will be used for character fields when
sorting, selecting records, joining files, finding minimum and maximum
values, and determining when a control break has occurred.
Collating sequence
option . . . . . . . . 1 1=Hexadecimal
2=Query for i5/OS English
3=Define the sequence
4=Translation table
5=System sort sequence
When you use the hexadecimal collating sequence, the characters in a code table are ordered by
ascending hexadecimal values. An advantage of hexadecimal collating is that it distinguishes between
uppercase and lowercase letters.
For CCSID 37, the default for English language systems, the hexadecimal collating sequence is:
blank
miscellaneous characters, such as . + & % )
a through r
(tilde)
s through z
{
A through I
}
J through R
\
S through Z
0 through 9
To see what the hexadecimal collating sequence looks like, select option 3 (Define a collating sequence)
on the Select Collating Sequence display and press the Enter key. The Define Collating Sequence display
is shown. Press F14 (hexadecimal sequence). Query for i5/OS shows you the characters and their
sequence numbers in the hexadecimal collating sequence.
Each character with a hexadecimal value in the range 40X to FEX is listed. You can use the page keys
to page through the list of characters. Press F11 to show the hexadecimal value of each character under
the Hex column. Use F12 to return to the Select Collating Sequence display.
If hexadecimal collating is selected, the minimum and maximum values saved in summary-only output
to a database file may differ from the corresponding values in a printed or displayed report, even though
the same job CCSID is used to run the query. This happens only if values for a minimum or maximum
field are converted to the job CCSID in order to be printed or displayed.
Using the language collating sequence for your country in Query for
i5/OS
You might want to select the collating sequence provided by Query for i5/OS for your country so that
character data is sorted in a more useful order for your language. In Great Britain and the United States,
the collating sequence provided (in addition to hexadecimal) is Query for i5/OS English. In this
sequence, as in most Query for i5/OS language sequences, each pair of uppercase and lowercase letters
(such as A and a) sort together because they share a collating weight that is distinct from the weights of
other letters.
For example, you have a two-digit customer account number field that has gone beyond its maximum of
99, and entries in this field after 99 are alphabeticA1, A2, and so on. You want the alphabetic entries
sorted to follow the numeral entries. You can define your own collating sequence so that the alphabetic
data follows the numeric data for this particular query.
To define your own collating sequence, type a 3 in the Collating sequence option prompt on the Select
Collating Sequence display and press the Enter key.
Select Collating Sequence
The selected collating sequence will be used for character fields when
sorting, selecting records, joining files, finding minimum and maximum
values, and determining when a control break has occurred.
Collating sequence
option . . . . . . . . 3 1=Hexadecimal
2=Query for i5/OS English
3=Define the sequence
4=Translation table
5=System sort sequence
The Define Collating Sequence display is the next display you see.
Define Collating Sequence
CCSID. . . . . . . . . . . . . . : 37
Position to . . . . . . . . . . . _ Char
The CCSID of the sequence is shown at the top and is always your job CCSID. If the collating sequence
CCSID does not match your job CCSID, the previously specified or defaulted sequence is converted
before it is shown on the Define Collating Sequence display. See CCSIDs and collating sequences in
Query for i5/OS on page 243 for more information on how CCSIDs affect the collating sequence.
To do this, press F14 (Hexadecimal sequence), F15 (Language sequence), F16 (Use default), or F17 (System
sequence).
Use the page keys to page through the list of characters. Certain characters cannot be displayed on some
terminals; therefore, some sequence numbers may not have a character shown beside them. Press F11 and
the hexadecimal value of each character is shown even if the character cannot be displayed on your
terminal. You can use the Position to prompt to find a specific character in the list quickly. (You can enter
the hex value of the character, if you know it and if your keyboard has this feature, or the character
itself.)
To define your own collating sequence, change the sequence numbers beside those characters whose
sequence you want to change. Each character must have a sequence number. You can specify the same
sequence number for two or more charactersthese characters are treated as equal when operations are
performed on them.
After you have renumbered the characters in the sequence you want, press the Enter key. The list of
characters is shown in the sequence you specified. Make sure the blank character (40X) is still first. To
renumber the characters in this new sequence by amounts of 10, press F20. Using F20 to renumber makes
it easier to specify a new sequence later. You must press the Enter key again to confirm that this is the
sequence you want to use. The characters are renumbered, by amounts of 10, when you leave this
display.
You can also save your collating sequence as a default by pressing F23 while you are still viewing this
display.
If you want to use a translation table, select option 4 on the Select Collating Sequence display. Enter the
table name and the library that contains the table you want. If you would like Query for i5/OS to list the
existing tables for you, position the cursor to the Table prompt and press F4. An example of the Select
Translation Table display follows:
More...
F4=Prompt F11=Display names only F12=Cancel
F19=Next group
For more information on using lists, see Using lists in Query for i5/OS on page 9.
Note: The system provides the system sort sequences as translation tables in library QSYS. You can also
select them by name using option 4 (Translation table) on the Select Collating Sequence display.
The system sort sequences are different than the Query for i5/OS language sequences (option 2 on the
Select Collating Sequence display). The Query for i5/OS language sequences are not externalized objects
and can only be used with Query for i5/OS definition objects. Also, the Query for i5/OS sequence for a
language does not produce the same results as either of the system sort sequences for that language. For
the differences in your language, check the sequence tables. Often, the difference is where the number
characters are sorted.
To display the Select System Sort Sequence display select option 5 on the Select Collating Sequence
display and press the Enter key.
Note: In addition to 2(Unique) and 3(Shared) you can specify *HEX or a specific table with the SRTSEQ
parameter for your job.
Job run and *JOBRUN are resolved to the sort sequence (SRTSEQ keyword) and language ID (LANGID
keyword) from the users job when the query is run. These are the defaults for collating sequence option
5 if no sort sequence and language ID are saved in the query user profile.
Unique means that each character has a unique weight. Shared means that some characters share the
same weight. For example, in the shared sequence for English, uppercase and lowercase pairs of letters
share the same weight.
Note: If a translation table or sort sequence that you selected by using option 4 or 5 changes, the
changed version becomes the one that is used for your query the next time you change or display
the query. The changed table is also used if you deferred selection until run time. If you want a
specific translation table or sort sequence permanently associated with your query, you must use
option 3 on the Select Collating Sequence display. Set the SRTSEQ parameter for your job to the
desired table, then start a Query for i5/OS session to create or change your query. Use option 3 to
set the Define Collating Sequence display and press F17. You can use F23 to permanently associate
the table with all new queries you create.
In the second part of this chapter, the four ways of editing numeric fields are described. Since numeric
fields of information are stored in database files without any punctuation, you can edit them so that they
are easier to read when they appear in a query report or display.
You can specify the following information about how the columns should appear in printed and
displayed reports:
v The number of spaces to the left of each column
v The wording of headings above the columns
v The size of the fields in the columns
Query ignores any column formatting you specify when you send detailed output to a database file.
However, if you later use that query to produce a report, the column formatting you specify is used.
Query uses the column heading (break fields only), editing, and field size that you specify for a query
when you send summary-only output to a database file. Summary-only output is described in
Chapter 13, Selecting output type and output form in Query for i5/OS reports.
Unless you change the column spacing for fields, Query puts no spaces in front of the first column and
puts two blank spaces in front of all the other columns in the report. Before you specify any values, you
should be familiar with the possible effects of any changes. For example, if you ask Query to put several
blanks in front of more than one field, the new width of your output might exceed the width of the print
line on your printer, and your output may be truncated (that is, part of it may have dropped off). If this
happens, you could specify less space between the columns, or you could specify a Y (Yes) for line
wrapping on the Select Output Type and Output Form display (see Chapter 13, Selecting output type
and output form in Query for i5/OS reports).
Column
Field Spacing Column Heading Len Dec Edit
LASTNAME 0 LASTNAME 30
STARTTIME 2 6 *
Start
Time
Bottom
F3=Exit F5=Report F10=Process/previous F12=Cancel
F13=Layout F16=Edit F18=Files F23=Long comment
If you want the headings of all your columns to line up on the lowest heading line, you must type each
one on the display that way.
If you change a heading but decide you want to use the original heading, blank out the heading you
typed. The original (default) heading is used in the report and appears the next time you return to this
display. If you want to change the heading for a result field, you may change it on the Define Result
Fields display, as described in Chapter 5, Defining result fields in Query for i5/OS.
Changing the Len value on this display affects only how the field appears in this query. The actual length
is not changed in the field definition, and the actual length is used for all other field processing done by
Query, such as sorting, report breaks, and so on. If you want to change the actual length for a result field,
you should make the changes on the Define Result Fields display rather than during formatting.
For date, time, timestamp and DBCS fields, you cannot change the length to anything but 0, which
excludes the field from the report.
For numeric fields, if you increase or decrease the value in Dec, you should increase or decrease the value
in Len the same amount. If you change the value in Len or Dec but decide you want to use the original
field definition value, blank out the number you typed. If there is a value in the Len or Dec column for
the same field, you must blank it out also. If you blank out the values, the original length and decimal
values are used in the report.
The length and the number of decimal positions first shown for each numeric field from a file is the same
as defined in the field definition. The length and the number of decimal positions first shown for each
result field is the number that Query calculates for you, or is the number that you typed in the Len and
Dec columns on the Define Result Fields display.
For numeric fields, the number in the Dec column indicates the number of positions to the right of the
decimal point.
For non-numeric fields, the type of field is shown in the Dec column and cannot be changed:
v An all-blank Dec column identifies a fixed-length SBCS character field
v V means variable-length
v J means DBCS-only
v O means DBCS-open (mixed)
v E means DBCS-either
v G means DBCS-graphic
v L means Date
v T means Time
v Z means Timestamp
Changing the Dec value affects only how the field appears in your query output. The actual value is not
changed in the field definition. If you want to change the actual number of decimal positions for a result
field, you should make the changes on the Define Result Fields display rather than at this time.
For numeric fields, you can type your own value (0 through 31) for decimal positions, but you must not
enter a value for Dec that is greater than the length of the field.
You may also want to use a field for sorting or for a report break, but not want it to appear in the query
report. If you change the field length (Len prompt) to zero on the Specify Report Column Formatting
display, the field is not printed, displayed, or used for summary output sent to a database file. The field
is still used for sorting, record selection, report breaks, and break text insert (see the appropriate Chapters
for details).
If you type a zero in the Len column, and there is a number in the Dec column for the same field, you
must also enter a zero for the Dec column.
Chapter 10. Specifying report column formatting in Query for i5/OS 119
Note: You cannot change the order of the fields on your report during the formatting process. If you
determine that you need to change the order of the fields in your output, you must go back to the
Define the Query display and choose the Select and sequence fields option (see Chapter 6, Selecting
and sequencing fields in Query for i5/OS).
The Edit column on the Select Report Column Formatting display is used by Query to indicate whether
or not any numeric field editing has been defined for any of the numeric fields in your query. If an
asterisk (*) is shown for a field, there are editing override values specified in your query definition for
the field; the field values are edited in the report using those values. This column is blank for character
fields and for numeric fields that are edited using only default values. (The default or original values can
be in the file definition or in system-supplied default values used by Query.)
If you want to edit a numeric field, that is, specify numeric field editing values that will be used as part
of your query definition, position the cursor on that field and press F16 (Edit) to go to the Define
Numeric Field Editing display. Depending on the choice you make on this display, Query will present the
appropriate display to allow you to describe the remainder of your edit definition. When no numeric
editing override values are saved for a field in your query definition, the editing actually used for the
field comes, first, from the original field definition (in a file definition) or it comes, last, from
system-supplied default values.
Note: If you want to remove all override editing for a particular field (as defined in the query), press F16
here to go to the Define Numeric Field Editing display, then press F16 again there (F16 is Remove
edit there). When you press F16 to remove editing, all editing definitions for all four editing options
defined for that field are removed.
Field . . . . . . . :
Text . . . . . . . :
Heading 1 . . . . . :
Heading 2 . . . . . :
Heading 3 . . . . . :
Length . . . . . . :
Decimal . . . . . . :
Sample . . . . . . : -9,999.99_____________________________________________
_______________________________________________________________________________
_______________________________________________________________________________
_________________________________________
Shown on the Define Numeric Field Editing display is the name of the numeric field to be edited, the
fields report-related information, and an edited sample value for the field as it would appear in the
report with the editing values that are currently defined for it. The field is the one that the cursor was
positioned to on the Specify Report Column Formatting display when F16 (Edit) was pressed.
If an asterisk (*) was shown in the Edit column on the Specify Report Column Formatting display, editing
override values are already defined in this query for the field. If an asterisk was shown there, then the
result of the current editing in effect for the field is shown in the Sample field on this display, and the
type of editing is indicated by the edit option currently specified in the Edit option prompt. If no asterisk
was shown there, then the sample field is edited here according to the editing specified in the field
definition or in the system-supplied default values assumed by Query.
If you press F11, you can change the value shown in the edited sample. Each time you press F11, you can
see either the largest positive number (all 9s), zero (0), or negative 1 (1). You can change the edit option
and press F11 at the same time to see the effect of each set of editing overrides or default values. Also, if
you change the edit option number and press the Enter key, you go to the definition display for that
option where you can look at or change how the editing for that option is defined. When you press F10
(Process/previous) to return, the edited sample shows the results of the editing values for that option.
If you want to see the editing for summary totals, if any exist, use F5 (Report) or F13 (Layout).
When you first come to the Define Numeric Field Editing display for any numeric field:
v The values shown in the Text through Decimal fields for that numeric field are the same as shown on
the Specify Report Column Formatting display for that same numeric field.
v The sample shows the current editing definition of the field, done with the largest positive value (all
9s) that the field can hold. The sample also shows how the number will appear when it is edited
according to the currently selected numeric field definition (option 1 through 4 specified in the Edit
option prompt).
v If an error occurs while the number in the field is being edited, the sample is edited using the J edit
code, and an error message is shown along with the edited sample.
Chapter 10. Specifying report column formatting in Query for i5/OS 121
v The Edit option value is the value last specified in the query definition, the value associated with the
field definition in the file definition (if this is a field from a file), or 1, if neither of the first two
indicates its value.
Generally, when you first come to the other four numeric field editing displays (identified on the Edit
option prompt of the Define Numeric Field Editing display), the displayed values are taken from the
previously saved values in your query definition, from the field definition in the file, and from the
system-supplied default values (in that order). Query uses edit code J as the default for edit option 3 and
blank edit words for edit option 4.
Field . . . . . . :
This display allows you to specify the editing characteristics that you want used for a numeric field. The
editing determines how the values for the field are to appear in your query report (if the report is run
when the edit option for the field is 1). You can select the characters to be used for the: decimal point,
thousands separator, a negative sign(s), and a currency symbol(s). You can specify separate negative sign
characters and separate currency symbol characters for either side of the fields data values. You can also
specify whether zero values are to be printed and how leading zeros are to be handled.
This display shows the name of the numeric field to be edited and the numeric field editing override and
default values that will be used in the report. The editing values shown could be from IDDU or a
system-supplied edit description.
If you blank out all the values in the prompts on this display and press the Enter key, all the values are
then set to the system-supplied default values that are assumed by Query. These values are the same
default values used for result fields when they are first defined; thus, using this method, you can specify
the same type of editing for fields from files as is used for result fields, providing consistent editing in
your report.
To remove all editing overrides for this numeric field, press F16 (Remove edit). The asterisk (*) is
removed from the Edit column on the Specify Report Column Formatting display, and the editing values
that will be used for this field in the query report are taken from the field definition or from the
system-supplied default values.
Some examples of left negative signs for the negative value of 27.03 are:
Sign Edited Negative Value
- -27.03
CRAMT CRAMT27.03
CR AMT CR AMT27.03
CRDT:_ CRDT: 27.03
The coding for the last example must include an underscore because of the blank at the right end of the
left negative sign characters.
The position of the left negative sign depends on the value specified in the Replace with option when
leading zeros are to be replaced.
v If you specify option 1 (Blanks) or option 2 (Asterisks), the negative sign is fixed; it is always shown in
the farthest left position of the field, to the left of all the asterisks that replace all leading zeros. For
example, in a field with a length of eight digits, the edited value for 27.03 would be -****27.03 or
27.03.
Chapter 10. Specifying report column formatting in Query for i5/OS 123
v If you specify option 3 (Floating currency symbol), then the negative sign moves (or floats), depending
on how many leading zeros it replaces, so that it is to the immediate left of the first significant digit in
the value (such as 27.03), or it is to the immediate left of the left currency symbol (such as $27.03).
Some examples of left currency symbols that might be used with a value of 45.5 are:
Symbol Edited Result Possible Use
L. L.45.5 Italy
Kr Kr45.5 Norway
$ $45.5 U.S.
THOUS_ THOUS 45.5 U.S.
This string is positioned in the same way as you typed it, unless you choose to replace the leading zeros
with the floating currency symbol. In that case, this string is moved (floats) to the immediate left of the
first significant digit.
Some examples of right currency symbols that might be used with a value of 123.45 are:
Chapter 10. Specifying report column formatting in Query for i5/OS 125
Describing date/time field editing display in Query for i5/OS reports
If you have selected numeric fields for your query that contain date or time values, Query provides an
easy way to specify or change the separator character that is used in the editing process.
The Describe Date/Time Field Editing display allows you to specify the type of separator character that
you want used for a numeric field that contains a date or time value. The editing value determines how
the values for the date or time field are to appear in your query report (if you use option 2 as the edit
option for this field).
Describe Date/Time Field Editing
Field . . . . . . :
When you first see this display, the edit value shown is the value previously saved in your query, is the
value from the field definition in the file description, or is the system-supplied default.
You can either change the edit value shown or you can blank it out. If you blank out the value, the
system-supplied default separator value (stored in the QDATSEP system value) is to be used, and it is
shown if you return to this display. To use this date/time edit value to edit the field, edit option 2 must
be specified on the Define Numeric Field Editing display.
Any number less than six digits long loses one date/time position on the left for each digit that it is short
(zero values become blanks). If the leading digit on the left is zero, it is replaced with a blank (for
example, if your date/time separator is a slash, the value 000829 becomes 0/08/29). To show dates
without having the leading zero truncated, use the edit word option with a leading zero or asterisk.
Only the last six digits of a numeric field are displayed when you use date/time editing (for example, if
your date/time separator is a slash, the value. 19631001 becomes 63/10/01). To display a four digit year,
use the edit word option.
The codes available are similar to the codes available to RPG/400 programmers.
To remove all the query-defined editing values for this numeric field (for this edit option and all the
others), press F16 (Remove edit).
Specify Edit Code
Field . . . . . . . . :
Most of the edit codes are shown in the following table. The other edit codes (W, X, Y, and Z) and the
user-defined edit descriptions (5 through 9) are listed after the chart.
-- Value in QDECFMT System Value: --
Edit Print Negative Blank I J
Code Commas Symbol Value Value Value
1 Yes None .00 or 0 ,00 or 0 0,00 or 0
2 Yes None Blanks Blanks Blanks
3 No None .00 or 0 ,00 or 0 0,00 or 0
4 No None Blanks Blanks Blanks
A Yes CR .00 or 0 ,00 or 0 0,00 or 0
B Yes CR Blanks Blanks Blanks
C No CR .00 or 0 ,00 or 0 0,00 or 0
D No CR Blanks Blanks Blanks
J Yes - .00 or 0 ,00 or 0 0,00 or 0
K Yes - Blanks Blanks Blanks
L No - .00 or 0 ,00 or 0 0,00 or 0
M No - Blanks Blanks Blanks
N Yes - .00 or 0 ,00 or 0 0,00 or 0
Chapter 10. Specifying report column formatting in Query for i5/OS 127
O Yes - Blanks Blanks Blanks
P No - .00 or 0 ,00 or 0 0,00 or 0
Q No - Blanks Blanks Blanks
Note: For all these edit codes, decimal points are always shown, and leading zeros are always suppressed.
Query uses the J edit code as the default edit code whenever an error occurs during numeric field editing
or whenever there are no other editing values to use. If an error occurs, an error message is shown along
with the edited result produced using the J code.
For a field that does not have an edit code specified in its definition, edit code J is shown as the default
the first time you see this display for that field.
v Edit code Y suppresses the farthest left zero of a date field that is three to six digits long or eight digits
long, and it suppresses the two farthest left zeros of a date field that is seven digits long. It also inserts
slashes (/) between the month, day, and year. The positions of the slashes depend on the number of
digits in the field: nn/n, nn/nn, nn/nn/n, nn/nn/nn, and nnn/nn/nn, and nn/nn/nnnn.
v Edit code Z removes any plus or minus sign from a numeric field and suppresses leading zeros.
v Edit descriptions 5 through 9 are user-defined edit codes. They can be defined to use other characters
or combinations of characters to edit a numeric field.
The negative sign is on the left of the value for edit codes N through Q, and on the right of the value for
other edit codes and edit descriptions.
You must either specify an edit code here or press F12 to return to the Define Numeric Field Editing
display. (You can then specify, for example, option 4 in Edit option and then define your own edit words
on the Specify Edit Word display.)
v The only currency symbol that can be used with any of these edit codes is the one defined in the
system-supplied system value QCURSYM.
v If date/time edit code Y is specified for a field, the field must be three to eight digits long.
v If the definition of an edit code is changed (done outside of Query), the changes are reflected in all
query reports that use that edit code.
The Specify Edit Word display allows you to specify or change the edit word(s) that you want used to
edit a numeric field. An edit word determines how all the values for the specified field are to appear in
your query report if the report is run when the edit option for this field is 4.
You can use one edit word to edit all the detailed values for the field and, if the total summary function
was specified for the field, you can use another edit word to edit the summary total values for the field.
A blank string enclosed in apostrophes appears as the default for the detailed values edit word for a field
that does not have an edit word specified in its definition.
To remove only the edit word used for this fields summary totals, blank out the Edit word for summary
total prompt. If you want to remove both edit words defined for this field, press F16 (Remove edit). Note
that F16 removes all editing values defined in all four edit options, not just this option.
For the Edit word prompt, either you must specify an edit word or you must press F12 to return to the
Define Numeric Field Editing display. You cannot leave the Edit Word prompt blank.
If an error occurs while a field is being edited by Query, the field is edited with the J edit code, and the
field value is displayed in its edited form along with an error message.
the value of 01251960 becomes 01/25/1960. Without a leading zero or asterisk, 01251960 would appear as
1/25/1960. To specify a blank space in the report result, use an ampersand (&).
Chapter 10. Specifying report column formatting in Query for i5/OS 129
Specify Edit Word
Field . . . . . : Heading 1 . . . . :
Length . . . . : Heading 2 . . . . :
Decimal . . . . : Heading 3 . . . . :
Edit word . . . . . , , 0. -
For example, if you want to define an edit word containing an eleven-digit field with no decimal
positions, and you want commas for thousands separators and CR for negative values, your edit word
would be , , , &CR and a value in the report would appear as 27,345,838,789 CR if it were a
negative value.
You might define 0( )& - as the edit word for a ten-digit telephone number that has been
formatted for ten or eleven digits on the Specify Report Column Formatting display.
The edit word might be - - for a nine-digit social security number, such as 123-45-6789.
Consider the following as you define your edit words. Each edit word is marked with the CCSID of the
job used to define it so that it can be converted for use in a job with a different CCSID. Refer to CCSID
and column formatting and editing in Query for i5/OS on page 248 for information about how CCSIDs
affect edit words.
v If option 1 (Total) was or will be specified on the Select Report Summary Functions display to get
summary totals for the field, the J edit code is used to edit the field if you do not define an edit word
in the Edit word for summary total prompt.
v The edit word for summary function totals, if used, must have three more blank positions than the
field length indicates, but its length cannot exceed 31 digit positions. The editing positions containing
commas for thousands separators or a period for the decimal point, for example, are in addition to the
31 maximum.
v When an edit word is used, its length is considered by Query in determining the column width used
in the report for that field. If the summary total edit word is defined, but no summary total is defined
for this field, for example, then the length of the summary total edit word is ignored in determining
the column width for detailed output.
v If both edit words are defined and used, both are assumed to be aligned on the right with the last
character in each string. If they are not aligned, the ampersand (&) can be used to add blanks to one of
the edit word character strings so that they are aligned.
v If the widest edit word to be used is narrower than the column headings, the column headings are
centered over it. Otherwise, the farthest right position of the column headings is aligned with the
farthest right position of the edit word.
For example, if you want to define an edit word long enough for the total values for an 8-digit field with
no decimal positions, and you want commas for thousands separators, and CR for negative values, your
edit word would be , , , &CR and a value in the report would appear as 27,345,838,789 CR
if it were a negative value.
If you do not specify an edit word here and you specify on the Select Report Summary Functions display
that the field be totaled, the J edit code is used to edit summary totals for the field.
Chapter 10. Specifying report column formatting in Query for i5/OS 131
132 Query for i5/OS V6R1
Chapter 11. Specifying report summary functions in Query for
i5/OS reports
This chapter describes how to specify the summary functions for each of the selected fields in your query
output. Depending on the type of field, you can specify one or more (or all) of the types of summary
functions for each field in your report: total, average, minimum value, maximum value, and count. All of
them can be used for numeric fields, and all except total and average can be used for character (SBCS and
DBCS), date, time, and timestamp fields.
For each field for which you specify summary functions, Query calculates summary values and includes
them in the report. Query calculates these summary values at each report break (break levels 1 through 6)
defined in this query and at the end of the report (break level 0). Each type of summary is shown on a
separate line in the report, with a descriptive abbreviation shown on the left of the summary values (see
Chapter 12, Defining Query for i5/OS report breaks).
For example, assume that your query has a numeric result field named ITEMTOT defined using the
expression QUANTITY * ITEMCOST (two numeric fields being multiplied together). These two fields are used
to calculate the cost of each item ordered in the ITEM field. You might define the following summary
functions for those fields: count for the ITEM field, total and maximum for the QUANTITY field, maximum for
the ITEMCOST field, and total and maximum for the ITEMTOT field. The following is an example of how part
of a report might look for a customer named Z Z Smith:
ITEM QUANTITY ITEMCOST ITEMTOT
Each summary function result for each field (column) is calculated and included as a summary value
(similar to a subtotal) at every defined report break and as a final summary (final total) at the end of the
report. (However, using the Define Report Break display, you can format a particular break level to
suppress the summary information. In this case, when a break occurs, a blank line and possibly break
text that includes break values, if defined, is used.)
Summary function results, if defined, can appear in all three types (displayed, printed, and database) and
both forms (detailed and summary) of output, with one exception: they cannot be included if the report
is to a database file in detailed form.
When summary values are being calculated for the total, average, minimum, and maximum summary
functions, the original length and decimal position values (in the field definition) are used for the field
calculations, not the values specified for the field (if any) in the Len and Dec column of the Specify Report
Column Formatting display. Also, rounding or truncation is done in these calculations, depending on
what you specify on the Specify Processing Options display (see Chapter 14, Specifying Query for i5/OS
processing options).
Select Report Summary Functions
---Options--- Field
5 _ _ _ _ ITEM
1 4 _ _ _ QUANTITY
4 _ _ _ _ ITEMCOST
1 4 _ _ _ ITEMTOT
Bottom
This display shows all the fields (including result fields) that are available to be used in your report. The
fields are listed in the order that they will be shown in the report:
v If fields were selected on the Select and Sequence Fields display, they would be listed on this display
in the order that they were specified (includes result fields).
v If no fields were selected on the Select and Sequence Fields display, all the fields in the query would be
shown in the following order:
1. All sort fields (if any) in their order of sort priority.
2. Any result fields not selected as sort fields.
3. All other fields, in the order they exist in the record format definitions used in the selected files.
Fields from the first file are listed first, followed by those in the second file, and so on.
A CCSID is associated with a collating sequence. Different CCSIDs can cause different results for
MINIMUM and MAXIMUM processing. See CCSID and summary functions in Query for i5/OS on
page 248 for information on how CCSIDs affect summary functions.
Each type of summary is shown on a separate line. The descriptive abbreviation (TOTAL, AVG, MIN,
MAX, or COUNT) for each summary is placed to the left of the summary value, and is separated from
the value by at least one space. (You cannot change the placement of this information or the order in
which the summaries are shown.)
For example, if you have a result field of TOTDUE for which you want a total and maximum value to show
on the report, and you want a count of all records in the report, your report would look something like
this:
Accounts Receivable Summary
Jones B D 5.00
Kagy R L 25.39
Vine S S .00
Johnson J A 140.28
Alison J S 36.36
Henning G K 1,900.50
Stevens K L 6.90
Wilson T N 15.00
Doe J W .00
FINAL TOTALS
TOTAL 2,129.43
MAX 1,900.50
COUNT 9
Each AVG, MIN, and MAX value is edited in the same way as the column in which it appears.
Chapter 11. Specifying report summary functions in Query for i5/OS reports 135
136 Query for i5/OS V6R1
Chapter 12. Defining Query for i5/OS report breaks
This chapter describes how you define the report breaks that you want to occur in your query report.
Report breaks are used to break the report into groups of records (or lines) each time the value of a
report break field changes. The second part of this chapter describes how, for each of your report breaks,
you can control report break formatting and define break text messages.
The primary reason for defining report breaks is to provide a basis (along with your selected sort fields)
for Query to create a set of subtotals for each logical group of records in your output. An example of a
logical group of records would be all of the time records for one employee. Another example would be
all of the employee records for an entire department. A third example would be all of the sales activity
records for one inventory item.
If daily time records existed for each employee, at the end of a pay period you could have Query process
all of the records and create two kinds of groups or subtotals. To accomplish this you would have to
define two report break fields (DEPTNO and EMPNO, for example) and select the same two fields as sort
fields. If you assigned a sort priority of 10 to DEPTNO and a sort priority of 20 to EMPNO, Query would
arrange the records in groups so that they would appear on your report by employee number within
department number (starting with the lowest number employees records in the first or lowest
department number, followed by all the remaining in ascending sequence).
If you also defined break level 1 as DEPTNO and break level 2 as EMPNO, Query would create group or level
breaks and would print or display subtotals for each group based on what you specified for your Report
Summary functions (see Chapter 11, Specifying report summary functions in Query for i5/OS reports
for details). If you only wanted final totals at the end of the report, you would not have to define any
report breaks in this example.
When a report break occurs for each group of records selected by the query, break text (if any) is shown
following a blank line. The break text is then followed by a separate line for each type of summary
function being used in your query. On each summary function line is the name of the function and all the
summary values calculated at that report break for all the fields using that function.
For example, you can have: only one break level with all nine fields defined as break fields for it; three
break levels with three break fields each; or a maximum of six break levels, with one field each used as
break fields for five of the levels and four fields used for one level.
If multiple break fields are defined for the same break level, a change in any one of those break fields
causes a break (or group change) level to occur for the specified break level number. This break level
change causes Query to include the appropriate summary values in your output.
A break at one level automatically causes a break at all lower break levels (the lowest level has the
highest number). For example, if all six break levels were defined, a control break occurring at level 4
would also force breaks at levels 5 and 6, and the break text and summary values for each of those three
levels (6 to 4) would be included at that point in the report.
Break Sort
Level Prty Field
1 1 COMPANY
2 2 DIVISION
3 3 REGION
4 4 DEPARTMENT
5 5 EMPLOYEE
Bottom
An example of when you might need to define five report break levels, would be if you sequenced a
group of payroll time records by employee within department, within region, within division, and within
company. In this case you would assign the following break levels:
v Break level 1 = company
v Break level 2 = division
v Break level 3 = region
v Break level 4 = department
v Break level 5 = employee
You can use any field shown in the list to define a report break; however, in most cases, you should use
only sort fields for break fields. Generally, the break levels should be in the same order as the sort
priorities assigned to the fields. That is, the highest assignable break level (level 1) should be assigned to
a high sort priority number (where 1 is also the highest), break level 2 should be assigned to some lower
priority number, and the lowest break level used should be assigned to the lower sort priority numbers.
If you specify a field as a break field that is not also a sort field, you may get extra report breaks in your
report because if the field is not part of the sorting step, records that belong in the same group may not
be grouped together and will cause the extra breaks.
Break definitions are ignored for detail output to a database file. Refer to Building a new output file
definition in Query for i5/OS reports on page 154 for more information on how break definitions and
summary functions are used for summary-only output to a database file.
For summary-only printed or displayed output, a line of break values is shown instead of the detail lines
for the break group. For either detail or summary-only printed or display output, one or more of the
following appears at each report break:
v A blank line to separate the summary information from the column data.
v Any break text defined for that break level, including any break values that are defined in that text.
v Any summaries (totals, averages, minimum and maximum values, and counts) that you specified on
the Select Report Summary Functions display. Columns with no break or summary values to be shown
are omitted.
v Another blank line, or if the report is printed, you can specify for any break level that a new page be
started after the summary information is printed.
In a name and address file, for example, you might specify that two fields named CITY and STATE be
specified as break fields. If STATE was defined as the break field for break level 1, CITY was defined as the
break field for break level 2, and both fields were specified as break values in break text for their
respective levels, then the following sample report breaks and break text might appear in a report for the
following records:
Records in file: | Lines in report:
|
LNAME CITY STATE | STATE CITY LNAME
Brown Rochester MN | MN Rochester Brown
Jones Rochester MN | Jones
Smith Rochester MN | Smith
. . . |
. . . | Users in Rochester MN
. . . | Count 3
. . . |
Adams St Paul MN | St Paul Adams
. . . |
. . . | Users in St Paul MN
. . . | Count 1
. . . | All Users in MN
. . . | Count 4
. . . |
. . . |
Calva Rochester NY | NY Rochester Calva
Doe Rochester NY | Doe
Smith Rochester NY | Smith
. . . |
. . . | Users in Rochester NY
. . . | Count 3
. . . | All Users in NY
. . . | Count 3
If you do not specify report breaks, Query prints or displays all the records in the report, one after the
other without any additional spacing or text.
Break level 0 is another level, provided by Query, that you can use. This break level, which occurs only at
the end of the report, is used to print the final summary values for all the specified summary functions at
the end of the report.
Break level 0 has default break text (FINAL TOTALS), but it can be changed or filled with blanks if you do
not want any final total description or values.
For printed output only, Query suppresses the printing of identical field information within a field that is
defined as a break field. That is, when the contents of a break field are the same in a group of records,
only the first record in the group has that field printed. All the other records in the group do not print
the duplicate contents of that field.
See the previous name and address file example. Even though each record contains a value for the STATE
field, the value for STATE only appears in its column when the value changes.
However, for the first record at the top of every page, all the information in all report fields is printed
again for ease of reading.
Query assumes you want a blank line after any summaries, unless you specify a new page. If you display
the information rather than print it, Query ignores new page requests.
The following are additional considerations regarding the occurrence of report breaks:
v For SBCS data in SBCS, DBCS-open, and DBCS-either character fields, a report break may not occur
even though the characters in a field may be different. For example, if the collating sequence treats
each uppercase and lowercase letter as having the same value (Aa, Bb, Cc, and so on), then no report
break occurs if the only change in a field is from A to a, for example. (Collating sequences are not used
for DBCS character data in DBCS fields.)
v For numeric fields, the actual data in the fields is used for determining report breaks, not the edited
form of the data.
v For date, time, and timestamp fields, chronological equivalency determines report breaks.
v For both character and numeric fields, the original definition size of each field is used for determining
report breaks, not any changed size that may have been specified on the Specify Report Column
Formatting display.
v If null values are found, they are grouped together.
If sort and report breaks are specified on Field 1 and MIN and MAX are specified on Field 2, the
following summary only report is shown:
Table 6. Summary Only Report with Null Values
Field 1 Field 2
1
MIN AZ
MAX AZ
2
MIN XY
MAX XY
3
MIN
MAX
MIN AB
MAX AB
FINAL TOTALS
MIN AB
MAX XY
For all break levels except break level 0, you can specify whether the report is to skip to a new page after
a particular report break occurs. For each break level (1 through 6), you can also specify whether the
summary function values are to be suppressed. You can also specify the break text (if any) that you want
included with (or instead of) any summary information. The break text appears after the column data, on
the line before any summary values.
Format Report Break
Break level . . . . . . . : 1
This prompt applies to printed reports only and is ignored for displayed reports. For break level 0, this
prompt is not shown.
Y=Yes
Query is to skip to a new page after any summary values are printed on the current page for each
report break that occurs for this break level.
N=No
Query is not to skip to a new page when a report break occurs for this break level. Instead, it is to
skip the number of lines you specify on the Define Printer Output display plus one additional line
(see Chapter 13, Selecting output type and output form in Query for i5/OS reports).
If you include &XXXXXX (where XXXXXX is any one of the selected fields in your query) in the text, the
current value of the field appears in place of &XXXXXX in the text in the report. For example, if you entered
break text of:
Totals for &CITY &STATE
Notice that a blank should follow a field name. An exception is that a second field name can follow a
field name. As shown in the second example, the middle initial field, &MINIT, follows the first initial field,
&FINIT, with no blank between them. The characters /, -, or : may also follow a field name. You can also
type characters directly in front of a field name.
The field names can be uppercase, lowercase, or a mixture: &LNAME, &lname, or &Lname. Blanks at the end
of field values, such as Glendale, are dropped. Blanks in front of field values are also dropped.
Note: Any changed lengths (except 0) specified on the Specify Report Column Formatting display are
used. However, if 0 was specified for a field (to exclude the field from the report in column form),
then the originally defined length and decimal position values are used in the break text.
Query prints only part of the text if the width is not large enough on a printed report. However, field
value substitutions in the break text are either wholly included or excluded. If there is not enough room
left to print all of a value, none of it is printed.
To suppress summaries for break level 0 and prevent the FINAL TOTALS line from appearing in the report,
you must answer Y (Yes) to the Suppress summaries prompt and you must blank out the text in the
prompt for break level 0.
If you do not use this definition step in defining your query, the output produced by Query is shown on
your display and is in detailed form.
If you specify that your output is to be printed or stored in a database file, Query will present additional
displays so that you can define printer or database file characteristics.
Selecting the output type and form you want in Query for i5/OS reports
You can select the output device for your query by entering one of the following choices:
1=Display
The output of your query is to be shown on your display, and it can be shown in detailed or
summary form. The output is the same as that produced by F5 (Report) during query definition. For
information on how to use the Display Report display, you can press the Help key while you are
displaying your query output.
Note: If a query is run in batch, output is sent to the printer, even though display output type is
specified.
2=Printer
The output of your query is to be printed, and it can be printed in detailed or summary form. If you
select this option, the Define Printer Output display is shown when you press the Enter key. There,
you can specify the printer to be used and other characteristics of the printed output. Other displays
related to the printed output are also shown.
Note: If a query is run in batch, output may be sent to a different printer than one you specify,
depending on the default printer specifications for batch.
3=Database file
The output of your query is to be put into a database file. If you select this option, the Define
Database File Output display is shown when you press the Enter key. There, you can specify the
name of the file and member to be used to store the output and whether the output is to be added to
the file or member or is to replace existing data in the file or member.
Both the detailed and summary forms of database file output are different from displayed or printed
output:
v For detailed output to database, report break and summary function output (if defined in the query)
is ignored; only the selected records are put in the database file. Also, if you specify that output is
to a database file, the values in the line wrapping prompts are ignored; database output records are
never wrapped. Report column formatting is ignored.
v For summary output to database, Query produces a record for each defined report break, including
one for break level zero (0). Editing values on the total fields are used.
Note that database output does not contain certain report characteristics that are used for displayed
or printed reports: column headings, column spacing, line wrapping, report break formatting, or
Even though these characteristics may be defined in the query, they are not used unless your Output
type choice specifies either displayed or printed output. (Because the query definition can contain
definitions for all three types of output at the same time, you have the flexibility to use the same
query for more than one type of option. All you have to do is change the option and run your query
again.)
Select Output Type and Output Form
Note: For DBCS-graphic fields, Query adds DBCS shift-out and shift-in characters before showing the
fields in a displayed or printed report. Variable-length DBCS values are extended to the full field
length.
If all of the fields of an output record cannot fit within the specified width of one line of the report, the
field that would exceed the specified width is started on the next line. If you leave this prompt blank,
wrapping occurs whenever the maximum width of the specified display, or printer is reached.
If you specify too small a width, some column headings, fields, or summary function values may be
truncated or dropped from the report. If such a problem occurs, you can either make changes here or to
the Column Spacing or Column Heading prompts on the Specify Report Column Formatting display. To see
the fields in which this may occur, press F13 (Layout). Error messages are shown for each field in error.
Chapter 13. Selecting output type and output form in Query for i5/OS reports 145
with any fields that follow it. The Column Spacing value for a wrapped field may show up as blanks
after the field on the previous line, as blanks before the wrapped field, or a combination thereof.
The following example shows the original report and the report showing wrapping that occurs if the
wrapping width is set to 15.
Original report:
Note: Messages about truncated and dropped information appear under a displayed report or if you
press F13 to display the layout. There are no warnings about truncated or dropped information
for a printed report.
Form size
Length . . . . . . . ___ Blank, 1-255
Width . . . . . . . 132 Blank, 1-378
Line spacing . . . . . 1 1, 2, 3
You can also specify whether your query definition is to be printed when the report is printed. If it is, the
values specified on this display apply to the printing of both the query report and the query definition.
These values do not apply if you print the definition using option 6 on the Work with Queries display
(which prints only the definition) or if you specify both database output and print definition (which puts
the report in the file and prints the definition).
Note: If a query is run in batch, output may be sent to a different printer than one you specify,
depending on the default printer specifications for batch.
Chapter 13. Selecting output type and output form in Query for i5/OS reports 147
If you want to increase the left margin of the report (with the left edge being print position 1), go to
the Specify Report Column Formatting display and type a larger value in the Column Spacing prompt
for the first field to be shown in the report.
Note: For DBCS-graphic fields, Query adds DBCS shift-out and shift-in characters before showing the
fields in a displayed or printed report. Variable-length DBCS values are extended to the full field
length.
If you leave this prompt blank, the starting line is line 6. If you specify a starting line number, it must be
no greater than the ending line value and less than or equal to the form length value.
If you leave this prompt blank, the value specified in the printer device file (named QPQUPRFIL) used
by Query determines the ending line number.
If you specified that both the query report and query definition are to be printed, the values on this
display apply to both of them.
If you have your query output spooled and if it is necessary to work with your spooled output, you can
use the Work with Spooled Files display. (You can get to that display by typing the Work With Spooled
Files (WRKSPLF) command on a command line of any menu.) For more information about spooled
output files and printer device files, see the Printer Device Programming book. For information about the
values that are mentioned here with this display, see the description of the Create Printer File (CRTPRTF)
command parameters in the Control language topic in the i5/OS Information Center.
Define Spooled Output
Spool the output in Query for i5/OS reports: If you want to specify whether your report is to be
spooled (as a spooled printer file) to an output queue, type a Y or N. If the output is spooled, the report
can be scheduled for more efficient printing or possibly be delayed until a later time. If you leave this
prompt blank, the value specified in the printer device file (named QPQUPRFIL) used by Query
determines whether the output is to be spooled.
When your query is run, it creates your report and sends it as a spooled printer file to an output queue.
You can specify that either the output be printed as soon as it can be scheduled, or that it be held on the
output queue until it is released at a later time.
Y=Yes
The output for your report is to be spooled and sent to an output queue. When the report is printed
is determined by the scheduling value specified in the printer device file QPQUPRFIL. The
scheduling value is specified on the SCHEDULE parameter of, for example, the CRTPRTF (Create
Printer File) command.
N=No
The output for your report is not to be spooled; it is sent directly to the printer to be printed as each
output record becomes available. This option (N=No) is not recommended; it can result in errors if
the printer is not available at run-time.
Form type in Query for i5/OS reports: You probably do not need to specify this value to print your
query. If you leave this prompt blank, the value specified in the printer device file (named QPQUPRFIL)
used by Query determines which forms are to be used to print the report. If you want to print your
report on a particular type of form, type the name of the form or type the special value *STD.
v If you type the name of a form, it must be a form name that has been defined on the system. After the
query runs and the output is ready to be printed, a message appears on the console telling the operator
to change the forms in the associated printer to the forms type that you specified by name.
Chapter 13. Selecting output type and output form in Query for i5/OS reports 149
v If you type *STD, the system assumes that the standard forms are already in the printer, and no
message is sent to the system operator.
Copies in Query for i5/OS reports: Type a number from 1 through 255 to indicate the number of copies
of the report that you want printed. If you leave this prompt blank, the value specified in the printer
device file (named QPQUPRFIL) used by Query determines the number of copies to be printed.
Hold in Query for i5/OS reports: Type a Y or N to indicate whether your report is to be printed now, or
is to be held and printed at a later time. The value in this prompt, however, is ignored if the value
specified or assumed in the Spool the output prompt is N. If you leave this prompt blank, the value
specified in the printer device file used by this printer determines whether the report is to be held or not.
If you specified that the output for your query is to be spooled when your query is run, your report is
created as a spooled printer file and sent to an output queue. You can specify either that the spooled file
be printed as soon as it can be scheduled, or that it be held on the output queue until it is released for
printing at a later time.
Y=Yes
The output for your report is to be held as a spooled printer file on an output queue. The report is
not printed until the spooled file is released for printing at a later time.
N=No
The output for your report is not held; it is printed as soon as it can be scheduled.
Print cover page of Query for i5/OS reports: Type a Y or N to indicate whether a cover page is to be
printed at the beginning of your report.
Y=Yes
A cover page is to be printed. It will contain any text that you specify on the Cover page title prompt,
the date and time of printing, and information about your query (its name, its library name, the files
selected, and text describing the query, if any).
Cover page title of Query for i5/OS reports: Type the title, or title text, to be printed on your report as
a cover page. You can type as many as four full lines of text using all characters (including uppercase and
lowercase letters) that can be printed by the printer that you specified on the Define Printer Output
display.
If you press F5 (Report) or F13 (Layout) to display the report or its layout, this title is not shown.
Defining the page headings and footings in Query for i5/OS reports
The Specify Page Headings and Footings display is the last printer output definition display used to
define the print characteristics of your query report. On this display, you can specify whether you want
page headings and footings to be printed on all the pages of your report (except the cover page). You can
also specify whether you want to print the standard version of page heading information used by Query,
print only your own headings, or print both types. The standard page heading is used only on heading
line 1 of each page; it contains the system date and time, the current page number, and any text that you
specify here for the first heading line.
If you specify your own heading text or footing text, you can use three special codes in either one (or in
both) that cause the system date, the system time, and the current report page number to be printed
exactly where you want them in your text. These codes are provided so you can use them instead of the
standard headings and format them however you wish.
&date The system date, printed in the jobs standard date format.
&time The system time, printed in the jobs standard time format.
&page The current page number of the report, printed without a caption (you can specify your own).
Leading zeros are replaced with blanks, and values of 1 through 9999 are printed (with no
thousands separators). However, because the page field is only four positions, the leading zeros
are shown for all pages after 9999 (to indicate that there is a 1 that is not printed in front of the 4
printed digits; page 10 000 shows as 0000, page 10 001 shows as 0001, and so on).
These codes can be used anywhere you want in the heading and footing text, and they can be used more
than once.
Specify Page Headings and Footings
Print standard
page headings . . . Y Y=Yes, N=No
Page heading
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
Page footing
_____________________________________________________________________________
Chapter 13. Selecting output type and output form in Query for i5/OS reports 151
Print standard page headings in Query for i5/OS reports: Type a Y or N to indicate whether the
systems standard headings are to be printed on each page of your report (except for the cover page). You
must specify an N if you do not want to print the standard headings; your use of the special date, time,
and page codes does not control the printing of the standard information.
If you type a Y for this prompt and also specify your own heading text, Query prints the standard
information in the same locations on the first line and includes as much of your first line of heading text
as it can. Your text is centered between the standard information and is truncated on the right end if it
cannot all be used. Your other two heading lines, if any, are also centered and printed below the first line.
Note that your other two heading lines are centered on lines 2 and 3, and not with respect to your
heading text on line 1. The longest line of lines 2 and 3 is centered on its own line, then the shorter line
starts at the same position as the longest line does. Any text that cannot fit on either line is truncated.
Y=Yes
The standard heading information is to be printed on each page. Your heading text, if any, is also
printed.
N=No
The standard heading information is not to be printed. Only your heading text, if any, is printed. If
you do not specify any heading text in the Page heading prompt, no page heading information is
printed.
Page heading in Query for i5/OS reports: Type the text, if any, for the heading that you want printed at
the top of all the pages of your report, except for the cover page. You can type as many as three full lines
of text using all characters (including uppercase and lowercase letters) that can be printed by the printer
that you specified on the Define Printer Output display. You can also use the special codes &date, &time,
and &page wherever you want in your heading text.
If you press F5 (Report) or F13 (Layout) to display the report or its layout, this page heading is not
shown.
Page footing in Query for i5/OS reports: Type the text, if any, for the footing that you want printed at
the bottom of all the pages of your report, except for the cover page. You can type one full line of text
using all characters (including uppercase and lowercase letters) that can be printed by the printer that
you specified on the Define Printer Output display. You can also use the special codes &date, &time, and
&page wherever you want in your footing text.
If you press F5 (Report) or F13 (Layout) to display your report or its layout, this page footing is not
shown.
The output to be stored can be the records selected by your query (if the detailed form of output was
specified), or the output can be the summary information produced from report breaks and summary
function values defined in your query. You can also specify whether your query definition is to be
printed when your query output is stored.
The data from your query is saved in your database file in the order that the fields are specified in your
query. If you requested detailed output, but did not select fields for your query, all fields for selected
records are placed in your database file, followed by any defined result fields.
Define Database File Output
The following considerations apply when you define your query to put its output in a database file:
v Unless you use lists to select them, the file and library names that you specify on this display are not
checked at this time for their existence or for your authority to use them. These items are checked
when the query is run. The file is also checked to ensure that it is a database file.
v Query for i5/OS cannot put data into a file while running a query that gets data from that file.
Although you can specify a file you have already selected as an input file for this query, you cannot
run the query without using file selection override.
v If summary-only output is being used and an overflow error occurs in a summary for a numeric field,
9s are put in the summary field instead of the data. If the field contains floating-point data, then 0s are
used instead. If the field contains date or timestamp data, then the highest possible chronological value
is used. The overflow indicator has an asterisk (*) in it when data has overflowed for any break or
summary fields.
v If you change only the value in the Library prompt, the information on the Define Database File Output
display is not saved when you define your query. If a query is run when no information is defined for
this display, the library used for output is the profile value. Changing the default value for the Library
prompt updates the Query for i5/OS user's profile value for that prompt.
v If a database file is being created or replaced, Query for i5/OS builds a new file definition that matches
the attributes of the query data. If a file member is being created, replaced, or added to, the existing
output file definition is not changed and the query data might be converted as it is placed in the file.
Values from a date, time, or timestamp field can be placed into any field of the same data type,
regardless of any differences in the format or separator.
Chapter 13. Selecting output type and output form in Query for i5/OS reports 153
Note: This can cause an unwanted result if a date value outside the range 1940 through 2039 is put into a
file field that has a two-digit year format. The value will be shown as pluses (++++++) on a report.
To avoid this result, either use the CHAR function to see the data in a four-digit year format when
you query the data, or change the attributes of the file field to a four-digit year format.
The record format printed at the end of the query definition shows the field characteristics of the existing
output file.
Even if your query only sorts or selects records from a single file, the output file definition that Query for
i5/OS creates when creating or replacing a file is likely to differ from that of the input file definition.
Query for i5/OS creates only physical files, and does not use everything in each input field definition
when building the format definition. For example, a long comment is not carried over from the
referenced field.
Even if the expression for a result field is a field name from a single file, the output field defined for the
result field differs from that of the referenced field. Data type, size, keyboard shift (DBCS subtype), and
null capability are considered in the algorithms used to derive the result definition. Column headings,
text, editing, null value defaults, and so on, are not carried over.
Specified formatting overrides saved in the query definition are used in summary only output definitions.
The column heading, size, and expression specified to define a result field are used for detail output
definitions and (when not overridden) for break fields in summary output definitions.
Query for i5/OS creates field names to avoid duplication and to reflect the nature of the function that is
applied in summary output.
Text and column headings for summary-function fields are created from input field names and
translatable summary function captions. The CCSID assigned depends on where the name originated. The
query definition CCSID is used for result fields and the appropriate file format definition CCSID is used
for file fields.
For result fields and summary-function fields, assignment of attributes involves more than just copying
information from a related input file field, which is what happens for most attributes for detail and break
fields.
Some assigned attributes for result fields (type, size, editing) and defined attributes for input file fields
can be determined while you are working on the definition because they are shown in field lists or
presented as initial defaults.
The layout shown for F13 may be helpful if you keep in mind that it represents characteristics of
displayed or printed output, which shows result fields first (not last) when no fields are selected, does
not have individual columns for summary function values, and applies formatting overrides to detail as
well as summary output.
The record format printed for option 6 (Print definition) shows additional information, such as the coded
character set identifier (CCSID), null capability, and the specific data type of numeric fields. For summary
output, for example, you can see that certain fields (totals, averages, counts, nonfloating-point numeric
breaks, minimums, and maximums) are zoned decimal, even if the underlying field is binary or packed.
One way to see how the file will be created without actually running a long query is to create it using
record selections that cause no records to be added. The format definition of the new file can then be
Library in Query for i5/OS reports: Shows the name of the library that contains or will contain the
database file to be used. The initial library value shown in this prompt is: the value last used on this
display, the name of your current library (if specified), or QGPL if you have never used this display and
you do not have a current library.
If you want to use a different library than the one shown, you can type a different library name or press
F4 (Prompt) to see a list of library names. Do one of the following:
v Type the name of the library that contains or will contain the file for the query output.
v If you type a generic library name (in the form of ABC*) or a special library name (*LIBL, *USRLIBL,
*ALL, or *ALLUSR), and then press F4 with the cursor in this prompt, the specified list of library names
is shown on the Select Library display. When you select the library you want from the list and press
Enter, you return to this display with the selected name filled in.
Member in Query for i5/OS reports: Type the name of the member in the specified database file that
you want your output to be placed in. You can also specify *FILE (the default), *FIRST or *LAST; if one of
these is used, the value is changed to the actual member name when your query is run.
Or, with the cursor located in this prompt, you can press F4 to list the members in the file, and select one
from the list; however, if you are creating a new member, you should use a name not shown in the list.
Chapter 13. Selecting output type and output form in Query for i5/OS reports 155
If you specify *FILE, *FIRST, or *LAST in this prompt, a member is created with the same name as the
file if the file is created or replaced or has no members.
If *FIRST or *LAST is used with a request to put the output into a new member of an existing file that
contains members, Query for i5/OS sends an error message. You need to cancel the request or replace the
member named in the message.
Data in file in Query for i5/OS reports: Type the number of one of the following options to tell Query
(at the time it is running your query) how to use the file and member you specified in the File and
Member prompts:
1=New file
Creates a new file with the name specified in the File prompt and a member with the name indicated
in the Member prompt. While running the query, if Query finds a file by that name in the library
specified in the Library prompt, a message is displayed. You can either type a C (cancel) to cancel
running the query or type a G (go) to continue running, thereby indicating that the file is to be
replaced by the data from your query.
2=Replace file
Replaces the existing file named in the File prompt with the data from your query. The file and all the
members of the file are deleted, and your data is put into a new member that is named with the
name specified in the Member prompt.
3=New member
Creates a new member with the name specified in the Member prompt. While running the query, if
Query finds a member by that name or a *FIRST or *LAST member in the file specified in the File
prompt, a message is displayed. You can either type a C (cancel) to cancel running the query or type
a G (go) to continue running, thereby indicating that the member is to be replaced by the data from
your query.
4=Replace member
Replaces the existing member named in the Member prompt with the data from your query. All the
data in that member is deleted, and your data is added. If a member by that name did not exist, the
member is created and the data is put in it.
5=Add to member
Adds the data from your query at the end of the data in the existing member named in the Member
prompt. If a member by that name did not exist, the member is created and the data is put in it.
When your query data is put into a file that exists and is not being replaced, the format of the query data
must be compatible with the record format definition of the existing database file. To be compatible, the
following must be true:
v The formats must have the same number of fields.
v Corresponding fields in sequence in the formats (that is, the first, second, third fields, and so on) must
have field definitions of the same data type and, except for date, time, and timestamp data types, must
have the same length, scale, precision, and keyboard shift. Date, time, or timestamp fields need only
have the same data type for example, both date fields.
For any of the options that replace data in existing files or members, the following also controls whether
you can replace that data. The data cannot be replaced in a file or member if:
v Other files depend on the definition of this file. For example, you cannot replace the data in a physical
database file on which other logical database files are based. You can use the Display Database
Relations (DSPDBR) command to see the relationships of a file to other files.
v You do not have the needed authority for the file to be replaced.
v The file is not a physical file or it has more than one format definition.
v The output file or member names are the same as any of the selected files or members used in your
query.
Authority in Query for i5/OS reports: Type the value for the kind of object authority that you want to
give to other users for your database file. (This authority value is used only if your query creates a new
file.) The values that you can specify are:
*LIBCRTAUT
Library create authority assigns the authority from the create authority (CRTAUT) value in the
library the object is being created into. The authority could be *ALL, *CHANGE, *EXCLUDE, *USE,
or an authorization list name. Your ability to use the file depends on the authority assigned.
*CHANGE
Change authority allows other users to perform all operations on the object except those limited to
the owner or controlled by object existence authority and object management authority. A user can
change or use the file in any way except to: replace or add new members, delete the file, or transfer it
to a new owner.
*ALL
All authority allows other users to perform all operations on the object except those limited to the
owner or controlled by authorization list management rights. A user can do anything with the file
(including deleting it), except for transferring it to a new owner.
*EXCLUDE
Exclude authority prevents other users from doing anything with the file. Unless given specific types
of authority, no user except its owner can use the file.
*USE
Use authority allows other users to read records in the file.
authorization list name
If you specify the name of an authorization list, its authority is used to control the ability that users
have to use the file. For more information, see the Security reference book.
The following table shows, for each predefined type of authority, what can be done with the file:
Type of Create Replace Add New Add to Replace
Authority New File the File Member Member Member
--------- -------- -------- ------- ------ -------
*ALL Yes Yes Yes Yes Yes
*CHANGE Yes No No Yes No
*USE Yes No No No No
*EXCLUDE Yes No No No No
Note: If the authority you specify is *LIBCRTAUT, the value assigned when the object was created is
used.
Text in Query for i5/OS reports: You can type a comment (text) of up to and including 50 characters in
this prompt to describe a file that Query for i5/OS creates or replaces when this query is run. The
comment reminds you what the file is for when it is displayed later in a list of files. The comment is
displayed, for example, on the Select File display whenever the Text column is shown.
Print definition in Query for i5/OS reports: Type a Y or N to indicate if you want a copy of your query
definition to be printed whenever the query output is stored in the database file. N (No) is the default.
Y=Yes
A copy of your query definition (and the output database file definition) is to be printed whenever
the query output is stored in the file.
N=No
A copy of the query definition is not to be printed when the query is run.
Chapter 13. Selecting output type and output form in Query for i5/OS reports 157
Summary-only output of a Query for i5/OS report to a database file
The data sent to a database file, when summary-only output is selected, is one of the following:
v If no summary functions or report breaks have been selected, the output is a single record containing a
count of the records selected by your query.
v If summary functions but no report breaks have been selected, the output is a single record containing
summary function values.
v If report breaks but no summary functions have been selected, the output is a record containing report
break values for each report break.
v If both summary functions and report breaks have been selected, the output is a record containing
report break values and summary function values for every report break and for the final totals.
For a better understanding of summary-only output to a database file, compare the summary database
file output with a printed report from the same query. The data produced is the same (if no summaries
have been suppressed), but the layout of the data is different. If you print the query definition for a
query with output sent to a database file, the record format layout is included.
The information in each summary-only record that is output to a database file has the following format:
v The first position of each record contains a break level number.
v The second position of each record contains an overflow indicator.
v The third position of each record begins the actual data.
The break level is a number from 0 through 6, which identifies the different report break levels output to
a record. A 0 identifies a final total (summary) record. The numbers 1 through 6 identify a report break
and correspond to the level number associated with the report break.
The overflow indicator indicates when data has overflowed in 1 or more fields in this record. The
indicator position is blank if overflow has not occurred. An asterisk (*) appears if any calculated field
overflows. The field that overflowed is filled with the maximum value for a field of that type and size (a
string of asterisks ***** appears for the value in a printed or displayed report).
The output data is grouped together by field with the report break values followed by any summary
function values for the field. The data for break fields with priority lower than the current break level is
considered null. If the corresponding field in the output file is not null capable, Query for i5/OS uses the
null-value defaults (like blanks for character data). Summary data is displayed or printed in the following
order: total, average, minimum, maximum, and count. If a field is totaled, Query adds 3 digits to the field
length to hold the total (up to a maximum of 31 digits). Count summary values are 7 characters long and
are zoned decimal. Break and summary values for packed and binary data are converted to zoned
decimal format when saved in a database file. Date, time, and timestamp data is saved in internal format.
DBCS-graphic data is saved without shift-out and shift-in characters.
As an example, assume you have an input file containing personnel information about all state
employees. You set up a query that requests total salary, average salary, and the number of employees in
each county and city. The query sorts on two fields: CITY within COUNTY. Report breaks are defined for
these fields and the Salary field for each county is totaled, averaged, and counted.
If you ran this query and selected summary-only output, the following seven records would be sent to a
database file:
2 Los Angeles Arcadia 00007000000 03500000 0000002
2 Los Angeles Glendale 00009000000 04500000 0000002
1 Los Angeles ......... 00016000000 04000000 0000004
2 Orange Costa Mesa 00006000000 03000000 0000002
2 Orange Irvine 00008000000 04000000 0000002
1 Orange ......... 00014000000 03500000 0000004
0 ......... ......... 00030000000 03750000 0000008
| | | | | | |
The number in parentheses, behind the explanation of the field, is the output field length and number of
decimal positions. A blank break value is shown as a string of periods. Note that the overflow indicator
column is blank, indicating all the data fits.
The report breaks for CITY (break level 2) have break values for both COUNTY and CITY. The report breaks
for COUNTY (break level 1) have break values for COUNTY only. The last record (break level 0) contains the
final totals of the summary functions and has no break values. The blanks shown between the fields are
for example purposes only; the actual database file output has no blanks between fields.
In the above example, the query had both summary functions and report breaks specified. If this query
had neither summary functions or report breaks specified, the output would be a single record (break
level 0) containing a count of the records selected by the query. For example:
0 0000008
If this query had summary functions but no report breaks specified, the output would be a single record
(break level 0) containing summary function values for the records selected by the query. For example:
0 00030000000 03750000 0000008
If this query had report breaks but no summary functions specified, the output would be a record for
each report break specified. In the first example above, this would be the first six records without their
summary functions. For example:
2 Los Angeles Arcadia
2 Los Angeles Glendale
1 Los Angeles ........
2 Orange Costa Mesa
2 Orange Irvine
1 Orange ........
Chapter 13. Selecting output type and output form in Query for i5/OS reports 159
160 Query for i5/OS V6R1
Chapter 14. Specifying Query for i5/OS processing options
This chapter describes how you specify processing options for running a query. The processing options
you can specify are:
v Whether the results of numeric field calculations or field length changes done for your query are to be
rounded or dropped off (truncated).
v Whether errors and bad data found in numeric fields are to be ignored.
v Whether warnings about character substitutions encountered during CCSID conversions are to be
ignored.
v Whether to use the collating sequence for all character comparisons or just those that were done in
previous releases of Query for i5/OS.
If you work in an environment in which CCSID conversions are necessary and might involve character
substitution, you can choose to either ignore or see the character substitution warnings, depending on the
data and reports you need.
You can select whether you want to use the selected collating sequence for all character comparisons.
Specify Processing Options
Ignore decimal
data errors . . . . . . . . . . Blank, Y=Yes, N=No
Ignore Character
substitution warnings . . . . . Y Y=Yes, N=No
Whether you choose to have numeric field calculations rounded depends on how precise you require
your results to be. Initially, you need to determine how rounding or truncation will affect your results. If
your query uses several multiplication or division operations, the result of a numeric field calculation
may differ significantly whether your results are rounded or truncated. This is because rounding or
truncation could occur more than once for the field as the calculations are performed. For example,
multiplying a customers balance due times an interest rate may supply a result with more decimal
positions than you need or are allowed to have. If necessary, the result is rounded or truncated thus
introducing a small error in the result. Suppose that this result is then added to similar calculations for
other customers. Then all of the small errors begin to add up to a larger error. This error may or may not
be significant, but it will probably be different depending on whether you have selected rounding or
truncation.
Note: If you created a result field for a numeric expression that is too small to hold the integer portion
(the numbers to the left of the decimal point) of the result, the result cannot be calculated and a
decimal data error occurs. Even if you specify N in the Rounding prompt and Y in the Ignore decimal
data errors prompt, Query stops processing if it encounters a decimal data error. The rounding
option and the ignore decimal data errors option function only for numeric data that can be
calculated. See Specify processing options in Query for i5/OS on page 234 for a more detailed
description of the ignore decimal data errors option.
Rounding and truncation are not done just on result fields, they are also done on the average and total
summary functions on the Select Report Summary Functions display and when overriding the numeric
field length on the Specify Report Column Formatting display (such as changing from five decimal
positions to three decimal positions).
You can let Query decide whether the result of numeric field calculations or field length changes will be
rounded or truncated when your query is run. If you leave the Rounding prompt blank on the Specify
Processing Options display, Query decides whether to round or truncate the calculations based on the
environment in which the query is run. If the query is run in the i5/OS environment, the results are
rounded. If the query is run in the System/36 environment, the results are truncated.
You can let Query decide whether to ignore any errors it finds in numeric fields when your query is run.
If you leave the Ignore decimal data errors prompt blank on the Specify Processing Options display, Query
decides whether to ignore decimal data errors based on the environment in which the query is run. If the
query is run in the i5/OS environment, errors are not ignored. If the query is run in the System/36
environment, errors are ignored.
Whether you choose to have decimal data errors ignored depends on whether your data contains values
that cause decimal data errors. You may want to define your query to ignore decimal data errors if the
files it uses have zoned or packed numeric fields that contain data that is not normally interpreted as
zoned or packed data. For example, some applications write blank into a zoned field when the user
leaves a prompt blank. Also, some direct files set all records to hex 40.
Note: If your query was created on a System i platform, a Blank is shown as the default. If Query for
i5/OS determines that your query was migrated from System/36, a Y is used so that the query can
be processed as it was on System/36. Ignore the character substitution warning.
Each character field, literal, and collating sequence is associated with a CCSID. This makes it possible to
convert field and literal values to a different coding representation, and to convert collating sequences for
use with data in a different coding representation. Character conversion, when required, is automatic and
transparent to the user. CCSID conversion usually occurs when the user is running in a multilingual
environment. A unique character may be substituted during character conversion for any character in the
source coding representation that does not have a match in the target coding representation.
Y=Yes
Character substitution is ignored and no error messages are issued. Leave the default Y if your
system contains all files with the same CCSID. If you have a primary and secondary language (such
as Spanish and English), character conversion may be done. Leave the default Y if no substitution is
possible, or if you do not care if this happens. If your files have different CCSIDs and you ignore
character substitution, you may:
v See substitution characters in your output.
v Encounter unexpected matching (when differing characters are substituted).
N=No
An error message is issued if a character substitution occurs or could occur when converting from
one CCSID to another, and the request being processed is ended with output incomplete.
Text . . . . . . . ____________________________________________
You can save a newly created query or changes to a previously saved query from either of these displays.
To save a newly created query, type a query name (Query prompt) and library name (Library prompt) if
you did not already do this on the Work with Queries display. To display a list of libraries, position the
cursor on the Library prompt and press F4 (Prompt).
You do not need to supply a query name or library if you are saving changes to a previously saved
query; these names should already be filled in on the display. If you change either the query name or the
library, you create a new query with that name and library, and the original query remains unchanged.
The following table shows, for each predefined type of authority, what can be done with the query.
Type of Change Copy Delete Display Print Query Run Change
Authority Query Query Query Query Definition Query Authority
--------- ------ ----- ------ ------- ---------- ----- ---------
*ALL Yes Yes Yes Yes Yes Yes No
*CHANGE No No No Yes Yes Yes No
*USE No No No Yes Yes Yes No
*EXCLUDE No No No No No No No
Note: If the authority you specify is *LIBCRTAUT, the value assigned when the object was created is
used.
Running a Query for i5/OS query from the Query for i5/OS menu
You can run an existing query by selecting option 2 (Run an existing query) on the Query menu. This
causes the RUNQRY (Run Query) command help display to appear. For more information about using
the RUNQRY command, see the CL topic in the i5/OS Information Center and Running a Query for
i5/OS query using the RUNQRY command on page 169 of this book.
Running a Query for i5/OS query from the Exit This Query display
When you finish creating or changing a query, the Exit This Query display is shown.
Exit This Query
Text . . . . . . . _______________________________________
Query assumes that you want to save your query, so it usually supplies a Y (Yes) in response to the Save
definition prompt. Run option is a profile option, and whatever you selected the last time you exited a
query is the default until you select a different value. However, Query supplies a 3 (Do not run) for the
Run option prompt when your query has an error.
Chapter 15. Exiting and running a Query for i5/OS query 167
You can run a query and get the report without saving the definition of the query only if you are running
interactively. (The query must be saved to run in batch.) However:
v If you are creating a query and choose not to save it, it runs only once and then is lost. To save your
query, you need to supply values for the Library and Query prompts. The query name must be a
unique query name in that library. If not, Query issues a message asking whether you want to replace
the existing query.
v If you are running a query in batch, you must save it in a library other than QTEMP before running
the query.
v If you are changing a query and choose not to save it, it is kept without the changes, and the newly
changed or newly entered values are used only if you run the query now. That is, if you changed an
existing definition, the report shows the results of the changes only one time. If the report is run again,
the results are based on the original definition.
To save a newly changed query, you do not need to supply a library name and query name; if you do,
the original query remains unchanged, and a new query is created with the changes you made. Type
the name of the library in which the query is to be saved. Only an actual library name or *CURLIB can
be specified for the Library prompt. However, if you want to first see a list of libraries from which you
can select one, do the following: move the cursor to this prompt, type a special library name (such as
*LIBL) or a generic library name (in the form of ABC*), and press F4 (Prompt).
If you choose to run the query interactively, type 1 (Run interactively) in the Run option prompt and press
the Enter key. Query shows the report on your display, prints the report on a printer, or places the data
from the query in a database file. For more information on selecting an output device, see Chapter 13,
Selecting output type and output form in Query for i5/OS reports.
If you choose to submit the query to batch processing, type a 2 (Run in batch) in the Run option prompt
and press the Enter key. The query is submitted to the job queue specified in the job description for your
user profile.
You can create a query for a file member that does not contain any data. If you run the query, no data
shows in the report or is placed in a database file. However, you can press F13 (Layout) on the Exit This
Query display to check your report layout.
Running a Query for i5/OS query from the Work with Queries display
From the Work with Queries display, you can only run a query that has been previously saved. The
query runs exactly as it was defined. If you want to change anything about the output device, you must
first change the query and then run it.
Query displays a report, prints a report, or puts the data into a database file, depending on what is
specified on the Select Output Type and Output Form display. For more information on selecting an
output device, see Chapter 13, Selecting output type and output form in Query for i5/OS reports.
Query uses current data each time a query is run. For example, if a customers address changes in the
file, the new address appears in the data produced when the query is run. However, if definition of data
has changed since the query was created or last changed, the report created by the query may not show
these changes. For example, assume you want to run a query that does not have column headings
specified. The query then uses column headings defined by IDDU. If the IDDU column headings have
been changed since the query was created or last changed, the query may not use the new headings.
When you change a query, Query updates the query with the current IDDU definitions. If you save the
query, any IDDU changes are saved with it. Therefore, you can make sure you have the current
definitions when you want to run the query from the Work with Queries display by selecting option 2
(Change) instead of option 9 (Run). You can then save the query without actually making any changes by
doing the following:
v Press F3 on the Define the Query display.
v Choose to save the definition and run the query on the Exit This Query display.
The RUNQRY command can be used three different ways: to run an existing query (one that has already
been created), to run an existing query with some of its definition values changed by values you specify
on this command, or to run a default query based only on the parameter values specified on this
command. (You supply parameters values to give Query information it needs, such as the query name,
the library in which the query is stored, where to send the output, and so on.)
For detailed information about the RUNQRY command, its parameters, how to use it, and some
examples, see the CL topic in the i5/OS Information Center.
Chapter 15. Exiting and running a Query for i5/OS query 169
Following are some suggestions for using the RUNQRY command:
v If you want to use an existing query without changing the file or files to query, specify only a query
and library name (without an input file name). This runs the query exactly as it was defined.
v If you want to run a default query on a file, specify only an input file name. This produces a report
showing the information contained in the first 500 fields of each record.
v If you want to run a changed version of an existing query, specify a query name and the appropriate
parameters to change the definition to what you want. The parameter values you specify on this
command override the corresponding values in the existing query definition, but only when the
command is processing (that is, the changes are not permanently made to the query definition).
v If you specify both a query name and an input file name, the files specified by the input file name
parameter override the file name(s) specified in the query definition. Therefore, if multiple files (and
members) are defined in the query definition and you want to change one or two of them, you must
specify *SAME for the file selections that do not change and specify the values for the ones you want to
override.
When you run a saved query you might not get the results you expected. The items in the following list
can dynamically affect how a query runs or how the data is formatted:
v The language ID or sort sequence of the job (if the query takes them from the current job) is different
than when the query was defined.
v The format of the job date.
v The default for numeric editing for the language.
v The system decimal positions processing value.
v The system currency symbol.
v File overrides may be in effect.
v The job CCSID.
v The Query for i5/OS language installed (if the query specifies option 2 on the Select Collating Options
display).
v The printer file definition.
v The attributes of the workstation you are using to display the report.
Changing a query is almost the same process as creating a query. You choose the definition steps on the
Define the Query display for which you want to change query definition values. When the definition step
displays appear, the prompts are already filled in. To change the query, all you need to do is change or
delete the values in the prompts.
When you have finished changing a query, you can run it, save it, run it and save it, and so on.
If, however, after running and testing the changed query, you decide you want to keep the changes, you
can delete the unchanged original query.
Each type of change may require that you select several definition steps on the Define the Query display
by typing a 1 in the Opt column next to the definition steps you want to change.
The options currently defined for your query are shown with a > to the left of the option. You can change
these and define additional options. You can choose as many options as you want from this display. Each
of these options and their associated displays are described in previous chapters.
Each option has its own corresponding display(s), on which you can make specific changes. The displays
for the options you select are shown to you in the order they appear on the Define the Query display.
If you decide you do not want an option that has already been defined, do the following:
1. Select that option on the Define the Query display.
2. Blank out any prompts that are completed for that option display.
If you decide not to change anything on an option display once you see it, just press the Enter key
without changing anything and continue. If you have changed the display and decide you would rather
have it the way it was, press F12 (Cancel).
Pressing F12 does not undo the result of pressing F23 (Save as default). Also, changes Query must keep
as a result of your pressing the Enter key (or F10 or F3) to get to a different display cannot be canceled
later by pressing F12. All other changes you make can be canceled by pressing F12. The following
exceptions to this rule let you cancel all changes for your most recent work on an entire definition option
by pressing F12 after returning from a secondary prompt display to the primary prompt display on
which the secondary display depends:
v Join tests are canceled with file selections.
v Dependent value qualifiers are canceled with record selection tests.
v Editing changes are canceled with column formatting changes.
v Break level formatting changes are canceled with break field selections (level definitions).
If you decide you do not want to keep the changes you have made on previous displays, press F3 to end
the revision and type an N (No) for the Save definition prompt on the Exit This Query display.
When you are working at a display, you can press the Help key to see the on-line help information that
briefly describes how to specify the choices for that option. You can also press F5 or F13 to see how the
changes affect the report the query produces.
From the Exit This Query display, you can do either or both of the following:
v Save the query definition with the changes you have made.
v Run the query with the changes you have made.
Exit This Query
Text . . . __________________________________________
Authority . . . . . *LIBCRTAUT *LIBCRTAUT, *CHANGE, *ALL
*EXCLUDE, *USE
authorization list name
You can change any combination of the Query, Library, and Text prompts. If you save the query definition,
these changes have the following effects:
If you are replacing a query, you cannot specify authorization list name authority; you must use one of
the special names (*CHANGE, *ALL, *EXCLUDE, or *USE) or blanks (no change).
If you choose not to save the query definition, changes to the following prompts have the following
effects:
Chapter 16. Working with Query for i5/OS query definitions 173
Considerations for changing Query for i5/OS queries
To make changes to your query, choose the correct options on the Define the Query display. Refer to the
appropriate chapters or appendixes in this guide for information and considerations on how to enter the
definitions that you want. Each query is saved with a CCSID. You cannot change a query if your job
CCSID is not compatible with the query CCSID (one of the CCSIDs is 65535 or they are the same).
Note: See Changing a Query for i5/OS query on page 245 for more information on how CCSIDs affect
processing a query.
Changing the setting of the Use Collating Sequence processing option can change your results. If you set
the processing option to Yes, the EQ, NE, LIST, NLIST, LIKE, and NLIKE tests compare character
collating values. These tests compare the hexadecimal character codes if you set the option to No.
Note: The Use Collating Sequence option does not affect your output when the collating sequence is set
to *HEX.
LT, LE, GT, GE, and RANGE tests compare collating sequence values regardless of how you set the
processing option. A change to your collating sequence can change the records that these tests select. A
change to the collating sequence can also affect your querys minimum and maximum summary values,
the location of report breaks, and the order of selected records (if you use a field containing SBCS
character data for sorting).
For example, you have 2 collating sequences. In one, the character E has a higher sequence number than
e, and in the other, the two characters have equal (shared) sequence numbers. In one record, field NAME1
has a value of LEE, and field NAME2 has a value of Lee. Table 7 and Table 8 show the results of comparing
the strings (NAME1 and NAME2) using various tests for a collating sequence with:
v Unique weights used in all tests
v Shared weights used in all tests
v Unique weights not used in EQ and NE tests
v Shared weights not used in EQ and NE tests
Table 7 applies when all data is SBCS. Table 8 applies when some or all of the data is DBCS.
Table 7. Effect of Collating Sequence and Processing Option on Selection. Both NAME1 and NAME2 are SBCS data.
Yes means the record under test is selected. No means it is not selected.
ColSeq=YES Unique ColSeq=YES Shared ColSeq=NO Unique ColSeq=NO Shared
Test Weights Weights Weights Weights
NAME1 EQ NAME2 No Yes No No
NAME1 GE NAME2 Yes Yes Yes Yes
NAME1 GT NAME2 Yes No Yes No
NAME1 NE NAME2 Yes No Yes Yes
NAME1 LE NAME2 No Yes No Yes
NAME1 LT NAME2 No No No No
You can copy a previously saved query by using option 3 (Copy) on the Work with Queries display. You
can type the name of the query (and its library) on the display, or you can, from a list of queries, type a 3
next to the query(s) that you want to copy. (For more information about using lists, see Using lists in
Query for i5/OS on page 9.)
After you press the Enter key, the Copy Queries display appears. (The following display has some sample
information typed in.)
Copy Queries
To place the copy in a library other than the library that contains the original query, type a different
library name in the To library prompt. If you do not know the name of the library that should receive the
copy, you can use F4 (Prompt) to select a library from a list.
Chapter 16. Working with Query for i5/OS query definitions 175
To place the copy in the same library as the original, do not type anything in the To library prompt.
To rename the query(s), type the new name(s) in the To Query column. If you place the copy in the same
library as the original query, you must type a new name for the copy. If you place the copy in a different
library, you can rename it, or you can use the original query name.
When you are finished typing information on the Copy Queries display, press the Enter key. If Query
finds no errors while copying the queries, all the queries are copied. If you did not select any other
options from the Work with Queries display (such as change, delete, display, and so on), you return to
the Work with Queries display. If you selected the queries to be copied from a list of queries in a specific
library and did not copy the queries to a different library, the names of both the original and copied
queries are included in the list.
If Query finds an error while copying the queries, the list of queries being copied is shown and an error
message appears at the bottom of the display. The query that has the error is highlighted and appears at
the top of the list. Any queries that were before that query in the list have already been copied. You can
do either of the following:
v Press F9 (Reset) without pressing the Enter key. The copy process is canceled for all remaining queries,
including the query in error.
v Press F20 (Cancel copy in error) without pressing the Enter key. The query in error is not copied. To
continue copying the remaining queries, press the Enter key. If an error is found while copying one of
the remaining queries, another error message is shown and the list is shown again with that query
listed first and highlighted.
These tasks are options on the Work with Queries Display and are described in other sections of this
chapter.
Query
ACCTRECJAN
INVENTJAN
MAILADDR
PAYROLLJAN
TESTQUERY1
TESTQUERY2
This display shows the query name(s) you chose to delete. (The above display shows some sample
information.) Carefully check the names.
If you are sure you want to delete the queries listed, press the Enter key. The queries are deleted. If
you selected the queries to be deleted from a list of queries, the deleted query name(s) are no longer
included when you return to the Work with Queries display.
If you decide you do not want to delete one of the queries shown, press F12 (Cancel) to return to the
Work with Queries display without deleting any queries. The list of queries is still displayed and you
can change any of your selections.
If Query finds an error while deleting the queries, the list of queries being deleted is shown and an error
message appears on the bottom of the display. The query that has the error is highlighted and appears at
the top of the list. Any queries that were before that query in the list have already been successfully
deleted. You can do either of the following:
v Press F9 (Reset) without pressing the Enter key. The delete process is canceled for all remaining
queries, including the query in error.
v Press F20 (Cancel delete in error) without pressing the Enter key. The query in error is not deleted, but
the delete process continues for the remaining queries. If an error is found while deleting one of the
remaining queries, another error message is shown and the list is shown again with that query listed
first and highlighted.
Note: See Displaying a Query for i5/OS query on page 245 for more information on CCSIDs and how
they affect processing a query.
If you display a query and decide you want to change it, you have to return to the Work with Queries
display and use option 2 (Change). You can print the information you see when you display a query,
although the information will be in a different form. See Printing a Query for i5/OS query definition
on page 178. You may be able to print the definition of a query that you cannot change or display.
Chapter 16. Working with Query for i5/OS query definitions 177
You can display a previously saved query by using option 5 (Display) on the Work with Queries display.
You can type the name of the query (and its library) on the display, or you can, from a list of queries,
type a 5 next to the query that you want to display. (For more information about using lists, see Using
lists in Query for i5/OS on page 9.)
After you press the Enter key, the Define the Query display appears. All the options that were defined for
the query are shown with a > to the left of the option. To look at how the options are defined, you can
either:
1. Use F21 to look at displays for all the options (even those that are not defined for this query).
2. Type a 1 in the Opt column beside the options you want to look at.
You can press F5 while displaying a query to see how a report would look if you ran the query and
displayed or printed a report.
Note: There are circumstances under which the display you see when you press F5 may differ from the
display you would see during a normal running of the query. For example, if the collating table
selected for option 4 has been changed since the query was saved, the F5 display will show the
change, but the RUNQRY display will not.
When you have finished looking at a display for an option and are ready to look at the displays for the
next option, press the Enter key. When you have seen displays for all the options you selected, you return
to the Define the Query display. You can look at the same options again, or choose to display different
options. Whenever you decide you are finished displaying this query definition, you can either:
1. Press F12 as many times as necessary to return to the Work with Queries display.
2. Press F3 to work with any remaining queries, if you selected more than one query from a list on the
Work with Queries display. You return to the Work with Queries display if you were finished working
with all the queries you selected on that display.
Note: You may not be able to display a query if the file definition has been changed since the query was
last used or displayed. Changing the query or the file definition may make it possible to display
the query. You also may not be able to use certain command and function keys while you are
displaying because they are available only when you create or change a query.
You can print the query definition using any of the following methods:
v Use option 6 (Print definition) on the Work with Queries display. You can type the name of the query
(and its library) on the display, or you can, from a list of queries, type a 6 next to the query name that
you want to print the definition for. (For more information about using lists, see Using lists in Query
for i5/OS on page 9.)
v Specify to print the definition on either the Define Printer Output display or the Define Database File
Output display and then run the query. These displays are described in Chapter 13.
v Specify to print the definition when you use the Run Query (RUNQRY) command to run the query.
For more information on the RUNQRY command, see Running a Query for i5/OS query using the
RUNQRY command on page 169.
When you select option 6 (Print definition) on the Work with Queries display and press the Enter key, the
query definition is printed immediately.
If you print the definition using option 6 (Print definition) on the Work with Queries display, the printout
includes information about any output type selected for the query. For example, if database file output
was selected when the query was created and the query was later changed so that the output is to be
printed, the printout of the query definition would include both database file and printer information. If
you print the definition using any method except option 6, only current information is printed.
If you print the query definition while using the RUNQRY command (by specifying the PRTDFN(YES)
parameter), the information in the printed definition reflects any temporary changes that you specify
using the RUNQRY parameters or choices that Query for i5/OS resolves at run time. For example, you
might specify an input file name, make changes to the record selection tests, specify a different type of
output, or define your query to use the running jobs sort sequence. There might be missing information,
when compared to an option 6 listing, because Query for i5/OS did not need to use all the selected fields
to run the query.
In addition to information about the query definition, if the query produces output to a database file, a
description of the record format layout is also printed.
Chapter 16. Working with Query for i5/OS query definitions 179
summary-only output to the database file.
v The Output CCSID Value is the CCSID of the entire query. This line is not printed if the CCSID is
65535. If the query contains multiple CCSIDs, a CCSID column shows the CCSID of each field.
v The Field column shows the fields that exist in the output records. Each data field in the record output
is assigned a name equal to the field name as it exists in the query definition. If two or more fields in
the record output have identical field names (this occurs if one or more summary functions are
specified for a field or when files are joined), the first six characters of the field name are used plus a
two-digit number is added that corresponds to the summary function (01=Total, 02=Average,
03=Minimum, 04=Maximum, and 05=Count).
For example, if minimum and maximum summary functions were specified in the query definition for
the FMT field, two fields named FMT03 and FMT04 would appear in the record output; they would
contain the minimum value for the FMT field (FMT03) and the maximum value for the FMT field (FMT04).
This naming is true only in this simple case. Actual naming varies with different queries.
v The Begin column shows the starting byte of the field within the record. For example, the field named
ZD3 starts at byte 28.
v The Len and Dec columns show the length and decimal positions for each field. For example, the field
named PK2 has a length of eight with two decimal positions.
Note: What is shown on the report is the printed output length after formatting, not the
internal-database field length. You cannot add the length to the begin position and get the
beginning position of the next field.
v For nonnumeric fields, the Dec column shows the type of data that is contained in the column:
Blank means fixed-length character
V means variable-length character (SBCS or DBCS)
J means DBCS-only
O means DBCS-open (mixed)
E means DBCS-either
G means DBCS-graphic
L means Date
T means Time
Chapter 16. Working with Query for i5/OS query definitions 181
182 Query for i5/OS V6R1
Part 3. Advanced information about Query for i5/OS
Chapter 17. Additional information about Query
for i5/OS for programmers . . . . . . . . 185
Files with different record formats in Query for
i5/OS . . . . . . . . . . . . . . . . 185
File sharing considerations in Query for i5/OS . . 185
Overriding database files in Query for i5/OS . . . 185
DBCS considerations when defining result fields in
Query for i5/OS . . . . . . . . . . . . 185
Joining files in Query for i5/OS . . . . . . . 186
Using *ALL in Query for i5/OS . . . . . . 186
Using fields other than sort fields for report breaks
in Query for i5/OS . . . . . . . . . . . 186
Result field length and decimal positions in Query
for i5/OS . . . . . . . . . . . . . . . 186
Tips for dealing with presentation length and
decimal positions in Query for i5/OS . . . . 186
Length and decimal positions used for internal
numeric calculations in Query for i5/OS . . . 187
Addition and subtraction in Query for i5/OS 187
Multiplication in Query for i5/OS . . . . 187
Division in Query for i5/OS . . . . . . 187
Example: Increasing the decimal precision for
result fields in Query for i5/OS . . . . . . 188
Selecting records (ignoring field case) in Query
for i5/OS . . . . . . . . . . . . . . 189
For example, if customer names are in one record format and the amount each customer owes is in a
different record format in the same file, a single query cannot print the names of all customers who owe
more than $500. For Query to select records from both record formats, the selection valuescustomer
name and amount owedmust exist in one record format (that is, the physical disk record must reflect
both customer name and amount owed fields).
Note: This could be accomplished in a single query by joining the file to itself. However, the record
formats must all contain a common field. For more information on joining files, see Joining files
in a Query for i5/OS query on page 40
If you concatenate DBCS-only fields or DBCS-only constants (or both), the result field is a variable-length
DBCS-only field.
If you concatenate DBCS-open fields, the result field is a variable-length DBCS-open field.
If you concatenate a DBCS-only, DBCS-open, or DBCS-either field or constant (or both) with an SBCS
character field or constant, the result field is a variable-length DBCS-open field.
If you use DBCS-graphic fields or constants in a concatenation operation, all fields and constants must be
DBCS-graphic.
If you use UCS2-graphic fields in a concatenation operation, all fields must be UCS2-graphic.
For a complete description and examples of each type of join, refer to Joining files in a Query for i5/OS
query on page 40.
Using fields other than sort fields for report breaks in Query for i5/OS
The fields you use for sorting may not be meaningful in a report, so you may want to use fields other
than sort fields for break fields. For example, a field containing the customer name portion of a mailing
label may be used as the break field, while an arbitrarily assigned (also unique) customer ID is used for
sorting. Since customer name is a break field, it can be inserted in break text or placed in a
summary-only database file.
RESULT10 9 + 9 + 9 + 9 + 9 999999
Query assigns length 6 to result field RESULT10. Since the result in RESULT10 is 45, only a length of 2 is
needed. You could specify a 2 in Len column and a 0 in the Dec column on the Define Result Fields
display for this result field.
RESULT11 N1 + N2 + N3 + N5 + N5 99999
If fields N1 through N5 each have a length of 1, Query assigns a length of 5 to RESULT11, but a length of 2
is long enough.
For example:
X12 = (1.2998 P Q)/((R + S) * (T U)) + 6
Instead of defining result field X12 in one step as above, you could do it in three:
X12PART1 = 1.2998 P Q
X12PART2 = (R + S) * (T U)
X12 = X12PART1/X12PART2 + 6
If the user knows that X12PART1, for example, is always a number between 0 and 1.2998, the user can
specify 5 for Len and 4 for Dec (on the Define Result Fields display) for X12PART1. This decreases the
length of X12.
min(31,max(p-d,p1-d1)+max(d,d1)+1).
max(d,d1).
min(31,p+p1)
min(31,d+d1).
31
31-p+d-d1.
Chapter 17. Additional information about Query for i5/OS for programmers 187
Example: Increasing the decimal precision for result fields in Query for
i5/OS
Figure 5 has a result field with a current maximum precision of 31 (length) and 2 (decimal positions). The
decimal precision was derived from the calculation 31-29+9-9.
Type definitions using field names or constants and operators, press Enter.
Operators: +, -, *, /, SUBSTR, ||, DATE...
Note: The presentation length for RESULTA a would be 31,9. You can see this by pressing F13=Layout.
In Figure 6 on page 189the RESULTA decimal precision is changed from 2 to 9. The new decimal
precision was derived from the calculation 31-26+9-5.
Type definitions using field names or constants and operators, press Enter.
Operators: +, -, *, /, SUBSTR, ||, DATE...
You must also set the Use collating sequence for all character comparisons option in the Select
Processing Options display to YES. If for some reason you cannot set this option, you will have to use an
EQ (equal) test alternative such as RANGE or a combination of LE (less than or equal) and GE (greater
than or equal). (This works only if there is no DBCS data involved.)
Note: Changing your collating sequence affects sorting, minimum, maximum, and report breaks. See
CCSID conversions for Query for i5/OS options and functions on page 244 for more information
about how CCSIDs affect sorting, minimum, maximum, and report breaks.
Chapter 17. Additional information about Query for i5/OS for programmers 189
190 Query for i5/OS V6R1
Appendix A. Differences between Query for i5/OS and
Query/36
This appendix describes the differences between Query for i5/OS and Query/36. The Query for i5/OS
differences described in this appendix are limited to the differences that might cause you some
inconvenience if you do not know about them before working with Query for i5/OS. This appendix
defines these differences as:
v Conceptual
v Operational
v Command
v Migration
Conceptual differences
The following list identifies the concepts that are different on the System i platform along with an
explanation of the differences as they apply to the listed concepts:
Subroutines
Queries were subroutine members in a library on System/36. On the System i platform, queries
are a unique object type called a query definition (*QRYDFN) stored within a library. This change
is important because some System/36 commands that work with subroutines might not work on
the System i platform.
Files Files are stored in libraries on the System i platform, so a library name needs to be specified for
Query for i5/OS for a file to be located. System/36 did not store files in libraries.
Operational differences
The following list identifies the operations that are different on the System i platform along with an
explanation of the differences as they apply to each listed item:
Linked files
If an IDDU-defined file that is migrated from System/36 is not linked, you can still run a query
against the file. However, the file will show as a one-field file (that is, if you were to run a
default query against the file, the file would appear as though all of the fields were run together).
File IDs
In Query/36, file IDs are one of the letters A through E. If a Query/36 query is migrated to the
System i platform, all file IDs for files selected for that query remain the same. All files selected
for a query on Query for i5/OS have a 1- to 3-character file ID that you specify, or it defaults to
Tnn, where nn is in the range of 01 to 32.
Joining files
In Query/36, you can join up to five files, and only one type of file join (matched records) is
allowed. In Query for i5/OS, you can join up to 32 files, and three types of file join are allowed:
v Matched records
v Matched records with primary file
v Unmatched records with primary file
In Query/36, the maximum combined length of character fields used to join files is 120; in Query
for i5/OS, the maximum is 2000.
Report breaks
Report breaks for printed requests might be different in spacing. In Query/36, the report skips
If you already have a file on the system with data that you can use, you may want to skip directly to the
section on creating a query. If you do not care what type of data you are working with, you can create a
query that uses data from the QGPL library. This exercise is described in the last section of this appendix,
Query for i5/OS query exercise: Creating an advanced query on page 211.
Dictionary. . . . . . . : SYSDIC
File
Opt Definition
Record formats
option . . . . . . . 2 1=Create and/or select formats
2=Create default format
and select fields
10 LASTNAME
Now press F6. You will complete the description of the LASTNAME field definition (as well as naming
and describing the remainder of the field definitions) from the next display.
11. Complete the LASTNAME field description with its type, size, and any other descriptors, according to
the table shown below. Then name and describe the remainder of the field definitions.
12. When you have completed specifying the field characteristics, press the Enter key. The Create Field
Definitions display is shown again, and your fields have been created.
Press the Enter key without making any changes to the display.
13. When you see the Create and Select Field Definitions display,
Create and Select Field Definitions
verify that the field names are arranged in the proper sequence. (When sequence numbers are the
same, the arrangement of the field names on the display determines the sequence of use in the
record.) If a field is out of sequence, type the necessary sequence numbers to indicate the correct
arrangement, and press the Enter key. When the fields are in the proper sequence, press the Enter
key without making any changes to the display.
14. You will then see the Work with File Definitions display where
Work with File Definitions
Dictionary. . . . . . . : SYSDIC
File
Opt Definition
You can create as many files as you require by entering a new file name each time you return to the
display. These file names might have a level of authority previously assigned to them (authority holder).
This affects the authority that you can assign.
3. Press the Enter key. The Create Database File display is shown with the names of the new file and its
library.
On this display, specify NAMEADDR for the file definition, SYSDIC for the dictionary (or the name of the
dictionary you created in the previous section of this appendix), and *CHANGE for the authority others
have to this file.
Create Database File
4. Press the Enter key to create the file. When the file is created, the system automatically links the file
to its file definition.
Press F3 (Exit) to return to the IDDU menu.
3. Press the Enter key. The Work with Data in a File display is shown.
WORK WITH DATA IN A FILE Mode . . . . : ENTRY
Format . . . . : NAMEADDR File . . . . : NAMEADDR
LASTNAME:
FIRSTNAME:
ADDRESS1:
ADDRESS2:
CITY:
STATE:
ZIP:
AMOUNT:
4. Type the information shown on the following display, but do not press the Enter key. After you have
typed in the amount, press the Field Exit key first and then press the Enter key.
WORK WITH DATA IN A FILE Mode . . . . : ENTRY
Format . . . . : NAMEADDR File . . . . : NAMEADDR
LASTNAME: SIMPSON
FIRSTNAME: FRANK
ADDRESS1: 1722 ORANGE STREET
ADDRESS2:
CITY: RIDGEWAY
STATE: CA
ZIP: 72430
AMOUNT: 9998
7. After you have added all your data and the Work with Data in a File display is shown with blank
fields, press F3 (Exit). The End Data Entry display is shown.
End Data Entry
Added . . . . . : 10
Changed . . . . : 0
Deleted . . . . : 0
You do not need to change anything on this display. Press the Enter key.
8. The Work with Database Files display is shown.
A message on the bottom of the display tells you that data in your file was changed.
9. Press F3 (Exit), and you see the menu that you started from.
An audit log is automatically printed showing all the data you entered.
NAMEADDR contains names and addresses and includes the following information:
v Last name
v First name
v Address 1
v Address 2
v City
v State
v Zip code
v Amount
After you create and save the query, you run it as it exists and then change the query and run it again.
This exercise asks you to save the query you create in a library. You will probably want to use your own
library. If you do not have a library or do not know how to create one, see the person responsible for
libraries on your system.
1. Go to the Work with Queries display by typing WRKQRY on any command line.
2. On the Work with Queries display type a 1 (Create) for the Option prompt, xxxQRY for the Query
prompt (using your initials instead of xxx), and the name of your library for the Library prompt.
3. Press the Enter key. The Define the Query display is shown.
Define the Query
Notice that Query has already supplied a 1 for the Specify file selections option on this display. This is
because whenever you create a query, you must specify a file, but you do not have to select any
other options on this display.
4. Press the Enter key, and the Specify File Selections display is shown.
BOTTOM
F3=Exit F4=Prompt F5=Report F9=Add file
F12=Cancel F13=Layout F24=More keys
This display is where you tell Query what database file(s) you want to query for the data in your
report.
5. Type NAMEADDR for the File prompt, the name for the library that contains the file for the Library
prompt, and leave the Format and Member prompts as they are shown.
Specify File Selections
6. Press the Enter key. The Specify File Selections display is shown again with the message Select
file(s), or press Enter to confirm. displayed at the bottom.
7. Press the Enter key. The Define the Query display is shown with the message Select options, or
press F3 to save or run the query. displayed at the bottom.
Define the Query
The Specify file selections option has a > shown in the Opt column to indicate that it is a previously
defined option.
8. Press F3 (Exit). The Exit This Query display is shown.
Query supplies a Y (Yes) in the Save definition prompt and a 1 (Run interactively) in the Run option
prompt because it assumes you want to both save the query definition object and run the query.
Leave these defaults in both prompts.
9. Type Lists customer names and addresses for the Text prompt.
10. Type *CHANGE for the Authority prompt.
11. Press the Enter key to save the query definition object and run the query.
The report produced by the query is shown on your display:
Display Report
Query . . . : YOURLIB/KJOQRY Report width . . . . . : 117
Position to (Line) . . . . ______ Shift to column . . . . . . _____
Line ....+....1....+....2....+....3....+....4....+....5....+....6....+....7...
LASTNAME FIRSTNAME ADDRESS1 ADDRESS2
000001 SIMPSON FRANK 1722 ORANGE STREET
000002 DAYE BEN 1312 ELM STREET APT C
000003 SEDGEWICK LILLIAN 200 PARK LANE
000004 LIEN SUE 469 JACKSON STREET
000005 PATTERSON TAMMY 4 RIDGEVIEW COURT
000006 SKOGGEN LINDA CIRCLE COURT NE
000007 SEDGEWICK LEONA 21ST CANNERY ROW APT 43
000008 BARKER RICK 1432 LE GRAND BLVD
000009 GOLINERO SEBASTIN 7196 THOMAS STREET
000010 SKOGGEN CHARLES 401 ABBEY ROAD
****** ******** End of report ********
Bottom
F3=Exit F12=Cancel F19=Left F20=Right F21=Split F22=Width
The report lists all the information in the file NAMEADDR. The data, including column headings, was
defined to the system using IDDU.
Press F20 (Right) to see the right side of the report.
12. Press F3 (Exit). The Work with Queries display is shown.
A message is shown on the bottom of the display confirming that the query was processed
successfully.
4. Press the Enter key. The Define the Query display is shown.
5. Type a 1 for the Select records prompt.
The fields in the file NAMEADDR are listed on the bottom portion of this display. (If your display is not
in single-column list format, that is the Text, Len, and Dec prompts are not shown, press F11.) You
can move your cursor to any place in the list and press the Page Down key to see more field names.
7. Complete the Field, Test, and Value columns on the display as follows:
This tells Query for i5/OS to test the field named STATE in each record for the value LA. Only records
with that value will be included in your report. (If you are using a unique weight system sort
sequence table or *HEX, make sure you type it as LA because the apostrophes tell the program that
LA is what the field contains and not the field name. You must also type this value in all uppercase
letters because that is the way it is specified in the field. If you have any doubt about the case of the
data in the database, you should use a shared weight table.)
8. Press F5 (Report) to run the query and show the report. F5 lets you see the effect your query
changes have on the report before you actually save those changes.
The report appears listing only customers in Louisiana (only the left portion of the report is shown
on the following display):
Display Report
Report width . . . . . : 117
Position to line . . . . . ______ Shift to column . . . . . . _____
Line ....+....1....+....2....+....3....+....4....+....5....+....6....+....7...
LASTNAME FIRSTNAME ADDRESS1 ADDRESS2
000001 SEDGEWICK LILLIAN 200 PARK LANE
000002 SEDGEWICK LEONA 21ST CANNERY ROW APT 43
000003 BARKER RICK 1432 LE GRAND BLVD
****** ******** End of Report ********
Bottom
F3=Exit F12=Cancel F19=Left F20=Right F21=Split F22=Width 80
Bottom
F3=Exit F12=Cancel F19=Left F20=Right F21=Split F22=Width 80
Last column of report.
10. Press F3 (Exit), F12 (Cancel), or the Enter key to return to the Select Records display. Then press F3
(Exit). The Exit This Query display is shown.
Exit This Query
You can use this display to run the query with the changes you made. You can also choose to make
the query changes either permanent or for this time only. Because you may never again want a
report that lists only customers in Louisiana, you may not want to make the changes permanent.
And because you have already used F5 to run the query and see the report, you do not want to run
the query again.
11. Fill in the Exit This Query display as follows:
12. Press the Enter key. The Work with Queries display is shown.
Work with Queries
To sign off the system or use it for something other than Query, press F3 (Exit) to return to the menu
from which you chose to use Query.
Note: This example does not explain the DSPOBJD command and its parameters. For additional
information, see the Control language topic in the i5/OS Information Center.
1. On the command line of the System i Main Menu, type the DSPOBJD command as shown on the
following display and press the Enter key. This creates the file named QRYFILE and puts it in the
library QGPL.
1. User tasks
2. Office tasks
3. General system tasks
4. Files, libraries, and folders
5. Programming
6. Communications
7. Define or change the system
8. Problem handling
9. Display a menu
Selection or command
===> DSPOBJD OBJ(QGPL/*ALL) OBJTYPE(*ALL ) OUTPUT(*OUTFILE) OUTFILE(QGPL/QRYFIL
E)
F3=Exit F4=Prompt F9=Retrieve F12=Cancel F13=Information Assistant
F23=Set initial menu
2. Type WRKQRY on the command line and press the Enter key.
MAIN System i Main Menu
System: RCH38342
Select one of the following:
1. User tasks
2. Office tasks
3. General system tasks
4. Files, libraries, and folders
5. Programming
6. Communications
7. Define or change the system
8. Problem handling
9. Display a menu
Selection or command
===> WRKQRY
3. The Work with Queries display is shown. On this display, choose option 1 (Create). Then name your
query by typing a name in the Query prompt, and specify the library where your query will be
stored by typing a name in the Library prompt. Press the Enter key.
4. On the Define the Query display, select definition steps Select and sequence fields, Select records, Select
sort fields, Specify report column formatting, Select report summary functions, and Define report breaks by
typing a 1 to the left of each of them. (Notice that Specify file selections is already selected for you.)
Press the Enter key.
Define the Query
Query presents the selected definition step displays to you in the order in which they are listed on
the Define the Query display.
5. On the Specify File Selections display, which is the first display shown after the Define the Query
display, type QRYFILE in the File prompt and QGPL in the Library prompt. The Member and Format
prompts already are filled in for you. Press the Enter key.
If your display is in multiple-column format (that is, if the Text, Len, and Dec columns are not
shown), press F11 (Display text) to show some additional information about the fields in the list.
Select the fields ODLBNM, ODOBTP, ODOBAT, ODOBSZ, and ODOBTX by typing the numbers 1 through 5 to
the left of them as shown below. The fields you select are the fields that will appear in your query
report, in the order that you specify (ODLBNM will appear first, followed by ODOBTP, and so on).
Note: You must select fields that you plan to sort on.
Select and Sequence Fields
Press the Enter key. Query rearranges the fields on the display so that the fields you selected are
shown at the top of the list in the order that you specified. The message Press Enter to confirm. is
also shown.
Bottom
For your report, you want all records for objects with an object type of either *FILE or *PGM. Type
the information in the Field, Test, and Value columns as shown in the following display. Do not press
the Enter key just yet.
Bottom
8. Now display your report by pressing F5 (Report). The Display Report display appears showing your
query report, which is based on the query you have defined up to this point. (The information you
see on your display depends on the objects that are currently in QGPL on your system. What you
see may not match what is shown in the display that follows.)
Display Report
Report width . . . . . : 100
Position to line . . . . . Shift to column . . . . . .
Line ....+....1....+....2....+....3....+....4....+....5....+....6....+....7...
LIBRARY OBJECT OBJECT OBJECT TEXT DESCRIPTION
TYPE ATTRIBUTE SIZE
000001 QGPL *PGM CLP 14,336 B & R Example - Page 2
000002 QGPL *PGM CLP 16,384 B & R Example - page 2
000003 QGPL *FILE PF 8,192
000004 QGPL *FILE PF 1,024 Default source data ba
000005 QGPL *FILE PF 1,024 Default source data ba
000006 QGPL *FILE PF 16,384 Default source data ba
000007 QGPL *FILE DKTF 2,560 Default diskette data
000008 QGPL *FILE DKTF 2,560 Default source diskett
000009 QGPL *FILE PF 1,024 Default source data ba
000010 QGPL *FILE PF 140,288 RSTS36FLR COMMAND
000011 QGPL *FILE PRTF 2,048 Default spool output p
000012 QGPL *FILE PRTF 2,048 Default spool print fi
000013 QGPL *FILE PRTF 2,048 Default spool print fi
000014 QGPL *FILE PF 38,912 Outfile for DSPOBJD
000015 QGPL *FILE PF 16,384
More...
F3=Exit F12=Cancel F19=Left F20=Right F21=Split F22=Width 80
On the bottom far right side of the display, the message More... appears. This means that all of the
report does not fit on the display, so if you want to see all of the report, you can use the page keys
or F20 (Right) and F19 (Left) to page through the report (both left to right and top to bottom). When
you have finished looking at the report, press F3 (Exit) to return to the Select Records display.
Bottom
More...
F3=Exit F5=Report F9=Insert F11=Display names only
F12=Cancel F13=Layout F20=Reorganize F24=More keys
Sort
Prty A/D Field Text Len Dec
ODLBNM LIBRARY 10
1 ODOBTP OBJECT TYPE 8
ODOBAT OBJECT ATTRIBUTE 10
2 ODOBSZ OBJECT SIZE 10 0
ODOBTX TEXT DESCRIPTION 50
Bottom
Press the Enter key. Query rearranges the fields on the display so that the fields you selected for
sorting appear at the top of the list, in the order you specified. The message Press Enter to
confirm. is also displayed.
Sort
Prty A/D Field Text Len Dec
1 A ODOBTP OBJECT TYPE 8
2 A ODOBSZ OBJECT SIZE 10 0
ODLBNM LIBRARY 10
ODOBAT OBJECT ATTRIBUTE 10
ODOBTX TEXT DESCRIPTION 50
Bottom
Column
Field Spacing Column Headings Len Dec Edit
ODLBNM 0 LIBRARY 10
ODOBTP 2 OBJECT 8
TYPE
ODOBAT 2 OBJECT 10
ATTRIBUTE
More...
Query supplies much of this information for you. Change the column heading for the ODLBNM field so
that it reads NAME OF LIBRARY instead of LIBRARY.
Column
Field Spacing Column Headings Len Dec Edit
ODLBNM 0 NAME OF 10
LIBRARY
ODOBTP 2 OBJECT 8
TYPE
ODOBAT 2 OBJECT 10
ATTRIBUTE
More...
Bottom
Specify that you want all the summary functions (total, average, minimum, maximum, and count) for
the field ODOBSZ by typing 1 through 5 next to the field as shown in the following display.
Bottom
Break Sort
Level Prty Field Text Len Dec
ODLBNM LIBRARY 10
10 ODOBTP OBJECT TYPE 8
ODOBAT OBJECT ATTRIBUTE 10
20 ODOBSZ OBJECT SIZE 10 0
ODOBTX TEXT DESCRIPTION 50
Bottom
Specify break level 1 for the field named ODOBTP by typing a 1 to the left of it in the Break Level
column.
Break Sort
Level Prty Field Text Len Dec
ODLBNM LIBRARY 10
1 10 ODOBTP OBJECT TYPE 8
ODOBAT OBJECT ATTRIBUTE 10
20 ODOBSZ OBJECT SIZE 10 0
ODOBTX TEXT DESCRIPTION 50
Bottom
Break level . . . . . . . : 0
Level Field
1 ODOBTP
On the next display you see that the Break level prompt has been filled in with a 1. Here you format
the report break for break level 1. In the Break text prompt, type in Break text for object type. This
text will occur in the report every time a report break occurs for this break level.
Break level . . . . . . . : 1
Level Field
1 ODOBTP
14. Now display your report by pressing F5 (Report). The Display Report display appears showing your
finished query report. (The information you see on your display depends on the objects that are
currently in QGPL on your system. What you see may not match what is shown in the display that
follows.)
On the bottom far right side of the display, the message More... appears. This means that all of the
report does not fit on the display. Use the page keys or F20 (Right) and F19 (Left) to page through
the report (both left to right and top to bottom) so that you can see the breaks and summaries in the
report.
When you have finished looking at the report, press F3 (Exit) to return to the Define the Query
display.
Define the Query
Press F3 (Exit).
15. The Exit This Query display is shown. On this display, change the Save definition prompt to N (No)
and the Run option prompt to 3 (Do not run) if you do not want to save the query or run it again.
Text . . . . . . .
Now you can return to the System i Main Menu by pressing F3 (Exit) to complete your work with this
example.
This appendix does not discuss all variations of queries, but instead provides tips and techniques that
help with the majority of queries running on the System i platform. You need to determine which tips
and techniques apply to your own particular queries.
Query often overlaps these stages to provide the best possible response time.
In the first stage of running a query, called optimization, Query determines the fastest way to process a
query. An access plan results and is used to perform the actual I/O for the query.
Optimization includes factors such as file size, selection tests, and sort tests. However, the main
performance element for both optimization and I/O is the use of keyed sequence access paths for the
files selected by the query.
During optimization, Query uses existing keyed sequence access paths to obtain an approximation of the
number of records the query will return. This information is needed in the optimization itself. Also,
Query uses existing access paths, if possible, to do the required I/O. Depending on the circumstances,
Query may choose to build a temporary access path to complete the query request.
Without existing access paths, Query either must read every record in each file to determine if it meets
the values in the query or build a temporary access path if Query requires one. These options can be
expensive in terms of processing unit, I/O, and storage requirements and can result in longer response
times.
Specify the select/omit tests in such a way that they match part or all of the selection tests from one or
more queries. Specifying an existing access path should improve performance because Query then does
not have to find or build a usable access path.
Using a select/omit access path also can save time when defining a query because the selection and sort
tests specified in the access path need not be repeated in the query definition.
Note:
Query may use a select/omit access path even if it is not specifically named in the Specify file
selections portion of the query itself. However, if the select/omit access path is created with the
Dynamic Selection (DYNSLT) keyword in the DDS, there is no performance gain over
nonselect/omit access paths.
The select/omit access path can be used if it is a superset of the selection criteria. For example, if
the selection criteria specifies an action path 'X GT 45' and a select/omit access path (logical file)
exists with a selection of 'X GT 40', then the existing logical file may be chosen by the optimizer.
In addition to the tips provided in this section, there are two other general guidelines that may help you
determine whether an access path can be used for a particular file:
v If the query selects over 20% of the total number of records in the file, it generally does not use an
access path for that file. Instead, it accesses the records sequentially. However, if the query contains sort
tests, an existing access path may be used or a temporary access path may be created even if the 20%
guideline is true. The optimizer usually chooses to implement the sort using sequentially read records
instead of an access path.
v Query does not usually create and use access paths for small files. Although small in this case is
defined as files with approximately 1000 records, this is not a rule, just a general guideline. However, if
sort tests exist in the query, an existing access path may be used, or a temporary access path may be
created for the file. The optimizer usually chooses to implement the sort using sequentially read
records instead of an access path.
If it is valid, Query uses that plan to access the data. This can result in a significant performance gain,
when compared with running queries without stored access plans, because Query does not have to
validate the access path when running a stored query. However, the difference may not be significant for
some queries if this validation is only a small part of the processing time.
If the access plan is not valid, Query tries to find the best access plan to use in accessing the data, and
performance may be affected.
Note: In some cases, when you press ENTER (to save a query), it may take longer than expected to save
the query because the system is defining an access plan for the query. However, once the access
plan is defined for the query, the performance advantage can be significant for both the individual
query response time and the system in general, especially if the query is run often.
Access plans for stored queries are not updated to reflect access paths that were deleted or created since
the last time the query was saved. Query notes these kinds of changes when it validates the access plan
and reoptimizes. Although the reoptimization may find a better method of accessing the data, this better
method is not automatically updated in the access plan. This means that the next time the query is run,
reoptimization occurs again because the access plan still reflects the original method chosen at the time
the query was saved.
If a file contains numeric fields defined as zoned (which is common on files migrated from a System/36),
the System i platform converts the fields from zoned to packed for the arithmetic operation and then
converts them back to zoned when the resulting value is returned to the program.
When the program is Query, this means that running a query involving zoned numeric fields requires
additional processing unit time and possibly somewhat longer response times. If you are concerned about
this aspect of performance, consider converting your files to use packed fields instead of zoned. However,
make this decision carefully, especially if the conversion has a major affect on your operation.
When you create a new file on the System i platform, define numeric fields as packed, with the length of
these fields being an odd number of characters. If the length of the field is declared as an even number,
the first four bits of the first byte in the field are not used, but the system still checks these four bits to
ensure that no overflow has occurred. If you declared the field as an odd length, this checking does not
occur. The system uses additional processing time when numeric fields have even lengths.
You can identify and correct numeric field errors by using IBM Tools for Developers for i5/OS. The files you
analyze or correct with this product must be externally described database files. Ensure that all
applications (especially those migrated from the System/36) are corrected so they do not continue to
insert data with these kinds of errors.
The information in this section relates to the Define the Query display. See Selecting definition steps
when defining a Query for i5/OS query on page 26 for details.
Note: Use F13 instead of F5 as much as possible because since F5 requires more processing unit time,
I/O, and generally takes longer than F13. In either case, use output type option 1 (Display) while
viewing the results.
Define numeric result fields with odd lengths instead of even lengths to reduce system processing unit
time when using these fields. See File definitions and data in Query for i5/OS on page 229 for details.
Avoid defining a result field using division by zero. Although the system processes the query with this
present, each divide by zero operation causes error handling by the system that is expensive in terms of
processing unit and overall response time.
Avoid defining a result field that causes an overflow condition. Overflow occurs when a field is larger
than its specified length. When overflow occurs, Query shows these result fields with the + character on
the report.
Avoid defining variable-length character fields. Use numeric constants for the offset and length of a
SUBSTR function.
Note: If you select no fields, Query for i5/OS (as a default) picks up to the first 500 fields in the file.
Avoid this type of operation because it causes unnecessary disk I/O.
Avoid using variable-length fields and null-capable fields. Both of these attributes require extra
processing.
For example, assume there is a file X with fields A, B, C, and D. An access path exists over this file using
the key fields A, B, and D, in that order. For any query with record values using field A, Query considers
using this access path. However, if the record selection does not involve field A, the access path is not
used. For instance, if the record test is A EQ 3, the access path can be used. If the query contains record
selection tests involving only fields B or D (for example, B EQ 5 or D EQ 8), this access path cannot be
used.
Performance improves if more of the selection tests match more key fields in the same access path. This
allows the access path to reduce the number of records selected. As an example (using file X again), if the
record tests are A EQ 3 AND B EQ 5 AND D GT 8, the access path can be used to find records matching all
three of these values.
If you request a particular query often, consider creating an access path with select/omit tests to match
that query. See Select/omit access paths in Query for i5/OS on page 228 for more information on this
subject.
Existing access paths are only used for OR conditions involving the same field specified in the selection
tests.
One type of record selection is to use the % symbol with the LIKE operator as a generic search or scan
(also known as a wildcard scan). If the generic scan starts in the first position of a field (for example,
%ABC), Query cannot use any existing access paths for that portion of the record selection. However, if
the generic scan starts after the first position (for example, ABC%), Query can use any qualifying access
paths over the field specified in this type of record selection.
Consider creating access paths that match the sort tests for queries that you use often and for queries
where the access path build time is excessively long. Query attempts to use an existing access path if all
the sort fields from the query match the high order key fields from the access path. This way you can
avoid excessive building of access paths for queries with sort tests.
As an example, assume file Z has fields A, B, C, and D. Also assume there are six access paths built over
this file that have the following keys specified in this order:
1. Access path #1 has key field A
2. Access path #2 has key fields A and B
3. Access path #3 has key fields A and C
4. Access path #4 has key fields A, B, and C
5. Access path #5 has key fields B, A, and C
6. Access path #6 has key fields A, B, C, and D
Now if you run a query that is defined to sort on key fields A, B, and C, only access paths #4 and #6 are
considered by Query during optimization. Access paths #1, #2, and #3 are not used because it is
inefficient for Query to read the records again and sort on the additional keys. It is more efficient for
Query to build and use an access path containing all the sort and selection tests. Access path #5 is not
considered because the sorted keys are not in the correct order.
If a particular query is requested often, consider creating an access path with select/omit tests to match
that query. See Select/omit access paths in Query for i5/OS on page 228 for more information on this
subject.
If you have sort tests that you use often, another option (besides creating access paths) is to use Query to
sort the records in a database file in the desired order. Query can then be run against this file with no
sort tests, if the queries are looking for data sorted as it appears in the file. To perform this function,
select the desired sort fields from the file, choose database as the output device (option 3 on the Select
Output Type and Output Form display), and specify the output database file name, which must be
If possible, avoid sorting on defined result fields. This can be an expensive operation in terms of
performance, since Query must build an access path to satisfy this type of request.
Note: Using an alternative collating sequence does not affect numeric, DBCS-only, DBCS-graphic, date,
time, or timestamp sort fields.
Using job-run collating sequence choices can cause a query to take longer to run.
Do not use a collating sequence if it is not needed. If your query involves only numeric fields, change a
defaulted collating sequence other than hexadecimal to hexadecimal.
A unique-weight sort sequence table might require less processing than a shared-weight table because it
can be ignored for comparisons that do not involve evaluating relative order.
If you are familiar with using DB2 for i5/OS on the System i platform, consider using DB2 for i5/OS
views for Query summary functions. DB2 for i5/OS allows you to create views based on summary
functions against the fields in a file. For example, you can build a DB2 for i5/OS view to contain the sum
and average for a field in a file. The performance advantage of a DB2 for i5/OS view can be significant
for Query summary functions, especially in terms of reduced response times. To use a view, specify the
name of the view as the file to be selected.
If you are only interested in viewing the first display or two of results from a query, you may choose to
view results to a display instead of a printer or database file. Query provides the first display of data as
quickly as possible, so viewing one display from the work station is generally much quicker than waiting
for the query to generate all results to a printer or a database file.
Specify output type 1 (Display) and output form 1 (Detail) for a multi-copy query. Specify output type 2
(Printer) for a column list query.
If decimal data errors are not ignored, Query stops processing if it encounters a decimal data error.
However, if Query does not encounter any decimal data errors during processing, it can use existing
access paths and runs normally.
Note: This handling of decimal data errors only affects queries that use numeric fields. Queries that use
only character fields are not affected by this option.
When specifying whether to ignore decimal data errors, you have these choices:
v Y (Yes) means ignore decimal data errors.
v N (No) means do not ignore decimal data errors.
v Leaving the Ignore Decimal Data Errors field blank means Query chooses either Y or N, depending on the
environment in which you are running the query.
If the query is run in the System/36 environment, Query uses Y and decimal data errors are ignored. If
the query is run in the System/38 environment or i5/OS environment, Query uses N and decimal
data errors are not ignored. The System/36 environment uses Y because decimal data errors were
always ignored on the System/36. Because access paths cannot be used when Y (the default) is used in
the System/36 environment, there may be substantial performance differences between the
environments if the default is used.
You might want to consider eliminating decimal data errors to make sure you can use existing access
paths and to eliminate the extra processing needed to handle these errors. Use the IBM Tools for Developers
for i5/OS product. If you cannot eliminate the decimal errors, you might want to choose Y (or use
RUNQRY in the System/36 environment to get Y to default) to make your query run faster. Even if it is
necessary to build a new access path, this might take less time than diagnosing decimal data errors.
One of the key concepts of joins is that of primary and secondary files. The primary file is the first file
used in the join while the secondary files are those that are joined to the primary.
You can select one of three types of join operations when defining a join query:
Option 1Matched records
A record from the primary file is selected only if there is a match with every secondary file
specified.
For option 2 and option 3 joins, which file is listed as the primary and which as the secondary is
important to the end result produced by the query, since ordering these files differently can produce
different results. However, the order is not important for option 1 joins since the same result occurs
regardless of the order in which files are placed.
This difference is important when considering how Query performs a join. Since the order of the files in
an option 1 join is not important, running this type of query may result in Query choosing a different
ordering of the files to gain better performance at run time. For example, if a query defines file A as the
primary and file B as the secondary, at run time Query may actually decide to use file B as the primary if
it provides better overall performance for the query. In options 2 and 3, however, Query cannot rearrange
the order of the files since this can produce different results, so the primary and secondary files always
remain as listed in the query definition.
Note: Although Query may choose to rearrange the order of the files at run time for an option 1 join,
Query never alters the actual query definition.
Note: Query does not require an access path on the primary file unless there are sort fields selected from
this file.
It is important to build access paths to match join selection tests you use often. The access path or paths
should match the fields selected from the secondary files. For example, if the join selection test is T01.A
EQ T02.A, an access path is required over T02.A. For an option 1 join, Query may decide to switch the
order of the files and also internally switch the order of the join selection to match the new order. In this
case, the previously created access path may not be used. For an option 2 or 3 join, however, Query does
not switch the order of the files, so existing access paths that match the join selection tests on the
secondary file should be usable for the join.
Use as many record selection and join selection tests as possible on all files to be joined to narrow down
the number of records that will result from the join operation. This significantly reduces the amount of
I/O required to run the query.
If possible, limit using *ALL on the Specify How to Join Files display. If *ALL is used, the number of
joined records produced could be large. For example, if you use *ALL to join a file containing 2000
records with a file of 3000 records, the end result would be 6000000 joined records. A large amount of
I/O would be required, resulting in a long response time and some degradation in overall system
performance.
Query runs more efficiently when the files are ordered from smallest to largest. In this case, smallest
means the file from which the fewest records are selected for the join. Although this can be the file with
the least records, in some cases a very large file can be used if only a few records are chosen from that
file.
For an option 1 join, Query attempts to order the files from smallest to largest, depending on the number
of records selected from each. For an option 2 or 3 join, list the files in this order to achieve more efficient
processing.
For an option 2 or 3 join, try to make the files listed first as small as possible by using both join and
record selection tests. For example, if the join selection tests is T01.A EQ T02.A AND T02.A GT 100, it
would be more efficient to change this to T01.A EQ T02.A AND T01.A GT 100. For an option 1 join,
apply as many selection tests as possible to all the files, since you cannot determine which one Query
will choose as the primary.
If sort tests must be specified from multiple files for an option 1 join or a secondary file in an option 2 or
3 join, using both record selection and join selection tests becomes important. The smaller the number of
records selected, the fewer that have to be copied into the temporary file for the sort, thus saving on
processing unit, I/O, and response times.
If you are experiencing severe performance problems when joining large files, either try to avoid this type
of operation, or use selection tests to narrow down the number of records being joined.
If you need to join large files and can use record selection tests, run Query against the file or files
requiring the record selection and put the output to a database file (option 3 on the Select Output Type
and Output Form display). Use this output file to join with the other files. However, this approach may
result in using old data, since the output to the database file may be an older version by the time the
join query using this file is run. Also, since no access paths exist over this output file (unless you build
them), Query must build one at run time if it is required.
The steps to submit a query to batch vary depending on the environment you operate in. In the
System/36 environment, press F6 (Put on job queue) to submit a query to batch from the prompt display
for QRYRUN. This key is allowed after you specify printer or disk as the output type and press the Enter
key. If you are not in the System/36 environment, use the Submit Job (SBMJOB) command to submit a
batch job that contains a Run Query (RUNQRY) command. In the System i environment, use the Work
with Queries or Exit this Query display to submit queries to batch. See Appendix D, Preventing users
from running Query for i5/OS queries interactively, on page 239. For more information about these
commands, see the Control language topic in the i5/OS Information Center.
If possible, limit the number of ad hoc queries in order to avoid unnecessary access path builds.
Determine which queries are used most often, then create access paths for these queries and save the
query definitions. Most users can then operate out of this fixed set of queries and experience much better
response time and overall system performance than if everyone runs queries in an ad hoc manner.
Limit access to the Query product on the system to those people who have an understanding of Query
performance and how to best use it. This eliminates costly ad hoc queries that can severely affect other
users. Have new users read through this guide to introduce them to Query before giving them access to
the product.
Consider removing unused data from the files that are actively used and placing it in separate saved
files. This significantly reduces the amount of time and resources spent by Query searching through the
active files or building access paths over them.
Ensure that all available performance PTFs are applied to the system. This not only includes PTFs
applying directly to Query, but also others that may apply to overall system performance as well.
Pay attention to the performance optimization messages that are available in debug mode (use STRDBG
before running your query). These messages may help you determine how you can change the query
definition so it will run faster.
If a user attempts to run a query interactively, and is restricted from doing so, an error message appears.
Note: To allow one or more users to have different run capabilities than what is specified for the
RUNQRY command in QSYS:
1. Create a duplicate object of the RUNQRY command and place it in a library other than
QSYS.
2. Make the needed changes to restrict the use of the RUNQRY command in QSYS.
3. Place the library containing the new RUNQRY command, that is, the version that allows
users to run interactively, ahead of QSYS in the library list of the users who need to run
queries interactively.
Note: If you add a new release of the operating system, you may need to redefine the RUNQRY
command parameters.
A CCSID is a 2-byte (unsigned) integer that uniquely identifies an encoding scheme and one or more
pairs of character sets and code pages. A CCSID can be assigned to each query definition, data field, and
collating sequence. A CCSID can also be assigned to individual items in a file record format definition,
such as the column heading, text description, edit word, or long comment for a field.
CCSID-marked data can be converted so that it looks the same in languages that use the same character
set or superset of the character set (see Figure 7). Data will not look the same without conversion if the
code pages differ. The hexadecimal value for a graphic character (a character that is displayed or printed)
in one language may be different than the value for the equivalent character in another language. The
problem does not end with displaying and printing. If data is collated using a sequence prepared from
characters in a different code page, or if data in different code pages is compared without being
converted, the result will seem incorrect.
DATABASE DATABASE
C1 C2 C3 CCSID 37-99 D9 E5 AA
CONVERSION
(HEX) (HEX)
CCSID-37 CCSID-99
Without CCSID Conversion
CCSID-99
A B C A B C
Q H 9
???
RV2N403-3
Figure 7. Working with and without CCSID Conversion. Conversion, when necessary and possible, is done
automatically by the system.
Query for i5/OS recognizes when conversion of data, collating sequences, and text is needed, and
performs the conversion. The system notifies you if the conversion fails. You may not be able to work on
a query or run a saved query depending on the CCSIDs involved. Four conditions can result from CCSID
comparisons:
This appendix explains how CCSIDs affect what Query for i5/OS does in specific circumstances.
A CCSID is associated with each of the collating sequences supported by Query for i5/OS. Query for
i5/OS assumes that a translation table has a CCSID of 65535. A user-defined sequence has the job CCSID
of the defining user.
Note: If you select the hexadecimal sequence or use a collating sequence with a CCSID of 65535 for
ordering marked data, the results you get may seem inconsistent. For example:
v The value that sorts to the lowest position may not be the minimum summary value for a
displayed or printed column. This can happen because sort comparisons are done before, and
minimum comparisons after, any conversion to the job CCSID occurs.
Appendix E. Coded character set identifiers (CCSIDs) in Query for i5/OS 243
v The minimum and maximum values saved in summary-only output to a database file may differ
from the corresponding values in a printed or displayed report, even though the same job
CCSID is used to run the query. This happens only if values for a minimum or maximum field
are converted to the job CCSID in order to be printed or displayed.
When you save a user-defined collating sequence as the default in your Query profile, the job CCSID is
saved with it. If you choose to save the language option as your default, only the option is saved in the
profilenot the language sequence or its CCSID.
Note: The query profile, user-defined collating sequence default, and CCSID are only updated if you
press F23 from the Define Collating Sequence display to save the sequence.
Notes:
1. MNCS means multinational character set
2. NLV means national language version
37 37 37
65535 37 37
37 65535 65535
65535 No tag 65535
37 No tag 65535
Table 11 shows when a query can be changed and how the constants are treated.
Table 11. How CCSIDs Affect Changing a Query
Constants Processed as Marked with
Job CCSID Query CCSID CCSID
37 37 37
65535 37 37
37 65535 37
65535 No tag 65535
37 No tag 37
37 500 Cannot change
If you are creating or changing a collating sequence and select option 3 on the Select Collating Sequence
display, Query for i5/OS assumes that you are starting work on a new sequence. Query for i5/OS looks
Appendix E. Coded character set identifiers (CCSIDs) in Query for i5/OS 245
at the following list and selects the first existing sequence that either requires no conversion or can be
converted (without character substitution) to your job CCSID.
v The previously defined sequence for this query
v The user-defined default sequence from the query-users profile
v The language sequence for your system
v The hexadecimal sequence
For example, the language sequence is used to initialize the Define Collating Sequence display if there is
no previously defined sequence for the query and the default sequence from the query-users profile is
converted with warnings about the use of substitution characters.
Query for i5/OS warns you on the Select Collating Sequence display when the sequence previously
defined for this query cannot be converted. You can find out why the language sequence or a
user-defined default sequence was not used by pressing F15 (Language sequence) or F16 (Use default) on
the Define Collating Sequence display.
Note: The job CCSID is the CCSID of the job. It can be changed by the command CHGJOB CCSID().
Neither data nor text is converted when the output is directed to an existing file. If a field receiving data
has a different CCSID, output processing stops with a diagnostic before any records are added.
If you have done an override to a database file selected for input, Query for i5/OS uses the new file
information, including the CCSID markings. This can cause the same kind of errors that would be
diagnosed at definition time.
If you do nothing to cause the access plan to be rebuilt (see Access plans in Query for i5/OS on page
228), you can get errors if a file is replaced with a file in a format that requires no level check, but has
different CCSID characteristics.
Table 12 shows when record selections can be changed at run time and how the constants are treated.
Table 12. How CCSIDs Affect Run-Time Record Selection
Job CCSID Query CCSID Constants Treated as CCSID
37 37 37
65535 37 37
37 65535 37
65535 No tag 65535
37 No tag 37
37 500 Not allowed
The following topics present some of this information by query definition item. Refer to CCSID
compatibility considerations in Query for i5/OS on page 249 for information on specific pairs of marked
items.
If you have done an override to a database file, query uses the new file information, including the CCSID
markings. This could cause the same kind of errors that would ordinarily be diagnosed at definition time.
Appendix E. Coded character set identifiers (CCSIDs) in Query for i5/OS 247
Field and constant values that are not in the CCSID of the expression must be converted. If fields or
constants used in expressions have CCSIDs that are not compatible, a message is sent to the user.
At create time, the constants are assumed to be in the job CCSID. At change time, the constants are
assumed to be in the job CCSID of the changing user if the create time CCSID is 65535. If the fields or
constants used do not have compatible CCSIDs, or if any collating sequence table to be used cannot be
converted, you see an error message.
If a collating sequence is involved, it is converted as needed to the CCSID in which the data is being
evaluated. If a conversion error occurs while the collating sequence is being converted, you see an error
message. This happens only while a query is running.
If a collating sequence is involved, it is converted as needed to the CCSID in which the data is being
evaluated. If a conversion error occurs while the collating sequence is being converted, you see an error
message. This happens only while a query is running.
CCSID and cover page, page headings and footings in Query for i5/OS
Page text is converted, if necessary, to the document or job CCSID when passed back to a document or
shown in a report. Dots are used if the conversion fails.
Table 13 shows what happens at definition time if item 1 cannot be converted to the CCSID for Item 2.
Table 13. CCSIDs Not Compatible-Definition-Time Consequences
Item 1 Item 2 Consequence
Long comment Job Diagnostic shown (not long comment) for F23.
Format text Job Format text shown blank on Select Format display.
Format text Job Format cannot be specified for file selection. Error
diagnosed and displayed on Specify File Selections,
Change File Selections, or File Selection Status displays.
Member text Job Member text shown blank on Select Member display.
Original column heading Job Format cannot be specified for file selection.
Original edit word Job Format cannot be specified for file selection.
Collating sequence Job Cannot use sequence to initialize Define Collating
Sequence display (substitution character involvement is
always treated as an error in this case). The consequence
depends on the origin of the collating sequence and
what you are doing.
(sequence origin)
consequence
(user-defined)
after a warning, prompt bypassed in display
mode
(user-defined)
after a warning, prompt initialized from other
source for first showing in change mode
(language sequence)
F15 request rejected
(user-defined default)
F16 request rejected.
(job sequence)
F17 request rejected.
Collating sequence Field Cannot perform comparison for join. Error diagnosed
and displayed on Specify How to Join display or
indicated on Define the Query or Exit the Query
displays.
Appendix E. Coded character set identifiers (CCSIDs) in Query for i5/OS 249
Table 13. CCSIDs Not Compatible-Definition-Time Consequences (continued)
Item 1 Item 2 Consequence
Table 14 shows what happens at run time if Item 1 cannot be converted to the CCSID for Item 2.
Table 14. CCSIDs Conversion Problems-Run-Time Consequences
Item 1 Item 2 Consequence
Table 15 shows what happens at run time when items are marked with compatible substitution CCSIDs,
but conversion of Item 1 to the CCSID of Item 2 requires use of a substitution character for some value,
and character substitution warnings are not ignored.
Table 15. Compatible with Substitution CCSIDs, Conversion Failure-Run-Time Consequences
Item 1 Item 2 Consequence
Field 2 Field 1 Cannot perform comparison for join. Run ended (output
is incomplete).1
Field 2/constant Field 1 Cannot perform comparison for record selection. Run
ended (output is incomplete).1
Field 2/constant Field 1 Cannot calculate result field value for sorting. Run ended
(no records returned).1
Field 2/constant Field 1 Cannot calculate result field value for use in record
selection (the error could occur for the tested field or test
value). Run ended (output is incomplete).1
Field 2/constant Field 1 Cannot calculate result field value for output.
Replacement string displayed or printed for value and
for any subsequent break, minimum, or maximum value
for the field. Output to database ended (output is
incomplete; possibly some, but not all, records added).1
Field data Job Cannot convert selected field value to the job CCSID,
therefore it cannot be displayed or printed. Replacement
string displayed or printed for value and for any
subsequent break, minimum, or maximum value for the
field.1
Appendix E. Coded character set identifiers (CCSIDs) in Query for i5/OS 251
Table 15. Compatible with Substitution CCSIDs, Conversion Failure-Run-Time Consequences (continued)
Item 1 Item 2 Consequence
Table 16 shows the different options allowed for several combinations of process (job) and Query
definition CCSIDs. The capital letters A and B represent different CCSIDs neither of which is 65535. The
queries with no tags are from a previous release.
Table 16. How CCSIDs Affect Query Use
Run Query Change Query Run time record Display Query
Job CCSID Query CCSID allowed allowed selection allowed
IBM may not offer the products, services, or features discussed in this document in other countries.
Consult your local IBM representative for information on the products and services currently available in
your area. Any reference to an IBM product, program, or service is not intended to state or imply that
only that IBM product, program, or service may be used. Any functionally equivalent product, program,
or service that does not infringe any IBM intellectual property right may be used instead. However, it is
the users responsibility to evaluate and verify the operation of any non-IBM product, program, or
service.
IBM may have patents or pending patent applications covering subject matter described in this
document. The furnishing of this document does not grant you any license to these patents. You can send
license inquiries, in writing, to:
IBM Director of Licensing
IBM Corporation
North Castle Drive
Armonk, NY 10504-1785
U.S.A.
For license inquiries regarding double-byte (DBCS) information, contact the IBM Intellectual Property
Department in your country or send inquiries, in writing, to:
IBM World Trade Asia Corporation
Licensing
2-31 Roppongi 3-chome, Minato-ku
Tokyo 106-0032, Japan
The following paragraph does not apply to the United Kingdom or any other country where such
provisions are inconsistent with local law: INTERNATIONAL BUSINESS MACHINES CORPORATION
PROVIDES THIS PUBLICATION AS IS WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Some
states do not allow disclaimer of express or implied warranties in certain transactions, therefore, this
statement may not apply to you.
This information could include technical inaccuracies or typographical errors. Changes are periodically
made to the information herein; these changes will be incorporated in new editions of the publication.
IBM may make improvements and/or changes in the product(s) and/or the program(s) described in this
publication at any time without notice.
Any references in this information to non-IBM Web sites are provided for convenience only and do not in
any manner serve as an endorsement of those Web sites. The materials at those Web sites are not part of
the materials for this IBM product and use of those Web sites is at your own risk.
IBM may use or distribute any of the information you supply in any way it believes appropriate without
incurring any obligation to you.
Licensees of this program who wish to have information about it for the purpose of enabling: (i) the
exchange of information between independently created programs and other programs (including this
one) and (ii) the mutual use of the information which has been exchanged, should contact:
IBM Corporation
Such information may be available, subject to appropriate terms and conditions, including in some cases,
payment of a fee.
The licensed program described in this document and all licensed material available for it are provided
by IBM under terms of the IBM Customer Agreement, IBM International Program License Agreement,
IBM License Agreement for Machine Code, or any equivalent agreement between us.
Any performance data contained herein was determined in a controlled environment. Therefore, the
results obtained in other operating environments may vary significantly. Some measurements may have
been made on development-level systems and there is no guarantee that these measurements will be the
same on generally available systems. Furthermore, some measurements may have been estimated through
extrapolation. Actual results may vary. Users of this document should verify the applicable data for their
specific environment.
Information concerning non-IBM products was obtained from the suppliers of those products, their
published announcements or other publicly available sources. IBM has not tested those products and
cannot confirm the accuracy of performance, compatibility or any other claims related to non-IBM
products. Questions on the capabilities of non-IBM products should be addressed to the suppliers of
those products.
All statements regarding IBMs future direction or intent are subject to change or withdrawal without
notice, and represent goals and objectives only.
This information contains examples of data and reports used in daily business operations. To illustrate
them as completely as possible, the examples include the names of individuals, companies, brands, and
products. All of these names are fictitious and any similarity to the names and addresses used by an
actual business enterprise is entirely coincidental.
COPYRIGHT LICENSE:
This information contains sample application programs in source language, which illustrate programming
techniques on various operating platforms. You may copy, modify, and distribute these sample programs
in any form without payment to IBM, for the purposes of developing, using, marketing or distributing
application programs conforming to the application programming interface for the operating platform for
which the sample programs are written. These examples have not been thoroughly tested under all
conditions. IBM, therefore, cannot guarantee or imply reliability, serviceability, or function of these
programs.
Each copy or any portion of these sample programs or any derivative work, must include a copyright
notice as follows:
(your company name) (year). Portions of this code are derived from IBM Corp. Sample Programs.
Copyright IBM Corp. _enter the year or years_. All rights reserved.
If you are viewing this information softcopy, the photographs and color illustrations may not appear.
COBOL/400
DB2
i5/OS
IBM
IBM (logo)
iSeries
RPG/400
SAA
System i
System/36
System/38
Systems Application Architecture
WebSphere
Linux is a registered trademark of Linus Torvalds in the United States, other countries, or both.
Microsoft, Windows, Windows NT, and the Windows logo are trademarks of Microsoft Corporation in the
United States, other countries, or both.
Java and all Java-based trademarks are trademarks of Sun Microsystems, Inc. in the United States, other
countries, or both.
Other company, product, or service names may be trademarks or service marks of others.
Index 261
decimal data deleting display (continued)
differences between Query/36 and file selections from a query 34 Select Sort Fields 103
Query for i5/OS 192 query definition Select Translation Table 114
decimal data error DLTQRY command 176 selecting for query output 143
ignoring 162 Query for i5/OS menu 11 Selecting Output Type and Output
decimal positions and length Query menu 176 Form 144
used for internal numeric Work with Queries display 12, Specify Cover Page 150
calculations 187 177 Specify Edit Code 127
decimal precision for result fields 188 descending sequence Specify Edit Word 129
decimal separator sorting records 103 Specify File Selections 31
displaying format 17 Describe Date/Time Field Editing Specify How to Join Files 42
default display 126 Specify Page Headings and
collating sequence Describe Numeric Field Editing Footings 151
hexadecimal 243 display 122 Specify Processing Options 161
saving 109 describing Specify Report Column
determining order of records for numeric field editing 122 Formatting 118
query 103 detailed output 143 Specify Type of Join 41
field selection and sequencing for DFU (data file utility) 4 System Sort Sequence 116
query 85 differences between Query/36 and Query time format 67
record selection for query 89 for i5/OS Work with Database Files
default values 7 commands 191 (IDDU) 199
Define Collating Sequence display 113 maximum length of character Work with File Definitions
Define Database File Output display 153 fields 191 (IDDU) 196, 198
Define Numeric Field Editing number of files that can be Work with Queries 169
display 120 joined 191 display date and time format
Define Printer Output display 146 operational F17 function key 18, 67
Define Report Breaks display 137 joining files 191 Display File Selections display 40
Define Result Fields display 55 types of joins 191 Display Join Tests display 51
Define Spooled Output display 149 DIGITS function Display Report display 8
Define the Query display 26 argument rules 60 Display Report Layout display 8
defining syntax diagram 60 displaying
result field 55 display files selected for a query 39
your own collating sequence 113 Confirm Delete of Queries 177 format
definition Copy Queries 175 date 17
CCSID (coded character set Create and Select Field Definitions decimal separator 17
identifier) 241 (IDDU) 196, 198 time 17
code page 112 Create Field Definitions (IDDU) 197 join tests 51
deleting query Create File Definition (IDDU) 196 lists 9
DLTQRY command 11 Define Collating Sequence 113 query 245
expression 56 Define Database File Output 153 query definition 12, 177
query 174 Define Numeric Field Editing 120 query output 143
changing 28, 171 Define Printer Output 146 report layout using F13 8
changing (example) 207 Define Report Breaks 137 report using F5 8, 167
copying 175 Define Result Fields 55 text about items in a list 15
copying before changing 171 Define Spooled Output 149 dividing by zero (0)
creating 25, 28 Define the Query 26 example 81
creating (example) 202 Describe Date/Time Field DLTQRY (Delete Query) command 11,
deleting 177 Editing 126 176
displaying 177 Describe Numeric Field Editing 122 double-byte character set (DBCS)
DLTQRY command 176 Display Date Format 67 bracket characters 9
information printed 179 Display File Selections 40 character constant
migrating restriction 193 Display Join Tests 51 shift-in character 58
naming 25 Display Report Layout 8 shift-out character 58
printing 178 Exit This Query 165, 167 data representation 8
renaming 176 Fields Missing from File pictograph 4
running 8 Definition 52 shift-in character 58
saving 165 Format Report Break 141 shift-out character 58
selecting files 31 IDDU main (system) menu 195 sorting character data 109
specifying authority 166 Select and Sequence Fields 85 space requirements 9
definition display Select Collating Sequence 111 symbolic characters 4
moving through 28 Select Definition Type (IDDU) 196 duration
definition step Select File 35 date 71
description 27 Select Member 38 labeled 71
selecting on Define the Query Select Record Format 39 time 71
display 26 Select Records 90 timestamp 71
Delete Query (DLTQRY) command 11, Select Report Summary
176 Functions 134
Index 263
footing
printing on a report 151
function (continued)
TIMESTAMP
I
format 185 argument rules 77 IBM European standard (EUR)
Format Report Break display 141 syntax diagram 77 date and time 65
formatting total summary IBM USA standard (USA)
report break 141 date, time, and timestamp date and time 65
report column spacing 117 value 133 ID (identifier)
function null value 133 differences between Query/36 and
average summary VALUE 60 Query for i5/OS 191
date, time, and timestamp VARCHAR 61 file 34
value 133 VARGRAPHIC 63 Using in a query definition 34
null value 133 YEAR IDDU (interactive data definition utility)
CHAR argument rules 78 data dictionary 4
argument rules 72 syntax diagram 78 definition 195
syntax diagram 72 function key example
count summary F10 creating IDDU definition 195
null value 133 showing previous display 18 introduction 4
DATE F11 main (system) menu 195
argument rules 72 displaying additional identifier (ID)
syntax diagram 72 information 15 differences between Query/36 and
DAY F12 Query for i5/OS 191
argument rules 73 canceling changes made 18 file 34
syntax diagram 73 F13 Using in a query definition 34
DAYS using to display report layout 8 Ignore Character Substitution
argument rules 74 F17 display 163
syntax diagram 74 display date and time format 18, ignoring decimal data error 162
DIGITS 67 increasing the decimal precision 188
argument rules 60 F21 information for programmers,
syntax diagram 60 to select all 28 advanced 185
HOUR F23 interactive data definition utility (IDDU)
argument rules 74 set collating sequence default 109, data dictionary 4
syntax diagram 74 114 definition 195
introduction 5 using to display a long example
MICROSECOND comment 10 creating IDDU definition 195
argument rules 75 F4 introduction 4
syntax diagram 75 using to obtain a list 9 main (system) menu 195
minimum summary F5 interactive processing
null value 133 displaying report 167 limiting 239
MINUTE using to display report 8 restricting 239
argument rules 75 introduction to using 8 internal numeric calculations
syntax diagram 75 length and decimal positions 187
MONTH International Standards Organization
(ISO)
argument rules 76
syntax diagram 76
G date and time 65
GE (greater than or equal) comparison introduction to Query
SECOND
test 93, 94, 163 concepts 3
argument rules 76
generic name 9 IS (is) comparison test 93, 94
syntax diagram 76
GG (double-byte G) 9 ISNOT (is not) comparison test 93, 94
SUBSTR (substring) 59
GT (greater than) comparison test 93, ISO (International Standards
substring
94, 163 Organization)
argument rules 58
summary date and time 65
average 133
CCSID (coded character set H
identifier) 248 heading J
count 133 column in report 117 Japanese Industrial Standard (JIS)
location on report 135 report 151 date and time 65
maximum 133 result field 83 JIS (Japanese Industrial Standard)
minimum 133 hexadecimal date and time 65
performance CCSID 112 JJ (double-byte J) 8
recommendations 233 collating sequence 111, 112 join operation
report 233 HOUR function performance recommendations 235
summarizing columns 135 argument rules 74 join selection tests
total 133 syntax diagram 74 definition 227
types 133 how a collating sequence affects Query join test
TIME for i5/OS 110 CCSID (coded character set
argument rules 77 how to join files 41 identifier) 247
syntax diagram 77
Index 265
numeric
calculations
OVRDBF (Override with Database File)
command 185
Q
length and decimal positions 187 query
constant defining tips 230
running 167
record selection test 92
rules for using 57
P Query
packed decimal fields 229 practice exercises 195
expression 56
page footing query definition
field
CCSID (coded character set changing 28
converting to a date 69
identifier) 249 example 207
describing editing 122
defining 152 explanation 171
editing 120
page heading considerations when changing 174
ignoring error in during
CCSID (coded character set copying 175
processing 162
identifier) 249 copying before changing 171
length and decimal positions 83,
defining 152 creating
187
performance advanced example 211
numeric dates, working with 69
designing or changing queries 230 example 202
rounding during processing 161
tips and techniques 227 Work with Queries display 25
using in result fields 57
performance tuning Define the Query display 26
operators 56
recommendations 237 definition 5
numeric expression
physical file deleting 176
result field 57
definition 5 DLTQRY command 11, 176
numeric field 229, 230
pictograph Query for i5/OS Utilities
numeric formats
DBCS (double-byte character set) 4 menu 11
packed decimal 229
position to prompt 15 Work with Queries display 176
zoned decimal 229
practice exercises 195 displaying 177
precision exiting 165
result fields 188 information printed 179
O primary file migrating restriction 193
object definition 234 naming 25
DB2 for i5/OS program 5 used in file join operations 41 naming restrictions
query definition 5 primary record multilingual environment 25
omitting field from report 119 select/omit criteria 41 printing 178
OO (double-byte O) 8 Print key 9 Query for i5/OS menu
operator printer deleting from 11
concatenation (||) 58 defining printout cover page 150 renaming 176
null value 58 selecting for query output 143, 146 running 8
numeric 56 specifying page heading and saving 165
optimization footing 151 selecting files 31
definition 227 specifying spooled output selecting from list 10
OR condition override 148 selecting options 27
specifying selection tests 232 printing specifying authority 166
OR connection differences between Query/36 and Query for i5/OS
record selection test 99 Query for i5/OS 193 command 11
output display 9 definition 3
database file query definition 12, 178 differences from Query/36 191
defining 152 processing option error 18
specifying 143 differences between Query/36 and exiting 7, 165
detailed 143 Query for i5/OS 192 how a collating sequence affects 110
display 143 ignoring decimal data error 162 introduction
form purpose 161 description 3
selecting 143, 233 rounding numeric field values 161 language sequences 244
printer 143, 146 specifying 234 menu
summary only processing options getting to 7
differences between Query/36 and character comparisons 174 using 11
Query for i5/OS 192 collating sequence 174 message 18
specifying 143 profile multiple query tasks 13
to database file Query for i5/OS 18 profile 18
differences between Query/36 and programming considerations 185 starting 7, 11
Query for i5/OS 192 prompt task
type description 7 choosing 13
selecting 143, 233 position to description 5
Override with Database File (OVRDBF) Work with Queries display 15 illustration 6
command 185 specifying library name 13 tips and techniques 227
overriding specifying query name 13 working with 11
database files 185 subset query processing 227
spooled output 148 Work with Queries display 14
Index 267
select/omit criteria sort summary-only output
primary records 41 field database file 143, 158
selecting CCSID (coded character set differences 192
collating sequence 109, 111 identifier) 248 support
field for query 85 collating sequence UCS2 level 1 character set 4
performance consideration 106 symbolic character
recommendations 231 date, time, timestamp 106 DBCS (double-byte character set) 4
files for a query example of how used 104 system administrator guidelines 239
Select File display 35 null values 106 system sort sequence 115
Specify File Selections display 31 performance
items from list 10 recommendations 232
library for file selection 32
matched records
priority number 103
selecting for query 103, 232
T
test
primary file 46 specifying ascending or
displaying 51
selected files 45 descending sequence 103
test pattern
members for file selection sequence
DBCS LIKE 97
Select Member display 37 differences between Query/36 and
DBCS-graphic field
Specify File Selections display 33 Query for i5/OS 192
empty string 99
options sorting DBCS character data 109
declaring 97
query definition 27 special library names 10
empty string 97
output type and output form 143 Specify Cover Page display 150
non-DBCS
queries from a list Specify Edit Code display 127
special characters 97
Work with Queries display 14 Specify Edit Word display 129
special characters 97
record for query 89 Specify File Selections display 31
test, join
record format for file selection Specify How to Join Files display 42
CCSID (coded character set
Select Record Format display 38 Specify Page Headings and Footings
identifier) 247
Specify File Selections display 33 display 151
code
sort field for query 103 Specify Processing Options display 161
displaying 41
system sort sequence 115 Specify Report Column Formatting
L, T, or Z 41
translation table 114 display 118
specifying 41
selecting and sequencing field Specify Type of Join display 41
text, break 142
example 86 spooled output override 148
thousands separator
Selecting Output Type and Output Form Start Query (STRQRY) command 7, 11
numeric fields 123
display 144 starting Query 7
time
selecting record status message
arithmetic operation
connecting example 99 Query for i5/OS 237
decrementing 71
performance recommendations 231 STRQRY (Start Query) command 7, 11
incrementing 71
selecting records to join subroutine
subtraction 70
ignoring field case 189 differences between Query/36 and
comparison 94
selection test Query for i5/OS 191
constant
definition 227 subset prompt
record selection test 93
OR condition 232 Work with Queries display 14
data type
record SUBSTR (substring) function
description 64, 65
example 99 argument rules 59
displaying format 17, 67
sequence 85 null values 59
EUR 65
collating syntax diagram 59
function
changing for query 174 SUBSTR (substring) operator
CURRENT(TIME) 78
default 85 argument rules 60
CURRENT(TIMEZONE) 78
hexadecimal 111 DBCS fields
i5/OS format 65
language 112 result field 185
ISO 65
purpose 109 null values 60
JIS 65
selecting translation table 114 syntax diagrams 60
LOCAL 65
setting default 109 summary function
sort considerations 106
system sort 115 average 134
USA 65
user defined 113 CCSID (coded character set
value
sequencing identifier) 248
length 118
fields for query 85 column summary values
time arithmetic operation
query 85 location on report 135
addition rules 67
secondary files for a join 47 count 134
subtraction rules 68
sharing files 185 maximum 134
time data
shift-in character minimum 134
Display Report Layout display 8
DBCS (double-byte character set) 58 performance recommendations 233
time duration 71
shift-out character report 233
time field
DBCS (double-byte character set) 58 summarizing columns 135
collating sequence 110
single-byte character set (SBCS) field 4 total 133
release restrictions 237
types 133
time field editing 126
time field name 64
V
value
comparison 91
default 91
null
record selection test 93
VALUE function 60
value length
date 118
time 118
Index 269
270 Query for i5/OS V6R1
Readers Comments Wed Like to Hear from You
System i
Query for i5/OS
Version 6 Release 1
We appreciate your comments about this publication. Please comment on specific errors or omissions, accuracy,
organization, subject matter, or completeness of this book. The comments you send should pertain to only the
information in this manual or product and the way in which the information is presented.
For technical questions and information about products and prices, please contact your IBM branch office, your
IBM business partner, or your authorized remarketer.
When you send comments to IBM, you grant IBM a nonexclusive right to use or distribute your comments in any
way it believes appropriate without incurring any obligation to you. IBM or any other organizations will only use
the personal information that you supply to contact you about the issues that you state on this form.
Comments:
If you would like a response from IBM, please fill in the following information:
Name Address
Company or Organization
_ _ _ _ _ _ _Fold
_ _ _and
_ _ _Tape
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _Please
_ _ _ _ _do
_ _not
_ _ staple
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _Fold
_ _ _and
_ _ Tape
______
NO POSTAGE
NECESSARY
IF MAILED IN THE
UNITED STATES
IBM CORPORATION
ATTN DEPT 542 IDCLERK
3605 HWY 52 N
ROCHESTER MN 55901-7829
_________________________________________________________________________________________
Fold and Tape Please do not staple Fold and Tape
Cut or Fold
SC41-5210-05 Along Line
Printed in USA
SC41-5210-05