Author
nguyendat
View
247
Download
12
Embed Size (px)
PeopleTools 8.4: SQR for
PeopleSoft Developer's Guide
PeopleTools 8.4: SQR for PeopleSoft Developer's Guide
SKU Tr84SQR-B 0302
PeopleBooks Contributors: Teams from PeopleSoft Product Documentation and
Development.
Copyright © 2002 PeopleSoft, Inc. All rights reserved.
Printed in the United States.
All material contained in this documentation is proprietary and confidential to PeopleSoft,
Inc. ("PeopleSoft"), protected by copyright laws and subject to the nondisclosure provisions
of the applicable PeopleSoft agreement. No part of this documentation may be reproduced,
stored in a retrieval system, or transmitted in any form or by any means, including, but not
limited to, electronic, graphic, mechanical, photocopying, recording, or otherwise without the
prior written permission of PeopleSoft.
This documentation is subject to change without notice, and PeopleSoft does not warrant that
the material contained in this documentation is free of errors. Any errors found in this
document should be reported to PeopleSoft in writing.
The copyrighted software that accompanies this document is licensed for use only in strict
accordance with the applicable license agreement which should be read carefully as it
governs the terms of use of the software and this document, including the disclosure thereof.
PeopleSoft, the PeopleSoft logo, PeopleTools, PS/nVision, PeopleCode, PeopleBooks,
PeopleTalk, and Vantive are registered trademarks, and "People power the internet." and Pure
Internet Architecture are trademarks of PeopleSoft, Inc. All other company and product
names may be trademarks of their respective owners. The information contained herein is
subject to change without notice.
P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L C O N T E N T S i i i
C o n t e n t s
SQR for PeopleSoft Developer’s Guide Preface
About This PeopleBook..................................................................................................... xi
Before You Begin.............................................................................................................. xi
PeopleSoft Application Fundamentals ............................................................................. xii
Related Documentation .................................................................................................... xii
Hard-copy Documentation........................................................................................ xiii
PeopleBooks Standard Field Definitions......................................................................... xiii
Typographical Conventions and Visual Cues....................................................................xv
Page and Panel Introductory Table.................................................................................. xvi
Comments and Suggestions............................................................................................. xvi
Chapter 1
Simple SQR Program
Working with the SQR for PeopleSoft Developer’s Guide............................................. 1-1
Audience ................................................................................................................... 1-2
How to Use the SQR for PeopleSoft Developer’ s Guide ........................................ 1-2
Related Documents ................................................................................................... 1-3
Syntax Conventions .................................................................................................. 1-3
Setting Up the Sample Database............................................................................... 1-3
Sample Program - Printing a Text String.................................................................. 1-4
Creating and Running an SQR Program.......................................................................... 1-4
SQR Output ..................................................................................................................... 1-5
Understanding the SQR Commands ......................................................................... 1-6
Chapter 2
Headings and Footings
Understanding the Page in SQR ...................................................................................... 2-1
Sample Program - Adding the Heading and Footing....................................................... 2-2
Creating Page Headings and Footings............................................................................. 2-2
Page Heading ............................................................................................................ 2-2
Page Footing ............................................................................................................. 2-3
Order of Execution.................................................................................................... 2-3
S Q R F O R P E O P L E S O F T D E V E L O P E R ' S G U I D E
C O N T E N T S i v P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L
Chapter 3
Selecting Data From the Database
Sample Program - Listing and Printing Data................................................................... 3-1
Understanding the SQR Program.............................................................................. 3-2
SQR SELECT Statement ................................................................................................. 3-3
Syntax of the SELECT Statement ............................................................................. 3-3
Positioning Data ........................................................................................................ 3-4
Chapter 4
Column Variables
Using a Column Variable in a Condition......................................................................... 4-1
Changing the Column Variable Name............................................................................. 4-2
Chapter 5
Using Break Logic
Understanding Break Logic ............................................................................................. 5-1
Using ON-BREAK .......................................................................................................... 5-3
Skipping Lines Between Groups ..................................................................................... 5-4
Arranging Multiple Break Columns ................................................................................ 5-5
Using Break Processing Enhancements........................................................................... 5-7
Handling Page Breaks ............................................................................................. 5-11
Printing the Date...................................................................................................... 5-11
Obtaining Totals...................................................................................................... 5-12
Hyphens and Underscores....................................................................................... 5-12
Setting Break Procedures With BEFORE and AFTER ................................................. 5-13
Understanding the Order of Events ......................................................................... 5-13
Controlling Page Breaks With Multiple ON-BREAK Columns ................................... 5-19
Saving a Value When a Break Occurs........................................................................... 5-19
Using ON-BREAK on a Hidden Column...................................................................... 5-20
Restrictions and Limitations of ON-BREAK ................................................................ 5-22
Chapter 6
SETUP Section
Understanding the SETUP Section.................................................................................. 6-1
Creating the SETUP Section............................................................................................ 6-1
Using DECLARE-LAYOUT........................................................................................... 6-2
Sample SETUP Program........................................................................................... 6-2
SQR Page Layout ...................................................................................................... 6-2
Overriding the Default Settings ....................................................................................... 6-3
Declaring the Page Orientation........................................................................................ 6-4
S Q R F O R P E O P L E S O F T D E V E L O P E R ' S G U I D E
P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L C O N T E N T S v
Chapter 7
Master/Detail Reports
Understanding Master/Detail Reports ............................................................................. 7-1
Creating a Master/Detail Report...................................................................................... 7-1
Sample Program - Master/Detail Report ......................................................................... 7-2
Correlating Subqueries .................................................................................................... 7-3
Sample Program Output............................................................................................ 7-4
Chapter 8
Cross-Tabular Reports
Understanding Cross-Tabular Reports ............................................................................ 8-1
Understanding Arrays...................................................................................................... 8-2
Creating the Array ........................................................................................................... 8-4
Grouping by Category ..................................................................................................... 8-5
Using Multiple Arrays..................................................................................................... 8-8
Chapter 9
Printing Mailing Labels
Understanding How to Print Mailing Labels................................................................... 9-1
Sample Program - Printing Mailing Labels .............................................................. 9-1
Defining Columns and Rows........................................................................................... 9-2
Running the Print Mailing Labels Program..................................................................... 9-3
Chapter 10
Creating Form Letters
Laying Out the Letter Using the DOCUMENT Section ............................................... 10-1
Sample Program - Form Letter ............................................................................... 10-1
Chapter 11
Exporting Data to Other Applications
Sample Program - Exporting Data................................................................................. 11-1
Creating an Export File.................................................................................................. 11-2
Chapter 12
Using Graphics
Sample Program - Simple Tabular Report..................................................................... 12-1
Adding Graphics............................................................................................................ 12-3
Sharing Images Among Reports.................................................................................... 12-6
Printing Bar Codes ........................................................................................................ 12-9
S Q R F O R P E O P L E S O F T D E V E L O P E R ' S G U I D E
C O N T E N T S v i P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L
Chapter 13
Using Business Charts
Understanding Business Charts ..................................................................................... 13-1
Creating a Chart ............................................................................................................. 13-1
Defining a Chart ............................................................................................................ 13-5
Printing a Chart.............................................................................................................. 13-6
Running the Program..................................................................................................... 13-6
Passing Data to the Chart............................................................................................... 13-7
Chapter 14
Changing Fonts
Understanding How to Change Fonts............................................................................ 14-1
Positioning Text............................................................................................................. 14-1
Using WRAP ................................................................................................................. 14-4
Chapter 15
Writing Printer-Independent Reports
Understanding Printer-Independent Reports.................................................................. 15-1
Sample Program - Selecting the Printer Type at Runtime ...................................... 15-2
Chapter 16
Dynamic SQL and Error Checking
Using Variables in SQL................................................................................................. 16-1
Dynamic SQL ................................................................................................................ 16-2
SQL Error Checking ...................................................................................................... 16-4
SQL and Substitution Variables .................................................................................... 16-5
Chapter 17
Procedures, Argument Passing, and Local Variables
Procedures...................................................................................................................... 17-1
Local Variables.............................................................................................................. 17-2
Argument Passing.......................................................................................................... 17-2
Chapter 18
Multiple Reports
Understanding Multiple Reports From One Program.................................................... 18-1
Sample Program - Multiple Reports........................................................................ 18-1
Defining Heading and Footing Sections........................................................................ 18-5
Defining Program Output .............................................................................................. 18-5
S Q R F O R P E O P L E S O F T D E V E L O P E R ' S G U I D E
P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L C O N T E N T S v i i
Chapter 19
Using DML and DDL
Using SQL Statements in SQR...................................................................................... 19-1
Using BEGIN-SQL ....................................................................................................... 19-1
Chapter 20
Working With Comma Separated Files
Declaring a Connection to a CSV Data Source ............................................................. 20-1
Viewing CSV Metadata................................................................................................. 20-1
Creating and Executing MD Queries............................................................................. 20-1
Chapter 21
Working With Dates
Understanding Dates and Date Arithmetic .................................................................... 21-1
Using Literal Date Formats ........................................................................................... 21-3
Using String to Date Conversions ................................................................................. 21-4
Using Date to String Conversions ................................................................................. 21-5
Using Dates With the INPUT Command ...................................................................... 21-5
Using Date Edit Masks .................................................................................................. 21-5
Declaring Date Variables............................................................................................... 21-7
Chapter 22
National Language Support
Locales........................................................................................................................... 22-1
Available Locales .......................................................................................................... 22-2
Default Locale ............................................................................................................... 22-2
Switching Locales ......................................................................................................... 22-3
Modifying Locale Preferences....................................................................................... 22-3
Specifying NUMBER, MONEY, and DATE Keywords .............................................. 22-4
Chapter 23
Interoperability
Understanding Interoperability...................................................................................... 23-1
Calling SQR From Another Application ....................................................................... 23-2
Invoking an SQR Program Using the SQR API............................................................ 23-2
Invoking an External Application API Using the UFUNC.C Interface ........................ 23-4
Adding a User Function................................................................................................. 23-5
Step 1. Add Function Prototype.............................................................................. 23-5
Step 2. Add Entry to USERFUNCS Table.............................................................. 23-6
Step 3. Add Implementation Code.......................................................................... 23-7
S Q R F O R P E O P L E S O F T D E V E L O P E R ' S G U I D E
C O N T E N T S v i i i P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L
Step 4. Relink SQR ................................................................................................. 23-8
Using ufunc on Windows 95 & NT ............................................................................... 23-8
Implementing New User Functions on Windows 95 & NT........................................... 23-9
Understanding XML Support in SQR ........................................................................... 23-9
Chapter 24
Testing and Debugging
Using the Test Feature ................................................................................................... 24-1
Using the #DEBUG Command...................................................................................... 24-2
Using Compiler Directives for Debugging .................................................................... 24-2
Avoiding Common Programming Errors ...................................................................... 24-3
Chapter 25
Performance and Tuning
Understanding SQR Performance and SQL Statements................................................ 25-1
Simplifying a Complex SELECT .................................................................................. 25-2
Using LOAD-LOOKUP to Simplify Joins .................................................................... 25-2
Improving SQL Performance with Dynamic SQL ........................................................ 25-4
Examining SQL Cursor Status....................................................................................... 25-5
Avoiding Temporary Database Tables .......................................................................... 25-5
Using and Sorting Arrays........................................................................................ 25-6
Using and Sorting Flat Files.................................................................................. 25-11
Creating Multiple Reports in One Pass........................................................................ 25-13
Tuning SQR Numerics................................................................................................. 25-13
Compiling SQR Programs and Using SQR Execute ................................................... 25-14
Setting Processing Limits ............................................................................................ 25-14
Buffering Fetched Rows .............................................................................................. 25-14
Executing Programs on the Database Server ............................................................... 25-15
Chapter 26
Compiling Programs and Using SQR Execute
Compiling and Executing an SQR Program.................................................................. 26-1
Chapter 27
Printing Issues
Using the DECLARE-PRINTER Command................................................................. 27-2
Chapter 28
Using the SQR Command Line
Understanding the SQR Command Line ....................................................................... 28-1
S Q R F O R P E O P L E S O F T D E V E L O P E R ' S G U I D E
P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L C O N T E N T S i x
Using Command-Line Flags.......................................................................................... 28-2
Specifying Command-Line Arguments......................................................................... 28-2
How SQR Retrieves the Arguments ....................................................................... 28-3
Specifying Arguments and Argument Files............................................................ 28-3
Using an Argument File.......................................................................................... 28-4
Other Approaches to Passing Command-Line Arguments ..................................... 28-4
Reserved Characters................................................................................................ 28-5
Creating an Argument File From a Report ............................................................. 28-5
Using Batch Mode......................................................................................................... 28-6
VAX/VMS .............................................................................................................. 28-6
UNIX, Windows 95/98, and Windows NT/2000.................................................... 28-6
Chapter 29
Working With HTML
Understanding SQR Capabilities Available With HTML ............................................. 29-1
Producing HTML Output .............................................................................................. 29-2
Understanding HTML Output................................................................................. 29-2
Using -PRINTER:EH.............................................................................................. 29-3
Setting HTML Attributes Under -PRINTER:EH.................................................... 29-4
Using -PRINTER:HT.............................................................................................. 29-7
“Bursting” and Demand Paging.............................................................................. 29-8
Setting Attributes With HTML Procedures .......................................................... 29-10
Using Additional HTML Procedures .................................................................... 29-11
Output File Types.................................................................................................. 29-11
Testing................................................................................................................... 29-12
Using HTML Procedures in an SQR Program ............................................................ 29-12
How to Use HTML Procedures ............................................................................ 29-13
Positioning Objects ............................................................................................... 29-13
Table Procedures................................................................................................... 29-15
Headings ............................................................................................................... 29-16
Highlighting .......................................................................................................... 29-17
Hypertext Links..................................................................................................... 29-17
Images ................................................................................................................... 29-18
Lists....................................................................................................................... 29-19
Paragraph Formatting............................................................................................ 29-20
User-Defined HTML............................................................................................. 29-20
Modifying an Existing SQR Program ......................................................................... 29-21
Publishing the Report .................................................................................................. 29-23
Viewing the Published Report .............................................................................. 29-24
Publishing Using an Automated Process .............................................................. 29-24
S Q R F O R P E O P L E S O F T D E V E L O P E R ' S G U I D E
C O N T E N T S x P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L
Publishing Using a CGI Script .............................................................................. 29-25
Creating the Fill-Out Form.................................................................................... 29-26
Creating the CGI Script......................................................................................... 29-27
Passing Arguments to the SQR Program .............................................................. 29-29
Chapter 30
Table of Contents
Using the DECLARE-T0C Command .......................................................................... 30-1
Using the TOC-ENTRY Command............................................................................... 30-2
Adding a Table of Contents to the Cust.sqr Program.................................................... 30-3
Glossary
Index
P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L P R E F A C E x i
SQR for PeopleSoft Developer’s Guide
Preface
This guide is designed to help you learn SQR, a specialized language for database processing
and reporting.
By working through code examples, you learn how to write SQR programs that select data
from a database and present it in a report.
This Developer’s Guide contains actual examples and sample programs, and we encourage
you to copy code from it. Use this Developer’s Guide to help you create SQR programs that
are important to your organization.
The “About This PeopleBook” section contains general product line information, such as
related documentation, common page elements, and typographical conventions. This book
also contains a glossary with useful terms that are used in PeopleBooks.
See PeopleSoft Glossary.
About This PeopleBook
This book provides you with the information that you need for implementing and using
PeopleTools 8.4 applications. Complete documentation for this release is provided on the CD-
ROM PT84PBR0.
Note. Your access to PeopleSoft PeopleBooks depends on which PeopleSoft applications
you've licensed. You may not have access to all of the PeopleBooks.
This section contains information that you should know before you begin working with
PeopleSoft products and documentation, including PeopleSoft-specific documentation
conventions, information specific to each PeopleSoft product line, and information on
ordering additional copies of our documentation.
Before You Begin
To benefit fully from the information covered in this book, you should have a basic
understanding of how to use PeopleSoft applications. We recommend that you complete at
least one PeopleSoft introductory training course.
You should be familiar with navigating the system and adding, updating, and deleting
information by using PeopleSoft windows, menus, and pages. You should also be
comfortable using the World Wide Web and the Microsoft® Windows or Windows NT
graphical user interface.
S Q R F O R P E O P L E S O F T D E V E L O P E R ' S G U I D E
P R E F A C E x i i P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L
Because we assume that you already know how to navigate the PeopleSoft system, much of
the information in these books is not procedural. That is, these books do not typically provide
step-by-step instructions on using tables, pages, and menus. Instead, we provide you with the
information that you need to use the system most effectively and to implement your
PeopleSoft application according to your organizational or departmental needs. PeopleBooks
expand on the material covered in PeopleSoft training classes.
PeopleSoft Application Fundamentals
Each PeopleSoft application PeopleBook provides implementation and processing information
for your PeopleSoft database. However, there is additional, essential information describing
the setup and design of your database contained in a companion volume of documentation
called PeopleSoft Application Fundamentals.
PeopleSoft Application Fundamentals contains important topics that apply to many or all
PeopleSoft applications across each product line. Whether you are implementing only one
PeopleSoft application, some combination of products within a product line, or an entire
PeopleSoft system, you should be familiar with the contents of this central PeopleBook. It
contains fundamental information such as setting up control tables and administering security.
The PeopleSoft Applications Fundamentals PeopleBook contains common information
pertinent to all applications in each product line, such as defining general options. If you're
upgrading from a previous PeopleSoft release, you may notice that we've removed some
topics or topic headings from the individual application PeopleBooks and consolidated them
in this single reference book. You’ll now find only application-specific information in your
individual application PeopleBooks. This makes the documentation as a whole less
redundant. Throughout each PeopleBook, we provide cross-references to PeopleSoft
Application Fundamentals and other PeopleBooks.
Related Documentation
You can order printed, bound versions of the complete PeopleSoft documentation delivered on
your PeopleBooks CD-ROM and additional copies of the PeopleBooks CDs through the
Documentation section of the PeopleSoft Customer Connection website:
http://www.peoplesoft.com/corp/en/login.asp
You can find updates and additional documentation for this release, as well as previous
releases, on PeopleSoft Customer Connection (http://www.peoplesoft.com/corp/en/login.asp ).
Through the Documentation section of Customer Connection, you can download files to add
to your PeopleBook library. You'll find a variety of useful and timely materials, including
updates to the full PeopleSoft documentation delivered on your PeopleBooks CD.
Important! Before you upgrade, it is imperative that you check PeopleSoft Customer
Connection for updates to the upgrade instructions. We continually post updates as we refine
the upgrade process.
S Q R F O R P E O P L E S O F T D E V E L O P E R ' S G U I D E
P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L P R E F A C E x i i i
Hard-copy Documentation
To order printed, bound volumes of the complete PeopleSoft documentation delivered on your
PeopleBooks CD-ROM, visit the PeopleSoft Press website from the Documentation section of
PeopleSoft Customer Connection. The PeopleSoft Press website is a joint venture between
PeopleSoft and Consolidated Publications Incorporated (CPI), our book print vendor.
We make printed documentation available for each major release shortly after the software is
shipped. Customers and partners can order printed PeopleSoft documentation by using any of
the following methods:
Internet From the main PeopleSoft Internet site, go to the
Documentation section of Customer Connection. You can
find order information under the Ordering PeopleBooks
topic. Use a Customer Connection ID, credit card, or
purchase order to place your order.
PeopleSoft Internet site: http://www.peoplesoft.com/.
Telephone Contact Consolidated Publishing Incorporated (CPI) at
800 888 3559.
Email Send email to CPI at [email protected].
PeopleBooks Standard Field Definitions
Throughout our product documentation, you will encounter fields and buttons that are used on
many application pages or panels. This section lists the most common fields and buttons and
provides standard definitions.
Field Definition
As of Date The last date for which a report or process includes data.
Business Unit An identification code that represents a high-level organization
of business information. You can use a business unit to define
regional or departmental units within a larger organization.
Description Freeflow text up to 30 characters.
Effective Date Date on which a table row becomes effective; the date that an
action begins. For example, if you want to close out a ledger on
June 30, the effective date for the ledger closing would be July
1. This date also determines when you can view and change the
information. Pages or panels and batch processes that use the
information use the current row.
For more information about effective dates, see
Understanding Effective Dates in Using PeopleSoft
Applications.
S Q R F O R P E O P L E S O F T D E V E L O P E R ' S G U I D E
P R E F A C E x i v P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L
Field Definition
EmplID (employee ID) Unique identification code for an individual associated with
your organization.
Language or Language Code The language in which you want the field labels and report
headings of your reports to print. The field values appear as you
enter them.
Language also refers to the language spoken by an employee,
applicant, or non-employee.
Process Frequency group box Designates the appropriate frequency in the Process Frequency
group box:
Once executes the request the next time the batch process runs.
After the batch process runs, the process frequency is
automatically set to Don't Run.
Always executes the request every time the batch process runs.
Don't Run ignores the request when the batch process runs.
Report ID The report identifier.
Report Manager This button takes you to the Report List page, where you can
view report content, check the status of a report, and see content
detail messages (which show you a description of the report and
the distribution list).
Process Monitor This button takes you to the Process List page, where you can
view the status of submitted process requests.
Run This button takes you to the Process Scheduler request page,
where you can specify the location where a process or job runs
and the process output format.
For more information about the Report List page, the
Process List page, and the Process Scheduler, see Process
Scheduler Basics in the PeopleTools documentation.
Request ID A request identification that represents a set of selection criteria
for a report or process.
User ID The system identifier for the individual who generates a
transaction.
SetID An identification code that represents a set of control table
information or TableSets. A TableSet is a group of tables
(records) necessary to define your company’s structure and
processing options.
Short Description Freeflow text up to 15 characters.
S Q R F O R P E O P L E S O F T D E V E L O P E R ' S G U I D E
P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L P R E F A C E x v
Typographical Conventions and Visual Cues
We use a number of standard conventions and visual cues in our online documentation.
The following list contains our typographical conventions and visual cues:
(monospace font) Indicates a PeopleCode program or other program
example.
Bold Indicates field names and other page elements, such as
buttons and group box labels, when these elements are
documented below the page on which they appear. When
we refer to these elements elsewhere in the
documentation, we set them in Normal style (not in bold).
We also use boldface when we refer to navigational paths,
menu names, or process actions (such as Save and Run).
Italics Indicates a PeopleSoft or other book-length publication.
We also use italics for emphasis and to indicate specific
field values. When we cite a field value under the page on
which it appears, we use this style: field value.
We also use italics when we refer to words as words or
letters as letters, as in the following: Enter the number 0,
not the letter O.
KEY+KEY Indicates a key combination action. For example, a plus
sign (+) between keys means that you must hold down the
first key while you press the second key. For ALT+W,
hold down the ALT key while you press W.
Cross-references The phrase For more information indicates where you
can find additional documentation on the topic at hand.
We include the navigational path to the referenced topic,
separated by colons (:). Capitalized titles in italics
indicate the title of a PeopleBook; capitalized titles in
normal font refer to sections and specific topics within the
PeopleBook. Here's an example:
For more information, see Documentation on CD-
ROM in About These PeopleBooks: Additional
Resources.
Note. Text in this bar indicates information that you should pay particular attention to as you
work with your PeopleSoft system. If the note is preceded by Important!, the note is crucial
and includes information that concerns what you need to do for the system to function
properly.
Text in this bar indicates cross-references to related or additional information.
S Q R F O R P E O P L E S O F T D E V E L O P E R ' S G U I D E
P R E F A C E x v i P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L
Warning! Text within this bar indicates a crucial configuration consideration. Pay very
close attention to these warning messages.
Page and Panel Introductory Table
In the documentation, each page or panel description in the application includes an
introductory table with pertinent information about the page. Not all of the information will be
available for all pages or panels.
Usage Describes how you would use the page or process.
Object Name Gives the system name of the panel or process as specified in the PeopleTools
Application Designer. For example, the Object Name of the Detail Calendar
panel is DETAIL_CALENDAR1.
Navigation Provides the path for accessing the page or process.
Prerequisites Specifies which objects must have been defined before you use the page or
process.
Access
Requirements
Specifies the keys and other information necessary to access the page. For
example, SetID and Calendar ID are required to open the Detail Calendar
page.
Comments and Suggestions
Your comments are important to us. We encourage you to tell us what you like, or what you
would like to see changed about our documentation, PeopleBooks, and other PeopleSoft
reference and training materials. Please send your suggestions to:
PeopleSoft Product Documentation Manager
PeopleSoft, Inc.
4460 Hacienda Drive
Pleasanton, CA 94588
Or send comments by email to the authors of the PeopleSoft documentation at:
While we cannot guarantee to answer every email message, we will pay careful attention to
your comments and suggestions. We are always improving our product communications for
you.
P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L S I M P L E S Q R P R O G R A M 1 - 1
C H A P T E R 1
Simple SQR Program
This chapter presents a sample SQR program and discusses how to:
• Work with the SQR for PeopleSoft Developer’s Guide
• Create and run an SQR program.
• Use the following three SQR commands:
BEGIN-PROGRAM
END-PROGRAM
• Examine the SQR output.
Working with the SQR for PeopleSoft Developer’s Guide
The first three parts of the Developer’s Guide teach basic uses of SQR. You learn how to:
• Create a variety of reports, such as tabular, cross-tabular, and master/detail reports.
• Produce mailing labels, form letters, and envelopes.
• Enhance your reports with typeset-quality fonts and graphics.
• Produce graphs and charts that help you present data and trends in visual terms.
The next two parts of the Developer’s Guide describe the advanced features and uses of SQR.
You learn how to:
• Create HTML output and publish your reports on the internet or an intranet or
extranet.
• Create reports that can be easily ported between different systems and databases and
that support different printer and display types.
• Create reports that format dates, numbers, and money according to local preferences.
• Integrate SQR with other software packages, such as front-end user interface tools and
spreadsheets.
S Q R F O R P E O P L E S O F T D E V E L O P E R ' S G U I D E
1 - 2 S I M P L E S Q R P R O G R A M P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L
• Extend SQR with procedures and functions written in C.
• Test and debug your programs.
• Tune your programs for optimum performance.
These tips and techniques will help you take advantage of the advanced capabilities of SQR
for PeopleSoft. Many of these techniques will save you time in developing reports for your
organization.
The code examples also demonstrate standard SQR programming style. PeopleSoft
recommends that you adopt this standard style because it will make your code easier for other
SQR programmers to understand.
The program examples in this guide can be run without modification against the Oracle,
SYBASE, and Informix databases. The examples can also be run against other databases with
minor modifications.
Audience
This guide was written for programmers developing reports for relational databases. To use
this guide effectively, you need a working knowledge of SQL and experience in writing
software programs. You also must be familiar with your particular database and operating
system.
How to Use the SQR for PeopleSoft Developer’ s Guide
If this is your first time using SQR for PeopleSoft, the first three parts of this guide (through
Chapter 15) provide everything that you need to get started. The remaining chapters of the
Developer’s Guide cover advanced features and more technical issues.
You can use this book by simply reading it and studying the code examples. However, we
encourage you to try these programs for yourself and to experiment with them. Make some
changes to our code examples and see how they run.
To use the sample programs, you must first install SQR for PeopleSoft. If you have not
already installed SQR for PeopleSoft on your system, see the installation instructions provided
with SQR for PeopleSoft.
If you installed all of the program components, the sample programs are located in the tutorial
directory. If you did not include the Developer’s Guide files in the original installation, you
may want to rerun the installation program to install just these files.
You can run the Developer’s Guide programs on any hardware platform, but you may find it
somewhat easier to review SQR program results from the Windows platform, and using the
SQR Viewer or web browser to check results.
S Q R F O R P E O P L E S O F T D E V E L O P E R ' S G U I D E
P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L S I M P L E S Q R P R O G R A M 1 - 3
Note. You can set up the sample database and run the sample programs with any username
and password. PeopleSoft recommends, however, that you use an account that does not hold
important data.
Related Documents
In addition to this Developer’s Guide, the SQR for PeopleSoft application also includes the
following documentation, SQR Language Reference contains a complete reference to SQR
commands, arguments, and command-line flags.
Syntax Conventions
Syntax and code examples use the following conventions:
Symbol Description
{ } Braces enclose required items.
[ ] Square brackets enclose optional items.
... An ellipsis indicates that the preceding parameter can be
repeated.
| A vertical bar separates alternatives within brackets,
braces, or parentheses.
' A single quote starts and ends a literal text constant or any
argument that has more than one word.
(Important: If you are copying codes directly from the
examples in the PDF file, make sure that you change the
slanted quotes to regular quotes or else you will receive an
error message.)
, A comma separates multiple arguments.
( ) Parentheses must enclose an argument or element.
BOLD UPPERCASE SQR commands and arguments are specified in bold
uppercase.
Italic Information and values that you must supply are specified
in italics.
Setting Up the Sample Database
To run the sample programs in this guide, you must create a sample database. To do so, run
the loadall.sqr program.
Change to the SAMPLE directory. On the command line, enter:
sqr loadall username/password
S Q R F O R P E O P L E S O F T D E V E L O P E R ' S G U I D E
1 - 4 S I M P L E S Q R P R O G R A M P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L
If SQR is installed on Windows NT or Windows 95, you can run loadall.sqr by double-
clicking the Loadall icon. If your system does not display this icon, run loadall.sqr from the
SAMPLEW directory of SQR for PeopleSoft.
If an individual table already exists, you are prompted to:
A—Abort the load.
S—Skip the specified table.
R—Reload the specified table.
C—Reload all tables.
You can also run this as a batch program by the preferred option (A, S, R, or C) on the
command-line. For example:
sqr loadall username/password a
Sample Program - Printing a Text String
The first sample program is the simplest SQR program. It prints a text string.
Program ex0a.sqr
begin-program
print 'An SQR Program.' (1,1)
end-program
Note. For your convenience, all of the program examples and their output files are included
with the installation.
Creating and Running an SQR Program
Open a text editor and enter the code in the sample program exactly as shown or open the
ex1a.sqr file found in the TUTORIAL directory.
If you are writing the sample program code, the next step is to save your code. SQR programs
usually have a file extension of .sqr. Save this program with the name ex1a.sqr.
Run the sample program. Use the command appropriate to your operating system to change to
the directory in which you saved the program. Then, enter the appropriate SQR program
command at the system command prompt or from within the SQR application’s graphical user
interface (GUI), where available. SQR on UNIX systems is always run from the command
line. You can run SQR from the command line or from a GUI on Windows systems.
If you are entering the information from the command line, include “sqr” or “sqrw”, the SQR
program name and connectivity string, all on one line. On SQR for Windows systems, SQR is
invoked from the command line with “sqrw”. On UNIX systems, SQR is invoked from the
command line with “sqr”. The following syntax shows you how to run SQR from the
command line:
S Q R F O R P E O P L E S O F T D E V E L O P E R ' S G U I D E
P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L S I M P L E S Q R P R O G R A M 1 - 5
[sqr or sqrw] [program] [connectivity] [flags ...] [args ...] [@file ...]
In a common configuration, you may be running SQR on Windows NT against an Oracle
database located on another machine in your network. The command that you run has the
following format:
sqrw ex1a username/[email protected] -KEEP
If you correctly replace username, password, and servername with the appropriate
information, you should have a command line similar to:
sqrw ex1a sammy/[email protected] -KEEP
To produce the desired output file for this exercise, the -KEEP flag is used in our example. We
explain the -KEEP flag later in this guide.
See Also
SQR for PeopleSoft Language Reference Guide, "SQR Command-Line Arguments" and "SQR
Command-Line Flags" for an explanation of connectivity, flags, and arguments.
SQR Output
SQR normally places the SQR program output files in the directory from which you run the
program. The output file has the same file name as the SQR file that created it, but the file
extension is different.
The output files should appear as soon as your program has finished running. If you specified
the -KEEP argument, one output file is in SQR Portable Format (recognizable by its .SPF
extension). SQR Portable Format is discussed later in this guide but for now, you can easily
view the sample program’s .SPF file output, ex1a.spf, on Windows platforms with the SQR
Viewer GUI (sometimes referred to as an “SPF viewer"). The SQR Viewer is invoked from
the command line with “sqrwv”.
On Windows and UNIX systems, the program also produces an output file with an .LIS
extension. You can view this output file type from the command line with such commands as
TYPE on Windows systems or CAT, MORE, and VI on UNIX systems. Use the command
appropriate to your system to view or print the .LIS file.
No matter what platform you are using, the output looks like this:
Output for Program ex1a.sqr
An SQR Program.
You may also see a character such as ^L, or <FF> at the end of this output file. It is the form
feed character that ejects the last page. In this guide, we do not show the form-feed characters.
S Q R F O R P E O P L E S O F T D E V E L O P E R ' S G U I D E
1 - 6 S I M P L E S Q R P R O G R A M P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L
Understanding the SQR Commands
Take another look at sample program ex1a.sqr. This program consists of three lines of code,
starting with BEGIN-PROGRAM and ending with END-PROGRAM. These two commands
and the code between them make up the PROGRAM section, which is used to control the
order of processing. The PROGRAM section is required, and you may have only one. It is
typically placed at or near the top of the program.
The PROGRAM section contains a PRINT command, which in this case prints the text “An
SQR Program.” This text is enclosed in single quotation marks ('), which are used in SQR to
distinguish literal text from other program elements.
The last element of the PRINT command gives the position on the output page. An output
page can be thought of as a grid of lines and columns. The “(1,1)” indicates line one, column
one, which is the top left corner of the page.
Note. In SQR, you must place each command on a new line. You can indent SQR commands.
Summary
• The PROGRAM section is where execution of the program begins.
• The PRINT command can be used to print a text string.
• Print position can be expressed by a pair of numbers enclosed in parentheses.
• Enter each command on a new line.
P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L H E A D I N G S A N D F O O T I N G S 2 - 1
C H A P T E R 2
Headings and Footings
This chapter presents a sample program and explains how to create page headings and
footings using the BEGIN-HEADING and BEGIN-FOOTING commands.
Understanding the Page in SQR
Typically, every page of a report has some information about the report itself, such as the title,
the date, and the page number. In SQR, the page can be subdivided into three logical areas:
• The top area of the page is the heading, which is where the report title and the date
normally print.
• The bottom area of the page is the footing, which is where the page number normally
prints.
• The middle part of the page is called the body, which is where the report data prints.
The following diagram shows the structure of a page in SQR with the heading, body, and
footing.
Heading
Body
Footing
1234123456789101112345
Heading
lines
Body lines
Footing
lines
The structure of an SQR page
The heading, body, and footing of the page each have independent line numbers. You can
print in each of these page areas using line numbers that are relative to the top corner of that
area without being concerned about the size of the other areas. In other words, you can print to
the first line of the body using line number 1, independent of the size of the heading.
S Q R F O R P E O P L E S O F T D E V E L O P E R ' S G U I D E
2 - 2 H E A D I N G S A N D F O O T I N G S P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L
Sample Program - Adding the Heading and Footing
You can expand the program you wrote in the chapter "Simple SQR Program" by adding a
page heading and footing. Here is that program with the additional code required to add a page
heading and footing:
Program ex1b.sqr
begin-program
print 'An SQR Program.' (1,1)
end-program
begin-heading 1
print 'Tutorial Report' (1) center
end-heading
begin-footing 1
! print "Page n of m" in the footing
page-number (1,1) 'Page '
last-page () ' of '
end-footing
Output for Program ex1b.sqr
Tutorial Report
An SQR Program.
Page 1 of 1
Creating Page Headings and Footings
This section explains how to add a page heading and a page footing in an SQR program and
also discusses the order of execution of the commands.
Page Heading
You define the page heading in the HEADING section. The section starts with
BEGIN-HEADING and ends with END-HEADING. The BEGIN-HEADING command is
followed by a number, which is the number of lines reserved for the heading. In our example,
the heading takes exactly one line and consists of the text “Tutorial Report.” The CENTER
argument ensures that the text is centered on the line.
S Q R F O R P E O P L E S O F T D E V E L O P E R ' S G U I D E
P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L H E A D I N G S A N D F O O T I N G S 2 - 3
Page Footing
You define the page footing in the FOOTING section, which starts with BEGIN-FOOTING
and ends with END-FOOTING. The command BEGIN-FOOTING is followed by the number
1, which means that the footing takes one line. This line consists of the text “Page 1 of 1.”
Note that any space reserved for the heading and footing is taken from the body area of the
page. With one line each in the heading and footing, the maximum possible size of the body of
our report is reduced by two lines. Note also that line 1 of the body is actually the first line
after the heading.
Comments
The first line in the FOOTING section is a comment. Comments are preceded by an
exclamation mark, and they extend from the exclamation mark to the end of the line. If you
want to print an exclamation mark, you must enter it twice to tell SQR not to take it as the
beginning of a comment. For example:
print 'An SQR Program!!' (1,1)
Page Numbering
The PAGE-NUMBER command prints the text “Page “ and the current page number. The
LAST-PAGE command prints the number of the last page, preceded by the word “of,” which
is bracketed by spaces. In our example, SQR prints “Page 1 of 1” because there is only one
page.
Print Position
Note the parentheses in the PRINT, PAGE-NUMBER, and LAST-PAGE commands.
Numbers in these parentheses give the position for printing. A position in SQR is expressed as
three numbers in parentheses—(line,column,width)—where line is the line number, column is
the column (character position), and width is the width of the text.
In many cases, a position consists only of the line and column numbers. The width is normally
omitted because it is set by default to the width of the text being printed. If you also omit the
line and column numbers, the print position is set by default to the current position, the
position following the last item printed. In the example, the LAST-PAGE command has the
position “()” so the current position here is the position following the page number.
Print position is a point within the area of the page, or more precisely, within the heading,
body, or footing. The position (1,1) in the heading is not the same as the position (1,1) in the
body. Line 1 of the body is the first line below the heading. In the program, the heading has
only one line, so line 1 of the body is actually the second line of the page. Similarly, line 1 of
the footing is at the bottom of the page. It is the first line following the body.
Order of Execution
The PRINT command places text in memory, not on paper. SQR for PeopleSoft always
prepares a page in memory before printing it to paper, performing the body first, then the
S Q R F O R P E O P L E S O F T D E V E L O P E R ' S G U I D E
2 - 4 H E A D I N G S A N D F O O T I N G S P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L
HEADING and FOOTING sections. In this case, “An SQR Program” is executed first, then
“Tutorial Report” and “Page 1 of 1.”
Summary
• An SQR program can have HEADING and FOOTING sections, which create the
heading and footing of a report page.
• The CENTER option of the PRINT command centers text on a line.
• Exclamation marks are used to precede comments.
• Page numbers can be printed in a “Page n of m” format with the PAGE-NUMBER
and LAST-PAGE commands.
• Print positions are expressed by numbers enclosed in parentheses.
P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L S E L E C T I N G D A T A F R O M T H E D A T A B A S E 3 - 1
C H A P T E R 3
Selecting Data From the Database
This section presents a sample SQR program and describes how to write a program that lists
data from the database and prints it in columns.
Sample Program - Listing and Printing Data
Here is the code of a sample program that selects data from the database and prints it in
columns.
Program ex2b.sqr
begin-program
do list_customers
end-program
begin-heading 4
print 'Customer Listing' (1) center
print 'Name' (3,1)
print 'City' (,32)
print 'State' (,49)
print 'Phone' (,55)
end-heading
begin-footing 1
! Print "Page n of m" in the footing
page-number (1,1) 'Page '
last-page () ' of '
end-footing
begin-procedure list_customers
begin-select
name (,1)
city (,32)
state (,49)
phone (,55)
position (+1) ! Advance to the next line
S Q R F O R P E O P L E S O F T D E V E L O P E R ' S G U I D E
3 - 2 S E L E C T I N G D A T A F R O M T H E D A T A B A S E P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L
from customers
end-select
end-procedure ! list_customers
Output for Program ex2b.sqr
Customer Listing
Name City State Phone
Gregory Stonehaven Everretsville OH 2165553109
Craig Conway New York NY 2125552311
Eliot Richards Queens NY 2125554285
Isaiah J Schwartz and Company Zanesville OH 5185559813
Harold Alexander Fink Davenport IN 3015553645
Harriet Bailey Mamaroneck NY 9145550144
Clair Butterfield Teaneck NJ 2015559901
Quentin Fields Cleveland OH 2165553341
Jerry's Junkyard Specialties Frogline NH 6125552877
Kate's Out of Date Dress Shop New York NY 2125559000
Sam Johnson Bell Harbor MI 3135556732
Joe Smith and Company Big Falls NM 8085552124
Corks and Bottles, Inc. New York NY 2125550021
Harry's Landmark Diner Miningville IN 3175550948
Page 1 of 1
Understanding the SQR Program
The PROGRAM section consists of a single DO command, which invokes the procedure
list_customers.
In SQR, a procedure is a group of commands that are performed one after the other, like a
procedure (or subroutine) in other programming languages. A DO command invokes a
procedure.
PeopleSoft recommends that you break your program logic into procedures and keep the
PROGRAM section small. It should normally consist of a few DO commands for the main
components of your report.
The HEADING section (shown again here) creates headings for the report columns. Four lines
are reserved for the heading.
S Q R F O R P E O P L E S O F T D E V E L O P E R ' S G U I D E
P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L S E L E C T I N G D A T A F R O M T H E D A T A B A S E 3 - 3
begin-heading 4
print 'Customer Listing' (1) center
print 'Name' (3,1)
print 'City' (,32)
print 'State' (,49)
print 'Phone' (,55)
end-heading
The title Customer Listing is printed on line 1. Line 2 is left blank. The first column heading,
Name is positioned at line 3 of the heading, character position 1. The rest of the column-
heading commands omit the line numbers in their positions and are set by default to the
current line. Line 4 of the heading is left blank.
SQR SELECT Statement
The BEGIN-SELECT command is the principal method of retrieving data from the database
and printing it in a report. Look again at the list_customers procedure, which starts with
BEGIN-PROCEDURE and ends with END-PROCEDURE. Note the comment following the
END-PROCEDURE command. It indicates that the procedure is being ended, which is helpful
when you have a program with many procedures. (You can also omit the exclamation point:
END-PROCEDURE main.)
The procedure itself contains a select paragraph, which starts with BEGIN-SELECT and ends
with END-SELECT.
The select paragraph is unique. It combines a SQL select statement with SQR processing in a
seamless way. The actual SQL statement is:
SELECT NAME, CITY, STATE, PHONE
FROM CUSTOMERS
Syntax of the SELECT Statement
In an SQR select paragraph, the word SELECT is omitted, and there are no commas between
the column names. Instead, each column is on its own line. You can also place SQR
commands between the column names, and these commands are executed for every record
that the select fetches.
Note. You must name each individual column in a table—the SELECT * FROM statement is
not allowed in SQR.
SQR distinguishes column names from SQR commands in a SELECT paragraph by their
indentation. Column names must be placed at the beginning of a line. SQR commands must be
indented at least one space—in the following example, the POSITION command is indented
to prevent it from being taken as a column name. The word FROM must be the first word in a
line. The rest of the SQR select statement is then written freely, after SQL syntax.
S Q R F O R P E O P L E S O F T D E V E L O P E R ' S G U I D E
3 - 4 S E L E C T I N G D A T A F R O M T H E D A T A B A S E P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L
You can think of the SELECT paragraph as a loop. The SQR commands, including printing of
columns, are executed in a loop, once for each record that SELECT returns. The loop ends
after the last record is returned.
Positioning Data
In a SELECT statement (repeated here), you see positioning after each column name. This
positioning implies a PRINT command for that column. As before, omitting the line number
in the position causes it to be set by default to the current line.
begin-select
name (,1)
city (,32)
state (,49)
phone (,55)
position (+1) ! Advance to the next line
from customers
end-select
The implied PRINT command is a special SQR feature designed to save you coding time. It
works only inside a SELECT paragraph.
After the last column, there is a POSITION command: POSITION(+1). The plus sign (or
minus sign) indicates relative positioning in SQR. A plus sign moves the print position
forward from the current position, and a minus sign moves it back. The “+1” in our program
specifies one line down from the current line. This command advances the current print
position to the next line.
Note. When you indicate print positions using plus or minus signs, be sure your numbers do
not specify a position outside the page boundaries.
Summary
• The DO command invokes a procedure.
• A procedure begins with BEGIN-PROCEDURE and ends with END-PROCEDURE.
• A SELECT paragraph begins with BEGIN-SELECT and ends with END-SELECT.
• SQR commands in a SELECT paragraph must be indented at least one space to
prevent them from being taken for column names.
• In a SELECT statement, you can print a column by entering it at the beginning of a
line with a position qualifier. This is called an implied PRINT command.
• The POSITION command specifies a position in SQR.
P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L C O L U M N V A R I A B L E S 4 - 1
C H A P T E R 4
Column Variables
This chapter explains how to:
• Use a column variable in a condition.
• Change the column variable name.
Using a Column Variable in a Condition
You can name database columns with variables and use their values in conditions and
commands.
When you select columns from the database in a SELECT paragraph, you can immediately
print them using a position. For example:
begin-select
phone (,1)
position (+1)
from customers
end-select
But what if you want to use the value of phone for another purpose, for example, in a
condition? The following example shows you how to do this.
begin-program
do list_customers
end-program
begin-procedure list_customers
begin-select
phone
if &phone = ''
print 'No phone' (,1)
else
print &phone (,1)
end-if
position (+1)
from customers
end-select
S Q R F O R P E O P L E S O F T D E V E L O P E R ' S G U I D E
4 - 2 C O L U M N V A R I A B L E S P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L
end-procedure ! list_customers
The phone column is an SQR column variable. Column variables are preceded with an
ampersand (&).
Unlike other program variables, column variables are read-only. You can use their existing
value, but you cannot assign a new value to a column variable.
In the sample program, &phone is a column variable that you can use in SQR commands as if
it were a string, date, or numeric variable, depending on its contents. In the condition, &phone
is compared to ' ', an empty string. If &phone is an empty string, the program prints “No
phone” instead.
Changing the Column Variable Name
Note that the column variable &phone inherited its name from the phone column. This is the
default, but you can change it, as the following example demonstrates.
begin-select
phone &cust_phone
if &cust_phone = ''
print 'No phone' (,1)
else
print &cust_phone (,1)
end-if
position (+1)
from customers
end-select
Why would you want to change the name of the column variable? One reason is that you may
want to use a selected column in an expression that has no name. For example:
begin-select
count(name) &cust_cnt (,1)
if &cust_cnt < 100
print 'Less than 100 customers'
end-if
position (+1)
from customers
group by city, state
end-select
In this example, the expression count(name) is selected. In the program, you store this
expression in the column variable &cust_cnt and refer to it afterwards by that name.
Summary
• In SQR, you can refer to database columns as variables. Precede a column variable
with an ampersand (&).
S Q R F O R P E O P L E S O F T D E V E L O P E R ' S G U I D E
P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L C O L U M N V A R I A B L E S 4 - 3
• Column variables can be used in commands and conditions. You can rename column
variables to receive the value of expressions.
P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L U S I N G B R E A K L O G I C 5 - 1
C H A P T E R 5
Using Break Logic
This section describes techniques for using break logic in your SQR programs. It also presents
some additional techniques to enhance the appearance of reports that use break logic. It
discusses how to:
• Use ON-BREAK.
• Skip lines between breaks.
• Arrange multiple break columns.
• Use break processing enhancements.
• Set break procedures with BEFORE and AFTER.
• Control page breaks with multiple ON-BREAK columns.
• Use ON-BREAK on a hidden column.
• Understand the restrictions and limitations of ON-BREAK.
Understanding Break Logic
A break is a change in the value of a column or variable. Records with the same value—for
example, records with the same value for state—logically belong to a group. When a break
occurs, a new group begins.
There are a number of reasons to use break logic in a report. It enables you to:
• Add white space to your reports.
• Avoid printing redundant data.
• Perform conditional processing on variables that change.
• Print subtotals.
For example, you may want to prepare a sales report with records grouped by product, region,
or salesperson (or all three). Break logic enables you to do all that and more—you can print
column headings, count records, subtotal a column, and perform additional processing on the
count or subtotal.
S Q R F O R P E O P L E S O F T D E V E L O P E R ' S G U I D E
5 - 2 U S I N G B R E A K L O G I C P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L
To understand break logic, you can write a program similar to the one in the chapter
"Selecting Data from the Database" and then add break logic to it. The break logic makes the
grouping more apparent.
Here is the program without break logic.
Program ex4a.sqr
begin-program
do list_customers
end-program
begin-heading 2
print 'State' (1,1)
print 'City' (1,7)
print 'Name' (1,24)
print 'Phone' (1,55)
end-heading
begin-procedure list_customers
begin-select
state (,1)
city (,7)
name (,24)
phone (,55)
position (+1) ! Advance to the next line
from customers
order by state, city, name
end-select
end-procedure ! list_customers
Output for Program ex4a.sqr
State City Name Phone
IN Davenport Harold Alexander Fink 3015553645
IN Miningville Harry's Landmark Diner 3175550948
MI Bell Harbor Sam Johnson 3135556732
NH Frogline Jerry's Junkyard Specialties 6125552877
NJ Teaneck Clair Butterfield 2015559901
NM Big Falls Joe Smith and Company 8085552124
NY Mamaroneck Harriet Bailey 9145550144
NY New York Craig Conway 2125552311
NY New York Corks and Bottles, Inc. 2125550021
NY New York Kate's Out of Date Dress Shop 2125559000
NY Queens Eliot Richards 2125554285
OH Cleveland Quentin Fields 2165553341
S Q R F O R P E O P L E S O F T D E V E L O P E R ' S G U I D E
P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L U S I N G B R E A K L O G I C 5 - 3
OH Everretsville Gregory Stonehaven 2165553109
OH Zanesville Isaiah J Schwartz and Company 5185559813
When you sort the output by state, city, and name (note the ORDER BY clause in the BEGIN-
SELECT), the records are grouped by state. To make the grouping more apparent, you can
add a break.
Using ON-BREAK
In the following program, the ON-BREAK option of the PRINT command accomplishes two
related tasks—it starts a new group each time the value of state changes, and prints state only
when its value changes. Note that ON-BREAK works as well for implicit as for explicit
PRINT commands, such as in the following example, where state, city, name, and phone are
implicitly printed as part of the SELECT paragraph.
The program here is identical to ex5a.sqr with the exception of the line that prints the state
column. This line appears in bold.
Program ex4b.sqr
begin-program
do list_customers
end-program
begin-heading 2
print 'State' (1,1)
print 'City' (1,7)
print 'Name' (1,24)
print 'Phone' (1,55)
end-heading
begin-procedure list_customers
begin-select
state (,1) on-break
city (,7)
name (,24)
phone (,55)
position (+1) ! Advance to the next line
from customers
order by state, city, name
end-select
end-procedure ! list_customers
Output for Program ex4b.sqr
S Q R F O R P E O P L E S O F T D E V E L O P E R ' S G U I D E
5 - 4 U S I N G B R E A K L O G I C P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L
State City Name Phone
IN Davenport Harold Alexander Fink 3015553645
Miningville Harry's Landmark Diner 3175550948
MI Bell Harbor Sam Johnson 3135556732
NH Frogline Jerry's Junkyard Specialties 6125552877
NJ Teaneck Clair Butterfield 2015559901
NM Big Falls Joe Smith and Company 8085552124
NY Mamaroneck Harriet Bailey 9145550144
New York Craig Conway 2125552311
New York Corks and Bottles, Inc. 2125550021
New York Kate's Out of Date Dress Shop 2125559000
Queens Eliot Richards 2125554285
OH Cleveland Quentin Fields 2165553341
Everretsville Gregory Stonehaven 2165553109
Zanesville Isaiah J Schwartz and Company 5185559813
With break processing, the state abbreviation is printed only once for each group.
Skipping Lines Between Groups
You can further enhance the visual effect of break processing by inserting one or more lines
between groups. To do so, use the SKIPLINES qualifier with ON-BREAK. Here is the
list_customers procedure from ex5b.sqr, with the modified line shown in bold.
begin-select
state (,1) on-break skiplines=1
city (,7)
name (,24)
phone (,55)
position (+1) ! Advance to the next line
from customers
order by state, city, name
end-select
Output for modified Program ex4b.sqr
State City Name Phone
IN Davenport Harold Alexander Fink 3015553645
Miningville Harry's Landmark Diner 3175550948
MI Bell Harbor Sam Johnson 3135556732
S Q R F O R P E O P L E S O F T D E V E L O P E R ' S G U I D E
P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L U S I N G B R E A K L O G I C 5 - 5
NH Frogline Jerry's Junkyard Specialties 6125552877
NJ Teaneck Clair Butterfield 2015559901
NM Big Falls Joe Smith and Company 8085552124
NY Mamaroneck Harriet Bailey 9145550144
New York Craig Conway 2125552311
New York Corks and Bottles, Inc. 2125550021
New York Kate's Out of Date Dress Shop 2125559000
Queens Eliot Richards 2125554285
OH Cleveland Quentin Fields 2165553341
Everretsville Gregory Stonehaven 2165553109
Zanesville Isaiah J Schwartz and Company 5185559813
Arranging Multiple Break Columns
As you can see in the previous example, you can also have multiple customers within a city.
You can apply the same break concept to the city column to make this grouping of customers
more apparent. Add another ON-BREAK to the program so that city is also printed only when
its value changes.
When you have multiple breaks, you must arrange them in a hierarchy. In the sample program,
the breaks concern geographical units, so it is logical to arrange them according to size—first
state, then city. This sort of arrangement is called nesting, and the breaks can be considered
nested.
To ensure that the breaks are properly nested, use the LEVEL keyword. This argument
numbers breaks by level and specifies that the columns are printed in order of increasing break
levels, from left to right. Number your breaks in the same order in which they are sorted in the
ORDER BY clause.
See “Understanding the Order of Events" for more information about LEVEL.
The LEVEL qualifier enables you to control the order in which you call break procedures.
You will learn more about this technique in "Setting Break Procedures with BEFORE and
After". The next example is identical to ex5a.sqr with the exception of the two lines that print
the state and city columns. These two lines are shown in bold.
Program ex4c.sqr
begin-program
do list_customers
end-program
S Q R F O R P E O P L E S O F T D E V E L O P E R ' S G U I D E
5 - 6 U S I N G B R E A K L O G I C P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L
begin-heading 2
print 'State' (1,1)
print 'City' (1,7)
print 'Name' (1,24)
print 'Phone' (1,55)
end-heading
begin-procedure list_customers
begin-select
state (,1) on-break level=1
city (,7) on-break level=2
name (,24)
phone (,55)
position (+1) ! Advance to the next line
from customers
order by state, city, name
end-select
end-procedure ! list_customers
Output for Program ex4c.sqr
State City Name Phone
IN Davenport Harold Alexander Fink 3015553645
Miningville Harry's Landmark Diner 3175550948
MI Bell Harbor Sam Johnson 3135556732
NH Frogline Jerry's Junkyard Specialties 6125552877
NJ Teaneck Clair Butterfield 2015559901
NM Big Falls Joe Smith and Company 8085552124
NY Mamaroneck Harriet Bailey 9145550144
New York Craig Conway 2125552311
Corks and Bottles, Inc.2125550021
Kate's Out of Date Dress Shop 2125559000
Queens Eliot Richards 2125554285
OH Cleveland Quentin Fields 2165553341
Everretsville Gregory Stonehaven 2165553109
Zanesville Isaiah J Schwartz and Company 5185559813
As you can see, there are three customers in New York, so the city name for the second and
third customers is left blank.
S Q R F O R P E O P L E S O F T D E V E L O P E R ' S G U I D E
P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L U S I N G B R E A K L O G I C 5 - 7
Using Break Processing Enhancements
When you use break logic, you may want to enhance your report by controlling page breaks or
calculating counts and totals for the ON-BREAK column. The following example illustrates
these techniques.
The program selects the customer's name, address, and telephone number from the database.
The break processing is performed on the state column. Here is the code.
Program ex4d.sqr
begin-program
do list_customers
end-program
begin-heading 4
print 'Customers Listed by State' (1) center
print $current-date (1,1) Edit 'DD-Mon-YYYY'
print 'State' (3,1)
print 'Customer Name, Address and Phone Number' (,11)
print '-' (4,1,9) fill
print '-' (4,11,40) fill
end-heading
begin-footing 2
! print "Page n of m"
page-number (1,1) 'Page '
last-page () ' of '
end-footing
begin-procedure state_tot
print ' Total Customers for State: ' (+1,1)
print #state_total () edit 999,999
position (+3,1) ! Leave 2 blank lines.
let #cust_total = #cust_total + #state_total
let #state_total = 0
end-procedure ! state_tot
begin-procedure list_customers
let #state_total = 0
let #cust_total = 0
begin-select
! The 'state' field will only be printed when it
! changes. The procedure 'state_tot' will also be
! executed only when the value of 'state' changes.
state (,1) on-break print=change/top-page after=state_tot
name (,11)
S Q R F O R P E O P L E S O F T D E V E L O P E R ' S G U I D E
5 - 8 U S I N G B R E A K L O G I C P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L
addr1 (+1,11) ! continue on second line
addr2 (+1,11) ! continue on third line
city (+1,11) ! continue on fourth line
phone (,+2) edit (xxx)bxxx-xxxx ! Edit for easy reading.
! Skip 1 line between listings.
! Since each listing takes 4 lines, we specify 'need=4' to
! prevent a customer's data from being broken across two pages.
next-listing skiplines=1 need=4
let #state_total = #state_total + 1
from customers
order by state, name
end-select
if #cust_total > 0
print ' Total Customers: ' (+3,1)
print #cust_total () edit 999,999 ! Total customers printed.
else
print 'No customers.' (1,1)
end-if
end-procedure ! list_customers
Output for Program ex4d.sqr
29-Apr-1996 Customers Listed by State
State Customer Name, Address and Phone Number
--------- ----------------------------------------
IN Harold Alexander Fink
32077 Cedar Street
West End
Davenport (301) 555-3645
Harry's Landmark Diner
17043 Silverfish Road
South Park
Miningville (317) 555-0948
Total Customers for State: 2
MI Sam Johnson
37 Cleaver Street
Sandy Acres
Bell Harbor (313) 555-6732
S Q R F O R P E O P L E S O F T D E V E L O P E R ' S G U I D E
P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L U S I N G B R E A K L O G I C 5 - 9
Total Customers for State: 1
NH Jerry's Junkyard Specialties
Crazy Lakes Cottages
Rural Delivery #27
Frogline (612) 555-2877
Total Customers for State: 1
NJ Clair Butterfield
371 Youngstown Blvd
Quit Woods
Teaneck (201) 555-9901
Total Customers for State: 1
NM Joe Smith and Company
1711 Sunset Blvd
East River
Big Falls (808) 555-2124
Total Customers for State: 1
NY Craig Conway
2837 East Third Street
Greenwich Village
New York (212) 555-2311
Page 1 of 2
29-Apr-1996 Customers Listed by State
State Customer Name, Address and Phone Number
--------- ----------------------------------------
NY Corks and Bottles, Inc.
167 East Blvd.
Jamaica
New York (212) 555-0021
S Q R F O R P E O P L E S O F T D E V E L O P E R ' S G U I D E
5 - 1 0 U S I N G B R E A K L O G I C P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L
Eliot Richards
2134 Partridge Ave
Jamaica
Queens (212) 555-4285
Harriet Bailey
47 Season Street
Bellevue Park
Mamaroneck (914) 555-0144
Kate's Out of Date Dress Shop
2100 Park Ave
East Side City
New York (212) 555-9000
Total Customers for State: 5
OH Gregory Stonehaven
Middlebrook Road
Grey Quarter
Everretsville (216) 555-3109
Isaiah J Schwartz and Company
37211 Columbia Blvd
Sweet Acres
Zanesville (518) 555-9813
Quentin Fields
37021 Cedar Road
Beachwood
Cleveland (216) 555-3341
Total Customers for State: 3
Total Customers: 14
Page 2 of 2
Take a close look at the code. The data is printed using a select paragraph in the
list_customers procedure. The state and the customer name are printed on the first line. The
customer's address and phone number are printed on the next three lines.
S Q R F O R P E O P L E S O F T D E V E L O P E R ' S G U I D E
P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L U S I N G B R E A K L O G I C 5 - 1 1
The program also uses the argument AFTER=STATE_TOT. This argument calls the state_tot
procedure after each change in the value of state. The order of processing is explained in
"Setting Break Procedures with BEFORE and AFTER".
Handling Page Breaks
If a page break occurs within a group, you may want to reprint headings and the value of the
break column at the top of the new page.
To control the printing of the value, use PRINT=CHANGE/TOP-PAGE. With this qualifier,
the value of the ON-BREAK column is printed when it changes and after every page break. In
this example, the value of state is printed not only when it changes, but whenever the report
starts a new page.
To format records, use the NEXT-LISTING command. This command serves two purposes.
The SKIPLINES=1 argument skips one line between records, then renumbers the current line
as line 1. The NEED=4 argument prevents a listing from being split over two pages by
specifying the minimum number of lines needed to write a new listing on the current page. In
this case, if fewer than four lines are left on a page, SQR starts a new page.
Printing the Date
In the HEADING section, the reserved variable $current-date prints the date and the time.
This variable is initialized with the date and time of the client machine at the start of program
execution. SQR provides predefined, or reserved, variables for a variety of uses.
See SQR for PeopleSoft Language Reference for a list of reserved variables.
In this example, the complete command is: PRINT $current-date (1,1) EDIT
'DD/MM/YYYY'. It prints the date and time at position 1,1 of the heading. The EDIT
argument specifies an edit mask, or format, for printing the date. SQR provides a large variety
of edit masks for use in formatting numbers, dates, and strings. They are fully described in the
SQR for PeopleSoft Language Reference.
Note that the PRINT command for the report title precedes the command for the $current-date
reserved variable, even though the date is on the left and the title is on the right. SQR always
assembles a page in memory before printing, so the order of these commands does not matter
if you use the correct print position qualifiers.
The last two commands in the HEADING section print a string of hyphens under the column
headings. Note the use of the FILL option of the PRINT command. It tells SQR to fill the
specified width with this pattern, which is a useful method to print a line.
In the FOOTING section, we print the “Page n of m” as we did in earlier examples.
S Q R F O R P E O P L E S O F T D E V E L O P E R ' S G U I D E
5 - 1 2 U S I N G B R E A K L O G I C P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L
Obtaining Totals
The program ex5d.sqr also prints two totals—a subtotal of customers in each state and a grand
total of all customers. These calculations are performed with two numeric variables, one for
the subtotals and one for the grand totals. These variables are:
• #state_total
• #cust_total
SQR for PeopleSoft has a small set of variable types. The most common types are numeric
variables and the string variables. All numeric variables in SQR are preceded with a pound
sign (#) and all string variables are preceded with a dollar sign ($). An additional SQR
variable type is the date variable. See "Working with Comma Separated Files-CSV".
In SQR for PeopleSoft, numeric and string variables are not explicitly declared. Instead, they
are implicitly defined by their first use. All numeric variables start out as zero and all string
variables start out as null, so there is normally no need to initialize them. The string variables
are of varying length and can hold long strings of characters and short ones. Assigning a new
value to a string variable automatically adjusts its length.
In the list_customers procedure, #state_total and #cust_total are set to zero at the beginning of
the procedure. This initialization is optional and is done for clarity only. The variable
#state_total is incremented by 1 for every row selected.
When the value of state changes, the program calls the state_tot procedure and prints the value
of #state_total. Note the use of the edit mask EDIT 999,999, which formats the number.
This procedure also employs the LET command. LET is the assignment command in SQR, for
building complex expressions. Here, LET adds the value of #state_total to #cust_total. At the
end of the procedure, #state_total is reset to zero.
The list_customers procedure contains an example of the SQR if-then-else logic. The
condition starts with IF followed by an expression. If the expression evaluates to true or to a
number other than zero, the subsequent commands are executed. Otherwise, if there is an
ELSE part to the IF, those commands are executed. IF commands always end with an
END-IF.
In ex5d.sqr, the value of #cust_total is examined. If it is greater than zero, the query has
returned rows of data, and the program prints the string Total Customers: and the value of
#cust_total.
If #cust_total is equal to zero, the query has not returned any data. In that case, the program
prints the string No customers.
Hyphens and Underscores
You may have noticed that many SQR commands, such as BEGIN-PROGRAM and BEGIN-
SELECT, use a hyphen, whereas procedure and variable names use an underscore.
S Q R F O R P E O P L E S O F T D E V E L O P E R ' S G U I D E
P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L U S I N G B R E A K L O G I C 5 - 1 3
Procedure and variable names can contain either a hyphen or underscore, but PeopleSoft
strongly recommends you use an underscore. Using underscores in procedure and variable
names helps you distinguish them from SQR commands. It also prevents confusion when you
mix variable names and numbers in an expression, where hyphens could be mistaken for
minus signs.
Setting Break Procedures With BEFORE and AFTER
When you print variables with ON-BREAK, you can automatically call procedures before and
after each break in a column. The BEFORE and AFTER qualifiers provide this capability. For
example:
begin-select
state (,1) on-break before=state_heading after=state_tot
The BEFORE qualifier automatically calls the state_heading procedure to print headings
before each group of records of the same state. Similarly, the AFTER qualifier automatically
calls the state_tot procedure to print totals after each group of records.
All BEFORE procedures are automatically invoked before each break, including the first—in
other words, before the SELECT is even processed. Similarly, all AFTER procedures are
invoked after each break, including the last group—in other words, upon completion of the
SELECT.
Understanding the Order of Events
You can define a hierarchy of break columns by using the LEVEL qualifier of ON-BREAK.
In sample program ex5c.sqr, for example, state was defined as LEVEL=1 and city as
LEVEL=2.
When a break occurs at one level, it also forces breaks on variables with higher LEVEL
qualifiers. In the sample program, a break on state also means a break on city.
A break on a variable can initiate many other events. The value can be printed, lines skipped,
procedures automatically called, and the old value saved. It is important to know the order of
events, particularly where there are multiple ON-BREAK columns.
The following SELECT statement has breaks on three levels.
begin-select
state (,1) on-break level=1 after=state_tot skiplines=2
city (,7) on-break level=2 after=city_tot skiplines=1
zip (,45) on-break level=3 after=zip_tot
from customers
order by state, city, zip
end-select
S Q R F O R P E O P L E S O F T D E V E L O P E R ' S G U I D E
5 - 1 4 U S I N G B R E A K L O G I C P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L
The breaks are processed as follows:
1. When zip breaks, the city_tot procedure is executed.
2. When city breaks, first the zip_tot procedure is executed, then the city_tot procedure is
executed, and one line is skipped (SKIPLINES=1). Both city and zip are printed in the
next record.
3. When state breaks, the zip_tot, city_tot, and state_tot procedures are processed in that
order. One line is skipped after the city_tot procedure is executed, and two lines are
skipped after the state_tot procedure is executed. All three columns—state, city, and zip—
are printed in the next record.
The following program (ex5e.sqr) demonstrates the order of events in break processing. It has
three ON-BREAK columns, each with a LEVEL argument and a BEFORE and AFTER
procedure. The BEFORE and AFTER procedures print strings to indicate the order of
processing.
Program ex5e.sqr
begin-setup
declare-Layout
default
end-declare
end-setup
begin-program
do main
end-program
begin-procedure a
print 'AFTER Procedure for state LEVEL 1' (+1,40)
end-procedure
begin-procedure b
print 'AFTER Procedure city LEVEL 2' (+1,40)
end-procedure
begin-procedure c
print 'AFTER Procedure zip LEVEL 3' (+1,40)
end-procedure
begin-procedure aa
print 'BEFORE Procedure state LEVEL 1' (+1,40)
end-procedure
S Q R F O R P E O P L E S O F T D E V E L O P E R ' S G U I D E
P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L U S I N G B R E A K L O G I C 5 - 1 5
begin-procedure bb
print 'BEFORE Procedure city LEVEL 2' (+1,40)
end-procedure
begin-procedure cc
print 'BEFORE Procedure zip LEVEL 3' (+1,40)
end-procedure
begin-procedure main local
begin-select
add 1 to #count
print 'Retrieved row #' (+1,40)
print #count (,+10)Edit 9999
position (+1)
state (3,1) On-Break Level=1 after=a before=aa
city (3,10) On-Break Level=2 after=b before=bb
zip (3,25) On-Break Level=3 after=c before=cc Edit xxxxx
next-listing Need=10
from customers
order by state,city,zip
end-select
end-procedure
begin-heading 3
print $current-date (1,1) edit 'DD-MM-YYYY'
page-number (1,60) 'Page '
last-page () ' of '
print 'STATE' (3,1)
print 'CITY' (3,10)
print 'ZIP' (3,25)
print 'Break Processing sequence' (3,40)
end-heading
Output for Program ex4e.sqr
02-05-1996 Page 1 of 3
STATE CITY ZIP Break Processing sequence
BEFORE Procedure state LEVEL 1
IN Davenport 62130 BEFORE Procedure city LEVEL 2
BEFORE Procedure zip LEVEL 3
S Q R F O R P E O P L E S O F T D E V E L O P E R ' S G U I D E
5 - 1 6 U S I N G B R E A K L O G I C P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L
Retrieved row # 1
Retrieved row # 2
Miningville 40622
AFTER Procedure zip LEVEL 3
AFTER Procedure city LEVEL 2
BEFORE Procedure city LEVEL 2
BEFORE Procedure zip LEVEL 3
Retrieved row # 3
MI Bell Harbor 40674
AFTER Procedure zip LEVEL 3
AFTER Procedure city LEVEL 2
AFTER Procedure for state LEVEL 1
BEFORE Procedure state LEVEL 1
BEFORE Procedure city LEVEL 2
BEFORE Procedure zip LEVEL 3
Retrieved row # 4
NH Frogline 04821
AFTER Procedure zip LEVEL 3
AFTER Procedure city LEVEL 2
AFTER Procedure for state LEVEL 1
BEFORE Procedure state LEVEL 1
BEFORE Procedure city LEVEL 2
BEFORE Procedure zip LEVEL 3
Retrieved row # 5
NJ Teaneck 00355
AFTER Procedure zip LEVEL 3
AFTER Procedure city LEVEL 2
AFTER Procedure for state LEVEL 1
BEFORE Procedure state LEVEL 1
BEFORE Procedure city LEVEL 2
BEFORE Procedure zip LEVEL 3
Retrieved row # 6
NM Big Falls 87893
AFTER Procedure zip LEVEL 3
AFTER Procedure city LEVEL 2
AFTER Procedure for state LEVEL 1
BEFORE Procedure state LEVEL 1
S Q R F O R P E O P L E S O F T D E V E L O P E R ' S G U I D E
P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L U S I N G B R E A K L O G I C 5 - 1 7
BEFORE Procedure city LEVEL 2
BEFORE Procedure zip LEVEL 3
02-05-1996 Page 2 of 3
STATE CITY ZIP Break Processing sequence
Retrieved row # 7
NY Mamaroneck 10833
AFTER Procedure zip LEVEL 3
AFTER Procedure city LEVEL 2
AFTER Procedure for state LEVEL 1
BEFORE Procedure state LEVEL 1
BEFORE Procedure city LEVEL 2
BEFORE Procedure zip LEVEL 3
Retrieved row # 8
New York 10002
AFTER Procedure zip LEVEL 3
AFTER Procedure city LEVEL 2
BEFORE Procedure city LEVEL 2
BEFORE Procedure zip LEVEL 3
Retrieved row # 9
10134
AFTER Procedure zip LEVEL 3
BEFORE Procedure zip LEVEL 3
Retrieved row # 10
10204
AFTER Procedure zip LEVEL 3
BEFORE Procedure zip LEVEL 3
Retrieved row # 11
Queens 10213
AFTER Procedure zip LEVEL 3
AFTER Procedure city LEVEL 2
BEFORE Procedure city LEVEL 2
BEFORE Procedure zip LEVEL 3
Retrieved row # 12
S Q R F O R P E O P L E S O F T D E V E L O P E R ' S G U I D E
5 - 1 8 U S I N G B R E A K L O G I C P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L
OH Cleveland 44121
AFTER Procedure zip LEVEL 3
AFTER Procedure city LEVEL 2
AFTER Procedure for state LEVEL 1
BEFORE Procedure state LEVEL 1
BEFORE Procedure city LEVEL 2
BEFORE Procedure zip LEVEL 3
Retrieved row # 13
Everretsville 40233
AFTER Procedure zip LEVEL 3
AFTER Procedure city LEVEL 2
BEFORE Procedure city LEVEL 2
BEFORE Procedure zip LEVEL 3
02-05-1996 Page 3 of 3
STATE CITY ZIP Break Processing sequence
Retrieved row # 14
Zanesville 44900
AFTER Procedure zip LEVEL 3
AFTER Procedure city LEVEL 2
BEFORE Procedure city LEVEL 2
BEFORE Procedure zip LEVEL 3
AFTER Procedure zip LEVEL 3
AFTER Procedure city LEVEL 2
AFTER Procedure for state LEVEL 1
The following steps explain the order of processing in detail.
1. Process BEFORE Procedures.
BEFORE procedures are processed in ascending order by LEVEL before the first row of the
query is retrieved. If no data is selected, BEFORE procedures are not executed.
2. Select First Row of Data.
The first row of data is selected.
3. Select Subsequent Rows of Data.
Processing of the SELECT command continues. When a break occurs on any column, it also
initiates breaks on columns at the same or higher levels. Events occur in the following order:
S Q R F O R P E O P L E S O F T D E V E L O P E R ' S G U I D E
P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L U S I N G B R E A K L O G I C 5 - 1 9
a. AFTER procedures are processed in descending order from the highest level to the
level of the current ON-BREAK column.
b. SAVE variables are set with the value of the previous ON-BREAK column. See
"Saving a Value When a Break Occurs" for an explanation of the SAVE argument.
c. BEFORE procedures are processed in ascending order from the current level to the
highest level.
d. If SKIPLINES was specified, the current line position is advanced.
e. The value of the new group is printed (unless PRINT=NEVER is specified).
4. Process AFTER Procedures.
After the SELECT is complete, if any rows were selected, AFTER procedures are processed
in descending order by LEVEL.
Controlling Page Breaks With Multiple ON-BREAK Columns
Where multiple columns have ON-BREAK, page breaks need careful planning. While it may
be acceptable to have a page break within a group, you probably would not want to have one
within a record.
You can prevent page breaks within a record by following four simple rules:
• Place ON-BREAK columns ahead of other columns in your SELECT statement.
• Place the lower-level ON-BREAK columns ahead of the higher-level ON-BREAK
columns in your SELECT statement.
• Use the same line positions for all ON-BREAK columns.
• Avoid using WRAP and ON-BREAK together on one column.
Saving a Value When a Break Occurs
In ex5d.sqr, the state_tot procedure prints the total number of customers per state. Because it
is called with the AFTER argument, this procedure is executed only after the value of the ON-
BREAK column, state, has changed.
Sometimes, however, you may want to print the previous value of the ON-BREAK column in
the AFTER procedure. For example, you may want to print the state name and the totals for
each state. Printing the value of state will not work because its value will have changed by the
time the AFTER procedure is called.
The answer is to save the previous break value in a string variable. To do this, use the SAVE
qualifier of ON-BREAK. For example:
begin-select
state (,1) on-break after=state_tot save=$old_state
S Q R F O R P E O P L E S O F T D E V E L O P E R ' S G U I D E
5 - 2 0 U S I N G B R E A K L O G I C P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L
You can then print the value of $old_state in the state_tot procedure.
Using ON-BREAK on a Hidden Column
In some reports, you may want to use the features of break processing without printing the
ON-BREAK variable. For example, you may want to incorporate the ON-BREAK variable
into a subheading. This format might make your report more readable. It is also useful when
you want to leave room on the page for additional columns.
To create such a report, use the “hide” the break variable with the PRINT=NEVER qualifier
and print it in a heading procedure called by BEFORE.
The following code is based on the program ex5b.sqr. The key lines are shown in bold.
Program ex4f.sqr
begin-program
do list_customers
end-program
begin-procedure list_customers
begin-select
state () on-break before=state_heading print=never level=1
city (,1) on-break level=2
name (,18)
phone (,49)
position (+1) ! Advance to the next line
from customers
order by state, city, name
end-select
end-procedure ! list_customers
begin-procedure state_heading
print 'State: ' (+1,1) bold ! Advance a line and print 'State:'
print &state (,8) bold ! Print the state column here
print 'City' (+1,1) bold ! Advance a line and print 'City'
print 'Name' (,18) bold
print 'Phone' (,49) bold
print '-' (+1,1,58) fill
position (+1) ! Advance to the next line
end-procedure ! state_heading
Note. This program has no HEADING section. Instead, a procedure prints column headings
for each state rather than at the top of each page. Note. The &state variable can be referenced
throughout the program, even though the state column was not printed as part of the break.
S Q R F O R P E O P L E S O F T D E V E L O P E R ' S G U I D E
P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L U S I N G B R E A K L O G I C 5 - 2 1
Examine the following line in the program from the SELECT statement:
state () on-break before=state_heading print=never level=1
This line defines the break processing for state. The BEFORE qualifier specifies that the
state_heading procedure is called automatically before each change in state. In this program,
this break is set to LEVEL=1.
The PRINT=NEVER qualifier makes the state column a hidden column and specifies that it is
not printed as part of the SELECT statement. Instead, it is printed in the state_heading
procedure. In this procedure, the state column is referred to as the column variable &state.
The city column is assigned a LEVEL=2 break.
Output for Program ex4f.sqr
State: IN
City Name Phone
----------------------------------------------------------
Davenport Harold Alexander Fink 3015553645
Miningville Harry's Landmark Diner 3175550948
State: MI
City Name Phone
----------------------------------------------------------
Bell Harbor Sam Johnson 3135556732
State: NH
City Name Phone
----------------------------------------------------------
Frogline Jerry's Junkyard Specialties 6125552877
State: NJ
City Name Phone
----------------------------------------------------------
Teaneck Clair Butterfield 2015559901
State: NM
City Name Phone
----------------------------------------------------------
Big Falls Joe Smith and Company 8085552124
State: NY
City Name Phone
----------------------------------------------------------
Mamaroneck Harriet Bailey 9145550144
S Q R F O R P E O P L E S O F T D E V E L O P E R ' S G U I D E
5 - 2 2 U S I N G B R E A K L O G I C P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L
New York Craig Conway 2125552311
Corks and Bottles, Inc. 2125550021
Kate's Out of Date Dress Shop 2125559000
Queens Eliot Richards 2125554285
State: OH
City Name Phone
----------------------------------------------------------
Cleveland Quentin Fields 2165553341
Everretsville Gregory Stonehaven 2165553109
Zanesville Isaiah J Schwartz and Company 5185559813
Restrictions and Limitations of ON-BREAK
ON-BREAK cannot be used with SQR numeric variables. To perform break processing on a
numeric variable, you must first move its value to a string variable and set ON-BREAK on
that. For example:
begin-select
amount_received &amount
move &amount to $amount $$9,999.99
print $amount (+1,1) on-break
from cash_receipts
order by amount_received
end-select
The maximum number of ON-BREAK levels is determined by the ON-BREAK setting in the
[Processing-Limits] section of the PSSQR.INI file. The default is 30, but you may increase
this setting. Its maximum value is 64K-1 (65,535).
See Also
SQR for PeopleSoft Language Reference for information about PSSQR.INI.
Summary
• PRINT ON-BREAK performs special processing when a value changes, such as the
state column in a listing of customer addresses.
• ON-BREAK SKIPLINES inserts space between groups of records.
• ON-BREAK LEVEL arranges breaks hierarchically.
• PRINT=CHANGE/TOP-PAGE prints a column after a page break or after a change in
the column's value.
• NEXT-LISTING keeps a group of lines on the same page.
S Q R F O R P E O P L E S O F T D E V E L O P E R ' S G U I D E
P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L U S I N G B R E A K L O G I C 5 - 2 3
• The SQR reserved variable $current-date holds the current date and time.
• SQR provides numeric, string, and date variables. Numeric variables are preceded
with a pound sign (#) and start out as 0. String variables are preceded with a dollar
sign ($) and start out as null. There is no need to initialize either variable type.
• LET is the SQR assignment command. It enables you to build expressions.
• The BEFORE and AFTER arguments set break procedures.
• The SET and LEVEL qualifiers, in conjunction with BEFORE and AFTER, determine
the order of events.
• The SAVE qualifier saves the value of a previous group to a variable.
• ON-BREAK cannot be used with SQR numeric variables. To perform break
processing on a numeric variable, you must first move its value to a string variable
and set ON-BREAK on that.
• The ON-BREAK setting in the PSSQR.INI file determines the maximum number of
ON-BREAK levels in a program.
P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L S E T U P S E C T I O N 6 - 1
C H A P T E R 6
SETUP Section
This chapter presents an overview of the SQR SETUP section and discusses how to:
• Create the SETUP section.
• Use the DECLARE-LAYOUT command.
• Override the default settings.
• Declare the page orientation.
Understanding the SETUP Section
The SETUP section of the program is where you place all the declarations. Declarations
define certain report characteristics and the source and attributes of various report
components, such as charts and images. The SETUP section is evaluated when your program
is compiled. The SETUP section is not required in a program, but can be useful.
Creating the SETUP Section
The SETUP section, if present, is typically placed at the top of the program before the
PROGRAM section. It begins with BEGIN-SETUP and ends with END-SETUP.
The following commands can be issued in the SETUP section. If used, they are processed at
compile time, before the program begins executing.
See SQR for PeopleSoft Language Reference for more information about the following
commands.
Command Comments
ALTER-LOCALE Can also appear in a procedure.
ASK Allowed only in SETUP section.
BEGIN-SQL Can also appear in a procedure. Executed when a
runtime file (.SQT) is loaded.
CREATE-ARRAY Can also appear in a procedure.
DECLARE-CHART
S Q R F O R P E O P L E S O F T D E V E L O P E R ' S G U I D E
6 - 2 S E T U P S E C T I O N P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L
Command Comments
DECLARE-IMAGE
DECLARE-LAYOUT
DECLARE-PRINTER
DECLARE-PRO-
CEDURE
DECLARE-REPORT
DECLARE-TOC
DECLARE-VARIABLE Can also appear in a local procedure.
LOAD-LOOKUP Can also appear in a procedure.
USE SYBASE only.
Using DECLARE-LAYOUT
One common declaration used in the SETUP section is the DECLARE-LAYOUT command.
This command sets the page layout and includes such important options as the paper size and
margins.
Sample SETUP Program
Here is a typical SETUP section:
begin-setup
! Declare the default layout for this report
declare-layout default
paper-size=(8.5,11)
left-margin=1 right-margin=1
top-margin=1 bottom-margin=1
end-declare
end-setup
In the preceding example, the DECLARE-LAYOUT command sets the paper size to 8 1/2 by
11 inches, with all margins at 1 inch.
In SQR for PeopleSoft, data is positioned on the page using line and character position
coordinates. Think of the page as a grid where each cell holds one character. With such a grid,
in a position qualifier consisting of (line,column,width), column and width are numbers that
denote characters and spaces.
SQR Page Layout
The SQR page layout is shown in the following illustration.
S Q R F O R P E O P L E S O F T D E V E L O P E R ' S G U I D E
P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L S E T U P S E C T I O N 6 - 3
Paper size (width)
Pa
pe
r siz
e (
he
igh
t)Lin
e h
eig
ht
Character width
Top
margin
Right
margin
Bottom
margin
Left
margin
SQR page layout
The diagram indicates how the main attributes of the DECLARE-LAYOUT command affect
the structure of the page. The PAPER-SIZE argument defines the dimensions of the entire
page, including margins. The arguments TOP-MARGIN, LEFT-MARGIN,
BOTTOM-MARGIN, and RIGHT-MARGIN define the margins. In SQR, you cannot print in
the margins.
In the preceding sample code, the left margin uses 10 spaces and the top margin uses 6 lines.
The page width accommodates 65 characters (without the margins) and 54 lines.
The default mapping of characters and lines to inches is 10 CPI (characters per inch) and 6
LPI (lines per inch). This means that each character cell is 1/10 inch wide and 1/6 inch high.
These settings are used when a program does not contain a DECLARE-LAYOUT command.
Overriding the Default Settings
You can override the default settings by using the LINE-HEIGHT and CHAR-WIDTH
arguments in the DECLARE-LAYOUT command. These arguments adjust the dimensions of
the grid, which implies a change in the meaning of column and line. If your DECLARE-
LAYOUT paragraph includes the arguments LINE-HEIGHT=1 and CHAR-WIDTH=1, the
cells in the grid measure 1 point by 1 point (1 point = 1/72 inch or approx. 0.35 mm). In that
case, column is a dimension given in points. The length of a string, however, is still given in
characters.
Alternatively, you can use the MAX-LINES and MAX-COLUMNS arguments of the
DECLARE-LAYOUT command to specify the number of lines on the page and the number of
characters to fit across the page. SQR calculates the line height and character width based on
these settings and the size of the page and margins.
S Q R F O R P E O P L E S O F T D E V E L O P E R ' S G U I D E
6 - 4 S E T U P S E C T I O N P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L
Specify coordinates in terms of lines and character positions. The first line from the top is 1
and the first column (from the left) is 1. There is no coordinate 0.
Declaring the Page Orientation
The DECLARE-LAYOUT command also enables you to declare the page orientation. Note
that this declaration does not affect how SQR uses position coordinates. Line and character
positions are not transposed when page orientation is switched. The only effect of the
ORIENTATION option of the DECLARE-LAYOUT command is that SQR switches the
printer to the specified orientation, portrait or landscape. The default mode is portrait.
Summary
• The SETUP section holds declarations and several commands. Most commands in the
SETUP section are performed at compile time.
• DECLARE-LAYOUT sets the page layout and includes such important options as the
paper size and margins.
P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L M A S T E R / D E T A I L R E P O R T S 7 - 1
C H A P T E R 7
Master/Detail Reports
This chapter presents an overview of master/detail reports and discusses how to:
• Create a master/detail report.
• Correlate subqueries.
Understanding Master/Detail Reports
Master/detail reports show hierarchical information. The information is normally retrieved
from multiple tables that have a one-to-many relationship, such as customers and orders. The
customer information is the “master” and the orders are the “detail.”
Often, you can obtain such information with a single SQR SELECT statement. In such a
program, the data from the master table is joined with data from the detail table. You can
implement break logic as described in the chapter "Break Logic" to group the detail records
for each master record.
This type of report has one major disadvantage—if a master record has no associated detail
records, it is not displayed. If you need to show all master records, whether they have detail
records or not, this type of report will not meet your needs.
Creating a Master/Detail Report
To show all master records, whether they have detail records, you can create a master/detail
report with one SELECT statement that retrieves records from the master table, followed by
separate SELECT statements that retrieve the detail records associated with each master
record.
The code example in this chapter produces just such a report. In our example, one BEGIN-
SELECT returns the names of customers. For each customer, two additional BEGIN-SELECT
commands are executed, one to retrieve order information and another to retrieve payment
information.
The following diagram depicts the BEGIN-SELECT structure in this example.
S Q R F O R P E O P L E S O F T D E V E L O P E R ' S G U I D E
7 - 2 M A S T E R / D E T A I L R E P O R T S P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L
Customers
Orders
Payments
The BEGIN-SELECT structure in the master/detail sample program
When one query returns master information and another query returns detail information, the
detail query is nested within the master query.
Sample Program - Master/Detail Report
In our sample program, one query returns customer names and two nested queries return detail
information. The nested queries are invoked once for each customer, each one retrieving
records that correspond to the current customer. A bind variable correlates the subqueries in
the WHERE clause. This variable correlates the customer number (cust_num) with the current
customer record.
Program ex6a.sqr
begin-program
do main
end-program
begin-procedure main
begin-select
Print 'Customer Information' (,1)
Print '-' (+1,1,45) Fill
name (+1,1,25)
city (,+1,16)
state (,+1,2)
cust_num
do cash_receipts(&cust_num)
do orders(&cust_num)
position (+2,1)
from customers
end-select
end-procedure ! main
begin-procedure cash_receipts (#cust_num)
let #any = 0
begin-select
if not #any
print 'Cash Received' (+2,10)
S Q R F O R P E O P L E S O F T D E V E L O P E R ' S G U I D E
P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L M A S T E R / D E T A I L R E P O R T S 7 - 3
print '-------------' (+1,10)
let #any = 1
end-if
date_received (+1,10,20) edit 'DD-MON-YY'
amount_received (,+1,13) Edit $$$$,$$0.99
from cash_receipts a
where a.cust_num = #cust_num
end-select
end-procedure ! cash_receipts
begin-procedure orders (#cust_num)
let #any = 0
begin-select
if not #any
print 'Orders Booked' (+2,10)
print '-------------' (+1,10)
let #any = 1
end-if
a.order_num
order_date (+1,10,20) Edit 'DD-MON-YY'
description (,+1,20)
c.price * b.quantity (,+1,13) Edit $$$$,$$0.99
from orders a, ordlines b, products c
where a.order_num = b.order_num
and b.product_code = c.product_code
and a.cust_num = #cust_num
end-select
end-procedure ! orders
begin-heading 3
print $current-date (1,1) Edit 'DD-MON-YYYY'
page-number (1,69) 'Page '
end-heading
See Also
“Dynamic SQL and Error Checking”
Correlating Subqueries
SQR sample program ex7a.sqr consists of three procedures, main, cash_receipts, and orders,
which correspond to the three queries. The procedure main is the master. It retrieves the
S Q R F O R P E O P L E S O F T D E V E L O P E R ' S G U I D E
7 - 4 M A S T E R / D E T A I L R E P O R T S P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L
customer names. For each customer, we invoke the procedure cash_receipts to list the cash
receipts, if any, and orders to list the customer’s orders, if any.
The procedures take the variable cust_num as an argument. This feature is discussed in more
detail in "Procedures, Argument Passing, and Local Variables". As you can see, cash_receipts
and orders are called many times, once for each customer. Each time, the procedures perform
the same query with a different value for the cust_num variable in the WHERE clause.
Note the use of the if command and the numeric variable #any in these procedures. When the
BEGIN-SELECT command returns no records, SQR does not execute the following PRINT
commands. Thus, the headings for these procedures are only displayed for those customers
who have records in the detail tables.
The procedure orders demonstrates the use of an expression in the BEGIN-SELECT. The
expression is c.price * b.quantity.
Note. Examine the format of the dollar amount with the argument EDIT “$$$$,$$0.99.” This
format uses a “floating-to-the-right” money symbol. If there are fewer digits than the six that
we specified here, the dollar sign floats to the right and remains close to the number.
See Also
"Working With Comma Separated Files” for more information about formatting dates.
Sample Program Output
Output for Program ex7a.sqr
6-APR-1996 Page 1
Customer Information
---------------------------------------------
Gregory Stonehaven Everretsville OH
Cash Received
-------------
01-FEB-94 $130.00
Customer Information
---------------------------------------------
Craig Conway New York NY
Cash Received
S Q R F O R P E O P L E S O F T D E V E L O P E R ' S G U I D E
P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L M A S T E R / D E T A I L R E P O R T S 7 - 5
-------------
01-MAR-94 $140.00
Customer Information
---------------------------------------------
Eliot Richards Queens NY
Cash Received
-------------
16-JAN-94 $220.12
17-JAN-94 $260.00
Orders Booked
-------------
02-MAY-94 Whirlybobs $239.19
02-MAY-94 Canisters $3,980.25
Customer Information
---------------------------------------------
Isaiah J Schwartz and Com Zanesville OH
Cash Received
-------------
18-JAN-94 $190.00
02-JAN-94 $1,100.00
Orders Booked
-------------
02-MAY-94 Hop scotch kits $6,902.00
02-MAY-94 Wire rings $19,872.90
Customer Information
---------------------------------------------
Harold Alexander Fink Davenport IN
Cash Received
-------------
01-FEB-94 $1,200.00
01-MAR-94 $1,300.00
S Q R F O R P E O P L E S O F T D E V E L O P E R ' S G U I D E
7 - 6 M A S T E R / D E T A I L R E P O R T S P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L
Orders Booked
-------------
19-MAY-94 Ginger snaps $44.28
19-MAY-94 Modeling clay $517.05
Summary
• You can use multiple BEGIN-SELECT commands to retrieve detail information from
different database tables.
• Queries that retrieve detail information are nested in the queries that retrieve master
information.
• Bind Variables join subqueries to the main query.
P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L C R O S S - T A B U L A R R E P O R T S 8 - 1
C H A P T E R 8
Cross-Tabular Reports
This chapter provides an overview of cross-tabular reports and discusses how to:
• Use an array.
• Create an array.
• Use cross-tabular reports to group by category.
• Use multiple arrays.
Understanding Cross-Tabular Reports
Cross-tabular reports are matrix- or spreadsheet-like reports. These reports are useful for
presenting summary numeric data. Cross-tabular reports vary in format. Look at the following
example, which shows sales revenue summarized by product by sales channel.
Revenue by product by sales channel
Product Direct Sales Resellers Mail Order Total
---------- ------------ --------- ----------- -------
A $2,100 $1,209 $0 $3,309
B $120 $311 $519 $950
C $2 $0 $924 $926
---------- ------------ --------- ----------- -------
Total $2,222 $1,520 $1,443 $5,185
This report is based on many sales records. The three middle columns correspond to sales
channel categories. Each row corresponds to a product. The records fall into nine groups: three
products sold through three sales channels. Some groups have no sales (such as mail order for
Product A).
Each category can be a discrete value of some database column or a set of values. For
example, Resellers can be domestic resellers plus international distributors.
A category can also represent a range, as demonstrated in the next example.
Orders by product by order Size
Product
Category Less than 10 10 to 100 More than 100 Total
S Q R F O R P E O P L E S O F T D E V E L O P E R ' S G U I D E
8 - 2 C R O S S - T A B U L A R R E P O R T S P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L
----------- ------------ --------- ------------- -------
Durable 200 120 0 320
Nondurable 122 311 924 1876
----------- ------------ --------- ------------- -------
Total 322 431 1443 2196
In this example, the rows correspond to nondescript categories. Products are classified as
durable or nondurable. The columns represent ranges of order size.
For each record selected, the program must determine the range to which it belongs and add 1
to the count for that category. The numbers in the cells are counts, but they could be sums,
averages, or any other expression.
Of course, there are other types of cross-tabular reports. These reports become more complex
when the number of columns is not predefined and when there are more columns than can fit
across the page.
Understanding Arrays
Often, the program must process all the records before it can begin printing the data. During
the processing, the program must keep the data in a buffer where it can accumulate the
numbers. This can be done in an SQR array.
An array is a unit of storage that consists of rows and columns and exists in memory. An
array is similar to a database table, but it exists only in memory.
The next sample program specifies an array called order_qty to hold the sum of the quantity of
orders in a given month. This specific example could be programmed without an array, but as
you will see, using one can be beneficial. Data retrieved once and stored in an array can be
presented in many ways without additional database queries. The data can even be presented
in a chart, as shown later in "Business Charts."
This example demonstrates an SQR feature called a “three-dimensional array.” This type of
array has fields (columns) and rows, and it also has repeating fields (the third dimension). In
the order_qty array, the first field is the product description. The second field is the order
quantity of each month. There are three months in the example; therefore, this field repeats
three times.
SQR references arrays in expressions such as array_name.field(sub1[,sub2]). Sub1 is the first
subscript, the row number. The row count starts with zero. The second subscript (sub2) is
specified when the field repeats. Repeating fields are also numbered starting with zero. The
subscript can be a literal or an SQR numeric variable.
Program ex7b.sqr
#define max_products 100
begin-setup
create-array
S Q R F O R P E O P L E S O F T D E V E L O P E R ' S G U I D E
P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L C R O S S - T A B U L A R R E P O R T S 8 - 3
name=order_qty size={max_products}
field=product:char field=month_qty:number:3
end-setup
begin-program
do select_data
do print_array
end-program
begin-procedure print_array
let #entry_cnt = #i
let #i = 0
while #i <= #entry_cnt
let $product = order_qty.product(#i)
let #jan = order_qty.month_qty(#i,0)
let #feb = order_qty.month_qty(#i,1)
let #mar = order_qty.month_qty(#i,2)
let #prod_tot = #jan + #feb + #mar
print $product (,1,30)
print #jan (,32,9) edit 9,999,999
print #feb (,42,9) edit 9,999,999
print #mar (,52,9) edit 9,999,999
print #prod_tot (,62,9) edit 9,999,999
position (+1)
let #jan_total = #jan_total + #jan
let #feb_total = #feb_total + #feb
let #mar_total = #mar_total + #mar
let #i = #i + 1
end-while
let #grand_total = #jan_total + #feb_total + #mar_total
print 'Totals' (+2,1)
print #jan_total (,32,9) edit 9,999,999
print #feb_total (,42,9) edit 9,999,999
print #mar_total (,52,9) edit 9,999,999
print #grand_total (,62,9) edit 9,999,999
end-procedure print_array
begin-procedure select_data
begin-select
order_date
! The quantity for this order
quantity
! the product for this order
description
if #i = 0 and order_qty.product(#i) = ''
S Q R F O R P E O P L E S O F T D E V E L O P E R ' S G U I D E
8 - 4 C R O S S - T A B U L A R R E P O R T S P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L
let order_qty.product(#i) = &description
end-if
if order_qty.product(#i) != &description
let #i = #i + 1
if #i >= {max_products}
display 'Error: There are more than {max_products} products'
stop
end-if
let order_qty.product(#i) = &description
end-if
let #j = to_number(datetostr(&order_date,'MM')) - 1
if #j < 3
let order_qty.month_qty(#i,#j) =
order_qty.month_qty(#i,#j) + &quantity
end-if
from orders a, ordlines b, products c
where a.order_num = b.order_num
and b.product_code = c.product_code
order by description
end-select
end-procedure ! select_data
begin-heading 4
print $current-date (1,1)
print 'Order Quantity by Product by Month' (1,18)
page-number (1,64) 'Page '
print 'Product' (3,1)
print ' January' (,32)
print ' February' (,42)
print ' March' (,52)
print ' Total' (,62)
print '-' (4,1,70) Fill
end-heading
Creating the Array
You must define the size of an array when you create it. The program creates the array
order_qty with a size of 100.
The command #DEFINE MAX_PRODUCTS 100 defines the constant max_products as a
substitution variable. The sample program uses this constant to define the size of the array. It
is a good practice to use #DEFINE because it displays our limit at the top of the program
source. Otherwise, it would be hidden in the code.
S Q R F O R P E O P L E S O F T D E V E L O P E R ' S G U I D E
P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L C R O S S - T A B U L A R R E P O R T S 8 - 5
The SETUP section creates the array using the CREATE-ARRAY command. All SQR arrays
are created before the program begins executing. Their size must be known at compile time. If
you do not know exactly how many rows you will have, you must over-allocate and specify an
upper bound. In the example, the array has 100 rows, even though the program only uses 12
rows to process the sample data.
The preceding program has two procedures: select_data and print_array. Select_data
performs the database query, as its name suggests. While the database records are being
processed, nothing prints, and the data accumulates in the array. When the processing is
complete, the procedure print_array does two things. The procedure loops through the array
and prints the data, but it also adds the month totals and prints them at the bottom.
The report summarizes the product order quantities for each month, which are the records
ordered by the product description. The procedure then fills the array one product at a time.
For each record selected, the procedure checks to see if it’s a new product; if it is, the array is
incremented by row subscript #i. The procedure also adds the quantity to the corresponding
entry in the array based on the month.
There is one complication with this program—how to obtain the month. Date manipulation
can vary among databases, and to write truly portable code requires careful planning.
The key is the datetostr function in the following command:
let #j = to_number(datetostr(&order_date, 'MM')) - 1
This function converts the order_date column into a string. (The ‘MM’ edit mask specifies
that only the month part be converted.) The resulting string is then converted to a number; if it
is less than 3, it represents January, February, or March, and is added to the array.
Grouping by Category
The next example is a cross-tabular report that groups the products by price range. This
grouping cannot be done using a SQL GROUP BY clause. Moreover, to process the records in
order of price category, the program would have to sort the table by price. The example shows
how to do it without sorting the data.
The program uses an SQR EVALUATE command to determine the price category and assign
the array subscript #i to 0, 1, or 2. Then it adds the order quantity to the array cell that
corresponds to the price category (row) and the month (column).
Output for Program ex8a.sqr
11-JUN-96 Order Quantity by Product by Month Page 1
Product January February March Total
---------------------------------------------------------------
Canisters 3 0 0 3
Curtain rods 2 8 18 28
Ginger snaps 1 10 0 11
S Q R F O R P E O P L E S O F T D E V E L O P E R ' S G U I D E
8 - 6 C R O S S - T A B U L A R R E P O R T S P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L
Hanging plants 1 20 0 21
Hookup wire 16 15 0 31
Hop scotch kits 2 0 0 2
Modeling clay 5 0 0 5
New car 1 9 0 10
Thimble 7 20 0 27
Thingamajigs 17 0 120 137
Widgets 4 0 12 16
Wire rings 1 0 0 1
Totals 60 82 150 292
Program ex7c.sqr
#define max_categories 3
begin-setup
create-array
name=order_qty size={max_categories}
field=category:char field=month_qty:number:3
end-setup
begin-program
do select_data
do print_array
end-program
begin-procedure print_array
let #i = 0
while #i < {max_categories}
let $category = order_qty.category(#i)
let #jan = order_qty.month_qty(#i,0)
let #feb = order_qty.month_qty(#i,1)
let #mar = order_qty.month_qty(#i,2)
let #category_tot = #jan + #feb + #mar
print $category (,1,31)
print #jan (,32,9) edit 9,999,999
print #feb (,42,9) edit 9,999,999
print #mar (,52,9) edit 9,999,999
print #category_tot (,62,9) edit 9,999,999
position (+1)
let #jan_total = #jan_total + #jan
S Q R F O R P E O P L E S O F T D E V E L O P E R ' S G U I D E
P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L C R O S S - T A B U L A R R E P O R T S 8 - 7
let #feb_total = #feb_total + #feb
let #mar_total = #mar_total + #mar
let #i = #i + 1
end-while
let #grand_total = #jan_total + #feb_total + #mar_total
print 'Totals' (+2,1)
print #jan_total (,32,9) edit 9,999,999
print #feb_total (,42,9) edit 9,999,999
print #mar_total (,52,9) edit 9,999,999
print #grand_total (,62,9) edit 9,999,999
end-procedure print_array
begin-procedure select_data
let order_qty.category(0) = '$0-$4.99'
let order_qty.category(1) = '$5.00-$100.00'
let order_qty.category(2) = 'Over $100'
begin-select
order_date
! the price / price category for the order
c.price &price
move &price to #price_num
evaluate #price_num
when < 5.0
let #i = 0
break
when <= 100.0
let #i = 1
break
when-other
let #i = 2
break
end-evaluate
! The quantity for this order
quantity
let #j = to_number(datetostr(&order_date,'MM')) - 1
if #j < 3
let order_qty.month_qty(#i,#j) =
order_qty.month_qty(#i,#j) + &quantity
end-if
from orders a, ordlines b, products c
where a.order_num = b.order_num
and b.product_code = c.product_code
end-select
end-procedure ! select_data
S Q R F O R P E O P L E S O F T D E V E L O P E R ' S G U I D E
8 - 8 C R O S S - T A B U L A R R E P O R T S P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L
begin-heading 5
print $current-date (1,1)
page-number (1,64) 'Page '
print 'Order Quantity by Product Price Category by Month' (2,11)
print 'Product Price Category' (4,1)
print ' January' (,32)
print ' February' (,42)
print ' March' (,52)
print ' Total' (,62)
print '-' (5,1,70) Fill
end-heading
Output for Program ex8b.sqr
11-JUN-96 Page 1
Order Quantity by Product Price Category by Month
Product Price Category January February March Total
----------------------------------------------------------------------
$0-$4.99 28 45 12 85
$5.00-$100.00 25 28 138 191
Over $100 7 9 0 16
Totals 60 82 150 292
Using Multiple Arrays
Using SQR arrays to buffer the data offers several advantages. In the previous example, you
saw how it eliminated the need to sort the data. Another advantage is that you can combine the
two sample reports into one. With one pass on the data, you can fill the two arrays and then
print the two parts of the report.
The following sample program performs the work done by the first two programs. The
SETUP section specifies two arrays—one to summarize monthly orders by product, and
another to summarize monthly orders by price range.
Program ex7d.sqr
#define max_categories 3
#define max_products 100
begin-setup
S Q R F O R P E O P L E S O F T D E V E L O P E R ' S G U I D E
P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L C R O S S - T A B U L A R R E P O R T S 8 - 9
create-array
name=order_qty size={max_products}
field=product:char field=month_qty:number:3
create-array
name=order_qty2 size={max_categories}
field=category:char field=month_qty:number:3
end-setup
begin-program
do select_data
do print_array
print '-' (+2,1,70) fill
position (+1)
do print_array2
end-program
begin-procedure print_array
let #entry_cnt = #i
let #i = 0
while #i <= #entry_cnt
let $product = order_qty.product(#i)
let #jan = order_qty.month_qty(#i,0)
let #feb = order_qty.month_qty(#i,1)
let #mar = order_qty.month_qty(#i,2)
let #prod_tot = #jan + #feb + #mar
print $product (,1,30)
print #jan (,32,9) edit 9,999,999
print #feb (,42,9) edit 9,999,999
print #mar (,52,9) edit 9,999,999
print #prod_tot (,62,9) edit 9,999,999
position (+1)
let #i = #i + 1
end-while
end-procedure ! print_array
begin-procedure print_array2
let #i = 0
while #i < {max_categories}
let $category = order_qty2.category(#i)
let #jan = order_qty2.month_qty(#i,0)
let #feb = order_qty2.month_qty(#i,1)
let #mar = order_qty2.month_qty(#i,2)
let #category_tot = #jan + #feb + #mar
print $category (,1,31)
print #jan (,32,9) edit 9,999,999
print #feb (,42,9) edit 9,999,999
print #mar (,52,9) edit 9,999,999
S Q R F O R P E O P L E S O F T D E V E L O P E R ' S G U I D E
8 - 1 0 C R O S S - T A B U L A R R E P O R T S P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L
print #category_tot (,62,9) edit 9,999,999
position (+1)
let #jan_total = #jan_total + #jan
let #feb_total = #feb_total + #feb
let #mar_total = #mar_total + #mar
let #i = #i + 1
end-while
let #grand_total = #jan_total + #feb_total + #mar_total
print 'Totals' (+2,1)
print #jan_total (,32,9) edit 9,999,999
print #feb_total (,42,9) edit 9,999,999
print #mar_total (,52,9) edit 9,999,999
print #grand_total (,62,9) edit 9,999,999
end-procedure ! print_array2
begin-procedure select_data
let order_qty2.category(0)='$0-$4.99'
let order_qty2.category(1)='$5.00-$100.00'
let order_qty2.category(2)='Over $100'
begin-select
order_date
! the price / price category for the order
c.price &price
move &price to #price_num
evaluate #price_num
when < 5.0
let #x = 0
break
when <= 100.0
let #x = 1
break
when-other
let #x = 2
break
end-evaluate
! The quantity for this order
quantity
let #j = to_number(datetostr(&order_date,'MM')) - 1
if #j < 3
let order_qty2.month_qty(#x,#j) =
order_qty2.month_qty(#x,#j) + &quantity
end-if
! the product for this order
description
if #i = 0 and order_qty.product(#i) = ''
let order_qty.product(#i) = &description
S Q R F O R P E O P L E S O F T D E V E L O P E R ' S G U I D E
P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L C R O S S - T A B U L A R R E P O R T S 8 - 1 1
end-if
if order_qty.product(#i) != &description
let #i = #i + 1
if #i >= {max_products}
display 'Error: There are more than {max_products} products'
stop
end-if
let order_qty.product(#i) = &description
end-if
if #j < 3
let order_qty.month_qty(#i,#j) =
order_qty.month_qty(#i,#j) + &quantity
end-if
from orders a, ordlines b, products c
where a.order_num = b.order_num
and b.product_code = c.product_code
order by description
end-select
end-procedure ! select_data
begin-heading 5
print $current-date (1,1)
page-number (1,64) 'Page '
print 'Order Quantity by Product and Price Category by Month' (2,10)
print 'Product / Price Category' (4,1)
print ' January' (,32)
print ' February' (,42)
print ' March' (,52)
print ' Total' (,62)
print '-' (5,1,70) Fill
end-heading
Output for Program ex8c.sqr
11-JUN-96 Page 1
Order Quantity by Product and Price Category by Month
Product / Price Category January February March Total
----------------------------------------------------------------------
Canisters 3 0 0 3
Curtain rods 2 8 18 28
Ginger snaps 1 10 0 11
Hanging plants 1 20 0 21
Hookup wire 16 15 0 31
Hop scotch kits 2 0 0 2
S Q R F O R P E O P L E S O F T D E V E L O P E R ' S G U I D E
8 - 1 2 C R O S S - T A B U L A R R E P O R T S P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L
Modeling clay 5 0 0 5
New car 1 9 0 10
Thimble 7 20 0 27
Thingamajigs 17 0 120 137
Widgets 4 0 12 16
Wire rings 1 0 0 1
----------------------------------------------------------------------
$0-$4.99 28 45 12 85
$5.00-$100.00 25 28 138 191
Over $100 7 9 0 16
Totals 60 82 150 292
SQR arrays are also advantageous in programs that produce charts. With the data for the chart
already in the array, presenting this cross-tab as a bar chart is easy.
See Also
“Using Business Charts” for more information about charts.
Summary
• Cross-tabular reports are matrix- or spreadsheet-like reports that are useful for
presenting summary data.
• Use CREATE-ARRAY to assemble data for a report in arrays.
• You can reference arrays in expressions.
• Write procedures to select data for an array and print it.
• Use EVALUATE to place data in the correct row of the array.
• Use multiple arrays to reduce database calls.
P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L P R I N T I N G M A I L I N G L A B E L S 9 - 1
C H A P T E R 9
Printing Mailing Labels
This chapter explains how to print mailing labels and similar information and discusses how
to:
• Define columns and rows.
• Run the print mailing labels program.
Understanding How to Print Mailing Labels
A SQR SELECT paragraph retrieves the addresses and prints them on the page.
Sometimes you need to print labels in multiple columns. The page then becomes a matrix of
rows and columns of labels. SQR enables you to print in column format with the commands
COLUMNS and NEXT-COLUMN in conjunction with NEXT-LISTING.
Sample Program - Printing Mailing Labels
The following program prints mailing labels in a format of three columns by ten rows. It also
counts the number of labels printed and prints that number on the last sheet of the report.
Program ex8d.sqr
#define MAX_LABEL_LINES 10
#define LINES_BETWEEN_LABELS 3
begin-setup
declare-layout default
paper-size=(10,11) left-margin=0.33
end-declare
end-setup
begin-program
do mailing_labels
end-program
begin-procedure mailing_labels
S Q R F O R P E O P L E S O F T D E V E L O P E R ' S G U I D E
9 - 2 P R I N T I N G M A I L I N G L A B E L S P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L
let #label_count = 0
let #label_lines = 0
columns 1 29 57 ! enable columns
alter-printer font=5 point-size=10
begin-select
name (1,1,30)
addr1 (2,1,30)
city
state
zip
move &zip to $zip XXXXX-XXXX
let $last_line = &city || ', ' || &state || ' ' || $zip
print $last_line (3,1,30)
next-column at-end=newline
add 1 to #label_count
if #current-column = 1
add 1 to #label_lines
if #label_lines = {MAX_LABEL_LINES}
new-page
let #label_lines = 0
else
next-listing no-advance skiplines={LINES_BETWEEN_LABELS}
end-if
end-if
from customers
end-select
use-column 0 ! disable columns
new-page
print 'Labels printed on ' (,1)
print $current-date ()
print 'Total labels printed = ' (+1,1)
print #label_count () edit 9,999,999
end-procedure ! mailing_labels
Defining Columns and Rows
The command COLUMNS 1 29 57 defines the starting position for three columns. The first
column starts at character position 1, the second at character position 29, and the third at
character position 57.
Program ex9a.sqr writes the first address into the first column, the second address into the
second, the third address into the third. The fourth address is written into the second row of the
first column, just below the first label. When ten lines of labels are complete, a new page
starts. After the last page of labels has been printed, the program prints a summary page
showing the number of labels printed.
S Q R F O R P E O P L E S O F T D E V E L O P E R ' S G U I D E
P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L P R I N T I N G M A I L I N G L A B E L S 9 - 3
Note the technique for composing the last line of the label. The city, state, and zip columns are
moved to string variables. The command LET $last_line = &city || ', ' || &state || ' ' || $zip
combines the city, state, and zip code, plus appropriate punctuation and spacing, into a string,
which it stores in the variable $last_line. In this way, city, state, and zip code are printed
without unnecessary gaps.
The program defines two counters, #label_count and #label_lines. The first counter,
#label_count, counts the total number of labels and prints it on the summary page. The second
counter, #label_lines, counts the number of rows of labels that were printed. When the
program has printed the number of lines defined by {MAX_LABEL_LINES}, it starts a new
page and resets the #label_lines counter.
After each row of labels, the NEXT-LISTING command redefines the print position for the
next row of labels as line 1. NEXT-LISTING skips the specified number of lines
(SKIPLINES) from the last line printed (NO-ADVANCE) and sets the new position as line 1.
Note the use of the ALTER-PRINTER command. This command changes the font in which
the report is printed.
See "Changing Fonts," for information about changing fonts.
The sample program prints the labels in 10-point Times Roman, which is a proportionally
spaced font. In Windows, you can use proportionally spaced fonts with any printer that
supports fonts or graphics. On other platforms, SQR directly supports HP LaserJet printers
and PostScript printers.
See "Printing Issues" for information about printers and printer support.
See "Changing Fonts" for information about using proportional fonts.
In the sample program, the command DECLARE-LAYOUT defines a page width of 10
inches. This width accommodates the printing of the third column, which contains 30
characters and begins at character position 57. SQR assumes a default character grid of 10
characters per inch, which would cause the third column to print beyond the paper edge if this
report used the default font. The 10-point Times Roman used here, however, condenses the
text so that it will fit on the page. The page width is set at 10 inches to prevent SQR from
treating the third-column print position as an error.
Running the Print Mailing Labels Program
When you print with a proportionally spaced font, you must use a slightly different technique
for running the program and viewing the output. If you are using a platform such as UNIX or
VMS, specify the printer type with the -PRINTER:xx flag. If you are using an HP LaserJet,
enter -PRINTER:HP (or -printer:hp). If you are using a PostScript printer, enter -
PRINTER:PS (or -printer:ps) on the command line.
For example:
sqr ex9a username/password -printer:hp
S Q R F O R P E O P L E S O F T D E V E L O P E R ' S G U I D E
9 - 4 P R I N T I N G M A I L I N G L A B E L S P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L
You can also use the -KEEP command-line flag to produce output in the SQR Portable File
format (SPF) and print it using SQR Print. You still need to use the -PRINTER:xx flag when
printing.
See "Printing Issues,” for information about SQR Portable File format.
Here is a portion of the output.
Gregory Stonehaven Alfred E Newman & Company Eliot Richards
Middlebrook Road 2837 East Third Street 2134 Partridge Ave
Everretsville, OH 40233-1000 New York, NY 10002-1001 Queens, NY 10213-1002
Isaiah J Schwartz and Company Harold Alexander Fink Harriet Bailey
37211 Columbia Blvd 32077 Cedar Street 47 Season Street
Zanesville, OH 44900-1300 Davenport, IN 62130-1025 Mamaroneck, NY 10833-1660
Clair Butterfield Quentin Fields Jerry's Junkyard Specialties
371 Youngstown Blvd 37021 Cedar Road Crazy Lake Cottages
Teaneck, NJ 00355-4530 Cleveland, OH 44121-9475 Frogline, NH 04821-9876
Kate's Out of Date Dress Shop Sam Johnson Joe Smith and Company
2100 Park Ave 37 Cleaver Street 1711 Sunset Blvd
New York, NY 10134-2030 Bell Harbor, MI 40674-3900 Big Falls, NM 87893-7070
Corks and Bottles, Inc. Harry's Landmark Diner
167 East Blvd. 17043 Silverfish Road
New York, NY 10204-1234 Miningville, IN 40622-4321
Output for Program ex9a.sqr
The report produces the output in three columns corresponding to the dimensions of a sheet of
mailing label stock. In the preceding example, the report prints the labels left to right, filling
each row of labels before moving down the page.
You can also print the labels from the top down, filling each column before moving to the next
column of labels. The code to do this is shown next. The differences between this code and the
previous one are shown in bold. The output is not printed here, but you can run the file and
view it using the same procedure you used for the previous example.
Program ex8e.sqr
#define MAX_LABEL_LINES 10
#define LINES_BETWEEN_LABELS 3
begin-setup
declare-layout default
paper-size=(10,11) left-margin=0.33
end-declare
end-setup
begin-program
do mailing_labels
end-program
S Q R F O R P E O P L E S O F T D E V E L O P E R ' S G U I D E
P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L P R I N T I N G M A I L I N G L A B E L S 9 - 5
begin-procedure mailing_labels
let #Label_Count = 0
let #Label_Lines = 0
columns 1 29 57 ! enable columns
alter-printer font=5 point-size=10
begin-select
name (0,1,30)
addr1 (+1,1,30)
city
state
zip
move &zip to $zip xxxxx-xxxx
let $last_line = &city || ', ' || &state || ' ' || $zip
print $last_line (+1,1,30)
add 1 to #label_count
add 1 to #label_lines
if #label_lines = {MAX_LABEL_LINES}
next-column goto-top=1 at-end=newpage
let #label_lines = 0
else
position (+1)
position (+{LINES_BETWEEN_LABELS})
end-if
from customers
end-select
use-column 0 ! disable columns
new-page
print 'Labels printed on ' (,1)
print $current-date ()
print 'Total labels printed = ' (+1,1)
print #label_count () edit 9,999,999
end-procedure ! mailing_labels
Summary
• A SELECT paragraph can retrieve data for mailing labels and other similar reports.
• COLUMNS define report columns.
• Counters, such as #label_count and #label_lines, produce summary information about
a report, such as the number of labels printed. Counters also determine when a page is
full.
• NEXT-LISTING ends the current listing and begins another.
• Use ALTER-PRINTER to specify fonts.
P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L C R E A T I N G F O R M L E T T E R S 1 0 - 1
C H A P T E R 1 0
Creating Form Letters
This chapter explains how to create a form letter and discusses the following topics:
• The SQR DOCUMENT section.
• The BEGIN-DOCUMENT command.
• The END-DOCUMENT command.
Laying Out the Letter Using the DOCUMENT Section
To create form letters, you use a DOCUMENT section. It starts with a BEGIN-DOCUMENT
command and ends with an END-DOCUMENT command. Between these commands, you lay
out the letter and insert variables where you want data from the database to be inserted. SQR
inserts the value of the variable when the document prints. To leave blank lines in a letter, you
must explicitly mark them with “.b”(see the sample code that follows).
Another way to mix data with the letter is to use document markers. These are placeholders in
the DOCUMENT section where you can print data after the DOCUMENT section. Document
markers are denoted with a name preceded by the at sign (@).
The sample program demonstrates the use of variables as well as document markers. SQR
prints the contents of the variable in the position where it is placed in the DOCUMENT
section. For example, in the program that follows, the customer’s name is printed on the first
line.
Using a document marker is less direct, but provides more flexibility in positioning the
contents of variables. The sample program uses a document marker to position the city, state,
and zip code because the city name varies in length and thus affects the position of the state
name and zip code.
Sample Program - Form Letter
The following simple form letter program ex10a.sqr demonstrates the use of document
markets.
Program ex9c.sqr
begin-program
do main
end-program
S Q R F O R P E O P L E S O F T D E V E L O P E R ' S G U I D E
1 0 - 2 C R E A T I N G F O R M L E T T E R S P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L
begin-procedure main
begin-select
name
addr1
addr2
city
state
zip
do write_letter
from customers
order by name
end-select
end-procedure ! main
begin-procedure write_letter
begin-document (1,1)
&name
&addr1
&addr2
@city_state_zip
.b
.b
$current-date
Dear Sir or Madam:
.b
Thank you for your recent purchases from ACME Inc. We would like to tellyou about our limited-time offer. During this month, our entire inventory ismarked down by 25%. Yes, you can buy your favorite merchandise and save too.
To place an order simply dial 800-555-ACME. Delivery is free too, sodon't wait.
.b
.b
Sincerely,
Clark Axelotle
ACME Inc.
end-document
position () @city_state_zip
print &city ()
print ', ' ()
print &state ()
print ' ' ()
print &zip () edit xxxxx-xxxx
new-page
end-procedure ! write_letter
S Q R F O R P E O P L E S O F T D E V E L O P E R ' S G U I D E
P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L C R E A T I N G F O R M L E T T E R S 1 0 - 3
First, SQR performs the main procedure and the SELECT statement. Next, it performs the
write_letter procedure and the DOCUMENT section. The POSITION command sets the
position to the appropriate line, which is given by the marker @city_state_zip. The program
prints the city, then continues printing the other elements to the current position. The state
name and zip code automatically prints in the correct positions with appropriate punctuation.
Output for Program ex10a.sqr
Craig Conway
2837 East Third Street
Greenwich Village
New York, NY 10002-1001
10-MAY-2001
Dear Sir or Madam:
Thank you for your recent purchases from ACME Inc. We would like to tellyou about our limited-time offer. During this month, our entire inventory ismarked down by 25%. Yes, you can buy your favorite merchandise and save too.To place an order simply dial 800-555-ACME. Delivery is free too, so don'twait.
Sincerely,
Clark Axelotle
ACME Inc.
See "Using Graphics," for another example of a form letter.
Summary
To print form letters, use variables or document markers inserted in the DOCUMENT section
to place data in the text.
P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L E X P O R T I N G D A T A T O O T H E R A P P L I C A T I O N S 1 1 - 1
C H A P T E R 1 1
Exporting Data to Other Applications
This chapter discusses how to create a tab-delimited file that is suitable for exporting data to
other applications.
Sample Program - Exporting Data
The following program example creates an export file, which you can load into a document
such as a spreadsheet. The tabs create columns in your spreadsheet or word processing
document that correspond to the columns in your database table.
Program ex10b.sqr
begin-setup
! No margins, wide enough for the widest record
! and no page breaks
declare-layout default
left-margin=0 top-margin=0
max_columns=160 formfeed=no
end-declare
end-setup
begin-program
do main
end-program
begin-procedure main
encode '<009>' into $sep ! Separator character is TAB
let $cust_num = 'Customer Number'
let $name = 'Customer Name'
let $addr1 = 'Address Line 1'
let $addr2 = 'Address Line 2'
let $city = 'City'
let $state = 'State'
let $zip = 'Zip Code'
let $phone = 'Phone Number'
let $tot = 'Total'
string $cust_num $name $addr1 $addr2
S Q R F O R P E O P L E S O F T D E V E L O P E R ' S G U I D E
1 1 - 2 E X P O R T I N G D A T A T O O T H E R A P P L I C A T I O N S P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L
$city $state $zip $phone $tot by $sep into $col_hds
print $col_hds (1,1)
new-page
begin-select
cust_num
name
addr1
addr2
city
state
zip
phone
tot
string &cust_num &name &addr1 &addr2
&city &state &zip &phone &tot by $sep into $db_cols
print $db_cols ()
new-page
from customers
end-select
end-procedure ! main
Creating an Export File
The encode command stores the ASCII code for the tab character in the variable $sep. The
code (9) is enclosed in angle brackets to indicate that it is a non-display character. SQR treats
it as a character code and sets the variable accordingly. ENCODE is a useful way to place
nonalphabetical and nonnumeric characters into variables.
The LET command creates variables for the text strings used as column headings in the export
file. The STRING command combines these variables in the $col_hds variable, with each
heading separated by a tab.
In the SELECT paragraph, we use the STRING command again, this time to combine the
records (named as column variables) in the $db_cols variable, with each record similarly
separated by a tab.
The NEW-PAGE command is used in this example in an unusual way. It causes a new line
and carriage return at the end of each record, with the line number reset to 1. The page is not
ejected because of the FORMFEED=NO argument in the DECLARE-LAYOUT command.
Remember that this report is for exporting, not printing.
You can now load the output file (ex11a.lis) into a spreadsheet or other application.
Summary
• A tab-delimited output file can export data into other applications.
• The contents of database column variables can also be exported.
S Q R F O R P E O P L E S O F T D E V E L O P E R ' S G U I D E
P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L E X P O R T I N G D A T A T O O T H E R A P P L I C A T I O N S 1 1 - 3
• ENCODE can place the ASCII code for a tab into a value.
• LET can place text in variables for export.
• STRING can create a variable holding several text or data items separated by a
variable representing a tab or other separator character.
P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L U S I N G G R A P H I C S 1 2 - 1
C H A P T E R 1 2
Using Graphics
This chapter explains how to add graphical features to SQR reports. You learn how to include
a logo or other graphic in a report, change the font, and draw solid lines. It discusses how to:
• Add graphics.
• Share graphics among reports.
• Print bar codes.
Sample Program - Simple Tabular Report
The following example produces a simple tabular report similar to the one in the chapter
"Selecting Data from the Database".
Program ex11b.sqr
begin-setup
declare-layout default
end-declare
end-setup
begin-program
do main
end-program
begin-procedure main
begin-select
name (,1,30)
city (,+1,16)
state (,+1,5)
tot (,+1,11) edit 99999999.99
next-listing no-advance need=1
let #grand_total = #grand_total + &tot
from customers
end-select
print '-' (,55,11) fill
print 'Grand Total' (+1,40)
S Q R F O R P E O P L E S O F T D E V E L O P E R ' S G U I D E
1 2 - 2 U S I N G G R A P H I C S P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L
print #grand_total (,55,11) edit 99999999.99
end-procedure ! main
begin-heading 5
print $current-date (1,1) Edit 'DD-MON-YYYY'
page-number (1,60) 'Page '
print 'Name' (3,1)
print 'City' (,32)
print 'State' (,49)
print 'Total' (,61)
print '-' (4,1,65) fill
end-heading
The SETUP section contains a DECLARE-LAYOUT command that specifies the default
layout without defining any options. The purpose of specifying the default layout is to use its
margin settings, which are defined as 1/2 inch. Without DECLARE-LAYOUT, the report
would have no margins.
Note the PRINT command with the FILL option. This command produces dashed lines, which
is a simple way to draw lines for a report printed on a line printer. On a graphical printer,
however, it is possible to draw solid lines. The section "Adding Graphics" shows you how to
take advantage of this feature.
06-JUN-96 Page 1
Name City State Total
---------------------------------------------------------------
Gregory Stonehaven Everretsville OH 39.00
Craig Conway New York NY 42.00
Eliot Richards Queens NY 30.00
Isaiah J Schwartz and Company Zanesville OH 33.00
Harold Alexander Fink Davenport IN 36.00
Harriet Bailey Mamaroneck NY 21.00
Clair Butterfield Teaneck NJ 24.00
Quentin Fields Cleveland OH 27.00
Jerry's Junkyard Specialties Frogline NH 12.00
Kate's Out of Date Dress Shop New York NY 15.00
Sam Johnson Bell Harbor MI 18.00
Joe Smith and Company Big Falls NM 3.00
Corks and Bottles, Inc. New York NY 6.00
Harry's Landmark Diner Miningville IN 9.00
---------
Grand Total 315.00
S Q R F O R P E O P L E S O F T D E V E L O P E R ' S G U I D E
P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L U S I N G G R A P H I C S 1 2 - 3
Adding Graphics
The following sample program includes graphical features—a logo, solid lines, and a change
of font in the heading.
Program ex11c.sqr
begin-setup
declare-layout default
end-declare
end-setup
begin-program
do main
end-program
begin-procedure main
begin-select
name (,1,30)
city (,+1,16)
state (,+1,5)
tot (,+1,11) edit 99999999.99
next-listing no-advance need=1
let #grand_total = #grand_total + &tot
from customers
end-select
graphic (,55,12) horz-line 20
print 'Grand Total' (+2,40)
print #grand_total (,55,11) Edit 99999999.99
end-procedure ! main
begin-heading 11
print $current-date (1,1)
page-number (1,60) 'Page '
alter-printer point-size=14 font=4 ! switch font
print 'Name' (9,1) bold
print 'City' (,32) bold
print 'State' (,49) bold
print 'Total' (,61) bold
alter-printer point-size=12 font=3 ! restore font
graphic (9,1,66) horz-line 20
print-image (1,23)
type=bmp-file
image-size=(21,5)
source='acmelogo.bmp'
end-heading
S Q R F O R P E O P L E S O F T D E V E L O P E R ' S G U I D E
1 2 - 4 U S I N G G R A P H I C S P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L
The GRAPHIC command draws solid lines with the HORZ-LINE argument. The line is
positioned using a normal SQR position specifier. Note that the third number in the position
specifier is the length of the line, which is given in characters. (The actual width of a character
cell is determined by the CHAR-WIDTH or MAX-COLUMNS arguments of DECLARE-
LAYOUT.
See "SETUP Section," for information on character grids.
The HORZ-LINE argument of the GRAPHIC HORZ-LINE command is the thickness of the
line, specified in decipoints (there are 720 decipoints per inch). For example, the command
graphic (10,1,66) horz-line 20
specifies a horizontal line below line 10 in the report starting with position 1 (the left side of
the report) and stretching for 66 character positions (at 10 characters per inch this is 6.6
inches). The thickness of the line is 20 decipoints, which is 1/36 of an inch (about 0.7
millimeters).
You can also use the GRAPHIC command to draw vertical lines, boxes, and shaded boxes.
See the program sqrlaser.sqr, which is in your SAMPLE (or SAMPLEW) subdirectory, for an
example.
See SQR Language Reference, “GRAPHIC Command,” for more information.
The ALTER-PRINTER command in ex12b.sqr changes the font for the heading. When used a
second time, it restores the normal font for the rest of the report. The FONT option selects a
font (typeface) that is supported by the printer. The font is specified by number, but the
number is printer-specific. On a PostScript printer, for example, font 3 is Courier, font 4 is
Helvetica, and font 5 is Times Roman.
See SQR Language Reference, “DECLARE-PRINTER”.
The POINT-SIZE option specifies type size in points. You can use a whole number or even a
fraction (for example, POINT-SIZE=10.5). The following command changes the font to 14-
point Helvetica:
alter-printer point-size=14 font=4 ! switch font
The PRINT-IMAGE command inserts the logo. PRINT-IMAGE is followed by a print
position corresponding to the top left corner of the image (line 1, column 19 in our example).
The TYPE option specifies the image file type. In our example, the image is stored in
Windows bitmap format (bmp-file). The size of the image is specified in terms of columns
(width) and lines (height). In the example, the image is 30 characters wide (3 inches) and 7
lines high (1 1/6 inches).
In SQR, images are always stored in external files. The format of the image must match that of
the printer you are using. These formats are:
• Windows—bmp file images
• PostScript printer or viewer—eps file
S Q R F O R P E O P L E S O F T D E V E L O P E R ' S G U I D E
P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L U S I N G G R A P H I C S 1 2 - 5
• HP LaserJet—hpgl file images
• HTML output—GIF or JPEG formats (gif file or jpeg file)
See "Printing Issues," for more information on HTML output.
The SOURCE option specifies the file name of the image file. In our example, the file is
Acmelogo.bmp. The file is assumed to reside in the current directory or in the directory in
which SQR is installed (you can place the logo file in either of these two places). The file can
reside in any directory, however, as long as you specify a full pathname for the image file.
Output for Program ex12b.sqr
The output file now contains graphic language commands. SQR can produce output suitable
for HP LaserJet printers in a file format that uses the HP PCL language or output suitable for
PostScript printers in a file format that uses the PostScript language. SQR can also produce
printer-independent output files in a special format called SQR Portable Format (SPF).
SQR can create a printer-specific output file (an LIS file) or create the output in portable
format (SPF). When you create an SPF file, the name of the image file is copied into it, and
the image is processed at print time, when printer-specific output is generated. When SPF files
are used, a change in the contents of the image file is reflected in the report the next time you
print it or view it. You can create printer-specific output by using SQR or SQR Execute to
directly generate an LIS file or by using SQR Print to generate an LIS file from an SPF file.
See Also
"Printing Issues" for information about SQR Portable Format.
S Q R F O R P E O P L E S O F T D E V E L O P E R ' S G U I D E
1 2 - 6 U S I N G G R A P H I C S P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L
Sharing Images Among Reports
You can place logos and other images in a report using only the PRINT-IMAGE command.
However, the DECLARE-IMAGE command is useful if you want several programs to share
the definition of an image.
Program ex12c.sqr prints a simple form letter. It shows how to print a logo using the
DECLARE-IMAGE and PRINT-IMAGE commands and how to print a signature using only
PRINT-IMAGE.
Because the image is shared among several reports, the command DECLARE-IMAGE is
contained in this file, acme.inc:
File acme.inc
declare-image acme_logo
type=bmp-file
image-size=(30,7)
source='acmelogo.bmp'
end-declare
This file declares an image with acme-logo as the name. It specifies the logo used in the
previous sample program. The declaration includes the type and source file for the image. As
you will see, when the image is printed, you do not need to respecify these attributes.
Multiple programs can share the declaration and include the file acme.inc. If you later need to
change an attribute, such as the source, you only need to change it in one place. The image
size is specified and provides the default.
If you need to change the size of an image in a particular report, use the IMAGE-SIZE
argument of the PRINT-IMAGE command. It overrides the image size specified in
DECLARE-IMAGE.
Program ex11d.sqr
begin-setup
#include 'acme.inc'
end-setup
begin-program
do main
end-program
begin-procedure main
begin-select
name
addr1
addr2
S Q R F O R P E O P L E S O F T D E V E L O P E R ' S G U I D E
P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L U S I N G G R A P H I C S 1 2 - 7
city
state
zip
phone
do write_letter
from customers
order by name
end-select
end-procedure ! main
begin-procedure write_letter
move &city to $csz
concat ', ' with $csz
concat &state with $csz
concat ' ' with $csz
move &zip to $zip xxxxx-xxxx
concat $zip with $csz
move &phone to $phone_no (xxx)bxxx-xxxx ! Edit phone number.
begin-document (1,1,0)
&name @logo
&addr1
&addr2
$csz
.b
.b
.b
$current-date
Dear &name
.b
Thank you for your inquiry regarding Encore, Maestro!!, our revolutionaryteaching system for piano and organ. If you've always wanted to play aninstrument but felt you could never master one, Encore, Maestro!! is made foryou.
.b
Now anyone who can hum a tune can play one too. Encore, Maestro!! beginswith a step-by-step approach to some of America's favorite songs. You'll learnthe correct keyboarding while hearing the sounds you make through theheadphones provided with the Encore, Maestro!! system. From there, you'lladvance to intricate compositions with dazzling melodic runs. Encore,Maestro!! can even teach you to improvise your own solos.
.b
Whether you like classical, jazz, pop, or blues, Encore, Maestro!! is themusic teacher for you.
.b
A local representative will be calling you at $phone_no
to set up an in-house demonstration, so get ready to play your favoritetunes!!
.b
S Q R F O R P E O P L E S O F T D E V E L O P E R ' S G U I D E
1 2 - 8 U S I N G G R A P H I C S P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L
Sincerely,
@signature
.b
.b
Clark Axelotle
end-document
position () @logo
print-image acme-logo ()
image-size=(16,4)
position () @signature
print-image ()
type=bmp-file
image-size=(12,3)
source='clark.bmp'
new-page
end-procedure ! write_letter
The #INCLUDE command, which is performed at compile time, gets text from another file. In
this program, you can see the command #INCLUDE 'acme.inc' includes the code from the file
acme.inc.
The DOCUMENT section begins with a BEGIN-DOCUMENT command and ends with an
END-DOCUMENT command. It uses variables and document markers to print inside the
letter. The program uses variables for the name and address, the date, and the phone number.
It uses document markers for the logo and signature.
Document markers are placeholders in the letter. The program uses the document markers
@logo and @signature in a POSITION command before printing each image. The document
markers make it unnecessary to specify the position of these items in the PRINT-IMAGE
command. Instead, you print to the current position.
The date is prepared with the reserved variable $current-date. It is printed directly in the
DOCUMENT section without issuing a PRINT command.
The program uses the CONCAT command to put together the city, state, and zip code. In the
DOCUMENT section, variables retain their predefined size. A column variable, for example,
will remain the width of the column as defined in the database. You can print the date and
phone number directly, however, because they occur at the end of a line, without any
following text.
S Q R F O R P E O P L E S O F T D E V E L O P E R ' S G U I D E
P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L U S I N G G R A P H I C S 1 2 - 9
Output for Program ex12c.sqr (File ex12c.spf)
Printing Bar Codes
SQR supports a wide variety of bar code types, which you can include in your SQR report.
To create a bar code, use the PRINT-BAR-CODE command. Specify the position of the bar
code in an ordinary position qualifier. In separate arguments, specify the bar code type, height,
text to be encoded, caption, and optional check sum. For example:
print-bar-code (1,1)
type=1
height=0.5
text='01234567890'
caption='0 12345 67890'
Arguments to PRINT-BAR-CODE may be variables or literals. This example produces the
following bar code.
See Also
SQR for PeopleSoft Language Reference Guide, “PRINT-BAR-CODE” command for more
information.
S Q R F O R P E O P L E S O F T D E V E L O P E R ' S G U I D E
1 2 - 1 0 U S I N G G R A P H I C S P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L
Summary
• DECLARE-LAYOUT sets a margin.
• GRAPHIC draws solid lines or shaded boxes.
• ALTER-PRINTER chooses a font.
• PRINT-IMAGE prints a logo or other graphic in the report.
• DECLARE-IMAGE enables you to share images among reports.
• The #INCLUDE command includes commands from other files in a program.
• CONCAT combines multiple data elements into one variable.
• PRINT-BAR-CODE creates bar codes.
P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L U S I N G B U S I N E S S C H A R T S 1 3 - 1
C H A P T E R 1 3
Using Business Charts
This chapter shows how to present information visually with graphs, charts, and histograms
and discusses how to:
• Create a chart.
• Define a chart.
• Print a chart.
• Run the program to create a graphical report.
• Pass data to the chart.
• Change colors.
Understanding Business Charts
Business charts are useful tools for presenting summary data. SQR provides two commands
for creating charts, DECLARE-CHART and PRINT-CHART, and a varied set of chart
types—line, pie, bar, stacked bar, 100% bar, overlapped bar, floating bar, histogram, area,
stacked area, 100% area, xy-scatter plot and high-low-close.
You can configure many attributes of SQR charts by activating three-dimensional effects or
setting titles and legends. SQR charts are also portable—you can move them from one
hardware platform to another.
A business chart can be prepared using data held in an array, just like a cross-tabular report. If
you have already written a cross-tabular report, just one additional step creates a chart using
the data already collected in the array.
See Also
Cross-Tabular Reports
Creating a Chart
The following example builds on the report created in the chapter, “Cross-Tabular Reports”
(ex8c.sqr). That example combined the two reports in one program. The following program
produces two charts corresponding to the two cross-tabs.
S Q R F O R P E O P L E S O F T D E V E L O P E R ' S G U I D E
1 3 - 2 U S I N G B U S I N E S S C H A R T S P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L
Here is the code. The lines that were changed or added are shown in bold.
Program ex12d.sqr
#define max-categories 3
#define max-products 100
begin-setup
create-array
name=order_qty size={max-products}
field=product:char field=month_qty:number:3
create-array
name=order_qty2 size={max-categories}
field=category:char field=month_qty:number:3
declare-chart orders-stacked-bar
chart-size=(70,30)
title='Order Quantity'
legend-title='Month'
type=stacked-bar
end-declare ! orders-stacked-bar
end-setup
begin-program
do select_data
do print_array
print '-' (+2,1,70) fill
position (+1)
do print_array2
new-page
let $done = 'YES' ! Don't need heading any more
do print_the_charts
end-program
begin-procedure print_array
let #entry_cnt = #i
let #i = 0
while #i <= #entry_cnt
let $product = order_qty.product(#i)
let #jan = order_qty.month_qty(#i,0)
let #feb = order_qty.month_qty(#i,1)
let #mar = order_qty.month_qty(#i,2)
let #prod_tot = #jan + #feb + #mar
print $product (,1,30)
print #jan (,32,9) edit 9,999,999
print #feb (,42,9) edit 9,999,999
S Q R F O R P E O P L E S O F T D E V E L O P E R ' S G U I D E
P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L U S I N G B U S I N E S S C H A R T S 1 3 - 3
print #mar (,52,9) edit 9,999,999
print #prod_tot (,62,9) edit 9,999,999
position (+1)
let #i = #i + 1
end-while
end-procedure ! print_array
begin-procedure print_array2
let #i = 0
while #i < {max_categories}
let $category = order_qty2.category(#i)
let #jan = order_qty2.month_qty(#i,0)
let #feb = order_qty2.month_qty(#i,1)
let #mar = order_qty2.month_qty(#i,2)
let #category_tot = #jan + #feb + #mar
print $category (,1,31)
print #jan (,32,9) edit 9,999,999
print #feb (,42,9) edit 9,999,999
print #mar (,52,9) edit 9,999,999
print #category_tot (,62,9) edit 9,999,999
position (+1)
let #jan_total = #jan_total + #jan
let #feb_total = #feb_total + #feb
let #mar_total = #mar_total + #mar
let #i = #i + 1
end-while
let #grand_total = #jan_total + #feb_total + #mar_total
print 'Totals' (+2,1)
print #jan_total (,32,9) edit 9,999,999
print #feb_total (,42,9) edit 9,999,999
print #mar_total (,52,9) edit 9,999,999
print #grand_total (,62,9) edit 9,999,999
end-procedure ! print_array2
begin-procedure select_data
let order_qty2.category(0)='$0-$4.99'
let order_qty2.category(1)='$5.00-$100.00'
let order_qty2.category(2)='Over $100'
begin-select
order_date
! the price / price category for the order
c.price &price
move &price to #price_num
evaluate #price_num
when < 5.0
let #x = 0
S Q R F O R P E O P L E S O F T D E V E L O P E R ' S G U I D E
1 3 - 4 U S I N G B U S I N E S S C H A R T S P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L
break
when <= 100.0
let #x = 1
break
when-other
let #x = 2
break
end-evaluate
! The quantity for this order
quantity
let #j = to_number(datetostr(&order_date,'MM')) - 1
if #j < 3
let order_qty2.month_qty(#x,#j) =
order_qty2.month_qty(#x,#j) + &quantity
end-if
! the product for this order
description
if #i = 0 and order_qty.product(#i) = ''
let order_qty.product(#i) = &description
end-if
if order_qty.product(#i) != &description
let #i = #i + 1
if #i >= {max_products}
display 'Error: There are more than {max_products} products'
stop
end-if
let order_qty.product(#i) = &description
end-if
if #j < 3
let order_qty.month_qty(#i,#j) =
order_qty.month_qty(#i,#j) + &quantity
end-if
from orders a, ordlines b, products c
where a.order_num = b.order_num
and b.product_code = c.product_code
order by description
end-select
end-procedure ! select_data
begin-heading 5
if not ($done = 'YES')
print $current-date (1,1)
page-number (1,64) 'Page '
print 'Order Quantity by Product and Price Category by Month' (2,10)
print 'Product / Price Category' (4,1)
S Q R F O R P E O P L E S O F T D E V E L O P E R ' S G U I D E
P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L U S I N G B U S I N E S S C H A R T S 1 3 - 5
print ' January' (,32)
print ' February' (,42)
print ' March' (,52)
print ' Total' (,62)
Print '-' (5,1,70) Fill
end-if
end-heading
begin-procedure print_the_charts
print-chart orders-stacked-bar (+2,1)
data-array=order_qty
data-array-row-count=12
data-array-column-count=4
data-array-column-labels=('Jan','Feb','Mar')
sub-title='By Product By Month'
new-page
print-chart orders-stacked-bar (+2,1)
data-array=order_qty2
data-array-row-count=3
data-array-column-count=4
data-array-column-labels=('Jan','Feb','Mar')
sub-title='By Price Category By Month'
end-procedure ! print_the_charts
Defining a Chart
The two chart sections in program ex13a.sqr are specified with the DECLARE-CHART
command in the SETUP section and are named orders-stacked-bar. The width and height of
the charts are specified in terms of character cells. The charts generated by this program are 70
characters wide, which is 7 inches on a default layout. The height (or depth; these terms are
used interchangeably) of the charts is 30 lines, which translates to 5 inches at 6 lines per inch.
These dimensions define a rectangle that contains the chart. The box that surrounds the chart
is drawn by default, but you can disable it using the qualifier BORDER=NO.
The title is centered at the top of the chart. The text generated by LEGEND-TITLE must fit in
the small legend box above the categories, so keep this description short. Generally, charts
look best when the text items are short. Here is the DECLARE-CHART command.
declare-chart orders-stacked-bar
chart-size=(70,30)
title='Order Quantity'
legend-title='Month'
type=stacked-bar
end-declare ! orders-stacked-bar
The heading is printed on the first page only.
S Q R F O R P E O P L E S O F T D E V E L O P E R ' S G U I D E
1 3 - 6 U S I N G B U S I N E S S C H A R T S P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L
Printing a Chart
The PRINT-CHART commands are based on the orders-stacked-bar chart that was declared
in the preceding section.
print-chart orders-stacked-bar (+2,1)
data-array=order_qty
data-array-row-count=12
data-array-column-count=4
data-array-column-labels=('Jan','Feb','Mar')
sub-title='By Product By Month'
new-page
print-chart orders-stacked-bar (+2,1)
data-array=order_qty2
data-array-row-count=3
data-array-column-count=4
data-array-column-labels=('Jan','Feb','Mar')
sub-title='By Price Category By Month'
The data source is specified using the DATA-ARRAY option. The named array has a structure
that is specified by the TYPE option. For a stacked-bar chart, the first field in the array gives
the names of the categories for the bars. The rest of the fields are series of numbers. In this
case, each series corresponds to a month.
The subtitle goes under the title and can be used as a second line of the title. A legend labels
the series. The DATA-ARRAY-COLUMN-LABELS argument passes these labels. The
argument DATA-ARRAY-ROW-COUNT is the number of rows (bars) to chart and DATA-
ARRAY-COLUMN-COUNT is the number of fields in the array that the chart uses. The array
has four fields—the product (or price category) field and the series that specifies three months.
Running the Program
When you create a graphical report, you must use a slightly different technique for running the
program and viewing the output:
• If you are using a platform such as UNIX or VMS, specify the printer type with the -
PRINTER:xx flag.
• If you are using an HP LaserJet, enter -PRINTER:HP (or -printer:hp).
• If you are using a PostScript printer, enter -PRINTER:PS (or -printer:ps) on the
command line. For example:
sqr ex9a username/password -printer:hp
You can also use the -KEEP command-line flag to produce output in the SQR Portable File
format (SPF) and print it using SQR Print. You still must use the -PRINTER:xx flag when
printing. SQR Portable File format is covered in greater detail in the section “Printing Issues.”
S Q R F O R P E O P L E S O F T D E V E L O P E R ' S G U I D E
P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L U S I N G B U S I N E S S C H A R T S 1 3 - 7
A portion of the output is shown next. The charts will appear on pages 2 and 3 of the report.
Output for Program ex13a.sqr (File ex13a.spf)
Output for program ex13a.sqr (1 of 2)
Output for program ex13a.sqr (2 of 2)
Passing Data to the Chart
To pass the data to the chart use the first field for the descriptions of bars (or lines or areas)
and then use one or more additional fields with series of numbers. This procedure is common
to many chart types, including line, bar, stacked-bar, 100% bar, overlapped bar, histogram,
area, stacked-area, and 100% area. You can omit the first field and SQR uses cardinal
numbers (1, 2, 3...) for the bars. Only text fields are used for these options.
S Q R F O R P E O P L E S O F T D E V E L O P E R ' S G U I D E
1 3 - 8 U S I N G B U S I N E S S C H A R T S P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L
For pie charts, only one series is allowed. Pie charts are also a special case because you can
specify which segments to “explode,” or pull away, from the center of the pie. Using a third
field in the array, you can have a series of ‘Y’ and ‘N’ values that indicate whether to explode
the segment. If ‘Y’ is the value in the first row of the array, the pie segment that corresponds
to the first row is exploded. With pie charts, you cannot omit the first field with the
descriptions. Pie charts cannot have more than 12 segments.
Pie charts display the numeric value next to each segment. The description is displayed in the
legend. In addition, SQR displays the percentage next to the value. You can disable this
feature by using the qualifier PIE-SEGMENT-PERCENT-DISPLAY=NO.
When data is passed to an xy scatter plot or a floating-bar chart, the series are paired. A pair in
a floating-bar chart represents the base and height of the bars. A pair in an xy-scatter plot
represents x and y coordinates. In an xy-scatter plot, the first field does not have descriptions.
In a floating-bar chart, the first field may or may not have descriptions for the bars. For both
types, you can have one or more pairs of series.
P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L C H A N G I N G F O N T S 1 4 - 1
C H A P T E R 1 4
Changing Fonts
This chapter explains how to print text in different fonts and discusses how to:
• Position text.
• Use the WRAP option.
Understanding How to Change Fonts
To select a font in SQR for PeopleSoft, you use the commands DECLARE-PRINTER and
ALTER-PRINTER. The DECLARE-PRINTER command sets the default font for the entire
report. The ALTER-PRINTER command changes the font anywhere in the report and the
change remains in effect until the next ALTER-PRINTER.
If you want to set a font for the entire report, use ALTER-PRINTER, which is not printer-
specific, at the beginning of the program. If you are writing a printer-independent report, be
aware that the attributes you set with DECLARE-PRINTER take effect only when you print
your report with the printer you specify with the TYPE argument. To specify a printer at print
time, use the -PRINTER:xx command-line flag.
Positioning Text
In SQR for PeopleSoft, you position text according to a grid. That grid is set by default to 10
characters per inch and 6 lines per inch, but you can give it another definition by altering the
CHAR-WIDTH and LINE-HEIGHT parameters of the DECLARE-LAYOUT command.
Note however that character grid and character size function independently of one another.
Fonts print in the size set by DECLARE-PRINTER or ALTER-PRINTER, not the size
defined by the grid. A character grid is best used for positioning the first character in a string.
It can express the width of a string only in terms of the number of characters it contains, not in
an actual linear measurement, such as inches or picas.
When you use a proportionally spaced font, the number of letters that you print may no longer
match the number of character cells that the text actually fills. For example, in the following
sample code, the word “Proportionally” fills only 9 cells, although it contains 14 letters.
When you print consecutive text strings, the actual position at the end of a string may differ
from the position SQR assumes according to the grid. For this reason, we advise you to
concatenate consecutive pieces of text and print them as one.
S Q R F O R P E O P L E S O F T D E V E L O P E R ' S G U I D E
1 4 - 2 C H A N G I N G F O N T S P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L
For example, instead of writing code such as:
alter-printer font=5 ! select a proportional font
print &first_name () ! print first name
print ' ' () ! print a space
print &last_name () ! print the last name
alter-printer font=3 ! restore the font
You should write code such as:
alter-printer font=5 ! select a proportional font
! concatenate the name
let $full_name = &first_name || ' ' || &last_name
print $full_name () ! print the name
alter-printer font=3 ! restore the font
The WRAP and CENTER options of the PRINT command also require special consideration
when used with proportional fonts. They both calculate the text length based on the character
count in the grid, which is not the same as its dimensional width. The use of these options with
proportional fonts is explained after the output example.
Look at the sample program. It consists of a list of reminders from the reminders table. It is
printed in a mix of fonts—Times Roman in two different sizes, plus Helvetica bold.
Program ex13b.sqr
begin-setup
declare-layout default
paper-size=(10,11)
end-declare
end-setup
begin-program
do main
end-program
begin-procedure main
! Set Times Roman as the font for the report
alter-printer font=5 point-size=12
begin-select
remind_date (,1,20) edit 'DD-MON-YY'
reminder (,+1) wrap 60 5
position (+2)
from reminders
end-select
end-procedure ! main
S Q R F O R P E O P L E S O F T D E V E L O P E R ' S G U I D E
P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L C H A N G I N G F O N T S 1 4 - 3
begin-heading 7
print $current-date (1,1) Edit 'DD-MON-YYYY'
page-number (1,60) 'Page '
! Use large font for the title
alter-printer font=5 point-size=24
print 'Reminder List' (3,25)
! Use Helvetica for the column headings
alter-printer font=4 point-size=12
print 'Date' (6,1) bold
print 'Reminder' (6,22) bold
graphic (6,1,66) horz-line
! Restore the font
alter-printer font=5 point-size=12
end-heading
The report uses the default layout grid of 10 characters per inch and 6 lines per inch, both for
positioning the text and for setting the length of the solid line.
The font is set at the beginning of the main procedure to font 5, which is Times Roman. The
point size was not set, so it remains at the default of 12. In the HEADING section, its size is
set to 24 points to print the title.
The column headings are set to 12-point Helvetica with the command ALTER-PRINTER
FONT=4 POINT-SIZE=12. The BOLD option of the PRINT command specifies that they are
printed in bold.
Under the column headings, there is a solid line. Note that it is positioned at line 6, the same
as the column headings. SQR draws the solid line as an underline. At the end the HEADING
section, the font is restored to Times Roman.
Output for Program ex14a.sqr (File ex14a.spf)
In an SQR program, the report heading is performed after the body. A font change in the
heading does not effect the font used in the body of the current page, although it changes the
S Q R F O R P E O P L E S O F T D E V E L O P E R ' S G U I D E
1 4 - 4 C H A N G I N G F O N T S P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L
font used in the body of subsequent pages. Make sure you keep track of your font changes.
PeopleSoft recommends that you return fonts to their original settings in the same section in
which you change them.
Positioning the title requires careful coding. The CENTER option of the PRINT command
will not work because it does not account for the actual size of the text. Instead, position the
title by estimating its length. In this case, the title should start 2 1/2 inches from the left
margin. The character coordinates will be “(3,25),” which is line 3, character position 25.
Remember that the character grid used for positioning assumes 10 characters per inch.
Therefore, 25 characters is 2 1/2 inches.
Using WRAP
The WRAP option of the PRINT command prints the text of the reminder column. This option
wraps text based on a given width, which is 60 characters in the sample program.
The WRAP option works only on the basis of the width given in the character grid. It does not
depend on the font.
Text printed in Times Roman takes about 30-50 percent less space than the same text in
Courier (the default font, which is a fixed-size font). This means that a column with a nominal
width of 44 characters (the width of the reminder column) can actually hold as many as 66
letters when printed in the Times Roman font. To be conservative, specify a width of 60.
The other argument of the WRAP option is the maximum number of lines. Because the
reminder column in the database is 240 characters wide, at 60 characters per line, no more
than five lines are needed. Remember, this setting only specifies the maximum number of
lines. SQR does not use more lines than necessary.
SQR calculates the maximum number of characters on a line using the page dimensions in the
DECLARE-LAYOUT command (the default is 8 1/2 inches wide). In the sample program, 8
1/2 inches minus the inch used in the margins is 7 1/2 inches, or 75 characters at 10 CPI.
Printing 60 characters starting from position 22 could exceed this maximum and cause an
error or undesirable output. To avoid this error, define the page as wider than it actually is.
This definition is given by the argument PAPER-SIZE=(10,11) in the DECLARE-LAYOUT
command.
Summary
• DECLARE-PRINTER and ALTER-PRINTER specify fonts.
• DECLARE-PRINTER is printer-specific. ALTER-PRINTER is printer-neutral.
• The BOLD, CENTER, and WRAP options of the PRINT command format text.
P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L W R I T I N G P R I N T E R - I N D E P E N D E N T R E P O R T S 1 5 - 1
C H A P T E R 1 5
Writing Printer-Independent Reports
This chapter explains how to prepare printer-independent reports, which can be run on any
printer that SQR supports or can be distributed electronically.
Understanding Printer-Independent Reports
To create a printer-independent report, you must write a program that avoids using any
characteristics that are unique to a specific printer.
As you will see, complete printer independence may be too restrictive. However, you should
try to make your report as printer-independent as you can.
• Your program should not assume or require a specific printer. Your program should
be free of the following commands:
GRAPHIC FONT (use ALTER-PRINTER instead),
PRINTER-INIT, PRINTER-DEINIT, USE-PRINTER-TYPE (except for using
this command to select a printer at runtime, as demonstrated in the section
“Modified Program ex3a.sqr"),
CODE-PRINTER and CODE qualifiers of the PRINT command.
• DECLARE-PRINTER, PRINT-DIRECT, the CODE or CODE-PRINTER qualifiers
of the PRINT command, and the SYMBOL-SET argument of the ALTER-PRINTER
command only define behavior when a specific printer is used.
• Your report should be readable if printed on a line printer. Graphics or solid lines
printed with the graphic command are not printed on a line printer. Test your
graphical report on a line printer.
• Use only a small set of fonts. Font numbers 3, 4, 5 and their boldface versions are the
same regardless of the type of printer you use (except for a line printer). Font 3 is
Courier, font 4 is Helvetica, and font 5 is Times Roman. Note that on some HP
printers, Helvetica may not be available. This reduces the common fonts to fonts 3
and 5 only.
S Q R F O R P E O P L E S O F T D E V E L O P E R ' S G U I D E
1 5 - 2 W R I T I N G P R I N T E R - I N D E P E N D E N T R E P O R T S P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L
• Be aware of certain limitations. Eps-file images can only be printed on PostScript
printers. Hpgl-file images can only be printed on HP LaserJet Series 3 or higher or
printers that emulate HP PCL at that level. Bmp-file images can only be printed using
Windows. Gif-file and jpeg-file images are suitable only for HTML output. PRINT-
IMAGE and PRINT-CHART may not work with old printers that use PostScript
Level 1 or HP LaserJet Series II.
If your report is printer-neutral and does not specify a printer, you can specify the printer at
runtime in two ways.
The first method is to use the -PRINTER:xx command-line flag, which specifies the output
type for your report. Use the following commands:
• -PRINTER:LP for line-printer output
• -PRINTER:PS for PostScript output
• -PRINTER:HP for HP LaserJet output
• -PRINTER:WP for Windows output
• -PRINTER:HT for HTML output.
If you are using the system shell, enter the following on the command line:
sqr test username/password -printer:ps
Note. Currently, PRINTER:WP sends output to the default Windows printer. To specify a
nondefault Windows printer, enter the following command: -PRINTER:WP:{Printer Name}.
The {Printer Name} is the name assigned to your printer. For example, to send output to a
Windows printer named NewPrinter, you would use -PRINTER:WP:NewPrinter. If your
printer name has spaces, enclose the entire command in double quotes.
The second method of specifying the printer type is by using the USE-PRINTER-TYPE
command.
Sample Program - Selecting the Printer Type at Runtime
In the following example, you can see the PROGRAM section of the program ex3a.sqr
modified to prompt the user to select the printer type at runtime. The added lines are shown in
bold type.
Modified Program ex3a.sqr
begin-program
input $p 'Printer type' ! Prompt user for printer type
let $p = lower($p) ! Convert type to lowercase
evaluate $p ! Case statement
when = 'hp'
when = 'hplaserjet' ! HP LaserJet
S Q R F O R P E O P L E S O F T D E V E L O P E R ' S G U I D E
P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L W R I T I N G P R I N T E R - I N D E P E N D E N T R E P O R T S 1 5 - 3
use-printer-type hp
break
when = 'lp'
when = 'lineprinter' ! Line Printer
use-printer-type lp
break
when = 'ps'
when = 'postscript' ! PostScript
use-printer-type ps
break
when-other
display 'Invalid printer type.'
stop
end-evaluate
do list_customers
end-program
In this ex3a.sqr code, the INPUT command prompts the user to enter the printer type. Because
the USE-PRINTER-TYPE command does not accept a variable as an argument, the
EVALUATE command is used to test for the six possible values and set the printer type
accordingly.
The EVALUATE command is similar to a switch statement in the C language. It compares a
variable to multiple constants and executes the appropriate code.
Summary
• Reports can be made printer-independent by writing programs that do not require a
certain printer.
• The -PRINTER:xx command-line flag and the USE-PRINTER-TYPE and
EVALUATE commands prompt the user to specify the printer at runtime.
P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L D Y N A M I C S Q L A N D E R R O R C H E C K I N G 1 6 - 1
C H A P T E R 1 6
Dynamic SQL and Error Checking
This chapter describes how to vary the SQL statement based on a user’s selection criteria or
other report parameters and discusses how to:
• Use variables in SQL.
• Use dynamic SQL.
• Use SQL error checking.
• Use SQL and substitution variables.
Using Variables in SQL
The SQL language supports the use of variables. An SQL statement containing variables is
considered static. When SQR executes this statement several times, it executes the same
statement, even if the values of the variables change. Because SQL only allows variables in
places where literals are allowed (such as in a WHERE clause or INSERT statement), the
database can parse the statement before the values for the variables are given.
Sample program, ex16a.sqr, selects customers from a state that the user specifies.
Program ex15a.sqr
begin-program
do list_customers_for_state
end-program
begin-procedure list_customers_for_state
input $state maxlen=2 type=char 'Enter state abbreviation'
let $state = upper($state)
begin-select
name (,1)
position (+1)
from customers
where state = $state
end-select
end-procedure ! list_customers_for_state
S Q R F O R P E O P L E S O F T D E V E L O P E R ' S G U I D E
1 6 - 2 D Y N A M I C S Q L A N D E R R O R C H E C K I N G P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L
Note the use of the $state variable in the SELECT paragraph. When you use a variable in a
SQL statement in SQR for PeopleSoft, the SQL statement sent to the database contains that
variable. SQR “binds” the variable before the SQL is executed. In many cases, the database
only needs to parse the SQL statement once. The only item that changes between executions
of the SELECT statement is the value of the variable. This is the most common example of
varying a SELECT statement.
In this program, the INPUT command prompts the user to enter the value of state. The
arguments MAXLEN and TYPE check the input, ensuring that the user enters a string of no
more than two characters. If the entry is incorrect, INPUT reprompts.
The program converts the contents of the $state variable to uppercase, which enables the user
to input the state without worrying about the case. In the example, state is uppercase in the
database. The example shows the LET command used with the SQR upper function.
You could let the SQL perform the conversion to uppercase. You would do so by using where
state = upper($state) if you are using Oracle or SYBASE or by using where state =
ucase($state) if you are using another database. However, SQR enables you to write database-
independent code by moving the use of such SQL extensions to the SQR code.
When you run this program, you must specify one of the states included in the sample data for
the program to return any records. At the prompt, enter IN, MI, NH, NJ, NM, NY, or OH. If
you enter NY (the state where most of the customers in the sample data reside), SQR
generates the following output.
Output for Program ex16a.sqr
Craig Conway
Eliot Richards
Harriet Bailey
Kate's Out of Date Dress Shop
Corks and Bottles, Inc.
Dynamic SQL
You may find the restriction against using variables where only literals are allowed somewhat
restrictive. In the following example, the ordering of the records changes based on the user’s
selection. The program runs the SELECT twice. The first time, the first column is called name
and the second column is called city, and the program sorts the records by name with a
secondary sort by city. The second time, the first column is the city and the second is name,
and the program sorts by city with a secondary sort by name. The first SELECT statement is:
select name, city
from customers
order by name, city
S Q R F O R P E O P L E S O F T D E V E L O P E R ' S G U I D E
P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L D Y N A M I C S Q L A N D E R R O R C H E C K I N G 1 6 - 3
The second SELECT statement is:
select city, name
from customers
order by city, name
As you can see, the statements are different. SQR constructs the statement each time before
executing it. This technique is called dynamic SQL, and it is illustrated in the following
example. To take full advantage of the error-handling procedure, run it with the command-line
flag -CB.
Program ex15b.sqr
begin-program
let $col1 = 'name'
let $col2 = 'city'
let #pos = 32
do list_customers_for_state
position (+1)
let $col1 = 'city'
let $col2 = 'name'
let #pos = 18
do list_customers_for_state
end-program
begin-procedure give_warning
display 'Database error occurred'
display $sql-error
end-procedure ! give_warning
begin-procedure list_customers_for_state
let $my_order = $col1 || ',' || $col2
begin-select on-error=give_warning
[$col1] &column1=char (,1)
[$col2] &column2=char (,#pos)
position (+1)
from customers
order by [$my_order]
end-select
end-procedure ! list_customers_for_state
When you use variables in a SQL statement in SQR to replace literals and more, you make
them dynamic variables by enclosing them in square brackets. For example, when you use the
dynamic variable [$my_order] in the ORDER BY clause of the SELECT statement, SQR
places the text from the variable $my_order in that statement. Each time the statement is
executed, if the text changes, a new statement is compiled and executed.
S Q R F O R P E O P L E S O F T D E V E L O P E R ' S G U I D E
1 6 - 4 D Y N A M I C S Q L A N D E R R O R C H E C K I N G P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L
Other dynamic variables used are [$col1] and [$col2]. They substitute the names of the
columns in the SELECT statement. The variables &column1 and &column2 are column
variables.
You can use dynamic variables to produce reports like this one. Note that the data in the first
half of the report is sorted differently than the data in the second half.
Note the error-handling procedure give_warning. It is discussed in "SQL Error Checking".
Output for Program ex16b.sqr
Craig Conway New York
Clair Butterfield Teaneck
Corks and Bottles, Inc. New York
Eliot Richards Queens
Gregory Stonehaven Everretsville
Harold Alexander Fink Davenport
Harriet Bailey Mamaroneck
Harry's Landmark Diner Miningville
Isaiah J Schwartz and Company Zanesville
Jerry's Junkyard Specialties Frogline
Joe Smith and Company Big Falls
Kate's Out of Date Dress Shop New York
Quentin Fields Cleveland
Sam Johnson Bell Harbor
Bell Harbor Sam Johnson
Big Falls Joe Smith and Company
Cleveland Quentin Fields
Davenport Harold Alexander Fink
Everretsville Gregory Stonehaven
Frogline Jerry's Junkyard Specialties
Mamaroneck Harriet Bailey
Miningville Harry's Landmark Diner
New York Craig Conway
New York Corks and Bottles, Inc.
New York Kate's Out of Date Dress Shop
Queens Eliot Richards
Teaneck Clair Butterfield
Zanesville Isaiah J Schwartz and Company
SQL Error Checking
SQR for PeopleSoft checks and reports database errors for SQL statements. When an SQR
program is compiled, SQR checks the syntax of the SELECT, UPDATE, INSERT, and
DELETE SQL statements in your program. Any SQL syntax error is detected and reported at
compile time, before the execution of the report begins.
S Q R F O R P E O P L E S O F T D E V E L O P E R ' S G U I D E
P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L D Y N A M I C S Q L A N D E R R O R C H E C K I N G 1 6 - 5
When you use dynamic SQL, SQR cannot check the syntax until runtime. In that case, the
content of the dynamic variable is used to construct the SQL statement, which can allow
syntax errors to occur in runtime. Errors could occur if the dynamic variables selected or used
in a WHERE or ORDER BY clause were incorrect.
SQR traps any runtime error, reports the error, and ends the program. If you want to change
this default behavior, use the ON-ERROR option of the BEGIN-SELECT or BEGIN-SQL
paragraphs.
begin-select on-error=give_warning
[$col1] &column1=char (,1)
[$col2] &column2=char (,#pos)
position (+1)
from customers
order by [$my_order]
end-select
In this example, if a database error occurs, SQR invokes a procedure called give_warning
instead of reporting the problem and ending. Write this procedure as follows:
begin-procedure give_warning
display 'Database error occurred'
display $sql-error
end-procedure ! give_warning
This procedure displays the error message but does not end the execution of the program.
Instead, execution continues at the statement immediately following the SQL or SELECT
paragraph. Note the use of the variable $sql-error, which is a special SQR reserved variable. It
contains the error message text from the database and is automatically set by SQR after a
database error occurs.
SQR has a number of reserved, or predefined, variables. For example, the variable $sqr-
program has the name of the program that is running. The variable $username has the user
name that was used to log on to the database. The variable #page-count has the page number
for the current page.
SQL and Substitution Variables
SQR uses the value of this substitution variable to complete the SELECT statement at compile
time. Because the SELECT statement is complete at compile time, SQR can check its syntax
before execution begins. From this point on, the value of {my_order} cannot change and the
SQL statement is considered static.
In the following program, the ASK command in the SETUP section prompts the user at
compile time. The value that the user enters is placed in a special kind of variable called a
substitution variable. This variable can be used to substitute any command, argument, or part
of a SQL statement at compile time. This example is less common, but it demonstrates the
difference between compile-time and runtime substitutions.
S Q R F O R P E O P L E S O F T D E V E L O P E R ' S G U I D E
1 6 - 6 D Y N A M I C S Q L A N D E R R O R C H E C K I N G P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L
Program ex15c.sqr
begin-setup
ask my_order 'Enter the column name to sort by (name or city)'
end-setup
begin-program
do list_customers_for_state
end-program
begin-procedure give_warning
display 'Database error occurred'
display $sql-error
end-procedure ! give_warning
begin-procedure list_customers_for_state
begin-select on-error=give_warning
name (,1)
city (,32)
position (+1)
from customers
order by {my_order}
end-select
end-procedure ! list_customers_for_state
In this case, the ASK command prompts the user for the value of the substitution variable
{my_order}, which is used to sort the output. If the argument is passed on the command line,
there will be no prompt. When you run this program, enter name, city, or both (in either order
and separated by a comma). The program produces a report sorted accordingly.
You can use the ASK command only in the SETUP section. SQR executes ASK commands at
compile time before program execution begins. Therefore, all ASK commands are executed
before any INPUT command.
Input is more flexible than ASK. You can use INPUT inside loops. You can validate the
length and type of data input and reprompt if it is not valid. There is an example of
reprompting in “Using Variables in SQL".
ASK can be more powerful. Substitution variables set in an ASK command let you modify
commands that are normally quite restrictive. The following code shows this technique.
begin-setup
ask hlines 'Number of lines for heading'
end-setup
begin-program
S Q R F O R P E O P L E S O F T D E V E L O P E R ' S G U I D E
P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L D Y N A M I C S Q L A N D E R R O R C H E C K I N G 1 6 - 7
print 'Hello, World!!' (1,1)
end-program
begin-heading {hlines}
print 'Report Title' () center
end-heading
In this example, the substitution variable {hlines} defines the number of lines that the heading
will occupy. The BEGIN-HEADING command normally expects a literal and does not allow
a runtime variable. When a substitution variable is used with this command, its value is
modified at compile time.
See Also
“Compiling Programs and Using SQR Execute,” for further information about the ASK and
INPUT commands.
Summary
• Dynamic variables are variables used in a SQL statement to replace more than literals.
They are enclosed in square brackets.
• You can configure the SQR runtime error handling.
• SQR has a number of reserved variables.
• You can use substitution variables entered by the ASK command in place of any
command, argument, or SQL statement at compile time. Enclosed these in curly
braces.
P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L P R O C E D U R E S , A R G U M E N T P A S S I N G , A N D L O C A L V A R I A B L E S 1 7 - 1
C H A P T E R 1 7
Procedures, Argument Passing, and
Local Variables
This chapter examines SQR procedures. It discusses how to:
• Pass parameters in a procedure.
• Reference global variables from within a local procedure.
Procedures
The sample code in this section shows a procedure that spells out a number and a program for
printing checks that uses this procedure. When printing checks, you normally need to spell out
the dollar amount, as shown here.
Sample check
In the sample code, Spell.inc it is assumed that the checks are preprinted and that our program
only has to print such items as the date, name, and amount.
SQR procedures that contain variables that are visible throughout the program are called
global procedures. These procedures can also directly reference any program variable.
In contrast, procedures that take arguments, such as the spell_number procedure in this
section’s check-printing sample code, are local procedures. In SQR for PeopleSoft, any
procedure that takes arguments is automatically considered local.
Variables introduced in a local procedure are only readable inside the Spell.inc procedure.
This useful feature avoids name collisions. The spell_number procedure is in an include file
because other reports may also want to use it.
S Q R F O R P E O P L E S O F T D E V E L O P E R ' S G U I D E
1 7 - 2 P R O C E D U R E S , A R G U M E N T P A S S I N G , A N D L O C A L V A R I A B L E S P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L
Local Variables
When you create library procedures that can be used in many programs, make them local.
Then, if a program has a variable with the same name as a variable used in the procedure,
there will not be a collision. SQR treats the two variables as separate.
PeopleSoft recommends that you declare a procedure as local even if it does not take any
arguments. To do this, place the keyword LOCAL after the procedure name in the BEGIN-
PROCEDURE command.
To reference a global variable from a local procedure, insert an underscore between the prefix
character (#, $, or &) and the variable name. Use the same technique to reference reserved
variables such as #current-line. These variables are always global, that you can reference from
a local procedure.
SQR supports recursive procedure calls, but it maintains only one copy of a local variable. A
procedure does not allocate new instances of the local variables on a stack, as C or Pascal
would.
Argument Passing
Procedure arguments are treated as local variables. Arguments can be either numeric, date, or
text variables or strings. If an argument is preceded with a colon, its value is passed back to
the calling procedure.
In the following example, spell_number takes two arguments. The first argument is the check
amount. This argument is a number, and the program passes it to the procedure. There is no
need for the procedure to pass it back.
The second argument is the result that the procedure passes back to the calling program. We
precede this variable with a colon, which means that the value of this argument is copied back
at the end of the procedure. The colon is only used when the argument is declared in the
BEGIN-PROCEDURE command.
Look at the following code. It is not a complete program, but it is the spell_number procedure,
which is stored in the file spell.inc. The check-printing program includes this code using an
#INCLUDE command.
File spell.inc
begin-procedure spell_number(#num,:$str)
let $str = ''
! break the number to it's 3-digit parts
let #trillions = floor(#num / 1000000000000)
let #billions = mod(floor(#num / 1000000000),1000)
let #millions = mod(floor(#num / 1000000),1000)
let #thousands = mod(floor(#num / 1000),1000)
let #ones = mod(floor(#num),1000)
! spell each 3-digit part
do spell_3digit(#trillions,'trillion',$str)
S Q R F O R P E O P L E S O F T D E V E L O P E R ' S G U I D E
P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L P R O C E D U R E S , A R G U M E N T P A S S I N G , A N D L O C A L V A R I A B L E S 1 7 - 3
do spell_3digit(#billions,'billion',$str)
do spell_3digit(#millions,'million',$str)
do spell_3digit(#thousands,'thousand',$str)
do spell_3digit(#ones,'',$str)
end-procedure ! spell_number
begin-procedure spell_3digit(#num,$part_name,:$str)
let #hundreds = floor(#num / 100)
let #rest = mod(#num,100)
if #hundreds
do spell_digit(#hundreds,$str)
concat 'hundred ' with $str
end-if
if #rest
do spell_2digit(#rest,$str)
end-if
if #hundreds or #rest
if $part_name != ''
concat $part_name with $str
concat ' ' with $str
end-if
end-if
end-procedure ! spell_3digit
begin-procedure spell_2digit(#num,:$str)
let #tens = floor(#num / 10)
let #ones = mod(#num,10)
if #num < 20 and #num > 9
evaluate #num
when = 10
concat 'ten ' with $str
break
when = 11
concat 'eleven ' with $str
break
when = 12
concat 'twelve ' with $str
break
when = 13
concat 'thirteen ' with $str
break
when = 14
concat 'fourteen ' with $str
break
when = 15
concat 'fifteen ' with $str
S Q R F O R P E O P L E S O F T D E V E L O P E R ' S G U I D E
1 7 - 4 P R O C E D U R E S , A R G U M E N T P A S S I N G , A N D L O C A L V A R I A B L E S P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L
break
when = 16
concat 'sixteen ' with $str
break
when = 17
concat 'seventeen ' with $str
break
when = 18
concat 'eighteen ' with $str
break
when = 19
concat 'nineteen ' with $str
break
end-evaluate
else
evaluate #tens
when = 2
concat 'twenty' with $str
break
when = 3
concat 'thirty' with $str
break
when = 4
concat 'forty' with $str
break
when = 5
concat 'fifty' with $str
break
when = 6
concat 'sixty' with $str
break
when = 7
concat 'seventy' with $str
break
when = 8
concat 'eighty' with $str
break
when = 9
concat 'ninety' with $str
break
end-evaluate
if #num > 20
if #ones
concat '-' with $str
else
S Q R F O R P E O P L E S O F T D E V E L O P E R ' S G U I D E
P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L P R O C E D U R E S , A R G U M E N T P A S S I N G , A N D L O C A L V A R I A B L E S 1 7 - 5
concat ' ' with $str
end-if
end-if
if #ones
do spell_digit(#ones,$str)
end-if
end-if
end-procedure ! spell_2digit
begin-procedure spell_digit(#num,:$str)
evaluate #num
when = 1
concat 'one ' with $str
break
when = 2
concat 'two ' with $str
break
when = 3
concat 'three ' with $str
break
when = 4
concat 'four ' with $str
break
when = 5
concat 'five ' with $str
break
when = 6
concat 'six ' with $str
break
when = 7
concat 'seven ' with $str
break
when = 8
concat 'eight ' with $str
break
when = 9
concat 'nine ' with $str
break
end-evaluate
end-procedure ! spell_digit
The result argument is reset in the procedure, because the program begins with an empty
string and keeps concatenating the parts of the number to it. The program supports numbers up
to 999 trillion only.
The number is broken into its three-digit parts: trillions, billions, millions, thousands, and
ones. Another procedure spells out the three-digit numbers such as “one hundred twelve.”
S Q R F O R P E O P L E S O F T D E V E L O P E R ' S G U I D E
1 7 - 6 P R O C E D U R E S , A R G U M E N T P A S S I N G , A N D L O C A L V A R I A B L E S P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L
Note that the word and is inserted only between dollars and cents, but not between three-digit
parts. This format is common for check printing in dollars.
Note the use of math functions such as floor and mod. SQR for PeopleSoft has a large set of
functions that can be used in expressions. These functions are listed and described under the
let command in the SQR for PeopleSoft Language Reference.
The series of EVALUATE commands in the number-spelling procedures are used to correlate
the numbers stored in the variables with the strings used to spell them out.
This is the full program that prints the checks.
Program ex16d.sqr
#include 'spell.inc'
begin-setup
declare-layout default
end-declare
end-setup
begin-program
do main
end-program
begin-procedure main
alter-printer font=5 point-size=15
begin-select
name &name
sum(d.price * c.quantity) * 0.10 &refund
do print_check(&refund)
from customers a, orders b,
ordlines c, products d
where a.cust_num = b.cust_num
and b.order_num = c.order_num
and c.product_code = d.product_code
group by name
having sum(d.price * c.quantity) * 0.10 >= 0.01
end-select
end-procedure ! main
begin-procedure print_check(#amount)
print $_current-date (3,45) edit 'DD-Mon-YYYY'
print &_name (8,12)
move #amount to $display_amt 9,999,990.99
! enclose number with asterisks for security
let $display_amt = '**' || ltrim($display_amt,' ') || '**'
print $display_amt (8,58)
S Q R F O R P E O P L E S O F T D E V E L O P E R ' S G U I D E
P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L P R O C E D U R E S , A R G U M E N T P A S S I N G , A N D L O C A L V A R I A B L E S 1 7 - 7
if #amount < 1.00
let $spelled_amount = 'Zero dollars '
else
do spell_number(#amount,$spelled_amount)
let #len = length($spelled_amount)
! Change the first letter to uppercase
let $spelled_amount = upper(substr($spelled_amount,1,1))
|| substr($spelled_amount,2,#len - 1)
concat 'dollars ' with $spelled_amount
end-if
let #cents = round(mod(#amount,1) * 100, 0)
let $cents_amount = 'and ' || edit(#cents,'00') || ' cents'
concat $cents_amount with $spelled_amount
print $spelled_amount (12,12)
print 'Rebate' (16,12)
print ' ' (20)
next-listing need=20
end-procedure ! print_check
The main procedure starts by setting the font to 15-point Times Roman. The SELECT
paragraph is a join of several tables. (A join is created when you select data from more than
one database table in the same SELECT paragraph.) The customers table has the customer’s
name. The program joins it with the orders and ordlines tables to get the customer’s order
details. It also joins with the products table for the price.
The following expression adds up all of the customer’s purchases and calculates a 10 percent
rebate:
sum(d.price * c.quantity) * 0.10
The statement groups the records by the customer name, one check per customer. This is done
with the following clause:
group by name
having sum(d.price * c.quantity) * 0.10 >= 0.01
The having clause eliminates checks for less than 1 cent.
The procedure print_check is a local procedure. Note the way it references the date and
customer name with &_current-date and &_name, respectively.
Summary
• Variables in global procedures are visible throughout the program.
• Variables in local procedures are visible only within the procedure.
• To reference a global variable from a local procedure, place an underscore between
the prefix character #, $, or & and the variable name.
• To pass an argument back to its calling procedure, preface it with a colon.
P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L M U L T I P L E R E P O R T S 1 8 - 1
C H A P T E R 1 8
Multiple Reports
This chapter shows you how to create multiple reports from one program and discusses how
to:
• Define heading and footing sections.
• Define program output.
Understanding Multiple Reports From One Program
This feature can save a significant amount of processing time. You can create multiple reports
based on common data, selecting the database records only once and creating different reports
simultaneously.
The alternative—writing separate programs for the different reports—would require you to
perform a separate database query for each report. Repeated queries are costly because
database operations are often the most resource-consuming or time-consuming part of creating
a report.
Sample Program - Multiple Reports
The following example, ex18a.sqr, shows how SQR for PeopleSoft enables you to write
multiple reports with different layouts and different heading and footing sections. The sample
program prints three reports—the labels from "Printing Mailing Labels" and the form letter
from "Creating Form Letters”, and the listing report from "Selecting Data from the Database".
All three reports are based on the same data.
Program ex17b.sqr
#define MAX_LABEL_LINES 10
#define LINES_BETWEEN_LABELS 3
begin-setup
declare-layout labels
paper-size=(10,11) left-margin=0.33
end-declare
declare-layout form_letter
end-declare
declare-layout listing
S Q R F O R P E O P L E S O F T D E V E L O P E R ' S G U I D E
1 8 - 2 M U L T I P L E R E P O R T S P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L
end-declare
declare-report labels
layout=labels
end-declare
declare-report form_letter
layout=form_letter
end-declare
declare-report listing
layout=listing
end-declare
end-setup
begin-program
do main
end-program
begin-procedure main
do init_mailing_labels
begin-select
name
addr1
addr2
city
state
zip
move &zip to $zip xxxxx-xxxx
phone
do print_label
do print_letter
do print_listing
from customers
end-select
do end_mailing_labels
end-procedure ! main
begin-procedure init_mailing_labels
let #label_count = 0
let #label_lines = 0
use-report labels
columns 1 29 57 ! enable columns
alter-printer font=5 point-size=10
end-procedure ! init_mailing_labels
begin-procedure print_label
use-report labels
S Q R F O R P E O P L E S O F T D E V E L O P E R ' S G U I D E
P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L M U L T I P L E R E P O R T S 1 8 - 3
print &name (1,1,30)
print &addr1 (2,1,30)
let $last_line = &city || ', ' || &state || ' ' || $zip
print $last_line (3,1,30)
next-column at-end=newline
add 1 to #label_count
if #current-column = 1
add 1 to #label_lines
if #label_lines = {MAX_LABEL_LINES}
new-page
let #label_lines = 0
else
next-listing no-advance skiplines={LINES_BETWEEN_LABELS}
end-if
end-if
end-procedure ! print_label
begin-procedure end_mailing_labels
use-report labels
use-column 0 ! disable columns
new-page
print 'Labels printed on ' (,1)
print $current-date ()
print 'Total labels printed = ' (+1,1)
print #label_count () edit 9,999,999
end-procedure ! end_mailing_labels
begin-procedure print_letter
use-report form_letter
begin-document (1,1)
&name
&addr1
&addr2
@city_state_zip
.b
.b
$current-date
Dear Sir or Madam:
.b
Thank you for your recent purchases from ACME Inc. We would like to tellyou about our limited time offer. During this month, our entire inventory ismarked down by 25%. Yes, you can buy your favorite merchandise and save too.
To place an order simply dial 800-555-ACME. Delivery is free too, so don'twait.
.b
.b
Sincerely,
S Q R F O R P E O P L E S O F T D E V E L O P E R ' S G U I D E
1 8 - 4 M U L T I P L E R E P O R T S P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L
Clark Axelotle
ACME Inc.
end-document
position () @city_state_zip
print &city ()
print ', ' ()
print &state ()
print ' ' ()
move &zip to $zip xxxxx-xxxx
print $zip ()
new-page
end-procedure ! print_letter
begin-heading 4 for-reports=(listing)
print 'Customer Listing' (1) center
print 'Name' (3,1)
print 'City' (,32)
print 'State' (,49)
print 'Phone' (,55)
end-heading
begin-footing 1 for-reports=(listing)
! Print "Page n of m" in the footing
page-number (1,1) 'Page '
last-page () ' of '
end-footing
begin-procedure print_listing
use-report listing
print &name (,1)
print &city (,32)
print &state (,49)
print &phone (,55)
position (+1)
end-procedure ! print_listing
The SETUP section defines three layouts and three different reports that use these layouts. The
labels report requires a layout that is different from the default. The other two reports use a
layout that is identical to the default layout. You could save the last layout declaration and use
the form-letter layout for the listing. However, unless there is a logical reason why the two
layouts should be the same, it is better to keep separate layouts. The name of the layout
indicates which report uses it.
The main procedure performs the SELECT. Note that it is only performed once and includes
all the columns for all the reports. The phone column is used only in the listing report and the
addr2 column is used only in the form-letter report. The other columns are used in more than
one report.
S Q R F O R P E O P L E S O F T D E V E L O P E R ' S G U I D E
P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L M U L T I P L E R E P O R T S 1 8 - 5
For each record selected, three procedures are executed. Each procedure processes one record
for its corresponding report. The print_label procedure prints one label, print_letter prints one
letter, and print_listing prints one line into the listing report. Each procedure begins by setting
the SQR printing context to its corresponding report. SQR sets the printing context with the
USE-REPORT command.
Defining Heading and Footing Sections
SQR enables you to define HEADING and FOOTING sections for each report. This example
defines only the heading and footing for the listing report, because the other two reports do not
use them. The FOR-REPORTS option of the BEGIN-HEADING and BEGIN-FOOTING
commands specifies the report name. The parentheses are required. Note that the USE-
REPORT command is not needed in the heading or the footing. The report is implied by the
FOR-REPORTS option.
Defining Program Output
Most of the code for ex18a.sqr is taken from ex9a.sqr, ex10a.sqr, and ex3a.sqr. Because this
program creates output with proportional fonts, you must run it with the -KEEP or -
PRINTER:xx command-line flags.
See "Printing Mailing Labels," for information about running reports with proportional fonts,
When you run ex18a.sqr, you get three output files that match the output files for ex9a, ex10a,
and ex3a, respectively. These output files have the names ex18a.lis (labels), ex18a.l01 (form
letter), and ex18a.l02 (customer listing). If you specify -KEEP, the output files are named
ex18a.spf, ex18a.s01, and ex18a.s02, respectively.
Summary
• Writing multiple reports simultaneously with one program reduces database queries.
• You can define separate reports in the SETUP section.
• USE-REPORT sets the printing context for each report.
• The FOR-REPORTS option of BEGIN-HEADING and BEGIN-FOOTING defines
headings and footings for individual reports.
P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L U S I N G D M L A N D D D L 1 9 - 1
C H A P T E R 1 9
Using DML and DDL
This chapter describes the most common SQL commands you can use in SQR and explains
their uses with examples.
Using SQL Statements in SQR
Although SELECT may be the most common SQL statement, you can also perform other SQL
commands in SQR. Here are a few examples:
• If the program prints important documents such as checks, tickets, or invoices, you
may need to update the database to indicate that the document was printed. You can
do this in SQR with a SQL UPDATE statement.
• You can use SQR to load data into the database. SQR can read and write external files
and construct records. SQR can also insert these records into the database using a SQL
INSERT statement.
• If you need to hold intermediate results in a temporary database table, you can create
two SQL paragraphs in your SQR program (CREATE TABLE and DROP TABLE) to
create this table at the beginning of the program and drop the table at the end.
These are only a few examples. SQR can perform any SQL statement, and this feature is used
often.
Using BEGIN-SQL
An SQL statement other than a SELECT statement must use the BEGIN-SQL paragraph.
The following example loads data from an external file into the database. It demonstrates two
important features of SQR—handling external files and performing database inserts. This
program loads the tab-delimited file created by the program ex11a.sqr.
Program ex18b.sqr
begin-setup
begin-sql on-error=skip ! table may already exist
create table customers_ext (
cust_num int not null,
name varchar (30),
addr1 varchar (30),
S Q R F O R P E O P L E S O F T D E V E L O P E R ' S G U I D E
1 9 - 2 U S I N G D M L A N D D D L P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L
addr2 varchar (30),
city varchar (16),
state varchar (2),
zip varchar (10),
phone varchar (10),
tot int
)
end-sql
end-setup
begin-program
do main
end-program
begin-procedure main
#if {sqr-database} = 'Sybase'
begin-sql
begin transaction
end-sql
#endif
encode '<009>' into $sep
open 'ex11a.lis' as 1 for-reading record=160:vary
read 1 into $rec:160 ! skip the first record, column headings
while 1
read 1 into $rec:160
if #end-file
break
end-if
unstring $rec by $sep into $cust_num $name
$addr1 $addr2 $city $state $zip $phone $tot
move $cust_num to #cust_num
move $tot to #tot
begin-sql
insert into customers_ext (cust_num, name,
addr1, addr2, city, state, zip, phone, tot)
values
(#cust_num, $name, $addr1, $addr2, $city,
$state, $zip, $phone, #tot)
end-sql
end-while
#if {sqr-database} = 'Sybase'
begin-sql
commit transaction
S Q R F O R P E O P L E S O F T D E V E L O P E R ' S G U I D E
P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L U S I N G D M L A N D D D L 1 9 - 3
end-sql
#else
#if {sqr-database} <> 'Informix'
begin-sql
commit
end-sql
#endif
#endif
close 1
end-procedure ! main
The program begins by creating the table customers_ext. If the table already exists, you
receive an error message. To ignore this error message, use the ON-ERROR=SKIP option.
See "Dynamic SQL and Error Checking" for information about error handling.
The program reads the records from the file and inserts each record into the database by using
an insert statement inside a BEGIN-SQL paragraph. The input file format is one record per
line, with each field separated by the separator character. When the end of the file is
encountered (if #end-file), the program branches out of the loop. Note that #end-file is an SQR
reserved variable.
See SQR Language Reference for a list of reserved variables.
The final step is to commit the changes to the database and close the file. You do this with a
SQL COMMIT statement inside a BEGIN-SQL paragraph. Alternatively, you can use the
SQR COMMIT command. For Oracle databases, we recommend you use the SQR COMMIT.
Note that the code may be database-specific. If you are using Informix, for example, and your
database was created with transaction logging, you must add a BEGIN WORK and a
COMMIT WORK, much like the SYBASE example of BEGIN TRANSACTION and
COMMIT TRANSACTION.
Summary
• A BEGIN-SQL paragraph can be used to perform SQL statements other than
SELECT.
• To insert database records, use SQL commands such as INSERT and COMMIT inside
the BEGIN-SQL paragraph. For Oracle databases, use the SQR COMMIT.
P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L W O R K I N G W I T H C O M M A S E P A R A T E D F I L E S 2 0 - 1
C H A P T E R 2 0
Working With Comma Separated Files
This chapter covers working with comma separated files (CSV) and discusses how to:
• Declare a connection to a CSV data source.
• View CSV metadata.
• Create and execute MD queries.
Declaring a Connection to a CSV Data Source
To begin accessing the data from the CSV Data Source, Declare-Connection must be
established to a registered data source.
See DDO Registry Properties.
• Enter Declare-Connection followed by a connection_name_literal CSV.
• Enter DSN, this is the logical data source name as recorded in the DDO Registry.
(User and Password are associated with CSV data sources)
Declare-Connection CSV
dsn=CSVsource
End-Declare
Viewing CSV Metadata
When creating queries, it is often helpful to view the structure of the CSV file that you are
querying. You can browse a CSV file’s metadata, that is, information about the file’s
structure, by running the DDO Query Editor and selecting a schema in the Schema View drop-
down list box and viewing its selectable column list.
Creating and Executing MD Queries
You construct queries in the same manner you access relational databases. You can choose a
sample script from the Samples directory and run or modify it, or construct your own. The
scripts in the sample directory are included when the SQR-DDO port is installed. You can edit
S Q R F O R P E O P L E S O F T D E V E L O P E R ' S G U I D E
2 0 - 2 W O R K I N G W I T H C O M M A S E P A R A T E D F I L E S P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L
this file with a text editor or create files of your own. To properly access a CSV data source, a
Data Object must be defined. The data object is declared after the Begin-Execute command
and prior to the Begin-Select command. For CSV queries, the DDO GetData paradigm is used
for data access.
Example
Begin-Execute
Connection=CSV
GetData='customer.csv' (Data Object)
Begin-Select
Customer_num type=number (+1,1)
Name type=char (,11)
phone type=char (,41)
addr_line1 type=char (+1,11)
addr_line2 type=char (+1,11)
city type=char (+1,11)
state type=char (+1,11)
zip type=number (,41)
From Rowsets=(1)
End-Select
End-Execute
Summary
• To access data from the CSV source you must establish Declare-Connection to a
registered data source.
• You can browse a CSV file’s metadata through the DDO Query Editor.
• You declare the data object after the Begin-Execute command and prior to the Begin-
Select command.
P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L W O R K I N G W I T H D A T E S 2 1 - 1
C H A P T E R 2 1
Working With Dates
This chapter explains how SQR processes dates and discusses how to:
• Use literal date formats.
• Use string to date conversions.
• Use date to string conversions.
• Use dates with the INPUT command.
• Use date edit masks.
• Declare date variables.
Understanding Dates and Date Arithmetic
SQR has powerful capabilities in date arithmetic, editing, and manipulation. A date can be
represented as a character string or in an internal format using the SQR date datatype.
The date datatype enables you to store dates in the range of January 1, 4712 B.C. to December
31, 9999 A.D. It also stores the time of day with the precision of a microsecond. The internal
date representation always keeps the year as a four-digit value. PeopleSoft strongly
recommends that you always keep dates with four-digit year values (and not truncate to two
digits) to avoid date problems at the turn of the century.
Date values can be obtained in one of five ways:
• By selecting a date column from the database.
• By using INPUT to get a date from the user.
• By referencing or printing the reserved variable $current-date.
• As a result of an SQR date function: dateadd, datediff, datenow, or strdodate.
• By declaring a date variable using the DECLARE-VARIABLE command.
For most applications, it is not necessary to declare date variables. Date variables are
discussed in the section "Declaring Date Variables".
Many applications require date calculations. You may need to add or subtract a number of
days from a given date, subtract one date from another to find a time difference, or compare
S Q R F O R P E O P L E S O F T D E V E L O P E R ' S G U I D E
2 1 - 2 W O R K I N G W I T H D A T E S P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L
dates to find if one date is later, earlier, or the same as another date. SQR enables you to
perform these calculations in your program.
Many databases enable you to perform date calculations in SQL, but that can be difficult if
you are trying to write portable code, because the syntax varies between databases. Instead,
perform those calculations in SQR—your programs will be portable, because they won’t rely
on a particular SQL syntax.
The dateadd function adds or subtracts a number of specified time units from a given date. The
datediff function returns the difference between two specified dates in the time units you
specify—years, quarters, months, weeks, days, hours, minutes, or seconds. Fractions are
allowed—you can add 2.5 days to a given date. Conversion between time units is also
allowed—you can add, subtract, or compare dates using days and state the difference using
weeks.
The datenow function returns the current local date and time. In addition, SQR provides a
reserved date variable, $current-date, which is automatically initialized with the local date and
time at the beginning of the program.
You can compare dates by using the usual operators (< , =, or >) in an expression. The
datetostr function converts a date to a string. The strtodate function converts a string to a date.
The following code uses functions to add 30 days to the invoice date and compare it to the
current date:
begin-select
order_num (,1)
invoice_date
if dateadd(&invoice_date,'day',30) < datenow()
print 'Past Due Order' (,12)
else
print 'Current Order' (,12)
end-if
position (+1)
end-select
In this example, we use the functions dateadd and datenow to compare dates. The function
dateadd adds 30 days to the invoice date (&invoice_date). The resulting date is then compared
with the current date, which is returned by datenow. If the invoice is older than 30 days, the
program prints the string “Past Due Order.” If the invoice is 30 days old or less, the program
prints the string “Current Order.”
To subtract a given number of days from a date, use the dateadd function with a negative
argument. This technique is demonstrated in the next example. In this example, the IF
condition compares the invoice date with the date of 30 days before today. The condition is
equivalent to that of the previous example.
if &invoice_date < dateadd(datenow(),'day',-30)
S Q R F O R P E O P L E S O F T D E V E L O P E R ' S G U I D E
P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L W O R K I N G W I T H D A T E S 2 1 - 3
This condition can also be written as follows using the datediff function. Note that the
comparison is now a simple numeric comparison, not a date comparison:
if datediff(datenow(),&invoice_date,'day') > 30
All three IF statements are equivalent, and they demonstrate the flexibility provided by these
functions.
Here is another technique for comparing dates:
begin-select
order_date
if &order_date > strtodate('3/1/1999','dd/mm/yyyy')
print 'Current Order' ()
else
print 'Past Due Order' ()
end-if
from orders
end-select
The IF statement has a date column on the left side and the strtodate function on the right side.
The strtodate function returns a date type, which is compared with the column &order_date.
When the order date is later than January 3, 1999, the condition is satisfied. If the date
includes the time of day, the comparison will be satisfied for orders of January 3, 1999 with a
time of day greater than 00:00.
In the next example, the date is truncated to remove the time-of-day portion of a date:
if strtodate(datetostr(&order_date,'dd/mm/yyyy'),'dd/mm/yyyy') >
strtodate('3/1/1999','dd/mm/yyyy')
In this example, the datetostr function converts the order date to a string that stores the day,
month, and year only. The strtodate function then converts this value back into a date. With
these two conversions, the time-of-day portion of the order date is omitted. Now when it is
compared with January 3, 1999, only dates that are of January 4 or later will satisfy the
condition.
Using Literal Date Formats
SQR enables you to specify date constants and date values in a special format that is
recognized without the use of an edit mask. This is called the literal date format. For example,
you can use a value in this format in the strtodate function without the use of an edit mask.
This format has the advantage of being independent of any specific database or language
preference.
The literal date format is SYYYYMMDD[HH24[MI[SS[NNNNNN]]]]. The first S in this
format represents an optional minus sign. If preceded with a minus sign, the string represents a
S Q R F O R P E O P L E S O F T D E V E L O P E R ' S G U I D E
2 1 - 4 W O R K I N G W I T H D A T E S P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L
date B.C. The digits that follow represent year, month, day, hours, minutes, seconds, and
microseconds.
Note. The literal date format assumes a 24-hour clock.
You may omit one or more time elements from the right part of the format. A default is
assumed for the missing elements. Here are some examples:
let $a = strtodate('19990409')
let $a = strtodate('19990409152000')
The first LET statement assigns the date of April 9, 1999 to the variable $a. The time portion
defaults to 00:00. The second LET statement assigns 3:20 in the afternoon of April 9, 1999 to
$a. The respective outputs (when printed with the edit mask ‘DD-MON-YYYY HH:MI AM’)
will be:
09-APR-1999 12:00 AM
09-APR-1999 03:20 PM
You can also specify a date format with the environment variable
SQR_DB_DATE_FORMAT. You can specify this as an environment variable or in the
PSSQR.INI file.
See Also
SQR for PeopleSoft Language Reference, “Using the PSSQR.INI File,” for information about
the PSSQR.INI file
Using String to Date Conversions
If you convert a string variable or constant to a date variable without specifying an edit mask
that identifies the format of the string, SQR applies a date format. This implicit conversion
takes place with the following commands:
• MOVE.
• The strtodate function.
• The commands DISPLAY, PRINT, or SHOW, when used to output a string variable
as a date.
SQR attempts to apply date formats in the following order:
1. The format specified in SQR_DB_DATE_FORMAT.
2. The database-dependent format.
3. The literal date format SYYYYMMDD[HH24[MI[SS[NNNNNN]]]].
S Q R F O R P E O P L E S O F T D E V E L O P E R ' S G U I D E
P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L W O R K I N G W I T H D A T E S 2 1 - 5
Using Date to String Conversions
If you convert a date variable to a string without specifying an edit mask, SQR applies a date
format. The conversion takes place with these commands:
• MOVE.
• The datetostr function.
• The commands DISPLAY, PRINT, or SHOW, when used to output a date variable.
SQR attempts to apply date formats in the following order:
1. The format specified in SQR_DB_DATE_FORMAT.
2. The database-dependent format.
See Also
SQR for PeopleSoft Language Reference for a list of Database-dependent formats.
Using Dates With the INPUT Command
The INPUT command also supports dates. You can load a date into a date or string variable.
For string variables, use the TYPE=DATE qualifier. Specify a format for the date. Here is an
example:
input $start_date 'Enter starting date' type=date format='dd/mm/yyyy'
In this example, the user is prompted with Enter starting date: (the colon is automatically
added). The user then types in the value, which is validated as a date using the “dd/mm/yyyy”
format. The value is loaded into the variable $start_date.
Using Date Edit Masks
When you print dates, you can format them with an edit mask. For example:
print &order_date () edit 'Month dd, YYYY'
This command prints the order date in the specified format. The name of the order date month
is printed followed by the day of the month, a comma, and four-digit year. SQR for
PeopleSoft provides an extensive set of date edit masks.
See SQR for PeopleSoft Language Reference for a complete list of date edit masks.
If the value of the date value being edited is March 14, 1999 at 9:35 in the morning, the edit
masks produce the following results.
S Q R F O R P E O P L E S O F T D E V E L O P E R ' S G U I D E
2 1 - 6 W O R K I N G W I T H D A T E S P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L
Edit Mask Result Description
dd/mm/yyyy 14/03/1999
DD-MON-
YYYY
14-MAR-1999
'Month dd,
YYYY.'
March 14,
1999.
An edit mask containing blank space must be
enclosed in single quotes.
MONTH-
YYYY
MARCH-1999 Name of the month in uppercase followed by
four-digit year
HH:MI 09:35
'HH:MI AM' 09:35 AM Meridian indicators. An edit mask containing
blank space must be enclosed in single
quotes.
YYYYMMDD 19990314
DD.MM.YY 14.03.99
Mon Mar Abbreviated name of the month
Day Thursday Day of the week
DY THU Abbreviated name of day of the week
Q 1 Quarter
WW 11 Week of the year
W 2 Week of the month
DDD 74 Day of the year
DD 14 Day of the month (1-31)
D 3 Day of the week (Sunday = 1)
If the edit mask contains other text, it is also printed. For example:
print &order_date () edit ’As of Month dd, YYYY’
This command prints the string “As of March 14, 1999” if the order date is March 14, 1999.
Because the words “As of” are not recognized as date mask elements, they are printed.
A backslash forces the character that follows into the output. This technique is useful when
you want to print text that would otherwise be recognized as a date mask element. For
example, a mask of “The \mo\nth is month” results in the output string of “The month is
march”. Without the backslashes, the output string would be “The march is march”. The
second backslash is needed because “n” is a valid date edit mask element.
In some cases, combining date edit mask elements can result in ambiguity. One example is the
mask 'DDDD', which could be interpreted as various combinations of 'DDD' (day of year),
'DD' (day of month), and 'D' (day of week). To resolve such ambiguity, use a vertical bar as a
delimiter between format elements. For example, 'DDD' followed by 'D' can be written as
'DDD|D'.
S Q R F O R P E O P L E S O F T D E V E L O P E R ' S G U I D E
P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L W O R K I N G W I T H D A T E S 2 1 - 7
The masks MON, MONTH, DAY, DY, AM, PM, BC, AD, and RM are case-sensitive and
follow the case of the mask entered. For example, if the month is January, the mask Mon
yields “Jan” and MON yields “JAN”. All other masks are case-insensitive and can be entered
in either uppercase or lowercase.
In addition, national language support is provided for the following masks: MON, MONTH,
DAY, DY, AM, PM, BC, and AD.
See Also
See SQR for PeopleSoft Language Reference, “ALTER-LOCALE command” or “Using the
PSSQR.INI File.”
Declaring Date Variables
To hold date values in your program, use date variables. Like string variables, date variables
are prefixed with a dollar sign ($). You must explicitly declare date variables using the
DECLARE-VARIABLE command.
Date variables are useful for holding results of date calculations. For example:
begin-setup
declare-variable
date $c
end-declare
end-setup
...
let $c = strtodate('March 1, 1999 12:00','Month dd, yyyy hh:mi')
print $c () edit 'dd/mm/yyyy'
In this example, $c is declared as a date variable. Later, it is assigned the value of noon on
March 1, 1999. The variable $c is then printed with the edit mask 'dd/mm/yyyy', which yields
01/03/1999.
Date variables can be initialized with date literals as shown in the following example:
begin-setup
declare-variable
date $c
end-declare
end-setup
...
let $c = '19990409152000'
The LET statement assigns 3:20 in the afternoon of April 9, 1999 to $c.
S Q R F O R P E O P L E S O F T D E V E L O P E R ' S G U I D E
2 1 - 8 W O R K I N G W I T H D A T E S P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L
Summary
• Obtain date values by selecting a date column from the database, printing or
referencing the reserved variable $current-date, or using an SQR date function such as
dateadd, datediff, datenow, or strtodate.
• Perform date arithmetic and date comparison by using the date functions.
• The SQR literal date format is SYYYYMMDD[HH24[MI[SS[NNNNNN]]]]. For this
format, a 24-hour clock is assumed.
• You can also specify a date format with the environment variable
SQR_DB_DATE_FORMAT. This format can be specified as an environment variable
or specified in the PSSQR.INI file.
• Declare date variables with the DECLARE-VARIABLE command.
P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L N A T I O N A L L A N G U A G E S U P P O R T 2 2 - 1
C H A P T E R 2 2
National Language Support
This chapter describes SQR features for national language support (NLS) which is provided
through the concept of locales, and discusses the following topics:
• Locales.
• Available locales.
• Default locale.
• How to switch locales.
• How to modify locale preferences.
• Specify the keywords NUMBER, MONEY, and DATE.
Locales
A locale is a set of local preferences for language, currency, and the presentation of dates and
numbers. For example, one locale may use English, dollar currency, dates in “dd/mm/yy”
format, numbers with commas separating the thousands, and a period for the decimal place.
A locale contains default edit masks for number, money, and date. Use these edit masks to
specify the keywords NUMBER, MONEY, and DATE, respectively. You can specify these
keywords in the INPUT, MOVE, DISPLAY, SHOW, and PRINT commands.
A locale also contains settings for currency symbol, thousands separator, decimal separator,
date separator, and time separator. A locale contains settings for N/A, AM, PM, BC, and AD
in the language of the locale.
A locale contains a setting for names of the days of the week and names of the months in the
language of the locale. It also contains settings for how to process lowercase and uppercase
editing of these names.
See Also
SQR for PeopleSoft Language Reference, “ALTER-LOCALE," for a description of these
locale settings.
S Q R F O R P E O P L E S O F T D E V E L O P E R ' S G U I D E
2 2 - 2 N A T I O N A L L A N G U A G E S U P P O R T P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L
Available Locales
SQR provides predefined locales such as US-English, UK-English, German, French, and
Spanish. You can define additional locales or modify existing locales by editing the
PSSQR.INI file.
See SQR for PeopleSoft Language Reference, "PSSQR.INI."
With the ALTER-LOCALE command, you can select a locale—at the beginning of your
program or anywhere else. You can have different parts of your program use different locales.
You can select a locale with this command:
alter-locale locale = 'German'
Default Locale
The PSSQR.INI file defines a default locale. Most or all of your programs can use the same
locale, and specifying the default locale in the PSSQR.INI file makes it unnecessary to specify
the locale in every program.
When you install SQR, the default locale is set to the reserved locale called “System.” System
is not an actual locale. It defines the behavior of older versions of SQR, before national
language support was added. The preferences in the system locale are hard-coded in the
product and cannot be set or defined in the PSSQR.INI; however, System settings can be
altered at runtime using ALTER-LOCALE. The date preferences are dependent on the
database you are using. Therefore, date format preferences in the system locale are different
for every database you use with SQR.
Different sites can have different locales as the default. For example, an office in Paris might
use the “French” locale, and an office in London might use the “UK-English” locale. To adapt
your program to any location, use the default locale. Your program will automatically use the
local preferences, which are specified in the PSSQR.INI file of the machine on which it is run.
For example, you can print the number 5120 using the following command:
print #invoice_total () edit '9,999,999.99'
The setting of the default locale in the PSSQR.INI file controls the format. In London, the
result might be 5,120.00, and in Paris 5.120,00. The delimiters for thousands and the
decimal—the comma and the period—are switched automatically according to the preferences
of the locale.
Note. Changing the settings of the default locale can change the behavior of existing
programs. For example, if you change the default locale to French, programs that used to print
dates in English may now print them in French. Be sure that you review and test existing
programs when making a change to the default locale.
S Q R F O R P E O P L E S O F T D E V E L O P E R ' S G U I D E
P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L N A T I O N A L L A N G U A G E S U P P O R T 2 2 - 3
Switching Locales
You can switch from one locale to another any number of times during program execution.
This technique is useful for writing reports that use multiple currencies, or reports that have
different sections for different locales.
To switch to another locale, use the ALTER-LOCALE command. For example, to switch to
the Spanish locale:
alter-locale locale = 'Spanish'
From this point in the program, the locale is Spanish.
Consider this example:
begin-procedure print_data_in_spanish
! Save the current locale
let $old_locale = $sqr-locale
! Change the locale to "Spanish"
alter-locale locale = 'Spanish'
! Print the data
do print_data
! restore the locale to the previous setting
alter-locale locale = $old_locale
end-procedure
In this example, the locale is switched to Spanish and later restored to the previous locale
before it was switched. To do that, the locale setting before it is changed is read in the
reserved variable $sqr-locale and stored in $old_locale. The value of $old_locale is then used
in the ALTER-LOCALE command at the end of the procedure.
Modifying Locale Preferences
With the ALTER-LOCALE command, you can modify any individual preference in a locale.
The ALTER-LOCALE command affects only the current program. It does not modify the
PSSQR.INI file.
Here is an example of how you can modify default preferences in a locale:
alter-locale
date-edit-mask = 'Mon-DD-YYYY'
money-edit-mask = '$$,$$$,$$9.99'
To restore modified locale preferences to their defaults, you can reselect the modified locale.
For example, suppose that the locale was US-English and the date and money edit masks were
modified using the preceding code. The following code resets the changed date and money
edit masks:
alter-locale locale = 'US-English'
S Q R F O R P E O P L E S O F T D E V E L O P E R ' S G U I D E
2 2 - 4 N A T I O N A L L A N G U A G E S U P P O R T P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L
Specifying NUMBER, MONEY, and DATE Keywords
The commands DISPLAY, MOVE, PRINT, and SHOW enable you to specify the keywords
NUMBER, MONEY, and DATE in place of an explicit number or date edit mask. These
keywords can be useful in two cases.
The first case is when you want to write programs that automatically adapt to the default
locale. By using the keywords NUMBER, MONEY, and DATE, you instruct SQR for
PeopleSoft to take these edit masks from the default locale settings.
The second case is when you want to specify your number, money, and date formats once at
the top of your program and use these formats throughout your report. In this case, you define
these formats with an ALTER-LOCALE command at the top of your program. Then when
you use the keywords NUMBER, MONEY, and DATE later in your program, they format
number, money, and date outputs with the masks defined in the ALTER-LOCALE command.
Whether you set the locale in the PSSQR.INI file or in your program, these keywords have the
same effect. In the following example, these keywords are used with the PRINT command to
produce output for the US-English and French locales:
let #num_var = 123456
let #money_var = 123456
let $date_var = strtodate('19960520152000')
! set locale to US-English
alter-locale locale = 'US-English'
print 'US-English locale' (1,1)
print 'With NUMBER keyword ' (+1,1)
print #num_var (,22) NUMBER
print 'With MONEY keyword ' (+1,1)
print #money_var (,22) MONEY
print 'With DATE keyword ' (+1,1)
print $date_var (,22) DATE
! set locale to French
ALTER-LOCALE locale = 'French'
print 'French locale' (+2,1)
print 'With NUMBER keyword ' (+1,1)
print #num_var (,22) NUMBER
print 'With MONEY keyword ' (+1,1)
print #money_var (,22) MONEY
print 'With DATE keyword ' (+1,1)
print $date_var (,22) DATE
Here is the program output:
US-English locale
With NUMBER keyword 123,456.00
With MONEY keyword $ 123,456.00
S Q R F O R P E O P L E S O F T D E V E L O P E R ' S G U I D E
P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L N A T I O N A L L A N G U A G E S U P P O R T 2 2 - 5
With DATE keyword May 20, 1996
French locale
With NUMBER keyword 123.456,00
With MONEY keyword 123.456,00 F
With DATE keyword 20 mai 1996
Summary
• You can specify local preferences for language, currency, and the presentation of
dates and numbers in a locale.
• You specify predefined locales in the PSSQR.INI file.
• You can edit the PSSQR.INI file to alter predefined locales or to create new ones.
• You can switch among locales by using the command ALTER-LOCALE. You can
also specify individual preferences for a locale by using ALTER-LOCALE.
• You can also specify formats with the keywords NUMBER, MONEY, and DATE.
P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L I N T E R O P E R A B I L I T Y 2 3 - 1
C H A P T E R 2 3
Interoperability
This chapter describes how SQR can interoperate with other applications or be extended with
additional functions and discusses how to:
• Call SQR from another application.
• Invoke an SQR program using the SQR API.
• Invoke an external application’s API using the UFUNC.C interface.
• Use ufunc on Windows 95 & NT.
• Implement new user functions on Windows 95 and NT.
• Use SQR support for XML.
Understanding Interoperability
Applications can run SQR programs using the SQR API (application program interface). An
SQR program can also call an external application’s API.
This interoperability is depicted in the following two diagrams.
External
Application
SQR
Execute
SQR API
External application invoking an SQR program using the SQR API
S Q R F O R P E O P L E S O F T D E V E L O P E R ' S G U I D E
2 3 - 2 I N T E R O P E R A B I L I T Y P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L
External
Application
SQR
Execute
UFUNC.C
SQR calling an external application’s API using UFUNC.C
Calling SQR From Another Application
The following techniques can be used to invoke an SQR program from another application:
• Using the SQR command line–The application initiates a process for running SQR.
The SQR command includes all the necessary parameters. The SQR command line is
covered in the chapter "Using the SQR Command Line".
• Using the SQR API–The application makes a call to the SQR API. This method is
covered in the next section.
Invoking an SQR Program Using the SQR API
The SQR API is provided on Windows through a DLL (Dynamic Link Library). You can use
the SQR API from any application that is capable of calling DLL functions. For C and C++
applications, a header file, SQRAPI.H, and an import library (SQRWIN.LIB) are provided.
SQR requires the following DLLs to run: For Windows 95 & NT, they are SQRW.DLL,
BCLW32.DLL, LIBSTI32.DLL, and STIMAGES.DLL. These DLL files are located in the
BINW directory.
On platforms other than Windows, the SQR API is provided as a static library (sqr.a or
SQR.LIB). For C and C++ applications, a header file, SQRAPI.H (or sqrapi.h), is provided.
Be sure to include the SQR API library and your database library when you link your C or
C++ application. Two additional libraries are required: bcl.a and libsti.a.
See SQR Server Installation Guide for more information about linking with SQR.
The following table describes the API functions defined for calling SQR.
Function Description
int sqr(char *) Runs an SQR program. Passes the address of a null termi-
nated string containing an SQR command line, including
program name, connectivity information, flags, and argu-
ments. This is a synchronous call. It returns when the SQR
program has completed. This function returns zero (0) if it is
successful.
S Q R F O R P E O P L E S O F T D E V E L O P E R ' S G U I D E
P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L I N T E R O P E R A B I L I T Y 2 3 - 3
Function Description
void
sqrcancel(void)
Cancels a running SQR program. The program may not stop
immediately because SQR waits for any currently pending
database operations to complete.
Because the SQR function does not return until the SQR
program has completed, sqrcancel is called using another
thread or some similar asynchronous method.
int sqrend(void) Releases memory and closes cursors. Cursors can be left open
to speed up repeated execution of the same SQR program.
Call this function after the last program execution, or option-
ally between SQR program executions.
This function always returns zero (0).
For the benefit of C/C++ programmers, the APIs are declared in the file SQRAPI.H. Include
this header file in your source code:
#include 'sqrapi.h'
When you call SQR from a program, the most recently run SQR program is saved in memory.
If the same SQR program is run again with either the same or different arguments, the
program is not scanned again and the SQL statements are not parsed again. This feature
provides a significant improvement in processing time.
To force SQR to release its memory and database cursors, call sqrend() at any time.
Although memory is automatically released when the program exits, you must call sqrend
before the calling program exits to ensure that SQR properly cleans up any database resources
such as database cursors and temporary stored procedures.
To relink SQR on all UNIX platforms, use the sqrmake and makefile files located in
$SQRDIR/../lib. After you invoke sqrmake and optionally select the specific database version
to link with, the SQR executables are recreated.
Check which ‘cc’ command line gets created and invoked for SQR, and adapt it to your
program. Each UNIX platform and database has its own requirements. Consult your operating
system and database product documentation for specific information.
You may see the following output when you relink with Sybase CT-LIB 11.x under
Sun/Solaris 2.5.1:
cc -o {user program} {user objects} {user libraries} \
$SQRDIR/../lib/sqr.a $SQRDIR/../lib/bcl.a \
$SQRDIR/../lib/pdf.a $SQRDIR/../lib/libsti.a \
-L$ (SYBASE) /lib -Bstatic -lct -lcs -ltcl -lcomm \
-lintl -Bdynamic -lm -lnsl -ldl
Check the make files or link scripts that are supplied with SQR for details. You may want to
copy and modify those to link in your program.
S Q R F O R P E O P L E S O F T D E V E L O P E R ' S G U I D E
2 3 - 4 I N T E R O P E R A B I L I T Y P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L
To call SQR, call sqr() and pass a command line. For example, in C:
status = sqr("myprog sammy/baker arg1 arg2 arg3");
if (status != 0)
...error occurred...
The following table describes error values returned by SQR, both standalone and callable.
Non-VMS VMS Reason
0 1 Normal exit
1 0 Error exit
2 0x2622 Cannot process SQRERR.DAT
3 0x2632 Command-line flag in error
4 0x2642 Problem creating .SQT file
5 0x2652 Program did not compile
6 0x2662 Problem with .SQR/.SQT file (open/read)
7 0x2672 Problem with .LIS file (create/write)
8 0x2682 Problem with .ERR file (create/write)
9 0x2692 Problem with .LOG file (create/write)
10 0x26A2 Problem with POSTSCRI.STR file (open/read)
11 0x26B2 Cannot call SQR recursively
12 0x26C2 Problem with Windows
13 0x26D2 Internal error occurred
14 0x26E2 Problem with SQRWIN.DLL
15 0x26F2 Problem with -ZCF file
The VMS codes are given in hexadecimal notation. SQR uses the 0x2600 group for its error
messages to avoid conflict with VMS error messages. Error codes 9 and 12 are only applicable
to the Windows release.
Invoking an External Application API Using the UFUNC.C Interface
The SQR language can be extended by adding user functions written in standard languages
such as C. This feature enables you to integrate your own code and third-party libraries into
SQR. For example, suppose you had a library for communication over a serial line, with
functions for initiating the connection and sending and receiving data. SQR enables you to call
these functions from SQR programs.
To extend SQR in this way, you must prepare the functions, specify them to SQR, and then
link the objects (and libraries) with the SQR objects and libraries to form a new SQR
S Q R F O R P E O P L E S O F T D E V E L O P E R ' S G U I D E
P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L I N T E R O P E R A B I L I T Y 2 3 - 5
executable. The new SQR executable will then recognize the new functions as if they were
standard SQR functions.
One example of such an extension would be an initcap function. Oracle users are familiar with
this function. The function initcap changes the first letter of every word to uppercase and
changes the rest of the letters to lowercase. The result value in the following example would
be “Mr. Joseph Jefferson.”
let $a = initcap('MR. JOSEPH JEFFERSON')
Adding a User Function
The following example demonstrates how to extend SQR with an initcap function.
The key to this process is an SQR source file called UFUNC.C. This file contains the list of
user-defined functions. It also contains comments with a description of the process of adding a
function to SQR. UFUNC.C is provided in the lib subdirectory (LIBW in Windows).
To add initcap to SQR, you must add it to a global array called userfuncs in UFUNC.C.
To add a user function:
1. Add function prototype.
2. Add entry to USERFUNCS Table.
3. Add implementation code.
4. Relink SQR.
Step 1. Add Function Prototype
Begin by adding a function prototype to the function declaration list.
static void max CC_ARGS((int, double *[], double *));
static void split CC_ARGS((int, char *[], double *));
static void printarray CC_ARGS((int, char*[], double *));
static void initcap CC_ARGS((int, char *[], char *, int));
The preceding code segment is taken from the file UFUNC.C. The first three lines are part of
the original UFUNC.C. The line that adds the initcap function is shown in bold. The modified
version of UFUNC.C is in the tutorial directory.
This code defines a prototype for a C function called initcap. The prototype is required by the
C compiler. Note that the name of the C function does not have to be the same as the name of
the SQR function. The SQR name for the function is defined in the next step.
S Q R F O R P E O P L E S O F T D E V E L O P E R ' S G U I D E
2 3 - 6 I N T E R O P E R A B I L I T Y P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L
The CC_ARGS macro makes your code portable between compilers that expect full ANSI
prototyping and compilers where the argument prototype is omitted. You could also write:
static void initcap();
Note also that the keyword STATIC means that the code for initcap will be added in the file
UFUNC.C. If you have the code in a separate file, remove the STATIC keyword.
The first argument of the C function is the argument count of the corresponding SQR function.
In the case of initcap, this argument count should be 1 because initcap takes exactly one
argument.
The second argument of the C function is an array of pointers. This array is the argument list.
In this case, because initcap only takes one argument, only the first pointer is actually used.
The third argument of the C function is a pointer to the result buffer. Because initcap returns a
string, we will define it as char*.
The last argument sets the maximum length of the result string. The length of this string is the
size of the result buffer, which you must not overflow. You cannot return a value that is longer
than the maximum length. The maximum length is typically around 2000 bytes, depending on
the platform.
Step 2. Add Entry to USERFUNCS Table
The next step is to define the initcap function to SQR. As stated before, this table exists in the
UFUNC.C file. Here is the modified code:
} userfuncs[] =
{
/* (2) Define functions in userfuncs table:
Number of
Name Return_type Arguments Arg_Types Function
---- ----------- --------- --------- -------- */
"max", 'n', 0, "n", PVR max,
"split", 'n', 0, "C", PVR split,
"printarray", 'n', 4, "cnnc", PVR printarray,
"initcap", 'c', 1, "c", PVR initcap,
/* Last entry must be NULL—do not change */
"", '\0', 0, "", 0
};
The userfuncs table is an array of structures. The line added is shown in bold, and it initializes
one structure in the array. The line contains five arguments, which correspond to the five
fields of the structure.
The first argument is the name of the SQR function being added. This is the name that you
will use in the LET, IF, and WHILE commands. The second argument is the return type,
S Q R F O R P E O P L E S O F T D E V E L O P E R ' S G U I D E
P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L I N T E R O P E R A B I L I T Y 2 3 - 7
which 'c' (enclosed in single quotation marks) indicates is a character string. The third
argument is the number of arguments that initcap will take. Set it to 1.
The fourth argument is a string representing the types of the arguments. Because initcap has
only one argument, the string contains one character enclosed in double quotation marks, "c".
This character indicates that the argument for initcap is a string. The last argument is a pointer
to a C function that implements the SQR function we are adding. This argument is the initcap
function for which we have provided a prototype in the previous step. Note the PVR macro
that provides proper cast for the pointer.
Step 3. Add Implementation Code
The next step is to add the implementation code for initcap. You can insert it into the file
UFUNC.C.
Note. If you want to put the code in a separate file, you will have to remove the STATIC
keyword from the prototype. You may also need to include standard C header files such as
CTYPE.H.
Here is the code, which is inserted at the end of UFUNC.C:
static void initcap CC_ARGL((argc,argv,result,maxlen))
CC_ARG(int, argc) /* Number of actual arguments */
CC_ARG(char*, argv[]) /* Pointers to arguments: */
CC_ARG(char*, result) /* Where to store result */
CC_LARG(int, maxlen) /* Result's maximum length */
{
int flag = 1;
char *ptr;
char *p;
ptr = argv[0];
p = result;
while (*ptr) {
if (ptr - argv[0] >= maxlen) break; /* don't exceed maxlen */
if (isalnum(*ptr)) {
if (flag) *p = islower(*ptr)?toupper(*ptr):*ptr;
else *p = isupper(*ptr)?tolower(*ptr):*ptr;
flag = 0;
} else {
flag = 1;
*p = *ptr;
}
p++; ptr++;
}
*p = '\0';
return;
S Q R F O R P E O P L E S O F T D E V E L O P E R ' S G U I D E
2 3 - 8 I N T E R O P E R A B I L I T Y P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L
}
Note the use of the CC_ARGL, CC_ARG, and CC_LARG macros. You can also write the
code as follows (only the first five lines are shown).
static void initcap(argc,argv,result,maxlen)
int argc; /* Number of actual arguments */
char* argv[]; /* Pointers to arguments: */
char* result; /* Where to store result */
int maxlen; /* Result's maximum length */
Step 4. Relink SQR
After you have modified UFUNC.C, you must relink SQR. Use the make file that is provided
in the LIB (or LIBW) subdirectory of SQR. This step is very specific to the operating system
and database. SQR is linked with the database libraries, whose names and locations may vary.
You may have to modify the make file for your system. After SQR is relinked, you are ready
to test. Try the following program:
begin-program
let $a = initcap('MR. JOSEPH JEFFERSON')
print $a ()
end-program
The result in the output file should be:
Mr. Joseph Jefferson
For further information about argument types in user-defined functions, see the comments in
the UFUNC.C file.
Using ufunc on Windows 95 & NT
On Windows 95 & NT, ufunc resides in SQREXT.DLL. You can rebuild SQREXT.DLL
using any language or tool, as long as the appropriate calling protocol is maintained. The
source code for SQREXT.DLL is included in the shipped package (EXTUFUNC.C).
When SQRW.DLL and SQRWT.DLL are loaded, they look for SQREXT.DLL in the same
directory and for any DLLs specified in the [SQR Extension] section in PSSQR.INI. If
SQRW.DLL and SQRWT.DLL find SQREXT.DLL and the DLLs specified in the
PSSQR.INI file, they make the following calls in all the DLLs, passing the instance handle (of
the calling module) and three function pointers:
void InitSQRExtension (
HINSTANCE hInstance,
FARPROC lpfnUFuncRegister,
S Q R F O R P E O P L E S O F T D E V E L O P E R ' S G U I D E
P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L I N T E R O P E R A B I L I T Y 2 3 - 9
FARPROC lpfnConsole,
FARPROC lpfnError
);
Implementing New User Functions on Windows 95 & NT
You can implement new user functions in SQREXT.DLL or any other extension DLL. All the
extension DLLs must have the InitSQRExtension() function exported. If you choose to
implement user functions in SQREXT.DLL, you should rebuild the DLL using the supplied
make file, SQREXT.MAK. If new extension DLLs containing new user functions are to be
used, they must be listed in the [SQR Extension] section in PSSQR.INI in the system
directory.
For any ufunc, you must register it by making the following call in InitSQRExtension().
lpfnUFuncRegister(struct ufnns* ufunc);
The function pointer lpfnUFuncRegister is passed in from the calling module. Refer to
EXTUFUNC.C for the definition of struct ufnns and the sample user functions.
Understanding XML Support in SQR
SQR supports XML by using syntax very similar to the syntax used to access relational data
sources. This similarity provides an advantage in that SQR programs that access XML will
look and behave very much like programs that access other data sources. A disadvantage is
that not every possible XML file can be queried effectively, especially those containing
elements that nest recursively. Information about the proper use of SQR with XML will
make this clear. Please consult the ‘readme’ file for your installation for the most up-to-date
information concerning XML support.
The syntax for specifying an XML query includes using the ‘GETDATA=’ clause in the
BEGIN-EXECUTE section, specification of element or unique attribute names as ‘columns’,
and specification of a single element name in the ‘From’ clause. The ‘GETDATA’ should
specify the name of the XML file to be accessed, and the ‘From’ clause element focuses the
query on a particular section of the XML file. For example, the following query would be
appropriate for accessing the XML file,‘example1.xml’:
Begin-Execute
GETDATA=’example1’
Begin-Select
CompanyName type=char (+1,1)
EmployeeName type=char ( , 30)
PhoneNumber type=char ( , 60)
From Employee_Details
End-Select
End-Execute
S Q R F O R P E O P L E S O F T D E V E L O P E R ' S G U I D E
2 3 - 1 0 I N T E R O P E R A B I L I T Y P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L
Example1.xml: (DTD section is required but not shown here.)
<Company CompanyName=’abc’>
<Employee_Details>
<EmployeeName>John Doe</EmployeeName>
<PhoneNumber>123-555-1111</PhoneNumber>
</Employee_Details>
<Employee_Details>
<EmployeeName>Jane Smith</EmployeeName>
<PhoneNumber>123-555-2222</PhoneNumber>
</Employee_Details>
</Company>
XML support in SQR is provided through use of the DDO XML driver, which is installed
with SQR. It uses a DDO Registry entry that specifies the directory tree containing the XML
files you want to access. You may define more than one registry entry, if you want to place
XML files in more than one directory tree. Use the DDO Registry Editor to create each
registry entry. An appropriate process would be as follows:
1. Create a directory, place one or more sample XML files in it.
1. Use the DDO Registry Editor to create an entry that specifies the new directory.
2. Use the DDO Query Editor to access that data source, and verify that your XML files are
readable by DDO.
3. Create your SQR programs that access those files.
The current DDO XML driver requires the Document Type Definition (DTD) to be embedded
in the XML file being processed. It does not yet support having the DTD in a separate file. See
the example XML files provided for practical examples containing embedded DTDs. While
XML is case-sensitive, most of SQR is not. Therefore, for XML to be read properly by SQR,
the element names within the XML file should not depend on case sensitivity for uniqueness.
To enable SQR to preserve the case of an element or attribute identifier you specify, define an
alias for the column variable:
PhoneNumber &pn=char ( , 60)
The elements or attributes that are queried (the ‘columns’) must have a single instance
associated with each occurrence of a particular element, usually the one specified in the
‘From’ clause. In other words, there must be an element whose occurrences essentially define
the ‘rows’ of the result, and to which all the elements being queried are uniquely related. All
elements and attributes queried must be parents or immediate children of that element. In the
previous example, occurrences of Employee_Details define the result rows, EmployeeName
and PhoneNumber are immediate children of Employee_Details, and there is a unique
occurrence of the parent CompanyName. If there were two PhoneNumbers under
Employee_Details, such as:
<Employee_Details>
S Q R F O R P E O P L E S O F T D E V E L O P E R ' S G U I D E
P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L I N T E R O P E R A B I L I T Y 2 3 - 1 1
<EmployeeName>John</EmployeeName>
<PhoneNumber>123-555-1111</PhoneNumber>
<PhoneNumber>123-555-3333</PhoneNumber>
</Employee_Details>
it would not be possible to query for both EmployeeName and PhoneNumber, because the
rules previously stated are broken. There is not a single instance of PhoneNumber for each
occurrence of Employee_Details, and EmployeeName is not a parent or immediate child of
PhoneNumber.
When elements are specified as the ‘column’ to be queried, either the content of that element
must be simple text (#PCDATA), as for EmployeeName and PhoneNumber shown here, or
the first attribute or content element must be text. This enables the element name to be
specified as the ‘column’ to be queried in situations when the attribute name is not unique, as
shown here.
Example2.xml: (DTD section is required but not shown here.)
<Company value=’company1’>
<Employee value=’John’>
<PhoneNumber value=’123-555-1111’/>
<Site>Headquarters</Site>
</Employee>
<Employee value=’Jane’>
<PhoneNumber value=’123-555-2222’/>
<Site>Sales Office</Site>
</Employee>
</Company>
Begin-Execute
GETDATA=’example2’
Begin-Select
Company type=char (+1,1)
Employee type=char ( , 20)
PhoneNumber type=char ( , 40)
Site type=char (, 60)
From Employee
End-Select
End-Execute
Summary
• Applications can run SQR programs using the SQR API (application program
interface).
• An SQR program can also call an external application’s API.
S Q R F O R P E O P L E S O F T D E V E L O P E R ' S G U I D E
2 3 - 1 2 I N T E R O P E R A B I L I T Y P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L
• You can extend SQR with third-party libraries and functions written in standard
languages such as C.
• To extend SQR, add functions to the userfuncs global array in the UFUNC.C file.
• SQR supports XML.
P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L T E S T I N G A N D D E B U G G I N G 2 4 - 1
C H A P T E R 2 4
Testing and Debugging
This chapter describes the SQR functionality designed to help with the testing and debugging
of SQR programs and discusses how to:
• Use the test feature.
• Use the #DEBUG command.
• Use compiler directives for debugging.
• Avoid common programming errors.
Using the Test Feature
During the development of an SQR program, you frequently test it by running it and
examining its output. Often, you are interested only in the first few pages of the report.
To speed up the cycle of running and viewing a few pages, use the -T command-line flag. The
-T flag enables reports to finish more quickly because all BEGIN-SELECT ORDER BY
clauses are ignored. The database does not sort the data and the first set of records are selected
sooner. Enter the desired number of test pages after the -T flag. For example, -T6 causes the
program to stop after six pages of output have been created.
Note. If your program contains break logic, the breaks can occur in unexpected locations
because the ORDER BY clause is ignored.
To test a report file called customer.sqr, enter the following command:
sqr customer username/password -T3
The -T3 flag specifies that the program stop running after 3 pages have been produced.
When the test completes successfully, check it by displaying the output file on your screen or
printing it. The default name of the output file is the same as the program file with the
extension .LIS. For example, if your report is named customer.sqr, the output file is named
customer.lis.
When the development of your program is complete, run it without the -T flag. Your program
processes all ORDER BY clauses and runs to completion. If the program creates more than
one report, the -T flag restriction applies only to the first report.
S Q R F O R P E O P L E S O F T D E V E L O P E R ' S G U I D E
2 4 - 2 T E S T I N G A N D D E B U G G I N G P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L
Using the #DEBUG Command
When debugging a program it is often useful to:
• Display data or show when a procedure or query executes by using temporary SHOW
or DISPLAY commands in key places in the program.
• Isolate problem areas by temporarily skipping the parts of the program that work
correctly.
• Temporarily cause additional behavior in questionable areas of the program. For
example, display or modify variables that you suspect are causing a problem.
SQR provides the #DEBUG command to help you make temporary changes to your code.
You can use the #DEBUG command to conditionally process portions of your program.
Precede the command with #DEBUG, as shown in the following example:
#debug display $s
When the #DEBUG precedes a command, that command is processed only if the -DEBUG
flag is specified on the SQR command line. In this example, the value of $s is displayed only
when you run the program with -DEBUG.
You can obtain multiple debug commands by using up to 10 letters or digits to differentiate
between them. Indicate which command is to be debugged on the -DEBUG flag, as shown in
the following example:
sqr myreport username/password -DEBUGabc
In this example, commands preceded by #DEBUG, #DEBUGa, #DEBUGb, or #DEBUGc are
compiled when the program is executed. Commands preceded with #DEBUGd are not
compiled because d was not specified in the -DEBUG command-line flag.
Using Compiler Directives for Debugging
You can conditionally compile entire sections of your program using the five compiler
directives:
• #IF
• #ELSE
• #END-IF or #ENDIF
• #IFDEF
• #IFNDEF
You can use the value of a substitution variable, declared by a #DEFINE command, to activate
or deactivate a set of statements, as shown in the following example:
S Q R F O R P E O P L E S O F T D E V E L O P E R ' S G U I D E
P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L T E S T I N G A N D D E B U G G I N G 2 4 - 3
#define DEBUG_SESSION Y
#if DEBUG_SESSION = 'Y'
begin-procedure dump_array
let #i = 0
while #i < #counter
! Get data from the array
get $state $city $name $phone from customer_array(#i)
print $state (,1)
print $city (,7)
print $name (,24)
print $phone (,55)
position (+1)
add 1 to #i
end-while
end-procedure ! dump_array
#end-if
The dump_array procedure is used only for debugging. By defining DEBUG_SESSION as Y,
the dump_array procedure is included in the program. Later, you can change
DEBUG_SESSION to N and exclude the dump_array procedure from the program. The #IF
command in this example is case-insensitive.
Avoiding Common Programming Errors
The most common programming error using SQR is misspelling variable names. Because
SQR does not require variables to be declared, it does not issue an error message when
variable names are misspelled. Instead, SQR considers the misspelled variable as if it is
another variable.
For example:
let #customer_access_code = 55
print #customer_acess_code ()
This example will not print 55 because we misspelled the variable name. Can you see the
typo? One c in acess on the PRINT command is missing.
A related problem is global versus local variables. If you refer to a global variable in a local
procedure without preceding it with an underscore, SQR does not issue an error message.
Instead, it is taken as a new local variable name. For example:
begin-procedure main
let $area = 'North'
do proc
end-procedure ! main
S Q R F O R P E O P L E S O F T D E V E L O P E R ' S G U I D E
2 4 - 4 T E S T I N G A N D D E B U G G I N G P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L
begin-procedure proc local
print $area () ! Should be $_area
end-procedure
In this example, the local procedure proc prints the value of the local variable $area and not
the global variable $area. It prints nothing because the local $area variable did not receive a
value. To refer to the global variable, use $_area.
Such small errors are hard to detect because SQR considers #customer_acess_code as just
another variable with a value of zero.
Summary
• You can speed up the testing cycle by using the -T command-line flag.
• You can conditionally process sections of a program by using the #DEBUG command
and the -DEBUG command-line flag.
• You can conditionally compile entire sections of your program using the five compiler
directives #IF, #ELSE, #END-IF, #IFDEF, and #IFNDEF.
• The most common programming error is the misspelling of variable names.
P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L P E R F O R M A N C E A N D T U N I N G 2 5 - 1
C H A P T E R 2 5
Performance and Tuning
This chapter examines some of the issues that affect the performance of SQR programs and
also describes certain SQR capabilities that can help you write high-performance programs. It
discusses how to:
• Simplify a complex SELECT statement.
• Use LOAD-LOOKUP to simplify joins.
• Improve SQL performance with dynamic SQL.
• Examine SQL cursor status.
• Avoid temporary database tables.
• Create multiple reports in one pass.
• Tune SQR numerics.
• Compile SQR programs and use SQR execute.
• Set processing limits.
• Buffer fetched rows.
• Execute programs on the database server.
Understanding SQR Performance and SQL Statements
Whenever your program contains a BEGIN-SELECT, BEGIN-SQL, or EXECUTE command,
it performs an SQL statement. Processing SQL statements typically consumes significant
computing resources. Tuning SQL statements typically yields higher performance gains than
tuning any other part of your program.
• General tuning of SQL is outside the scope of this book. Tuning SQL is often specific
to the type of database that you are using—tuning SQL statements for an Oracle
database may be different than tuning SQL statements for DB2. This chapter focuses
on SQR tools for simplifying SQL statements and reducing the number of SQL
executions.
S Q R F O R P E O P L E S O F T D E V E L O P E R ' S G U I D E
2 5 - 2 P E R F O R M A N C E A N D T U N I N G P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L
Simplifying a Complex SELECT
With relational database design, information is often “normalized” by storing data entities in
separate tables. To display the normalized information, you must write a SELECT statement
that joins these tables together. With many database systems, performance suffers when you
join more than three or four tables in one SELECT.
With SQR, you can perform multiple SELECT statements and nest them as we indicated in
the "Master/Detail Reports" chapter. In this way, you can break a large join into several
simpler SELECTS. For example, you can break a SELECT statement that joins orders and
products tables into two SELECTS. The first SELECT retrieves the orders in which we are
interested. For each order retrieved, a second SELECT retrieves the products that were
ordered. The second SELECT is correlated to the first SELECT by having a condition such as:
where order_num = &order_num
This condition specifies that the second SELECT retrieves only products for the current order.
Similarly, if your report is based on products ordered, you can make the first SELECT retrieve
the products, and make the second SELECT retrieve the orders for each product.
This method improves performance in many cases, but not all. To achieve the best
performance, you may need to experiment with the different alternatives.
Using LOAD-LOOKUP to Simplify Joins
Database tables often contain key columns such as a product code or customer number. To
retrieve a certain piece of information, you join two or more tables that contain the same
column. For example, to obtain a product description, you can join the orders table with the
products table, using the product_code column as the key.
With LOAD-LOOKUP, you can reduce the number of tables that are joined in one SELECT.
Use this command in conjunction with one or more LOOKUP commands.
The LOAD-LOOKUP command defines an array containing a set of keys and values and
loads it into memory. The LOOKUP command looks up a key in the array and returns the
associated value. In some programs, this technique performs better than a conventional table
join.
You can use LOAD-LOOKUP in the SETUP section or in a procedure. If used in the SETUP
section, it is processed only once. If used in a procedure, it is processed each time it is
encountered.
LOAD-LOOKUP retrieves two fields from the database, the KEY field and the
RETURN_VALUE field. Rows are ordered by KEY and stored in an array. The KEY field
must be unique and contain no NULL values.
When the LOOKUP command is used, the array is searched (using a “binary” search) to find
the RETURN_VALUE field corresponding to the KEY referenced in the lookup.
The following example illustrates LOAD-LOOKUP and LOOKUP:
S Q R F O R P E O P L E S O F T D E V E L O P E R ' S G U I D E
P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L P E R F O R M A N C E A N D T U N I N G 2 5 - 3
begin-setup
load-lookup
name=prods
table=products
key=product_code
return_value=description
end-setup
...
begin-select
order_num (+1,1)
product_code
lookup prods &product_code $desc
print $desc (,15)
from orderlines
end-select
In this example, the LOAD-LOOKUP command loads an array with the product_code and
description columns from the products table. The lookup array is named prods. The
product_code column is the key and the description column is the return value. In the
SELECT paragraph, a LOOKUP on the prods array retrieves the description for each
product_code. This technique eliminates the need to join the products table in the SELECT.
If the ordlines and products tables were joined in the SELECT (without LOAD-LOOKUP),
the code would look like this:
begin-select
order_num (+1,1)
ordlines.product_code
description (,15)
from ordlines, products
where ordlines.product_code = products.product_code
end-select
Which is faster, a database join or LOAD-LOOKUP? It depends on your program. LOAD-
LOOKUP improves performance in the following situations:
• When it is used with multiple SELECTS.
• When it keeps the number of tables being joined from exceeding three or four.
• When the number of entries in the LOAD-LOOKUP table is small compared to the
number of rows in the SELECT, and they are used often.
• When most entries in the LOAD-LOOKUP table are used.
Note. You can concatenate columns if you want RETURN_VALUE to return more than one
column. The concatenation symbol is database-specific.
S Q R F O R P E O P L E S O F T D E V E L O P E R ' S G U I D E
2 5 - 4 P E R F O R M A N C E A N D T U N I N G P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L
Improving SQL Performance with Dynamic SQL
The chapter "Dynamic SQL and Error Checking" explained how to use dynamic SQL
variables. You can also use Dynamic SQL in some situations to simplify a SQL statement and
gain performance.
begin-select
order_num
from orders, customers
where order.customer_num = customers.customer_num
and ($state = 'CA' and order_date > $start_date
or $state != 'CA' and ship_date > $start_date)
end-select
In this example, a given value of $state, order_date or ship_date is compared to $start_date.
The OR operator in the condition makes such multiple comparisons possible. With most
databases, an OR operator slows processing. It can cause the database to perform more work
than necessary.
However, the same work can be done with a simpler SELECT. For example, if $state is ‘CA,’
the following SELECT would work:
begin-select
order_num
from orders, customers
where order.customer_num = customers.customer_num
and order_date > $start_date
end-select
Dynamic SQL enables you to check the value of $state and create the simpler condition:
if $state = 'CA'
let $datecol = 'order_date'
else
let $datecol = 'ship_date'
end-if
begin-select
order_num
from orders, customers
where order.customer_num = customers.customer_num
and [$datecol] > $start_date
end-select
The substitution variable [$datecol] substitutes the name of the column to be compared with
$state_date. The SELECT is simpler and no longer uses an OR. In most cases, this use of
dynamic SQL improves performance.
S Q R F O R P E O P L E S O F T D E V E L O P E R ' S G U I D E
P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L P E R F O R M A N C E A N D T U N I N G 2 5 - 5
Examining SQL Cursor Status
Because SQR programs select and manipulate data from a SQL database, it is helpful to
understand how SQR processes SQL statements and queries.
SQR programs can perform multiple SQL statements. Moreover, the same SQL statement can
be executed multiple times.
When your program executes, a pool of SQL statement handles—called cursors—is
maintained. A cursor is a storage location for one SQL statement, for example, SELECT,
INSERT, or UPDATE. Every SQL statement uses a cursor for processing. A cursor holds the
context for the execution of a SQL statement.
The cursor pool consists of 30 cursors, and its size cannot be changed. When a SQL statement
is re-executed, its cursor can be immediately reused if it is still in the cursor pool. When your
SQR program executes more than 30 different SQL statement, cursors in the pool are
reassigned.
To examine how cursors are managed, use the -S command-line flag. This flag displays cursor
status information at the end of a run.
The following information displays for each cursor:
Cursor #nn:
SQL = <SQL statement>
Compiles = nn
Executes = nn
Rows = nn
The listing also includes the number of compiles, which vary according to the database and
the complexity of the query. With Oracle, for example, a simple query is compiled only once.
With SYBASE, a SQL statement is compiled before it is first executed and recompiled for the
purpose of validation during the SQR compile phase. Therefore, you may see two compiles
for a SQL statement. Later when the SQL is re-executed, if its cursor is found in the cursor
pool, it can proceed without recompiling.
Avoiding Temporary Database Tables
Programs often use temporary database tables to hold intermediate results. Creating, updating,
and deleting database temporary tables is a very resource-consuming task, however, and can
slow your program’s performance. SQR provides two alternatives to using temporary database
tables.
The first alternative is to store intermediate results in an SQR array. The second is to store
intermediate results in a local flat file. Both techniques can cause a significant performance
gain. You can use the SQR language to manipulate data stored in an array or a flat file.
S Q R F O R P E O P L E S O F T D E V E L O P E R ' S G U I D E
2 5 - 6 P E R F O R M A N C E A N D T U N I N G P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L
This section explains:
• Using and sorting arrays.
• Using and sorting flat files.
Using and Sorting Arrays
The "Cross-Tabular Reports" chapter introduced the array as a means of holding data records
during program execution.
An SQR array can hold as many records as can fit in memory. During the first pass, when
records are retrieved from the database, you can store them in the array. Subsequent passes on
the data can be made without additional database access.
The following code retrieves records, prints them, and saves them into an array named
customer_array.
create-array name=customer_array size=1000
field=state:char field=city:char
field=name:char field=phone:char
let #counter = 0
begin-select
state (,1)
city (,7)
name (,24)
phone (,55)
position (+1)
put &state &city &name &phone into customer_array(#counter)
add 1 to #counter
from customers
end-select
This example creates an array named customer_array. The array has four fields that
correspond to the four columns selected from the customers table, and it can hold up to 1,000
rows. If the customers table had more than 1,000 rows, it would be necessary to create a larger
array.
The SELECT prints the data. The PUT command then stores the data in the array. The chapter
"Cross-Tabular Reports" demonstrated how to use the LET command to assign values to array
fields. The PUT command performs the same work, but with fewer lines of code. With PUT,
you can assign all four fields in one command.
The #counter variable serves as the array subscript. It starts with zero and maintains the
subscript of the next available entry. At the end of the SELECT, the value of #counter is the
number of records in the array.
The next piece of code retrieves the data from customer_array and prints it:
S Q R F O R P E O P L E S O F T D E V E L O P E R ' S G U I D E
P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L P E R F O R M A N C E A N D T U N I N G 2 5 - 7
let #i = 0
while #i < #counter
get $state $city $name $phone from customer_array(#i)
print $state (,1)
print $city (,7)
print $name (,24)
print $phone (,55)
position (+1)
add 1 to #i
end-while
In this piece of code, #i goes from 0 to #counter-1. The fields from each record are moved into
the corresponding variables $name, $city, $state, and $phone. These values are then printed.
Sorting
In many cases, intermediate results must be sorted by a different field. The following program
indicates how to sort customer_array by name. The program uses a well-known sorting
algorithm called QuickSort. You can copy this code into your program, make appropriate
changes, and use it to sort your array.
Program ex25a.sqr
#define MAX_ROWS 1000
begin-setup
create-array name=customer_array size={MAX_ROWS}
field=state:char field=city:char
field=name:char field=phone:char
!
! Create a helper array that is used in the sort
!
create-array name=QSort size={MAX_ROWS}
field=n:number field=j:number
end-setup
begin-program
do main
end-program
begin-procedure main
let #counter = 0
!
! Print customers sorted by state
!
S Q R F O R P E O P L E S O F T D E V E L O P E R ' S G U I D E
2 5 - 8 P E R F O R M A N C E A N D T U N I N G P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L
begin-select
state (,1)
city (,7)
name (,24)
phone (,55)
position (+1)
! Put data in the array
put &state &city &name &phone into customer_array(#counter)
add 1 to #counter
from customers
order by state
end-select
position (+2)
!
! Sort customer_array by name
!
let #last_row = #counter - 1
do QuickSort(0, 0, #last_row)
!
! Print customers (which are now sorted by name)
!
let #i = 0
while #i < #counter
! Get data from the array
get $state $city $name $phone from customer_array(#i)
print $state (,1)
print $city (,7)
print $name (,24)
print $phone (,55)
position (+1)
add 1 to #i
end-while
end-procedure ! main
!
! QuickSort
!
! Purpose: Sort customer_array by name.
! This is a recursive function. Since SQR does not allocate
! local variables on a stack (they are all static), this
! procedure uses a helper array.
!
! #level - Recursion level (used as a subscript to the helper
! array)
! #m - The "m" argument of the classical QuickSort
! #n - The "n" argument of the classical QuickSort
S Q R F O R P E O P L E S O F T D E V E L O P E R ' S G U I D E
P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L P E R F O R M A N C E A N D T U N I N G 2 5 - 9
!
begin-procedure QuickSort(#level, #m, #n)
if #m < #n
let #i = #m
let #j = #n + 1
! Sort key is "name"
let $key = customer_array.name(#m)
while 1
add 1 to #i
while #i <= #j and customer_array.name(#i) < $key
add 1 to #i
end-while
subtract 1 from #j
while #j >= 0 and customer_array.name(#j) > $key
subtract 1 from #j
end-while
if #i < #j
do QSortSwap(#i, #j)
else
break
end-if
end-while
do QSortSwap(#m, #j)
add 1 to #level
! Save #j and #n
let QSort.j(#level - 1) = #j
let QSort.n(#level - 1) = #n
subtract 1 from #j
do QuickSort(#level, #m, #j)
! restore #j and #n
let #j = QSort.j(#level - 1)
let #n = QSort.n(#level - 1)
add 1 to #j
do QuickSort(#level, #j, #n)
subtract 1 from #level
end-if
end-procedure ! QuickSort
!
!
! QSortSwap
!
! Purpose: Swaps records #i and #j of customer_array
!
! #i - Array subscript
! #j - Array subscript
S Q R F O R P E O P L E S O F T D E V E L O P E R ' S G U I D E
2 5 - 1 0 P E R F O R M A N C E A N D T U N I N G P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L
!
begin-procedure QSortSwap(#i, #j)
get $state $city $name $phone from customer_array(#i)
let customer_array.state(#i) = customer_array.state(#j)
let customer_array.city(#i) = customer_array.city(#j)
let customer_array.name(#i) = customer_array.name(#j)
let customer_array.phone(#i) = customer_array.phone(#j)
put $state $city $name $phone into customer_array(#j)
end-procedure ! QSortSwap
The QuickSort algorithm uses a recursive procedure, which means that it calls itself. SQR for
PeopleSoft maintains only one copy of the procedure’s local variables. In QuickSort the
variables #j and #n are overwritten when QuickSort calls itself.
For the algorithm to work properly, the program must save the values of these two variables
before making the recursive call, then restore those values when the call completes. QuickSort
can call itself recursively many times, so the program may need to save many copies of #j and
#n. To do this, add a #level variable that maintains the depth of recursion. In this example, a
helper array, Qsort, is used to hold multiple values of #j and #n.
The QuickSort procedure takes three arguments. The first is the recursion level (or depth),
which is #level, as previously described. The second and third arguments are the beginning
and end of the range of rows to be sorted. Each time QuickSort calls itself, the range gets
smaller. The main procedure starts QuickSort by calling it with the full range of rows.
The QSortSwap procedure swaps two rows in customer_array. Typically, rows with a lower
key value are moved up.
The procedures QuickSort and QSortSwap in ex24a.sqr refer to customer_array and its fields.
If you plan to use these procedures to sort an array in your applications, you must change
these references to the applicable array and fields. The QuickSort procedure sorts in ascending
order.
QuickSort and National Language
The QuickSort procedure does not support National Language Sensitive character string sort.
The comparisons
while #i <= #j and customer_array.name(#i) < $key
and
while #j >= 0 and customer_array.name(#j) > $key
are simple string comparisons. They work well for US ASCII English, but they may not sort
correctly with other languages. For such languages, you may need to write a National
Language Sensitive character string comparison and add that to SQR. The section
"Interoperability" explains how to add functions to SQR. The QuickSort procedure will then
be modified as follows.
while #i <= #j and NLS_STRING_COMPARE(customer_array.name(#i),$key)
while #j >= 0 and NLS_STRING_COMPARE($key,customer_array.name(#j))
S Q R F O R P E O P L E S O F T D E V E L O P E R ' S G U I D E
P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L P E R F O R M A N C E A N D T U N I N G 2 5 - 1 1
Using and Sorting Flat Files
An alternative to an array is a flat file. You can use a flat file when the required array size
exceeds available memory. As is the case with an array, you may need a sorting utility that
supports NLS.
The sample code in the previous section can be rewritten to use a file instead of an array. The
advantage of using a file is that the program is not constrained by the amount of memory that
is available. The disadvantage of using a file is that the program performs more I/O. However,
it may still be faster than performing another SQL statement to retrieve the same data.
This program uses the UNIX sort utility to sort the file by name. This example can be
extended to include other operating systems.
The following code is rewritten to use the file cust.dat instead of the array.
Program ex25b.sqr
begin-program
do main
end-program
begin-procedure main
!
! Open cust.dat
!
open 'cust.dat' as 1 for-writing record=80:vary
begin-select
state (,1)
city (,7)
name (,24)
phone (,55)
position (+1)
! Put data in the file
write 1 from &name:30 &state:2 &city:16 &phone:10
from customers
order by state
end-select
position (+2)
!
! Close cust.dat
close 1
! Sort cust.dat by name
!
call system using 'sort cust.dat > cust2.dat' #status
S Q R F O R P E O P L E S O F T D E V E L O P E R ' S G U I D E
2 5 - 1 2 P E R F O R M A N C E A N D T U N I N G P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L
if #status <> 0
display 'Error in sort'
stop
end-if
!
! Print customers (which are now sorted by name)
!
open 'cust2.dat' as 1 for-reading record=80:vary
while 1 ! loop until break
! Get data from the file
read 1 into $name:30 $state:2 $city:16 $phone:10
if #end-file
break ! End of file reached
end-if
print $state (,1)
print $city (,7)
print $name (,24)
print $phone (,55)
position (+1)
end-while
!
! close cust2.dat
close 1
end-procedure ! main
The program starts by opening a file cust.dat.
open 'cust.dat' as 1 for-writing record=80:vary
The OPEN command opens the file for writing and assigns it file number 1. You can open as
many as 12 files in one SQR program. The file is set to support records of varying length with
a maximum of 80 bytes (characters). For this example, you could also use fixed-length
records.
As the program selects records from the database and prints them, it writes them to cust.dat.
write 1 from &name:30 &state:2 &city:16 &phone:10
The WRITE command writes the four columns into file number 1—the currently open
cust.dat. It writes the name first, which makes it easier to sort the file by name. The program
writes fixed-length fields—for example, &name:30 specifies that the name column uses
exactly 30 characters. If the actual name is shorter, it is padded with blanks. When the
program has finished writing data to the file, it closes the file using the CLOSE command.
The file is sorted with the UNIX sort utility.
call system using 'sort cust.dat > cust2.dat' #status
The command sort cust.dat > cust2.dat is sent to the UNIX system. It invokes the UNIX sort
command to sort cust.dat and direct the output to cust2.dat. The completion status is saved in
S Q R F O R P E O P L E S O F T D E V E L O P E R ' S G U I D E
P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L P E R F O R M A N C E A N D T U N I N G 2 5 - 1 3
#status; a status of 0 indicates success. Because name is at the beginning of each record, the
file is sorted by name.
Next, we open cust2.dat for reading. The command
read 1 into $name:30 $state:2 $city:16 $phone:10
reads one record from the file and places the first 30 characters in $name. The next two
characters are placed in $state and so on. When the end of the file is encountered, the reserved
variable #end-file is automatically set to 1 (true). The program checks for #end-file and breaks
out of the loop when the end of the file is reached. Finally, the program closes the file using
the CLOSE command.
Creating Multiple Reports in One Pass
Sometimes you must create multiple reports that are based on the same data. In many cases,
these reports are similar, with only a difference in layout or summary. Typically, you can
create multiple programs and even reuse code. However, if each program is executed
separately, the database has to repeat the query. Such repeated processing is often
unnecessary.
With SQR, one program can create multiple reports simultaneously. In this method, a single
program creates multiple reports, making just one pass on the data, greatly reducing the
amount of database processing.
See Also
“Multiple Reports”
Tuning SQR Numerics
SQR for PeopleSoft provides three types of numeric values:
• Machine floating point numbers
• Decimal numbers
• Integers
Machine floating point numbers are the default. They use the floating point arithmetic
provided by the hardware. This method is very fast. It uses binary floating point and normally
holds up to 15 digits of precision.
Some accuracy can be lost when converting decimal fractions to binary floating point
numbers. To overcome this loss of accuracy, you can sometimes use the ROUND option of
commands such as ADD, SUBTRACT, MULTIPLY, and DIVIDE. You can also use the
round function of LET or numeric edit masks that round the results to the desired precision.
Decimal numbers provide exact math and precision of up to 38 digits. Math is performed in
software. This is the most accurate method, but also the slowest.
S Q R F O R P E O P L E S O F T D E V E L O P E R ' S G U I D E
2 5 - 1 4 P E R F O R M A N C E A N D T U N I N G P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L
You can use integers for numbers that are known to be integers. There are several benefits for
using integers: They enforce the integer type by not allowing fractions, and they adhere to
integer rules when dividing numbers. Integer math is also the fastest, typically faster than
floating point numbers.
If you use the DECLARE-VARIABLE command, the -DNT command-line flag, or the
DEFAULT-NUMERIC entry in the [Default-Settings] section of the PSSQR.INI file, you can
select the type of numbers that SQR uses. Moreover, you can select the type for individual
variables in the program with the DECLARE-VARIABLE command. When you select
decimal numbers, you can also specify the desired precision.
Selecting the numeric type for variables enables you to fine-tune the precision of numbers in
your program. For most applications, however, this type of tuning does not yield a significant
performance improvement and PeopleSoft recommends selecting decimal. The default is
machine floating point to provide compatibility with older releases of the product.
Compiling SQR Programs and Using SQR Execute
Compiling your SQR program can improve its performance. The compiled program is stored
in a runtime (.SQT) file. You can then run it with SQR Execute. Your program runs faster
because it skips the compile phase.
See Also
“Compiling Programs and Using SQR Execute”
Setting Processing Limits
A startup file and the [Processing-Limits] section of PSSQR.INI can define the sizes and
limitations of some of the internal structures used by SQR. An -M command-line flag can
specify a startup file whose entries override those set in PSSQR.INI. If you use the -M
command-line flag, then corresponding sections of the file are not processed. Many of these
settings have a direct affect on memory requirements.
Tuning of memory requirements used to be a factor with older 16-bit operating systems such
as Windows 3.1. Today, most operating systems use virtual memory and tuning memory
requirements would normally not affect performance in any significant way. The only case
where you might need to be concerned with [Processing-Limits] settings is with large SQR
programs that exceed default [Processing-Limits] settings. In such cases you must increase the
corresponding settings.
Buffering Fetched Rows
When a BEGIN-SELECT command is executed, records are fetched from the database server.
To improve performance, they are fetched in groups rather than one at a time. The default is
groups of 10 records. The records are buffered, and your program processes these records one
at a time. A database fetch operation is therefore performed after every 10 records, instead of
S Q R F O R P E O P L E S O F T D E V E L O P E R ' S G U I D E
P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L P E R F O R M A N C E A N D T U N I N G 2 5 - 1 5
after every single record. This is a substantial performance gain. If the database server is on
another computer, then network traffic is also significantly reduced.
The number of records to fetch together can be modified using the -B command-line flag or
for an individual BEGIN-SELECT command using its -B option. In both cases, you specify
the number of records to be fetched together. For example -B100 specifies that records be
fetched in groups of 100. This means that the number of database fetch operations is further
reduced.
This feature is currently available with SQR for ODBC and SQR for the Oracle or SYBASE
databases.
Executing Programs on the Database Server
You can reduce network traffic and greatly improve performance by running SQR programs
directly on the database server machine. The SQR Server is available on many server
platforms including Windows NT and UNIX.
Summary
The following techniques can improve the performance of your SQR programs:
• Simplify complex SELECT statements.
• Use LOAD-LOOKUP to simplify joins.
• Use dynamic SQL instead of a condition in a SELECT statement.
• Avoid using temporary database tables. Two alternatives to temporary database tables
are SQR arrays and flat files.
• Write programs that create multiple reports with one pass on the data.
• Use the most efficient numeric type for numeric variables (machine floating point,
decimal, or integer).
• Save compiled SQR programs and rerun them with SQR Execute.
• Adjust settings in the [Processing-Limits] section of PSSQR.INI or in a startup file.
• Increase buffering of rows in SELECT statements with the -B flag
• Execute programs on the database server machine.
P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L C O M P I L I N G P R O G R A M S A N D U S I N G S Q R E X E C U T E 2 6 - 1
C H A P T E R 2 6
Compiling Programs and Using SQR
Execute
This chapter discusses how to save and run compiled versions of your SQR programs.
Compiling and Executing an SQR Program
For the user, running an SQR program is a one-step process. For SQR, however, there are two
steps—compiling the program and executing it. When compiling a program, SQR:
• Reads, interprets, and validates the program
• Preprocesses substitution variables and certain commands—ASK, #DEFINE,
#INCLUDE, #IF, and #IFDEF
• Validates SQL statements
• Performs the SETUP section
SQR enables you to save the compiled version of a program and use it when you rerun a
report. That way, you perform the compile step only once and skip it in subsequent runs. Note
that SQR does not compile the program into machine language. SQR creates a ready-to-
execute version of your program that is already compiled and validated. This file is portable
between different hardware platforms and between some databases.
The steps are simple. Run the SQR executable (sqr for Unix systems or sqrw for Windows
systems) against your SQR program file and include the -RS command-line flag to save the
run-time file. SQR creates a file with a file name extension of .sqt. You should enter
something similar to the following:
sqrw ex1a.sqr sammy/[email protected] -RS
Run the SQR executable (“sqr” or “sqrw”) with the -RT command-line flag to execute the
.SQT file. Execution is faster because the program is already compiled. Here is an example:
sqrw ex1a.sqt sammy/[email protected] -RT
The SQR product distribution includes SQR Execute (the SQRT program). SQR Execute can
run .sqt files, but does not include the code that compiles an SQR program. (This program is
equivalent to running SQR with -RT.) You can run the .sqt file by invoking SQR Execute
from the command line with “sqrt” (on UNIX systems) or “sqrwt” (on Windows systems). An
example of running SQR Execute from the command line is as follows:
S Q R F O R P E O P L E S O F T D E V E L O P E R ' S G U I D E
2 6 - 2 C O M P I L I N G P R O G R A M S A N D U S I N G S Q R E X E C U T E P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L
sqrwt ex1a.sqt sammy/[email protected]
Note that after you save the run-time (.sqt) file, SQR no longer performs any compile-time
steps such as executing #IF, #INCLUDE, or ASK commands or performing the SETUP
section. These were already performed at the time that the program was compiled and the
runtime file was saved.
You must make a clear distinction between what is performed at compile time and what is
performed at runtime. Think of compile-time steps as defining what the report is. Commands
such as #IF or ASK enable you to customize your report at compile time. For runtime
customization, you should use commands such as IF and INPUT.
A list of SQR features that apply at compile time and their possible runtime equivalents
follows. In some cases, no equivalent exists and you must work around the limitation. For
example, you may have to use substitution variables with commands that require a constant
and do not allow a variable. The chapter "Writing Printer-Independent Reports” is an example
where we worked around the limitation of the USE-PRINTER-TYPE command, which does
not accept a variable as an argument.
Compile Time Run Time
Substitution variables Use regular SQR variables. If you are
substituting parts of a SQL statement, use
dynamic SQL instead.
See "Dynamic SQL and Error Checking"
ASK INPUT
#DEFINE LET
#IF IF
INCLUDE No equivalent
DECLARE-LAYOUT, margins No equivalent
Number of heading or footing
lines
No equivalent
DECLARE-CHART PRINT-CHART
DECLARE-IMAGE PRINT-IMAGE
DECLARE-PROCEDURE USE-PROCEDURE
DECLARE-PRINTER ALTER-PRINTER (where possible)
USE (SYBASE only) -DB command-line flag
Summary
• To save a compiled version of an SQR program, use the -RS command-line flag.
• To run a precompiled program, use the -RT command-line flag or SQR Execute.
P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L P R I N T I N G I S S U E S 2 7 - 1
C H A P T E R 2 7
Printing Issues
This chapter presents information concerning printing with SQR for PeopleSoft. It discusses
how to:
• Specify output file types using SQR command-line flags.
• Use the DECLARE-PRINTER command.
Specifying Output File Types for Printing SQR Reports
Except on the Microsoft Windows platform, SQR does not actually print the report. SQR
creates an output file that contains the report, but it does not print it directly. The output file
can be a printer-specific file or an SQR portable file (SPF). SQR portable files have a default
extension of .spf or .snn (for multiple reports).
The following table summarizes SQR command-line flags and the types of output they
produce.
Command Line Flag Output File Extension File Format Suitable for
-PRINTER:EH .htm Enhanced HTML intranet or internet
-PRINTER:HP .lis PCL HP LaserJet printer
-PRINTER:HT .htm HTML intranet and internet
-PRINTER:LP .lis ASCII Line printer
-PRINTER:PS .lis PostScript PostScript printer
-PRINTER:W P Output goes directly to
the default printer
without being saved to
a file. You can set your
default printer using
the Windows Control
Panel.
Windows
-NOLIS .spf or .Snn SQR Portable Format SQR Print and SQR
Viewer can print this
file to different print-
ers.
S Q R F O R P E O P L E S O F T D E V E L O P E R ' S G U I D E
2 7 - 2 P R I N T I N G I S S U E S P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L
Command Line Flag Output File Extension File Format Suitable for
-KEEP .spf or .Snn (in addition
to the .lis file that is
normally created)
SQR Portable Format
and the format of the
.lis file
SQR Print and SQR
Viewer can print this
.spf file to different
printers.
No flag .lis ASCII, PCL, or Post-
Script
Line printer, HP
LaserJet, or PostScript,
respectively.
Note. When no flags are specified, SQR produces a line printer output unless otherwise set in
the SQR program with DECLARE-PRINTER, USE-PRINTER-TYPE, or the PRINTER-
TYPE option of DECLARE-REPORT.
SQR portable file (.spf) is a printer-independent file format that supports all the SQR graphical
features, including fonts, lines, boxes, shaded areas, charts, bar codes, and images.
This file format is useful for saving the output of a report. SPF files can be distributed
electronically and read with the SQR Viewer. Producing SPF output also enables you to
decide later where to print it. Use SQR Viewer or SQR Print to print an SPF file.
Using the DECLARE-PRINTER Command
The DECLARE-PRINTER command specifies printer-specific settings for the printers that
SQR supports: line printer, PostScript, HP LaserJet, and HTML. The DECLARE-PRINTER
command itself does not cause the report to be produced for a specific printer. To specify a
specific format, use one of the following three methods:
• Use the -PRINTER:xx command-line flag. For example -PRINTER:PS produces a
PostScript output. If your program creates multiple reports, such as the program
ex18a.sqr from the chapter "Multiple Reports," the -PRINTER:xx flag produces the
same output format for all the reports.
• Use the USE-PRINTER-TYPE command in your report. You must use this command
before you print because SQR cannot switch the printer type in the middle of a
program. USE-PRINTER-TYPE PS, for example, produces PostScript output.
• Use the PRINTER-TYPE option of the DECLARE-REPORT command. The
DECLARE-REPORT command is normally used when your program generates more
than one report.
For example:
declare-report labels
layout=labels
printer-type=ps
end-declare
produces PostScript output for the labels report.
S Q R F O R P E O P L E S O F T D E V E L O P E R ' S G U I D E
P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L P R I N T I N G I S S U E S 2 7 - 3
The DECLARE-PRINTER command defines settings for line printers, PostScript, or HP
LaserJet printers. Specify the type of printer using the type option of the DECLARE-
PRINTER command or one of the predefined printers DEFAULT-LP, DEFAULT-PS,
DEFAULT-HP, and DEFAULT-HT.
Your program may have more than one DECLARE-PRINTER command if you define
settings for each of the printer types. The settings for a particular printer take effect only when
output is produced for that printer. When your program generates multiple reports, you can
define settings for each printer for each report. To make a DECLARE-PRINTER command
apply to a specific report, use the FOR-REPORTS option.
The output file normally has the same name as your program, but with a different file
extension. The default file extension is .lis for PostScript (PS), HP LaserJet (HP), or Line
Printer (LP). If you are generating an SQR portable file, the default extension is .spf. If you
want SQR to use another name for the output file (including a user-defined file extension),
you can use the -F option on the command line. For example, to use chapter1.out as the output
of the program ex1a.sqr, the command to run SQR is:
sqr ex1a username/password -fchapter1.out
When your program creates more than one report, you can name the output file by using
multiple -F flags:
sqr ex20a username/password -flabel.lis -fletter.lis -flisting.lis
Note that you cannot directly name .spf files. You can still use the -F command-line flag to
name the file, but you cannot control the file name extension. For example:
sqr ex20a username/password -flabel.lis -fletter.lis -flisting.lis -nolis
The -NOLIS command-line flag causes SQR to produce .spf files instead of .lis files. The
actual file names are label.spf, letter.s01, and listing.s02. Note that the second .spf file is
named .s01 and the third .s02. SQR supplies file extensions such as these when your program
generates multiple reports.
Different operating systems require different techniques for printing the output. On platforms
other than Windows, if the output is in SPF format, you first use SQR Print to create the
printer-specific file. For example, the following command invokes SQR Print to create a
PostScript file myreport.lis from the output file myreport.spf:
sqrp myreport.spf -printer:ps
Note that this is a one-way conversion—an .spf file can be converted to an .lis file, but an .lis
file cannot be converted to an .spf file.
The following table summarizes the commands and command-line options that you can use on
different systems to send your report output to the printer. Consult your operating system
documentation for details.
O/S Command Command-Line Options
UNIX SysV lp myreport.lis
lp myreport.lis -d ...
Use -D for printer destination. You can use
the UNIX “at” command to schedule the
printing time.
S Q R F O R P E O P L E S O F T D E V E L O P E R ' S G U I D E
2 7 - 4 P R I N T I N G I S S U E S P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L
O/S Command Command-Line Options
UNIX BSD lpr myreport.lis
VMS PRINT MYRE-
PORT.lis
/QUEUE for printer destination
/COPIES for number of copies
/AFTER for printing time
/PASSALL to resolve printing issues
Windows SQR prints directly.
You can also use
SQR Viewer.
Use the Print Setup dialog in SQR Print, or
the SQR Viewer to select a printer
destination. Use SQR Print to print multiple
copies.
You can also use the File Manager Copy
command to copy the file to the printer
destination (for example, lpt1).
PeopleSoft recommends that you check with your systems administrator about other
procedures or commands applicable to printing output files at your site.
See Also
“Multiple Reports”
Summary
• Command-line flags create output files appropriate for different platforms and
printers.
• DECLARE-PRINTER specifies printer-specific settings, but it does not itself cause
the report to be prepared for a specific printer.
• To prepare a report for a specific printer, use the -PRINTER:xx command-line flag,
the USE-PRINTER-TYPE command, or the DECLARE-REPORT command with the
printer-type option.
• The -F command-line flag enables you to name output files (including file
extensions).
• The -NOLIS and -KEEP command-line flags create files in SQR portable format with
an .spf extension.
P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L U S I N G T H E S Q R C O M M A N D L I N E 2 8 - 1
C H A P T E R 2 8
Using the SQR Command Line
This chapter explains how to use the SQR command line and discusses how to:
• Use command-line flags.
• Specify command-line arguments to an SQR program.
• Use batch mode.
Understanding the SQR Command Line
You can use the SQR command line to specify flags and pass arguments to modify your
program at runtime.
You can enter command-line flags such as -Bnn, -KEEP, or -S on the command line to modify
some aspect of program execution or output. Command-line arguments are typically answers
to requests (done in the SQR program by ASK or INPUT commands) for user input.
The following code sample and table describes the syntax of the SQR command line:
SQR [program] [connectivity] [flags ...] [args ...] [@file ...]
Argument Description
program The name of your program. The default file type or
extension is .sqr. If entered as "?" or omitted, SQR
prompts you for the program name. On UNIX-based
systems, if your shell uses the question mark as a wild card
character, you must precede it with a backslash (\).
connectivity The information needed by SQR to connect to the
database. If entered as "?" or omitted, SQR prompts you
for it.
DB2
Ssname/SQLid is the subsystem name and SQL
authorization ID to use.
Informix
Database is the name of the database to use.
S Q R F O R P E O P L E S O F T D E V E L O P E R ' S G U I D E
2 8 - 2 U S I N G T H E S Q R C O M M A N D L I N E P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L
Argument Description
ODBC
Data_Source_Name/[Username]/[Password] is the name
you give to the ODBC driver when you set up the driver,
your username, and password for the database.
Oracle
[Username]/[Password[@Database]] is your username and
password for the database. You can also specify the
connection string for the database (for example,
@B:ORASERVER).
SYBASE
Username/[Password] is your username and password for
the database.
flags Any of the flags listed in the SQR Language Reference.
args... Arguments used by SQR while the program is running.
Arguments listed here are used by the ASK and INPUT
commands rather than prompting the user. Arguments
must be entered on the command line in the same
sequence they are expected by the program—first all ASK
arguments in order and then INPUT arguments in order.
@file... File containing program arguments, one argument per line.
Arguments listed in the file are processed one at a time.
You can specify the command-line arguments program,
connectivity, and args in this file.
Using Command-Line Flags
Command-line flags begin with a hyphen. When a flag has an argument, the argument must be
entered directly after the flag with no intervening space.
See Also
See SQR for PeopleSoft Language Reference for information about SQR command-line flags.
Specifying Command-Line Arguments
You can pass an almost unlimited number of command-line arguments to SQR at runtime. On
some platforms, the operating system imposes a limit on the number of arguments or the total
size of the command line. Passing arguments is especially useful in automated reports, such as
those invoked by scripts or menu-driven applications.
You can pass arguments to SQR on the command line, in files, or with the environment
variable SQRFLAGS. When you pass arguments in a file, reference the file name on the
command line and put one argument on each line of the file. This avoids any limits imposed
by the operating system.
S Q R F O R P E O P L E S O F T D E V E L O P E R ' S G U I D E
P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L U S I N G T H E S Q R C O M M A N D L I N E 2 8 - 3
To reference a file on the command line, precede its name with the at sign (@) as shown in
the following example:
sqr myreport sammy/baker arg1 arg2 @file.dat
In this example, arg1 and arg2 are passed to SQR, followed by the file file.dat. Each line in
file.dat has an additional argument.
This section describes:
• Retrieving the arguments.
• Specifying arguments and argument files.
• Using an argument file.
• Other approaches to passing command-line arguments.
• Using reserved characters.
• Creating an argument file from a report.
How SQR Retrieves the Arguments
When the ASK and INPUT commands execute, SQR determines if you entered any arguments
on the command line or if an argument file has been opened. If either has happened, SQR uses
this input instead of prompting the user. After the available arguments are used, subsequent
ASK or INPUT commands prompt the user for input. If the INPUT command is used with the
BATCH-MODE argument, SQR does not prompt the user, but instead returns a status
meaning "No more arguments."
SQR processes all ASK commands before INPUT commands.
Note. If you compiled your SQR program into an .SQT file, ASK commands will have
already been processed. Use INPUT instead.
Specifying Arguments and Argument Files
You can mix argument files with simple arguments, as shown in the following example:
sqr rep2 sammy/baker 18 @argfile1.dat "OH" @argfile2.dat "New York"
This command line passes SQR the number 18, the contents of argfile1.dat, the value OH, the
contents of argfile2.dat, and the value "New York", in that order.
The OH argument is in quotes to ensure that SQR uses uppercase OH. When a command-line
argument is case-sensitive or contains spaces, it must be enclosed in quotes. Arguments stored
in files do not require quotes and cannot contain them; the actual strings with uppercase
characters and any spaces are passed to SQR.
S Q R F O R P E O P L E S O F T D E V E L O P E R ' S G U I D E
2 8 - 4 U S I N G T H E S Q R C O M M A N D L I N E P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L
Using an Argument File
To print the same report on different printers with different characteristics, you can save
values for the different page sizes, printer initializations, and fonts in separate files and use a
command-line argument to specify which file to use. For example, the following command
line passes the value 18 to SQR:
sqr myreport sammy/baker 18
An #INCLUDE command in the report file selects file printer18.dat based on the command-
line argument:
begin-setup
ask num ! Printer number.
#include 'printer{num}.dat' ! Contains#DEFINE commands for
! printer and paper width and length
declare-layout report
paper-size =({paper_width} {paper_length})
end-declare
end-setup
In this example, the ASK command assigns the value 18 to the variable num; 18 is a compile-
time argument. The #INCLUDE command then uses the value of num to include the file
printer18.dat, which could include commands similar to the following:
! Printer18.dat-definitions for printer in Bldg 4.
#define paper_length 11
#define paper_width 8.5
#define bold_font LS12755
#define light_font LS13377
#define init HM^J73011
Other Approaches to Passing Command-Line Arguments
SQR examines an argument file for a program name, username, or password if none is
provided on the command line. The following command line omits the program name,
username, and password:
sqr @argfile.dat
The first two lines of the argument file for this example contain the program name and
username/password:
myreport
sammy/baker
18
OH
...
S Q R F O R P E O P L E S O F T D E V E L O P E R ' S G U I D E
P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L U S I N G T H E S Q R C O M M A N D L I N E 2 8 - 5
If you do not want to specify the report name, username, or password on the command line or
in an argument file, use the question mark (?). SQR prompts the user to supply these. For
example:
sqr myreport ? @argfile.dat
In this example, the program prompts the user for the username and password instead of
taking them from the first line in the argument file.
You can use more than one question mark on the command line, as shown in the following
example:
sqr ? ? @argfile.dat
In this example, the program prompts the user for the program name and username/password.
Note. SQR for Windows does not accept the SQR program name and database connectivity to
be part of the argument file.
Reserved Characters
The hyphen (-) and at sign (@) characters have special meaning on the command line. The
hyphen precedes an SQR flag, and the at sign precedes an argument file name. To use either of
these characters as the first character of a command-line argument, enter the character twice to
indicate that it is a literal hyphen or at sign, as shown in the following example:
sqr myreport ? --17 @argfile.dat @@X2H44
In this example, the double hyphen and double at sign are interpreted as single literal
characters.
Creating an Argument File From a Report
You can create an argument file for one program from the output of another program. For
example, you could print a list of account numbers to the file acctlist.dat, then run a second
report with the following command:
sqr myreport sammy/baker @acctlist.dat
End acctlist.dat with a flag such as "END," as shown in the following example:
123344
S Q R F O R P E O P L E S O F T D E V E L O P E R ' S G U I D E
2 8 - 6 U S I N G T H E S Q R C O M M A N D L I N E P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L
134455
156664
...
END
An SQR program could use the numbers in acctlist.dat with an INPUT command, as shown in
the following example:
begin-procedure get_company
next:
input $account batch-mode status = #status
if #status = 3
goto end_proc
end-if
begin-select
cust_num, co_name, contact, addr, city, state, zip
do print-page ! Print page with
! complete company data
from customers
where cust_num = $account
end-select
goto next ! Get next account number
end_proc:
end-procedure !get_company
Using Batch Mode
SQR enables you to run reports in batch mode in:
• VAX/VMS.
• UNIX, Windows NT, and Windows 95/98 operating systems.
VAX/VMS
You can run SQR reports in batch mode using the supplied procedure, SUBMITSQR.COM.
This DCL command procedure prompts you for the name of your report, your
username/password, runtime arguments for the program (if supplied), then writes a temporary
command procedure and submits it to the batch queue.
UNIX, Windows 95/98, and Windows NT/2000
You can create UNIX shell scripts or MS-DOS batch (.bat) files to run SQR. Include the SQR
command line in the file as you enter it.
S Q R F O R P E O P L E S O F T D E V E L O P E R ' S G U I D E
P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L U S I N G T H E S Q R C O M M A N D L I N E 2 8 - 7
Summary
• Enter a flag on the command line to modify program execution or output.
• Specify a command-line argument to supply information requested by an ASK or
INPUT command.
• Specify multiple arguments in an argument file referenced on the command line.
• Use a question mark on the command line to prompt a user for input.
• Use batch mode to run multiple programs.
P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L W O R K I N G W I T H H T M L 2 9 - 1
C H A P T E R 2 9
Working With HTML
This chapter provides an overview of how to generate HTML from an SQR program output
and how to publish that output to a website to be available over an intranet, extranet, or the
internet. This chapter also explains how to create a script that enables users browsing the
internet or an intranet to request execution of an SQR program and view its output. It
discusses how to:
• Produce HTML output.
• Use HTML procedures in an SQR program.
• Modify an existing SQR program.
• Publish the report.
Understanding SQR Capabilities Available With HTML
The SQR language has a rich set of available features, but some of these features are not
available for HTML output due to the limitations of that format.
The SQR features supported under HTML include:
• Images.
• Font sizing. The SQR language specifies font sizes in points. HTML specifies font
sizes in a value from one to six. A point size specified in an SQR program is mapped
into an appropriate HTML font size.
• Font styles. The bold and underline font styles are supported.
• Centering.
The SQR features not currently supported for HTML output include:
• Font selection.
• Bar codes.
• Lines and boxes (using -PRINTER:HT).
S Q R F O R P E O P L E S O F T D E V E L O P E R ' S G U I D E
2 9 - 2 W O R K I N G W I T H H T M L P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L
Note. You can generate professional quality HTML report files with SQR for PeopleSoft. It is
not necessary to be an HTML “expert” to generate fine quality HTML output with SQR.
Though, if you want to adapt HTML output using SQR’s HTML procedures, you may find it
helpful to learn more about HTML.
Producing HTML Output
You can produce HTML output from an SQR program using one of four methods. Each
method provides a different level of HTML features.
• Running an unmodified SQR program with the command-line flag -PRINTER:EH
makes its HTML 3.0 or 3.2 output viewable in a web browser.
• Running an unmodified SQR program with the command-line flag -PRINTER:HT
makes its HTML 2.0 output viewable in a web browser.
• Using two HTML procedures—html_set_head_tags and html_set_body_attributes—
enables you to define a title and background image for the HTML output. With this
method, you must still use the command-line flag -PRINTER:HT.
• Using additional HTML procedures produces output with a full set of HTML features,
including lists, tables, and hypertext links. With this method, you must still use the
command-line flag -PRINTER:HT.
The procedures used in the last two options are contained in a file called html.inc. To utilize
HTML procedures, the SQR program must include the command:
#include 'html.inc'
The file HTML.INC is located in the SAMPLE (or SAMPLEW) directory. Use the command-
line flag -I to specify its path.
Understanding HTML Output
When an SQR program generates HTML output, that output contains HTML tags. An HTML
tag is a character sequence that defines how information is displays in a web browser.
Typically, HTML output looks similar to this:
<HTML><HEAD><TITLE>myreport.lis</TITLE></HEAD><BODY>
This code is only a portion of the HTML output that SQR generates. The tags it contains
indicate the start and end points of HTML formatting.
For example, in the HTML code shown previously, the tag <HTML> defines the output that
follows as HTML output. The tags <TITLE> and </TITLE> enclose the report title—in this
case, myreport.lis. The <BODY> tag indicates that the information following it comprises the
body of the report.
S Q R F O R P E O P L E S O F T D E V E L O P E R ' S G U I D E
P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L W O R K I N G W I T H H T M L 2 9 - 3
Using -PRINTER:EH
You can generate Enhanced HTML output from an SQR program using the command-line
flag -PRINTER:EH. This produces output that contains HTML formatting tags. All output is
displayed as fully formatted HTML 3.0 or 3.2 text. You can generate high-quality HTML
from SQR programs using -PRINTER:EH by issuing a command similar to:
sqrw myreport.sqr sammy/[email protected] -PRINTER:EH
You can control the version of HTML that is used by editing the [Enhanced-HTML]
parameter FullHTML in the PSSQR.INI file. Set FullHTML equal to TRUE for HTML 3.2 or
FALSE for HTML 3.0. Adjust this based upon the level of HTML your web browser supports.
The -PRINTER:EH default output is HTML 3.0.
If you have existing .SPF files for which you want to generate Enhanced HTML output, it is
not necessary to re-run your SQR program. You can invoke SQR Print (sqrp or sqrwp,
depending on your platform) to generate Enhanced HTML from .SPF files by using a
command similar to:
sqrwp myreport.spf -PRINTER:EH
From within the SQR Viewer, you can also generate this same high-quality HTML by
selecting FileS→Save as HTML. The HTML level output from the SQR Viewer is also
determined by your PSSQR.INI file settings and has the same default value.
You can also generate Enhanced HTML files with precompiled SQR program files (“.sqt
files”). Run the SQT file against SQR Execute with a command similar to the following:
sqrwt myreport.sqt sammy/[email protected] -PRINTER:EH
As is true of executing any .SQT file, you can run it against SQR (or SQRW, on Windows
platforms) by including the -RT flag. To generate Enhanced HTML use the -PRINTER:EH
flag in the command:
sqrw myreport.sqr sammy/[email protected] -RT -PRINTER:EH
The chapter "Master/Detail Reports" contains Program ex7a.sqr, which produces a simple
master/detail report. By running it with -PRINTER:EH, you can produce HTML output
which, when viewed from a web browser, is similar to the following example. Note that a
“banner” frame is produced that enables you to navigate through the report. You can enter a
specific page number and press ENTER on your keyboard (or click Go!). You can also use the
navigation links to move through the pages in any order you want—“First”, “Last”,
“Previous”, or “Next”.
S Q R F O R P E O P L E S O F T D E V E L O P E R ' S G U I D E
2 9 - 4 W O R K I N G W I T H H T M L P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L
-PRINTER:EH Output for Program ex7a.sqr (in web browser)
With -PRINTER:EH, you can also use additional flags such as -EH_CSV, -EH_CSV:file, -
EH_Icons:dir, and -EH_Scale:{nn} to modify the ouput. These flags work only with -
PRINTER:EH. -EH_CSV creates an additional output file in Comma Separated Value (CSV)
format. -EH_CSV:file associates the CSV icon with the specified file. -EH_Icons:dir specifies
the directory in which the HTML should find the referenced icons. -EH_Scale:{nn} sets the
scaling factor from 50 to 200.
Setting HTML Attributes Under -PRINTER:EH
In certain cases, you may want additional control over the Enhanced HTML code that is
generated with -PRINTER:EH. SQR supports extensions that enable you to control the
generated HTML. You can specify features such as the HTML title, background color (or
image), text color, and hyperlinks using these extensions.
Enhanced HTML extensions also enable you to include your own HTML tags in the output.
These tags are passed through to the output without change. Use this feature to include
advanced HTML capabilities such as JavaScript and <APPLET> tags.
This section describes how to:
• Specify HTML title.
• Specify background color.
• Specify a background image for the report.
• Specify hyperlinks.
• Specify text color.
S Q R F O R P E O P L E S O F T D E V E L O P E R ' S G U I D E
P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L W O R K I N G W I T H H T M L 2 9 - 5
• Specify HTML colors.
• Include your own HTML tags.
Specifying HTML Title
The HTML page title normally appears on the caption bar of the browser window and is also
used when creating a bookmark for the page. It is placed between the <TITLE> </TITLE>
HTML tags. You can specify the title of the HTML page by using the %%Title extension at
the beginning of the SQR program by entering:
Print-Direct Printer=html '%%Title Monthly Sales'
Specifying Background Color
You can specify a background color for the pages generated with -PRINTER:EH by using the
%%Body-BgColor extension. Enter code similar to the following at the beginning of your
program:
Print-Direct Printer=html '%%Body-BgColor #0000FF'
To set the background color for the navigation bar, enter code similar to the following:
Print-Direct Printer=html '%%Nav-Body-BgColor #0000FF'
See Also
See “Specifying HTML Colors.”
Specifying a Background Image for the Report
To use a background image for the report pages that enhanced HTML generates, insert
%%Background extension at the beginning of your program:
Print-Direct Printer=html '%%Background tile.gif'
To set the background image for the navigation bar, enter code similar to the following:
Print-Direct Printer=html '%%Nav-Background D:\jpegdir\house.jpg'
The background attribute can be any valid URL. If you do not specify Nav-Background while
the body background is specified, then the background image specified for the body is used
both in the body and in the navigation bar. If you do not want an image to appear in the
navigation bar, then you must specify in code similar to the following:
Print-Direct printer=html '%%Nav-Background EMPTY'
Specifying Hyperlinks
The %%Href extension specifies a hyperlink in your report. This extension enables you to
make a text, number, image, or chart object into a link. The object can be the item on which
you click to activate the link or it could be the location on the page where the link takes you.
The latter is specified using the %%Anchor extension.
S Q R F O R P E O P L E S O F T D E V E L O P E R ' S G U I D E
2 9 - 6 W O R K I N G W I T H H T M L P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L
For example, examine the following code:
Print-Direct Printer=html '%%Href #section2'
Print 'ABC' ()
...
Print-Direct Printer=html '%%Anchor section2'
Print 'XYZ' ()
In our example, clicking the ABC text on the page jumps to the XYZ text.
When using frames or multiple browser windows, you can control which frame displays the
target of the link using the target option of the %%Href extension. For example, specify on
one line:
Print-Direct Printer=html '%%Href target="_top" http://www.peoplesoft.com'
Specifying Text Color
The %%Color and %%ResetColor extensions change the color of text. The following code
example demonstrates this capability:
If &Salary > 100000
Print-Direct Printer=html '%%Color #FF0000'
End-If
Print &Salary ()
If &Salary > 100000
Print-Direct Printer=html '%%ResetColor'
End-If
In our example, when the value of the column is over 100000, it prints in red. The %%Color
extension affects all text (and number) printing from this point on. This is similar to the
behavior of the ALTER-PRINTER command. A subsequent invocation of %%Color with a
different color value sets the current color to the new color. To restore the color back to the
default (normally, black) use the %%ResetColor extension.
Specifying HTML Colors
Specifying color as an RGB hexadecimal value is the only way to designate color in SQR.
Your browser documentation should contain a listing of supported colors and their
hexadecimal values.
To specify color as an RGB hexadecimal value, enter a # character followed by six
hexadecimal digits. The first two digits specify the intensity of the red, the next two specify
the green, and the last two specify the blue. For example, green is #00FF00.
Including Your Own HTML Tags
The SQR PRINT with CODE-PRINTER=HT enables you to inject any text into the HTML
output. SQR does not check the text you are printing. This text could contain anything that
your browser understands.
S Q R F O R P E O P L E S O F T D E V E L O P E R ' S G U I D E
P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L W O R K I N G W I T H H T M L 2 9 - 7
Do not use this for formatting as it is likely that your formatting will conflict with -
PRINTER:EH enhanced HTML formatting. -PRINTER:EH enhanced HTML makes extensive
use of HTML tables.
To fully control the formatting, you can use the HTML procedures that are defined in html.inc
and are documented in this section and in the SQR for PeopleSoft Language Reference Guide.
By invoking the html_on procedure, you instruct Enhanced HTML to perform no formatting.
Specify all formatting using the HTML procedures in html.inc or by using SQR PRINT with
CODE-PRINTER=HT to insert HTML codes.
When you use SQR PRINT with CODE-PRINTER=HT, Enhanced HTML does not translate
special symbols that are used in HTML tags such as ‘<', '>’, and ‘&’.
Using -PRINTER:HT
Another method for generating HTML output from an SQR program is by running your
program with the command-line flag -PRINTER:HT. Alternatively, you can make some
simple modifications to your program. Add either DECLARE-PRINTER with the argument
TYPE=HT or USE-PRINTER-TYPE HT.
With these methods, HTML output is generated as follows:
• All output displays as preformatted text, using the HTML <PRE> </PRE> tags.
• Text is positioned on the page by the position coordinates specified in the SQR
program.
• Text is displayed using a fixed-width font such as Courier.
• Font sizes are mapped to an appropriate HTML font size.
• HTML reserved characters are mapped into the corresponding HTML sequence. The
characters <, >, &, " are mapped into the character sequences <, >, &, and
", respectively. This prevents the web browser from mistaking such output as an
HTML sequence.
The chapter "Master/Detail Reports" contains Program ex7a.sqr, which produces a simple
master/detail report. By running it with -PRINTER:HT, you can produce HTML output
which, when viewed from a web browser, is similar to the following example. Note that a left
frame is produced with links to each page of the report. The right frame also features a
navigation bar that appears at the top of every page in the report. The navigation bar enables
you to move the first page and last page or move one page forward or back from your relative
page viewing position.
S Q R F O R P E O P L E S O F T D E V E L O P E R ' S G U I D E
2 9 - 8 W O R K I N G W I T H H T M L P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L
-PRINTER:HT Output for Program ex7a.sqr (in web browser)
“Bursting” and Demand Paging
We described how, with SQR, you can generate HTML format reports using -PRINTER:EH
or -PRINTER:HT command-line flags. But what if you want your HTML files to be smaller in
size for faster load time or divided on the basis of report page ranges? Or, you might want to
preview a report’s Table of Contents in your web browser without generating an entire report.
You can do all of this by using -BURST:{xx} in conjunction with -PRINTER:EH or -
PRINTER:HT.
Using -BURST:P (or BURST:P1) with -PRINTER:EH or -BURST:P1 with -PRINTER:HT,
you can generate HTML output files burst by report page numbers—one report page per .htm
file. (This is frequently referred to as demand paging.) So, if you have a 25-page report, it is
divided into 25 separate .htm output files. Using -PRINTER:HT, you can also specify the
report page ranges you want within an HTML file. For example, -BURST:P0,1,3-5 generates
an HTML file containing only report page numbers 1, 3, 4 and 5. You can then focus on
information that is truly of interest.
Similarly, if you specify -PRINTER:HT with -BURST:T, only the Table of Contents file is
generated. And, if you specify -PRINTER:HT with -BURST:S, report output is generated
according to symbolic Table of Contents entries. Using -BURST:S, you can specify the
numeric level to burst on. (for example, -BURST:S2 bursts on level 2). If you have used
DECLARE-TOC and TOC-ENTRY commands in your SQR program, your Table of Contents
provides more detailed information than just page number links as illustrated in the following
example.
As an example of how to use DECLARE-TOC and TOC-ENTRY to improve the information
available in generated HTML output, we added the following code to the beginning of
Program ex7a.sqr.
begin-setup
declare-toc common
S Q R F O R P E O P L E S O F T D E V E L O P E R ' S G U I D E
P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L W O R K I N G W I T H H T M L 2 9 - 9
for-reports=(all)
dot-leader=yes
indentation=2
end-declare
end-setup
We also added code to the body of the program—in the main procedure immediately after the
begin-select and Print ‘Customer Information’ (,1)
toc-entry text = &name
The HTML output from the modified Program ex7a.sqr is shown in the following
illustrations.
-PRINTER:HT with -BURST:T output for modified Program ex7a.sqr
S Q R F O R P E O P L E S O F T D E V E L O P E R ' S G U I D E
2 9 - 1 0 W O R K I N G W I T H H T M L P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L
-PRINTER:HT output from modified Program ex7a.sqr
-PRINTER:EH output Table of Contents file from
modified Program ex7a.sqr
Setting Attributes With HTML Procedures
You can use SQR’s HTML procedures html_set_head_tags and html_set_body_attributes to
define a title and background image for a report. To use these procedures, the SQR program
must include the file html.inc. You must also run the program using the command-line flag -
PRINTER:HT.
These procedures must be called at the start of the program. For example:
S Q R F O R P E O P L E S O F T D E V E L O P E R ' S G U I D E
P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L W O R K I N G W I T H H T M L 2 9 - 1 1
do html_set_head_tags('<TITLE>Monthly Report</TITLE>')
do html_set_body_attributes('BACKGROUND="/images/mylogo.gif"')
The first line of this code displays the title “Monthly Report.” Specifically, the entire
sequence ‘<TITLE>Monthly Report</TITLE>’ is passed as an argument to the procedure
html_set_head_tags. Note that the argument is enclosed in single quotes.
The second line displays the background image mylogo.gif for the web page. Again, an
argument is passed to the procedure. Note that the entire argument is enclosed in single
quotes, and the file name and path are enclosed in double quotes.
Together, these two lines of code generate the following HTML output.
<HTML><HEAD><TITLE>My Report</TITLE></HEAD><BODY BACKGROUND="/images/mylogo.gif">
Using Additional HTML Procedures
Using additional HTML procedures in the SQR program provides enhanced capabilities,
including:
• Highlighting, including HTML physical tags and logical markup tags. (HTML
physical tags include subscript, superscript, and strikethrough. HTML logical markup
tags include citation, code, keyboard, and sample).
• Headings.
• Hypertext links.
• Lists, including ordered lists, unordered lists, definition lists, directory lists, and
menus.
• Paragraph formatting, including paragraph breaks, line breaks, and horizontal
dividers.
• Tables, including captions, rows, columns, and column headings.
Output File Types
An SQR report named myreport.sqr creates a FRAME file (myreport.htm) and report output
files. The OUTPUT-FILE-MODE entry in the [Default-Setting] section of the PSSQR.INI file
controls the report output file extensions. When set to SHORT, the report output files use the
form myreport.hzz and when set to LONG, the files use the form myreport_zz.htm. The value
of zz ranges from 00 to 99 and reflects the report number.
The FRAME file displays a list (hypertext links) of report pages in one frame and the report
text in another frame. Each report output file contains a list of pages (hypertext links) at the
end of the file. If myreport.sqr created multiple reports, then the FRAME file contains a link to
each report output file. In addition, each report output file contains links to the other report
output files that were created during the program run.
S Q R F O R P E O P L E S O F T D E V E L O P E R ' S G U I D E
2 9 - 1 2 W O R K I N G W I T H H T M L P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L
Testing
HTML output produced by an SQR program can be previewed on a local system. This is a
good way to test the output before it is published on a website.
To test a program’s output, open the file in the web browser. If your web browser supports the
HTML FRAME construct, open the FRAME file (myreport_frm.htm); otherwise open the
report output file (myreport.h00, myreport_00.htm).
Using HTML Procedures in an SQR Program
To enhance the appearance of the HTML output, use HTML procedures in an SQR program.
An SQR program with these procedures generates output as described previously in “Using
Printer:HT,” with the following exceptions:
• The HTML <PRE> </PRE> tags are not used.
• Text is displayed using a proportional font such as Arial.
• Positioning values specified in the SQR program are ignored. Text, HTML tags, and
other information are placed in the HTML output in the order in which they are
generated by the SQR program.
• White space, such as spaces between PRINT commands, is removed.
In this section, we discuss the following topics:
• HTML procedures.
• How to position objects.
• Table procedures.
• Headings.
• Highlighting.
• Hypertext links.
• Images.
• Lists.
• Paragraph formatting.
• User-defined HTML.
See Also
SQR for PeopleSoft Language Reference Guide for information about the HTML procedures
available with SQR.
S Q R F O R P E O P L E S O F T D E V E L O P E R ' S G U I D E
P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L W O R K I N G W I T H H T M L 2 9 - 1 3
How to Use HTML Procedures
When using the HTML procedures, include the file html.inc. As before, you must run the SQR
program with the -PRINTER:HT command-line flag.
The SQR program must also call the procedure html_on at the start of the program. The
command that calls this procedure is:
do html_on
Additionally, the program must specify a large page length to prevent page breaks. SQR
automatically inserts the page navigation hypertext links and an HTML <HR> tag at a page
break. If a page break occurs in the middle of an HTML construct, such as a table, the output
can display incorrectly. Use the command DECLARE-LAYOUT with a large MAX-LINES
setting to prevent page breaks from occurring.
Positioning Objects
When HTML procedures are activated:
• HTML output is generated without the <PRE></PRE> tags.
• All position qualifiers in the SQR program are ignored, and program output and
HTML tags are placed in the output file in the order in which they are generated,
regardless of their position qualifiers.
• The text printed in a BEGIN-HEADING section does not appear at the top of the
page. Because no positioning is done, text in the heading appears at the bottom.
• White space, such as spaces between PRINT commands is removed.
Thus, the HTML procedures must be used to format the report.
The following SQR code does not use the HTML procedures to format the output.
print 'Report summary:' (1,1)
print 'Amount billed:' (3,1)
print #amount_amount (3,20)
print 'Total billed:' (4,1)
print #total_amount (4,20)
The output from the sample code, as displayed by the web browser, is shown in the following
illustration. Note that all the text appears on the same line with no spaces between the data.
S Q R F O R P E O P L E S O F T D E V E L O P E R ' S G U I D E
2 9 - 1 4 W O R K I N G W I T H H T M L P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L
Output from previous sample code showing all text on same line
With the HTML procedures for line breaks and a table, the output can be formatted properly.
The following SQR code uses the procedure html_br to separate the first two lines of text. The
procedures html_table, html_tr, html_td, and html_table_end are used to display the totals in a
tabular format. Note that an empty string is passed to each procedure as it is called. This
empty string is required if no other argument is passed.
print 'Report summary:' (1,1)
do html_br(2,'')
do html_table('')
do html_tr('')
do html_td('WIDTH=300')
print 'Amount billed:' (3,1)
do html_td('')
print #amount_amount (3,20)
do html_tr('')
do html_td('WIDTH=300')
print 'Total billed:' (4,1)
do html_td('')
print #total_amount (4,20)
do html_table_end
Output from the previous code sample
S Q R F O R P E O P L E S O F T D E V E L O P E R ' S G U I D E
P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L W O R K I N G W I T H H T M L 2 9 - 1 5
Table Procedures
When the HTML procedures are activated, all positioning values in the SQR program are
ignored. Thus, the position values cannot be used to display records in a tabular format. To
display records in a tabular format use the following procedures:
• Tables–call html_table to start a table and html_table_end to end a table.
• Captions–call html_caption to mark the start of a table caption and html_caption_end
to mark the end of the table caption. The end is typically implied and
html_caption_end is not required, but you can use it for completeness.
• Rows–call html_tr to mark the start of a new row in the table and html_tr_end to mark
the end of the row. The end is typically implied and html_tr_end is not required, but it
you can use it for completeness.
• Column headings–call html_th to mark the start of a column heading and html_th_end
to mark the end of the column heading. The end is typically implied and html_th_end
is not required, but you can use it for completeness.
• Columns–call html_td to mark the start of a column and html_td_end to mark the end
of the column. The end is typically implied and html_td_end is not required, but you
can use it for completeness.
The following SQR program uses these table procedures to display information in a tabular
format.
Program ex29a.sqr
#include 'html.inc'
begin-program
do main
end-program
! set a large page length to prevent page breaks
begin-setup
declare-layout default
max-lines=750
end-declare
end-setup
begin-procedure main
! turn on HTML procedures
do html_on
! start the table and display the column headings
do html_table('border')
do html_caption('')
S Q R F O R P E O P L E S O F T D E V E L O P E R ' S G U I D E
2 9 - 1 6 W O R K I N G W I T H H T M L P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L
print 'Customer Records' (1,1)
do html_tr('')
do html_th('')
print 'Cust No' (+1,1)
do html_th('')
print 'Name' (,10)
! display each record
begin-select
do html_tr('')
do html_td('')
cust_num (1,1,6) edit 099999
do html_td('')
name (1,10,25)
next-listing skiplines=1 need=1
from customers
end-select
! end the table
do html_table_end
end-procedure
Output for Program ex30a.sqr
Headings
The heading procedures display text using heading levels such as those used in a book. The
available heading levels range from one to six; a first-level heading is the highest. To use the
heading procedures, call the appropriate heading procedure before the text is generated. After
the text is generated, call the corresponding end procedure.
S Q R F O R P E O P L E S O F T D E V E L O P E R ' S G U I D E
P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L W O R K I N G W I T H H T M L 2 9 - 1 7
The following SQR code displays text as a second-level heading:
do html_h2('')
print 'A Level 2 Heading' (1,1)
do html_h2_end
Highlighting
The highlighting procedures enable you to display text in the various HTML highlighting
styles. Highlighting is also called logical markup.
To use the highlighting procedures, call the appropriate highlighting procedure before the text
is generated. After the text is generated, call the corresponding end procedure.
The following highlighting procedures are available:
• Blink–call html_blink and html_blink_end.
• Citation–call html_cite and html_cite_end.
• Code–call html_code and html_code_end.
• Keyboard–call html_kbd and html_kbd_end.
• Sample–call html_sample and html_sample_end.
• Strike–call html_strike and html_strike_end.
• Subscript–call html_sub and html_sub_end.
• Superscript–call html_sup and html_sup_end.
The following SQR code displays text in the subscript style:
print 'Here is ' (1,1)
do html_sub('')
print 'subscript' ()
do html_sub_end
print ' text' ()
Hypertext Links
The hypertext link procedures enable you to create hypertext links and hypertext link anchors.
When the user clicks on the hypertext link, the web browser switches to the top of the
specified HTML document, to a point within the specified document, or to a link anchor
within the same document. A hypertext link can point to the homepage of a website, for
example.
S Q R F O R P E O P L E S O F T D E V E L O P E R ' S G U I D E
2 9 - 1 8 W O R K I N G W I T H H T M L P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L
To insert a hypertext link, use the procedure html_a, output the information that is to become
the hypertext link, and use the procedure html_a_end to mark the end of the hypertext link.
Two useful attributes for the procedure html_a, are the HREF and NAME attributes:
• Use the HREF attribute to specify the location to which the hypertext link points.
• Use the NAME attribute to specify an anchor to which a hypertext link can point.
These attributes are passed as arguments to the procedure html_a.
The following SQR code creates an anchor and two hypertext links. The anchor is positioned
at the top of the document. The first hypertext link points to the HTML document home.html.
The second hypertext link points to the anchor named TOP in the current document. Note the
pound sign (#) in the argument, which indicates that the named anchor is a point within a
document. The third link points to an anchor named POINT1 in the document mydoc.html.
do html_a('HREF=home.html')print 'Goto home page' ()
do html_a_end
do html_a('NAME=TOP')
do html_a_end
print 'At the top of document' ()
do html_br(40, '')print 'At the bottom of document' ()
do html_p('')
do html_a('HREF=#TOP')print 'Goto top of document' ()
do html_a_end
do html_a ('HREF=mydoc.html#POINT1')
print 'Goto point1 in mydoc.html' ()
do html_a_end
Images
An image can be included in an HTML output with the PRINT-IMAGE command or the
procedure html_img. Both of these produce the HTML <IMG> tag.
The PRINT-IMAGE command displays images for all printer types but enables you to specify
only the image type and source. The html_img procedure displays images only for the HTML
printer type but it enables you to specify any of the attributes available for an HTML <IMG>
tag.
For HTML output, you can use files only of the GIF or JPEG format. With PRINT-IMAGE,
use the argument TYPE=GIF-FILE or TYPE=JPEG-FILE, respectively.
S Q R F O R P E O P L E S O F T D E V E L O P E R ' S G U I D E
P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L W O R K I N G W I T H H T M L 2 9 - 1 9
Lists
The list procedures display lists. To use these procedures, call the appropriate procedure
before the list is generated. After the list is generated, call the corresponding end procedure.
The following list procedures are available:
• Definition (for lists of terms and their definitions)–call html_dl and html_dl_end.
• Directory–call html_dir and html_dir_end.
• Menus–call html_menu and html_menu_end.
• Ordered (numbered or lettered) lists–call html_ol and html_ol_end.
• Unordered (bulleted) lists–call html_ul and html_ul_end.
To display a list, except for the definition list, call the appropriate list procedure before
starting the output. Call html_li to identify each item in the list; you can also call html_li_end
for completeness. After specifying the output, call the corresponding end procedure.
The following code displays an ordered list:
do html_ol('')
do html_li('')
print 'First item in list' (1,1)
do html_li_end
do html_li('')
print 'Second item in list' (+1,1)
do html_li_end
do html_li('')
print 'Last item in list' (+1,1)
do html_li_end
do html_ol_end
To display a definition list call html_dl before starting the output. Call html_dt to identify a
term and html_dd to identify a definition. After specifying the output, call html_dl_end. You
can also call html_dd_end and html_dt_end for completeness.
The following code displays a definition list:
do html_dl('')
do html_dt('')
print 'A daisy' (1,1)
do html_dt_end
do html_dd('')
print 'A sweet and innocent flower' (+1,1)
S Q R F O R P E O P L E S O F T D E V E L O P E R ' S G U I D E
2 9 - 2 0 W O R K I N G W I T H H T M L P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L
do html_dd_end
do html_dt('')
print 'A rose' (+1,1)
do html_dt_end
do html_dd('')
print 'A very passionate flower' (+1,1)
do html_dd_end
do html_ol_end
Paragraph Formatting
The HTML procedures provide various paragraph-formatting capabilities. To use these
procedures, call the appropriate paragraph procedure before the list is output.
The following procedures are available:
• Paragraph breaks–call html_p to mark the start of a paragraph and html_p_end to mark
the end. Many HTML constructs imply an end of paragraph; thus, the procedure
html_th_end is not needed, but it you can use it for completeness.
• Line breaks–call html_br to insert a line break.
• Horizontal dividers (usually a sculpted line)–call html_hr to insert a horizontal
divider.
• Prevent line wrapping–call html_nobr to mark the start of a section of text that cannot
be wrapped by the web browser to fit the width of the browser window. Use the
procedure html_nobr_end to mark the end.
The following code uses the paragraph-formatting procedures to format text into paragraphs:
print 'Here is some normal text' (1,1)
do html_p('ALIGN=RIGHT')
print 'Here is right aligned text' (+1,1)
do html_br(1,'')
print 'and a line break' (+1,1)
do html_p_end
do html_hr('')
do html_nobr('')
print 'A very long line of text that cannot be wrapped' (+1,1)
do html_nobr_end
User-Defined HTML
You can incorporate your own HTML tags into the HTML output. To do so, use the PRINT
command with the argument CODE-PRINTER=HT.
S Q R F O R P E O P L E S O F T D E V E L O P E R ' S G U I D E
P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L W O R K I N G W I T H H T M L 2 9 - 2 1
Text printed with this argument is placed only in the HTML output generated when the HTML
printer type is specified. With all other printer types, the text is not placed in the output. In
addition, the specified text is placed directly in the HTML output without any modifications,
such as the mapping of reserved characters.
The following SQR code uses the HTML <B> tag to print bold text:
print '<B>' () code-printer=ht
print 'Bold text' ()
print '</B>' () code-printer=ht
Modifying an Existing SQR Program
In this section, an existing SQR program, ex12a.sqr, is modified to use HTML procedures.
The modified program is named Program ex30b.sqr. First, examine the output from ex12a.sqr
when this program is run without modifications using the command-line flag -PRINTER:HT.
Three HTML files are generated: ex12a.htm, ex12a_frm.htm, and ex12a_toc.htm. If your web
browser supports HTML frames, after opening ex12a_frm.htm, you should see the following:
Sample output
Program ex29b.sqr
#include 'html.inc'
begin-setup
declare-layout default
max-lines=10000
end-declare
end-setup
begin-program
S Q R F O R P E O P L E S O F T D E V E L O P E R ' S G U I D E
2 9 - 2 2 W O R K I N G W I T H H T M L P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L
do main
end-program
begin-procedure main
do html_on
print $current-date (1,1) edit 'DD-MON-YYYY'
do html_p('')
do html_table('BORDER')
do html_tr('')
do html_th('WIDTH=250')
print 'Name' (3,1)
do html_th('WIDTH=120')
print 'City' (,32)
do html_th('WIDTH=60')
print 'State' (,49)
do html_th('WIDTH=90')
print 'Total' (,61)
begin-select
do html_tr('')
do html_td('')
name (,1,30)
do html_td('')
city (,+1,16)
do html_td('')
state (,+1,5)
do html_td('ALIGN=RIGHT')
tot (,+1,11) edit 99999999.99
next-listing no-advance need=1
let #grand_total = #grand_total + &tot
from customers
end-select
do html_tr('')
do html_tr('')
do html_td('COLSPAN=3 ALIGN=RIGHT')
print 'Grand Total' (+1,40)
do html_td('ALIGN=RIGHT')
print #grand_total (,55,11) edit 99999999.99
do html_table_end
end-procedure ! main
S Q R F O R P E O P L E S O F T D E V E L O P E R ' S G U I D E
P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L W O R K I N G W I T H H T M L 2 9 - 2 3
In this code, a DECLARE-LAYOUT command with a large page length setting specified in
the MAX-LINES argument is issued to prevent page breaks.
The procedure html_on activates the HTML procedures.
The procedures html_table, html_tr, html_td, and html_th position the information in a tabular
format. Note the arguments passed to the HTML procedures. BORDER produces the sculpted
border seen in the following output. WIDTH defines the width of the columns. ALIGN right-
aligns the text in the Total column. COLSPAN causes the label Grand Total to be spanned
beneath three columns of data.
Instead of using a HEADING section, use the procedure tr_th to display column headings.
Output for Program ex30b.sqr
Publishing the Report
A report generated by an SQR program can be published on a website. Thereafter, the user of
a web browser can view the report over the internet or an intranet by specifying the report’s
URL address.
To publish a report:
1. Run the SQR program.
2. Determine where the report output will be stored on the web server. The directory must be
one that is referenced by a URL on your server. See your webmaster for more details on
creating a URL.
3. Copy the generated HTML output files to the selected directory on the web server. If the
output is generated on a client PC, use a utility such as FTP to transfer the HTML output
files to the web server.
S Q R F O R P E O P L E S O F T D E V E L O P E R ' S G U I D E
2 9 - 2 4 W O R K I N G W I T H H T M L P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L
Note. If you select the zip file option, a zip file is created for the generated HTML output
in addition to the files being placed in the file system.
4. Create hypertext links in a homepage or other website that point to the report files so users
browsing the network can navigate to the report and view it.
To support older web browsers that do not support the HTML FRAME construct, create two
separate hypertext links—one pointing to the FRAME file (.htm) and labeled to indicate frame
version, and another pointing to the report output file and labeled to indicate nonframe
version. If the report was created with HTML procedures, however, it should only contain a
single page. In that case, a listing of report pages contained in the FRAME file would not be
needed. Only the report output file would be required for publication on a website.
In this section, we discuss how to:
• View the published report.
• Publish using an automated process.
• Publish using a CGI script.
• Create the fill-out form.
• Create the CGI script.
• Pass arguments to the SQR program.
Viewing the Published Report
You use a web browser to view a report that is published on a website. To do this, specify a
URL address in your web browser, for example: http://www.myserver.com/myreport.htm.
Publishing Using an Automated Process
The webmaster can create a program that automates the publishing process. The program
should run the SQR program and copy the output to the appropriate location. You can start the
program using a scheduling utility to automatically run the program and publish it on the
website at specified times. See the documentation of your particular scheduling software for
more details.
The following sample Bourne shell program performs these tasks:
• Sets the necessary environment variables.
• Runs the SQR program /usr2/reports/myreport.sqr and generates the output files
/usr2/reports/myreport.htm and /usr2/reports/myreport.h00.
• Specifies /dev/null as the source of standard input to prevent the program from
stopping if it requires input.
S Q R F O R P E O P L E S O F T D E V E L O P E R ' S G U I D E
P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L W O R K I N G W I T H H T M L 2 9 - 2 5
• Redirects the standard output to /usr2/reports/myreport.out to capture any status
messages. You can view the output file at a later time to diagnose any problems.
• Copies the generated report files to the directory /usr2/web/docs to publish it on the
web server. (Use the directory name appropriate for your server.)
Here is the code:
#! /bin/sh
# set the appropriate environment values
ORACLE_SID=oracle7; export ORACLE_SID
ORACLE_HOME=/usr2/oracle7; export ORACLE_HOME
SQRDIR=/usr2/sqr/bin; export SQRDIR
# invoke the SQR program
sqr /usr2/reports/myreport.sqr orauser/orapasswd \
-PRINTER:ht -I$SQRDIR \
> /usr2/reports/myreport.out 2>&1 < /dev/null
# copy over the output
cp /usr2/reports/myreport.htm /usr2/web/docs
cp /usr2/reports/myreport.h00 /usr2/web/docs
Note. The environment variables and the file names must be adjusted to fit your particular
environment.
Publishing Using a CGI Script
Using the CGI script method, the user of a web browser can run an SQR report and view the
output. You can enable the user to run an SQR report by providing a fill-out form.
When a user runs an SQR report through a website, the following process occurs:
1. The user of the web browser navigates to a fill-out form.
2. The user enters information on the fill-out form and clicks a button to invoke the CGI
script.
3. The CGI script runs the SQR program.
4. The CGI script copies the report output file to the standard output.
5. The user views the report.
This process requires the following items:
S Q R F O R P E O P L E S O F T D E V E L O P E R ' S G U I D E
2 9 - 2 6 W O R K I N G W I T H H T M L P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L
• The fill-out form
• The CGI script
• The SQR program
Creating the Fill-Out Form
This section explains how to create an HTML fill-out form that enables the user to enter some
values and start the request.
The following HTML code defines a fill-out form with three radio buttons and a submit
button. The radio buttons enable the user to specify the sorting criteria. The Submit button
invokes the CGI script.
Here is the HTML code:
<HTML>
<TITLE>View Customer Information</TITLE>
<FORM METHOD=POST ACTION="/cgi-bin/myreport.sh">
<B>Select the Field to Sort By</B><P><DIR>
<INPUT TYPE="radio" NAME="rb1" VALUE="cust_num" CHECKED> Number<BR>
<INPUT TYPE="radio" NAME="rb1" VALUE="name"> Name<BR>
<INPUT TYPE="radio" NAME="rb1" VALUE="city"> City<BR>
<P><INPUT TYPE="submit" NAME="run" VALUE="Run Report"></DIR>
</FORM>
</HTML>
The FORM METHOD tag specifies that the CGI script /cgi-bin/myreport.sh will be invoked
when the submit button is pressed. The URL address of the CGI script must be adjusted to fit
your particular environment.
In the INPUT tags, the attribute TYPE=“radio” defines a radio button. The VALUE attribute
of the selected radio button is passed by way of the CGI script to the SQR program, as shown
in the following example.
The fill-out form looks similar to this.
S Q R F O R P E O P L E S O F T D E V E L O P E R ' S G U I D E
P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L W O R K I N G W I T H H T M L 2 9 - 2 7
Sample Fill-Out form
Creating the CGI Script
The CGI script is started when a user makes a request from a fill-out form. A CGI script can
be any executable program. PeopleSoft does not recommend that SQR be called directly as a
CGI script—a Perl script, a shell script, or a C program all provide simpler routines for
processing as a CGI script.
The CGI script performs the following tasks:
• Reads the contents of the standard input stream and parses it to obtain the values
entered on the fill-out form. If the fill-out form has no input fields, this step is not
required.
• Identifies the output as being in HTML format by outputting the string “Content-type:
text/html” and an extra empty line to the standard output stream.
• Invokes the SQR program. Values entered by the user on the fill-out form are passed
to the SQR program by the CGI script and the command line.
• Sends the generated .LIS file to the standard output stream. The .HTM file is not used
because it points to the .LIS file with a relative URL address. The relative address
does not specify to the web browser where to find the .LIS file. PeopleSoft also
recommends that you make provisions within your SQR program to output an error
message.
The following Bourne shell is an example of a CGI script.
#! /bin/sh
# set the appropriate environment values
ORACLE_SID=oracle7; export ORACLE_SID
ORACLE_HOME=/usr2/oracle7; export ORACLE_HOME
SQRDIR=/usr2/sqr/bin; export SQRDIR
S Q R F O R P E O P L E S O F T D E V E L O P E R ' S G U I D E
2 9 - 2 8 W O R K I N G W I T H H T M L P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L
# identify the output as being HTML format
echo "Content-type: text/html"
echo ""
# get values from fill-out form using the POST method
read TEMPSTR
SORTBY=`echo $TEMPSTR | sed "s;.*rb1=;;
s;&.*;;"`
# invoke the SQR program
sqr7 /usr2/reports/myreport.sqr orauser/orapasswd \
-PRINTER:ht -f/tmp/myreport$$.lis -I$SQRDIR "$SORTBY" \
> /tmp/myreport$$.out 2>&1 < /dev/null
if [ $? -eq 0 ]; then
# display the output
cat /tmp/myreport$$.lis
else
# error occurred, display the error
echo "<HTML><BODY><PRE>"
echo "FAILED TO RUN SQR PROGRAM"
cat /tmp/myreport$$.out
echo "</PRE></BODY></HTML>"
fi
# remove temp files
rm /tmp/myreport$$.*
This script first sets the necessary environment variables. Next, it sends the string Content-
type: text/html and an extra empty line to the standard output stream to identify the text as
being HTML format.
The script retrieves the value of the selected radio button into the variable SORTBY. The script
passes the value to the SQR program on the command line.
The script runs the SQR program. The script uses the report file /usr2/reports/myreport.sqr
and generates the file /tmp/myreport$$.lis. In addition, the script redirects the standard input
from /dev/null to prevent the program from stopping if the program requires any input. It also
redirects the standard output to /tmp/myreport$$.out to capture any status messages. The $$ is
the process ID of the program and is used as a unique identifier to prevent any multiuser
problems.
The script then copies the generated report file to the standard output stream. If an error occurs
it generates the status message file instead to enable the user to view the status messages.
Finally, it deletes any temporary files.
S Q R F O R P E O P L E S O F T D E V E L O P E R ' S G U I D E
P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L W O R K I N G W I T H H T M L 2 9 - 2 9
Passing Arguments to the SQR Program
The SQR program must be modified to accept values entered by the user on the fill-out form.
The following code is the procedure main from Program ex30b.sqr. It has been modified to
use the SORT BY value passed from the CGI script. The $sortby variable is obtained from the
command line with an INPUT command and used as dynamic variables in the ORDER BY
clause. The modified lines are shown in bold.
begin-procedure main
input $sortby 'Sort by' type=char
do html_on
do html_table('')
do html_tr('')
do html_th('')
print 'Name' (3,1)
do html_th('')
print 'City' (,32)
do html_th('')
print 'State' (,49)
begin-select
do html_tr('')
do html_td('')
name (,1,30)
do html_td('')
city (,+1,16)
do html_td('')
state (,+1,5)
next-listing no-advance need=1
let #grand_total = #grand_total + &tot
from customers
order by [$sortby]
end-select
Summary
• Running an existing SQR program with the -PRINTER:EH or -PRINTER:HT
command-line flag produces HTML output.
• Modifying an SQR program with the argument TYPE=HT of the DECLARE-
PRINTER command or USE-PRINTER-TYPE HT also produces HTML output.
• An SQR program run that produces HTML output creates a FRAME file
(myreport.htm) and report output files (myreport.h00, myreport_00.htm).
• To generate configured HTML output, use HTML procedures. These procedures are
contained in the file html.inc.
S Q R F O R P E O P L E S O F T D E V E L O P E R ' S G U I D E
2 9 - 3 0 W O R K I N G W I T H H T M L P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L
• To use these HTML procedures, include the file html.inc in your SQR program and
call the procedure html_on.
• The command PRINT-IMAGE and the HTML procedure <IMG> provide support for
GIF and JPEG images.
• To publish an SQR report on a web server, run the SQR program and copy the output
file to the web server.
• To automate the publishing process, use a shell script or a scheduling utility.
• To enable users to request an SQR report, use a CGI script and a fill-out form.
• A fill-out form enables users to request an SQR program and specify values such as
sorting criteria.
• A CGI script invokes the SQR program and passes values entered in the fill-out form
to it.
P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L T A B L E O F C O N T E N T S 3 0 - 1
C H A P T E R 3 0
Table of Contents
This chapter explains how to create a Table of Contents for your reports and discusses how to:
• Use the DECLARE-TOC command.
• Use the TOC-ENTRY command.
• Add a Table of Contents to the sample SQR program cust.sqr.
Using the DECLARE-T0C Command
DECLARE-TOC defines a Table of Contents and its attributes. When generating multiple
reports and Tables of Contents from one SQR program, you can also use the TOC argument of
the DECLARE-REPORT command.
You must issue the DECLARE-TOC command in the program’s SETUP section similar to the
following example:
begin-setup
declare-toc toc_name
for-reports = (all)
dot-leader = yes
indentation = 2
end-declare
.
.
.
end-setup
After the DECLARE-TOC command, specify a Table of Contents name. The FOR-REPORTS
argument enables you to specify the reports within the SQR program that use this Table of
Contents. Use (all) if you want all the reports to use one Table of Contents. Specifying
individual report names is only required when you are generating multiple reports with
different Table of Contents from one program. DOT-LEADER specifies whether or not a dot
leader precedes the page number. The default setting is NO and the DOT-LEADER is
suppressed in all HTML output except when -BURST:T with -PRINTER:HT are also
specified. INDENTATION specifies the number of spaces that each level is indented by. (The
default setting is 4.)
S Q R F O R P E O P L E S O F T D E V E L O P E R ' S G U I D E
3 0 - 2 T A B L E O F C O N T E N T S P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L
DECLARE-TOC also supports procedures frequently used for setup and initialization
purposes:
• BEFORE-TOC
• AFTER-TOC
• BEFORE-PAGE
• AFTER-PAGE
BEFORE-TOC specifies a procedure to be executed before the Table of Contents is generated.
If no Table of Contents is generated, the procedure does not execute. AFTER-TOC specifies a
procedure to be executed after the Table of Contents is generated. If no Table of Contents is
generated, the procedure does not execute. BEFORE-PAGE specifies a procedure to be
executed at the start of each page. AFTER-PAGE specifies a procedure to be executed at the
end of each page.
Using the TOC-ENTRY Command
TOC-ENTRY places an entry into the Table of Contents and takes the mandatory argument
TEXT which specifies the text to be placed in the Table of Contents. Legal text includes text
literals, variables, and columns. To include levels in your Table of Contents, use the LEVEL
argument, which specifies the level at which to place the text. If this argument is not specified,
the previous level’s value is used.
If you are writing programs that generate multiple reports, you have some options to choose
from. You can use the FOR-REPORTS argument of the DECLARE-TOC command to
identify the reports to which the DECLARE-TOC applies. Alternatively, you can use the TOC
argument of the DECLARE-REPORT command to specify the name of the Table of Contents
you want the report to use. Your program can have multiple DECLARE-TOC statements and
multiple DECLARE-REPORT statements. However, you must include the FOR-TOCS
argument in your DECLARE-TOC statements or the TOC argument in your DECLARE-
REPORT statements.
To specify the name of the Table of Contents applicable to a given report using the TOC
argument of the DECLARE-REPORT command, include code similar to the following in the
SETUP section of your program:
begin-setup
declare-report
toc = toc_name
end-declare
.
.
end-setup
In the chapter "Printing Issues,” we modified program ex7a.sqr to use the DECLARE-TOC
and TOC-ENTRY commands. Then, we generated HTML output from the modified program
S Q R F O R P E O P L E S O F T D E V E L O P E R ' S G U I D E
P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L T A B L E O F C O N T E N T S 3 0 - 3
using the -PRINTER:EH and -PRINTER:HT command-line flags. In HTML, the Table of
Contents file is a hyper-linked point of navigation for the online report.
However, you may also want to generate output files for printing reports on paper. The Table
of Contents features can also perform this task. To test this, run the modified version of
ex7a.sqr program from the chapter "Printing Issues” and print it from an .LIS file (or use
-PRINTER:WP on Windows). The Table of Contents output contains the traditional dot
leaders and necessary page numbers relating to a hardcopy report.
Adding a Table of Contents to the Cust.sqr Program
The following program is based on cust.sqr, which is located in the SAMPLE (or
SAMPLEW) directory. The program identifies the Table of Contents with the specific name
cust_toc. The dot leader is turned ON. Indentation is set to 3. One Table of Contents level is
set using the TOC-ENTRY command’s LEVEL=1 argument. The BEFORE-PAGE and
AFTER-TOC arguments of the DECLARE-TOC command are used to print simple messages
here.
Table of Contents Sample Program #1
begin-setup
declare-toc cust_toc
for-reports=(all)
dot-leader=yes
indentation=3
after-toc=after_toc
before-page=before_page
end-declare
end-setup
begin-program
do main
end-program
begin-procedure after_toc
position (+1,1)
print 'After TOC' () bold
position (+1,1)
end-procedure
begin-procedure before_page
position (+1,1)print 'Before Page' () bold
position (+1,1)
end-procedure
S Q R F O R P E O P L E S O F T D E V E L O P E R ' S G U I D E
3 0 - 4 T A B L E O F C O N T E N T S P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L
begin-procedure main
begin-select
print 'Customer Info' ()
print '-' (+1,1,62) Fill
name (+1,1,25)
toc-entry text = &name level = 1
cust_num (,35,30)
city (+1,1,16)
state (,17,2)
phone (+1,1,15) edit (xxx)bxxx-xxxx
position (+2,1)
from customers
order by name
end-select
end-procedure ! main
begin-heading 3
print $current-date (1,1) Edit 'DD-MON-YYYY'
page-number (1,69) 'Page '
end-heading
The following program is also based on cust.sqr. It is similar to the previous program but
declares two Table of Contents levels. This program also creates Table of Contents specific
headings and footings. The FOR-TOCS argument of the BEGIN-HEADING and BEGIN-
FOOTING commands enables you to specify, by name, the Table of Contents to which the
particular heading or footing section applies. So, if your program is generating multiple
reports with multiple Tables of Contents, you can apply unique or common headings and
footings to reports and Tables of Contents. The Table of Contents heading of this program
prints Table of Contents and the page number. The page numbers in the Table of Contents
print as roman numerals. The Table of Contents footing prints Company Confidential.
Table of Contents Sample Program #2
begin-setup
declare-report cust
end-declare
declare-toc cust_toc
for-reports=(cust)
dot-leader=yes
indentation=3
after-toc=after_toc
before-page=before_page
end-declare
S Q R F O R P E O P L E S O F T D E V E L O P E R ' S G U I D E
P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L T A B L E O F C O N T E N T S 3 0 - 5
declare-variable
integer #num_toc
integer #num_page
end-declare
end-setup
begin-program
use-report cust
do main
end-program
begin-procedure after_toc
position (+1,1)
print 'After TOC' () bold
position (+1,1)
end-procedure
begin-procedure before_page
position (+1,1)
print 'Before Page' () bold
position (+1,1)
end-procedure
begin-procedure main
begin-select
print 'Customer Info' ()
print '-' (+1,1,62) Fill
name (+1,1,25)
toc-entry text = &name level = 1
cust_num (,35,30)
city (+1,1,16)
state (,17,2)
phone (+1,1,15) edit (xxx)bxxx-xxxx
position (+2,1)
do orders(&cust_num)
position (+2,1)
from customers
order by name
end-select
end-procedure ! main
S Q R F O R P E O P L E S O F T D E V E L O P E R ' S G U I D E
3 0 - 6 T A B L E O F C O N T E N T S P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L
begin-procedure orders (#cust_num)
let #any = 0
begin-select
if not #any
print 'Orders Booked' (+2,10)
print '-------------' (+1,10)
let #any = 1
end-if
b.order_num
b.product_code
order_date (+1,10,20) Edit 'DD-MON-YYYY'
description (,+1,20)
toc-entry text = &description level=2
c.price * b.quantity (,+1,13) Edit $$$$,$$0.99
from orders a, ordlines b, products c
where a.order_num = b.order_num
and b.product_code = c.product_code
and a.cust_num = #cust_num
order by b.order_num, b.product_code
end-select
end-procedure ! orders
begin-footing 3
for-tocs=(cust_toc)
print 'Company Confidential' (1,1,0) center
print $current-date (1,1) Edit 'DD-MON-YYYY'
end-footing
begin-heading 3
for-tocs=(cust_toc)
print 'Table of Contents' (1,1) bold center
let $page = roman(#page-count)
print 'Page ' (1,69)
print $page ()
end-heading
begin-heading 3
print $current-date (1,1) Edit 'DD-MON-YYYY'
page-number (1,69) 'Page '
end-heading
S Q R F O R P E O P L E S O F T D E V E L O P E R ' S G U I D E
P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L T A B L E O F C O N T E N T S 3 0 - 7
Two-Level Table of Contents HTML file with PRINTER:EH output
Summary
• Use the DECLARE-TOC and TOC-ENTRY commands to create a Table of Contents
for your report.
• You can generate multiple Tables of Contents and multiple reports from the same
program. Use the TOC argument of the DECLARE-REPORT command or the FOR-
REPORTS argument of the DECLARE-TOC command to specify which TOC goes
with which report.
• You can create headings and footings for specified Tables of Contents using the FOR-
TOCS argument to the BEGIN-HEADING and BEGIN-FOOTING commands.
P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L G L O S S A R Y 1
Glossary
The terms in this glossary are used among multiple Financials and Supply Chain Management
applications.
Numbers
401(a)(17) Limits
The limitations on the earnings that may be included in the calculation of benefits under
qualified U.S. pension plans.
1st Year Amount
In PeopleSoft Workforce Analytics, 1st Year Amount is an employee-level compensation
amount, totaling the calculations for the first calendar year’s worth of accounting periods, in a
compensation scenario.
A
Abend
Abnormal End (to a process).
ABM (Activity-Based Management)
See PeopleSoft Activity-Based Management.
ABPS (Activity-Based Planning and Simulation)
See Activity-Based Planning and Simulation.
Absence
An absence occurs when an employee is not at work (absent) during a normally scheduled
work period. Absences may be scheduled or non-scheduled, compensated or uncompensated,
excused or unexcused. An absence may occur for a variety of reasons like illness, family
emergency, civic obligations (e.g. Military duty or jury duty), or vacation.
G L O S S A R Y
G L O S S A R Y 2 P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L
Absence Entitlement
Element which defines the rules for granting paid time off for valid absences, such as sick
time, vacation, and maternity leave. An absence entitlement element defines the entitlement
amount, frequency, and entitlement period.
Absence Take
Element which defines the conditions that must be met before a payee is entitled to take paid
time off.
Accepted Exception
An exception that has been reviewed and validated (see Time Management).
Accommodations
Accommodations are efforts your organization is able to make for employees or applicants
with disabilities, such as purchasing special equipment or making structural changes to a work
environment.
Account Management
In PeopleSoft Demand Planning, a feature that enables you to divide a centrally held corporate
forecast into multiple subsections for easier maintenance and management. These subsections
are separate databases that can be distributed to account managers for use and updates, then
rejoined with the main database at a later date.
Account
A code for recording and summarizing financial transactions as expenditures, revenues, assets,
or liabilities balances. This is a delivered PeopleSoft ChartField, specific use of which is
typically defined by the organization during implementation of PeopleSoft General Ledger.
Account Type
A name for one of the different kinds of accounts used in a PeopleSoft General Ledger, such
as Asset, Liability, Equity, Revenue, and Expense.
Accounting Class
In PeopleSoft Enterprise Performance Management, an attribute that defines how the
particular resource would be treated for generally accepted accounting practices. Inventory
denotes whether a Resource will become part of a balance sheet account such as inventory or
fixed assets, while Non-inventory denotes that the Resource will be treated as an expense of
the period during which it occurs.
Accounting Date
The date that a transaction is recognized as opposed to the date the transaction actually
occurred—the Transaction Date (although the two dates can be the same). The accounting
date determines the period in the general ledger to which the transaction is to be posted. You
G L O S S A R Y
P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L G L O S S A R Y 3
can only select an accounting date that falls within an open period in the ledger to which you
are posting. The accounting date for an item is normally the invoice date. In PeopleSoft Asset
Management, the difference between accounting date and transaction date determines whether
prior period depreciation must be calculated, and how much. Accounting Date must be later
than or equal to Transaction Date.
Accounting Entry
A set of related debits and credits. An Accounting Entry is made up of multiple Accounting
Lines. In most PeopleSoft applications, accounting entries are always balanced (debits =
credits). Accounting entries are created to record accruals, payments, payment cancellations,
manual closures, project activities in general ledger, and so forth (depending on the
application).
Accounting Entry Template
A user-defined table that controls the use of system-generated accounting lines in the posting
processes.
Accounting Split
Method indicating how expenses are allocated or divided among one or more sets of
accounting ChartFields.
Accredited Education
Education above the high school level completed in a U.S. college, university, or other
educational institution that has been credited by one of the accrediting agencies or associations
recognized by the Secretary, U.S. Department of Education.
Accrual
Any hours that employees accumulate for use at another time in the form of earned vacation
time or sick leave, for example.
Accrual Basis Accounting
Accounting that records the impact of a business event as it occurs, regardless of whether the
transaction affected cash.
Accrual Class Codes
Classes or categories of accruals.
Accrual Type
Defines an accrual such as annual leave or sick leave.
G L O S S A R Y
G L O S S A R Y 4 P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L
Accumulate Demand
In PeopleSoft Demand Planning, a transfer process function that adds demand quantities for
an item to any quantities that already exist for the period.
Accumulator
Element which allows you to combine several elements. For example, an accumulator could
consist of all voluntary deductions, or all company deductions, enabling you to accumulate
amounts. It allows total flexibility for time periods and values accumulated. See also Time
Administration.
Accumulator [Global Payroll]
Element which provides a means for storing the cumulative values of defined items as they are
processed. As you make payments, take deductions, and perform calculations, you’ll use
accumulators to track accumulated amounts, or balances. You can accumulate a single value
over time or multiple values over time, as your requirements specify. For example, an
accumulator could consist of all voluntary deductions, or all company deductions, enabling
you to accumulate amounts. It allows total flexibility for time periods and values accumulated.
Action
In PeopleSoft Deduction Manangement, a task that you perform to obtain information required
to resolve a deduction.
Action and Conditions
A process that defines actions and conditions independently of one another and then combines
them to create a complete rule (see Rule Creation).
Action Code
In PeopleSoft Engineering, a user-defined code associated with an event/action triggered by
the implementation of an engineering change order (ECO). Actions could include analyzing
an item's existing quantity on hand, scrapping existing inventory, or modifying current
documentation.
In PeopleSoft Product Configurator, a 2-character code that identifies rule types. For
example, FP is the action code for the Finalize Price rule, and CN is the action code for the
Condition rule. The rules control the processing path for configured items.
Action List
An online list of customers who meet predefined credit management criteria. The list also
includes appropriate procedures for each action and contact information for the customer.
Action Owner
In PeopleSoft Deduction Management, the individual assigned a task to obtain information to
resolve a deduction.
G L O S S A R Y
P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L G L O S S A R Y 5
Action Reason
The reason an employee’s job or employment information is updated. The action reason is
entered in two parts: a personnel action, such as a promotion, termination, or change from one
paygroup to another—and a reason for that action. Action Reason is used by PeopleSoft
Human Resources, PeopleSoft Benefits Administration, PeopleSoft Stock Administration, and
the COBRA Administration feature of the Base Benefits business process.
Active Control
A target control requiring that the user validate the budget against the planning targets before
submitting it. If the budget totals are not within the tolerance levels, the system indicates that
the status is invalid and the user cannot submit their budget until the budget is modified and
the amount is within the tolerance range of the planning target.
Activity
In PeopleSoft Receivables and Deduction Management, an action taken on an item, such as
creating an item, unposting an item, or writing off an item.
In PeopleSoft Projects, the unit of work that provides a further breakdown of projects—
usually into specific tasks. Resources are assigned directly to activities within a project, not
directly to projects.
A self-contained task that is part of one or more business processes. Business process maps
display the activities that make up the process. An activity consists of steps representing the
pages the user needs to complete and events representing the workflow routings triggered by
the user's actions.
In PeopleSoft Enterprise Warehouse, the work of an organization and the aggregation of
actions used for Activity-Based Costing.
Activity Attributes
Activity Attributes provide pieces of activity information. For example: capacity and
performance, cost drivers, cycle time and performance measures.
Activity-Based Costing (ABC)
A methodology that measures the cost and performance of activities, resources and cost
objects, assigns resources to activities and activities to cost objects based on their use and
recognizes the causal relationships of cost drivers to activities.
Activity-Based Management (ABM)
See PeopleSoft Activity-Based Management (ABM).
Activity-Based Planning and Simulation (ABPS)
ABPS, a feature of PeopleSoft Activity-Based Management, calculates resource demands,
new rates, costs, and activity volumes based on demand forecasts. It converts the new
G L O S S A R Y
G L O S S A R Y 6 P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L
resource demands into new cost requirements at the General Ledger item level to feed as input
for budgeting.
Activity Driver
An Activity Driver indicates the amount of demand there is for a particular activity and it is
used to assign cost to cost objects. In some instances, an activity driver may represent the
yield of an activity.
Activity Fragmentation
The part of the Employee Profile feature that provides information about the number of
employees that is involved in completing a particular activity on a full or part-time basis.
Activity ID
A unique 15-character alphanumeric identifier given to each activity within a project. Activity
IDs need only be unique within a single project.
Activity List
In PeopleSoft Pension Administration, a checklist used to monitor pension-related activities.
Activity Type
A user-definable identifier for grouping activities.
Activity Type
Also known as Activity Code. A categorization of work effort. Typically work effort is
categorized as productive or non-productive; Repair, Maintenance, Enhancement, or
Improvement; or Development or Construction. Activity type is usually required to support
cost accounting or financial accounting (recording) functions. It may also be required to
support some organizational administration requirements such as organizational productivity
goals, or employee performance measurement. In some companies, activity type is inferred
from job function, work group affiliation, or organization.
Activity Use
An attribute used to describe the behavior of an Activity as defined within PeopleSoft
Enterprise Performance Management. A Primary Activity is an activity that is performed for
the purpose of directly generating revenue within the course of business. A Secondary
Activity is generally performed in direct support of a Primary Activity such as activities
related to human resources or MIS.
Actual Base Hours
This defines the number of hours that an employee is expected to work within a given period
under analysis within PeopleSoft Enterprise Performance Management. Hours worked in
excess of Actual Base Hours are generally considered overtime, while hours worked less than
Actual Base Hours would illustrate that the employee is working part-time.
G L O S S A R Y
P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L G L O S S A R Y 7
Actual Contribution Percentage (ACP)
The amount of an employee's after-tax or employer matching contributions made in a Section
401(m) plan on behalf of highly compensated plan participants, divided by the employee's
annual compensation, or an amount determined in the same manner with respect to non-highly
compensated employees. The Base Benefits business process is set up to perform ACP
nondiscrimination tests for Section 401(m) plans. See Nondiscrimination Tests and Highly
Compensated Employee.
Actual Date
Calendar date in which a punch occurred (see Time Reporting).
Actual Deferral Percentage (ADP)
The amount of salary reduction contributions made by an employee to a Section 401(k) plan
for a year, divided by the employee's total compensation for that year. The Base Benefits
business process is set up to perform ADP nondiscrimination tests for Section 401(k) plans.
See Nondiscrimination Tests and Highly Compensated Employee.
Actual Demand
In PeopleSoft Demand Planning, an Array of demand by historical period imported from an
external system. The demand figures are determined by imported values and typically include
shipments, orders booked, orders booked by requested ship date, or shipments.
Actual Rates
An Actual Rate is the rate that your business currently uses for its business practice.
Actuarial Assumptions
Any assumptions used to calculate an equivalent benefit for an optional form of payment or an
alternative retirement date.
Actuarial Valuation
A comparison of a pension plan's assets and liabilities.
Actuarial Valuation Extract
A PeopleSoft Pension Administration data extract containing data that a plan actuary needs in
order to determine the plan’s assets and liabilities.
Address Type
A high-level address classification that identifies addresses associated with a Material Issue.
Examples include Ship To Address, Bill To Address, and Ship Notification Address.
G L O S S A R Y
G L O S S A R Y 8 P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L
Adjusted
In the Enterprise Planning and Simulation forecasting process, in addition to versions of the
statistical forecast, there is an adjusted version of the forecast. Managers create this version
by reviewing the forecasts and entering adjustments that cannot be inferred statistically. For
example, there may be a promotional campaign next quarter that is expected to boost volume
for certain products over several weeks.
Adjusted Demand
In PeopleSoft Demand Planning, an Array of demand after adjustments have been made to
the actual demand values. The adjusted figures may include both manual and system-
generated changes, such as demand filtering and depromotion. The system uses adjusted
demand rather than actual demand in the Forecasting Reset process and in the recalculation of
model components during period-end processing.
Adjusted Forecast
In PeopleSoft Demand Planning, a Statistical Forecast that has been adjusted using
management overrides, proration, or summarization.
Adjustment
See Bill Adjustment or Inventory Adjustment.
Adjustment Voucher
A PeopleSoft Payables voucher that enables you to apply an adjustment to an existing voucher
or to relate one voucher to another.
Advice
The Form that employees who choose direct payroll deposit receive in lieu of a check.
Affiliate
A control person of a corporation. Generally, an officer, director, or major shareholder that has
the ability to influence the corporate management decisions.
After-tax Deductions
Deductions that reduce net pay. These deductions are subtracted from gross pay after taxes
have been taken out. Also called “post-tax” deductions.
Agency
Any Department or independent establishment of the Federal Government, including a
government-owned or -controlled corporation, that has the authority to hire employees in the
competitive, excepted, and senior executive services.
G L O S S A R Y
P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L G L O S S A R Y 9
Aggregated
In Enterprise Planning and Simulation, each period the statistical forecast is calculated
automatically by the system. A forecast for each individual product can be computed using
history for that product. Then these forecasts can be aggregated (that is, summarized) into
forecasts for the product family.
Aggregate Reporting
The ability to report time as a collection or mass. In Time and Labor aggregate time reporting
features include the ability to report time in a lump sum, as a pattern, in a range of dates, or for
an entire crew.
Aging Data
Updating data from separate sources, and separate dates, to a common date using an
annualized factor.
Aging ID
A code representing rules for aging open items.
Alias
Any of several PeopleSoft Pension Administration utilities that look up or calculate employee
information.
Allocated
In Enterprise Planning and Simulation, the computed forecast and the summarized forecast are
two different versions of the statistical forecast. In addition, the forecast at the product family
level can be allocated down to the individual products. Usually this allocation is done in
proportion to the calculated product forecasts at that level. This version of the (statistical)
forecast is called the allocated or prorated statistical forecast.
Allocated Inventory
The inventory assigned to a specific stock request.
Allocation Manager
Perform allocations using the Allocation Manager. Allocations enable you to distribute
revenue, expense, and statistical quantities across business units, departments, and so on. You
can allocate budget planning to detail levels so that you may perform detailed budgeting. The
type of allocation you select determines the output.
Allocation Manager Rules
In the PeopleSoft Enterprise Warehouse, Allocation Manager rules allow you to specify the
basis as well as the target tables for moving, aggregating, or multidimensionalizing your
output. Rules use Allocation Manager methods to enrich the PeopleSoft Enterprise Warehouse
data. See Allocation Manager Methods.
G L O S S A R Y
G L O S S A R Y 1 0 P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L
Allocation Manager Methods
There are several methods: Arithmetic Operation, Prorata, and Spread Even. Each method
enables you to move and/or enrich output.
Allocations
A process of distributing budget amounts to and from other Budget Centers. Budget amounts
are allocated to cover, or offset, the costs in one Budget Center by charging them to another
Budget Center. An allocation is also the budget amount that is distributed to or from a Budget
Center. A budget amount that is charged to another Budget Center appears as a negative
amount. This same budget amount appears as a positive amount in the other Budget Center
receiving the allocation. PeopleSoft Budgeting-specific.
Allotment
This is a voluntary deduction from pay. Employees may elect up to two allotments from pay,
transmitted to a financial institution to the employee's checking or savings account.
ALM (Asset Liability Management)
See PeopleSoft Asset Liability Management.
Allowances
The amount owed to an employee in addition to base salary and which is not defined as part of
gross salary. For example, vacation can be considered an allowance. PeopleSoft Budgeting-
specific.
Alternate Account
A feature in PeopleSoft General Ledger that enables you to create a statutroy chart of accounts
and enter statutory account transactions at the detail transaction level as required for recording
and reporting by some national governments.
Alternate BOM
Identifies the multiple ways in which an item can be produced. The primary production BOM
is designated as BOM code 1. By using BOM codes, you can associate up to 98 other
alternate BOMs with the item.
Alternate Routing
A routing, usually less preferred than the primary routing, but resulting in an identical item.
You can specify up to 98 alternate routings for production routing types by entering additional
Routing Codes (greater than 1) for the same routing type.
Alternative Minimum Tax (AMT)
AMT is calculated by adjusting the taxpayer's regular taxable income with a number of tax
preference items and adjustments. Tax preference items are positive items increasing
G L O S S A R Y
P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L G L O S S A R Y 1 1
Alternative Minimum Taxable Income (AMTI) and are excluded from regular taxable income.
Tax preference items include gain from the exercise of incentive stock options.
Amount Type
In PeopleSoft Workforce Analytics, the Amount Type specifies whether a benefits
compensation amount is a value or expense, to the employee or the employer.
Analysis Base
Defined static, historical data used both to seed and compare against proposed budgets.
Analysis Group
A grouping of analysis types. Analysis groups can be used for project analysis and grouping
or for mapping analysis types.
Analysis Template
A set of pre-defined reports that you can view and publish online. These templates access data
in the Enterprise Warehouse tables, and organize it by function, role and industry. The
templates allow you to pivot, sort, rank, drill and chart the data, for your analysis needs.
Analysis Type
A 3-character, user-definable identifier that enables you to label the different types of costs.
For example, you might want to track budgeted costs (BUD), committed costs (COM), and
actual costs (ACT).
Analytical Applications
See PeopleSoft Analytic Applications.
Analytic Forecasting
Analytic Forecasting is the part of the Planning and Simulation feature that creates forecasts
for your business requirements.
Annual Amount
In PeopleSoft Workforce Analytics, Annual Amount is an employee-level compensation
amount, totaling the calculations for a full fiscal year’s worth of accounting periods, in a
compensation scenario.
Annual Declaration Report
The French Annual Declaration report is a payroll report which checks establishment profiles
to see whether an establishment has to produce the report, and then calculates the amount of
all the social security contributions for this establishment.
G L O S S A R Y
G L O S S A R Y 1 2 P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L
Annual Leave
Annual leave is absence from work with pay and must be approved by the employee's
supervisor in advance. This type of leave (Plan Type 51) is accrued based on years of service:
Full-time Permanent/Full-time Seasonal employees ...0-3 years - 4 hours per biweekly pay
period; 3-15 years - 6 hours per biweekly pay period (plus an additional 4 hours in the final
pay period of the leave year); and 15+ years - 8 hours per biweekly pay period. Part-time
Permanent/Part-time Seasonal employees...0-3 years - 1 hour for every 20 hours worked; 3-15
years - 1 hour for every 13 hours worked; 15+ years - 1 hour for every 10 hours worked.
Generally, there is a leave year ceiling of 240 hours on accrual; amounts accrued in excess of
the ceiling and not used prior to leave year-end are forfeited.
Annual Shareholders Meeting
A meeting of corporation’s directors, officers, and shareholders held for the purpose of
communicating the operating and financial results for the prior year, the prospects for the
future and major decisions of management.
Annual Workforce Survey by Nationality and Professional Category (Enquête sur
l’activité et les conditions d’emploi de la main d’oeuvre)
In France, companies are required to submit the Annual Workforce Survey by Nationality and
Professional Category to the Ministry of Labor. This report provides an analysis of the
company’s foreign workforce, which includes any employee who does not have French
citizenship.
Annualized Tax Method
A payroll tax calculation method that divides the tax on an annualized amount by the number
of pay periods in the year to find withholding for a given pay period, based on the number of
withholding allowances. Annualized is the most common tax method.
Annuitant Amount
The gross monthly annuity a federally retired employee receives.
Annuitant CSA Number
A unique number assigned by OPM for a retired employee.
Annuitant Indicator
A code used to indicate the status of an annuitant appointed to a position in the Federal
civilian service. Text for the codes is as follows:
1. Reemployed annuitant - Civil Service/FERS
2. Retired military officer receiving pay
3. Retired military non-officer (enlisted) receiving pay
4. Retired military officer receiving pay and a reemployed annuitant - Civil Service
G L O S S A R Y
P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L G L O S S A R Y 1 3
5. Retired military non-officer (enlisted) receiving pay and a reemployed annuitant - Civil
Service
6. Not applicable (none of the above)
Annuitant Indicator (cont)
A. Reemployed Annuitant – FERS
B. Former Annuitant - FERS
C. Retired Officer/Reemployed Annuitant - FERS
D. Retired Officer/Former Annuitant - FERS
E. Retired Enlisted/Reemployed Annuitant - FERS
F. Retired Enlisted/Former Annuitant - FERS
Annuity
A series of periodic payments made to an individual. Under a pension plan, these payments
are generally made monthly.
Anti-Dilutive
Typically, options or shares where the price is greater than the current fair market value of the
security.
APE (Activité Principale Exercée) Codes
APE codes classify the type of industry or activity your French company is in, such as
software, banking or insurance. The APE codes are a normalized set of codes that are
required by law and are used in regulatory reporting.
API
An Application Programming Interface (API) is the technology that a software product
supplies so you can control it or communicate with it from another application. PeopleSoft
APIs enable the user to perform desired actions upon PeopleSoft data without having to know
the internal logic or rules of the program.
Applicant Hire Process
The procedure of hiring an applicant who has been tracked and administered in the
Recruitment pages. Once you assign an Employee ID, the system uses recruitment data to
populate the fields in the Personal Data pages.
Application agent
An application agent is an online agent that is loaded into memory with a PeopleSoft page. It
detects when a business rule has been triggered and determines the appropriate action.
G L O S S A R Y
G L O S S A R Y 1 4 P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L
Application Designer
The integrated development environment used to develop PeopleSoft applications.
Application Engine
PeopleTools batch processes consisting of a set of defined SQL statements. Application
Engine processes is more efficient than COBOL or SQR, since they operate within the
database system, and don’t rely on external processing.
Application Journal Template
A set of rules and default values to control the creation of journals from accounting entries.
Application Processor
The Application Processor is the PeopleTools runtime engine that controls processing of the
application from the time the user requests a panel group from an application menu through
the time that the database is updated and processing of the panel group is complete.
Application Server
The application server is the centerpiece of PeopleSoft's three-tier architecture. It utilizes
Tuxedo, BEA Systems' transaction monitor, to manage client transactions and provide the
business rules and workflow capabilities of PeopleSoft's enterprise applications.
Application Server Domain
The collection of server processes and associated resource managers defined by a single
PSTUXCFG configuration file. Each application server domain is configured to connect to a
single database. Multiple application server domains can exist on the same server machine.
Appointing Authority
The basis that authorized the appointing officer to effect personnel actions on an employee.
Appointing Officer
Denotes if the employee has appointment authority based on laws and regulations.
Approve Time
The Time and Labor feature that approves all employee daily time before it can be sent to
payroll for processing. You can approve time by group or by individual employee. You can
also unapprove previously approved time.
Approving Official
Individual with the delegated authority responsible for signing the action(s) taken on an
employee.
G L O S S A R Y
P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L G L O S S A R Y 1 5
Array
An ordered grouping of data by period and year. PeopleSoft Demand Planning uses arrays in
forecasting demand.
Array
Element which enables you to extract information based on a column value. One way of
thinking of an array is that it is a SQL statement that retrieves data from an existing table.
Array Dimension
Determines which inventory-stocking possibilities are included in a Cube View. This
standard one-level dimension consists of the key fields that include, for example, order
quantity, safety stock, and turn rate.
Arrears Balance
An amount owed to either the employer or employee, usually the result of a deduction not
fully taken.
Ask Price
The price at which someone who owns a security offers to sell it; also known as the asked
price.
As-of-Dated
Refers to a snapshot of the data at a given point in time.
Asset Assignment
A streamlined means of associating project costs to assets or asset profiles within PeopleSoft
Projects.
Asset Budgeting
Budget for planned asset acquisitions and the associated depreciation expense that can be
associated with a Capital Acquisition Plan (CAP).
Asset Catalog
A list of asset profiles which includes information about that asset type, including Cost, Life,
Salvage Value, Depreciation Method, Currency Code, and Asset and Depreciation Account.
Asset Category
A standard group of assets. Typical asset categories include Furniture and Fixtures,
Machinery and Equipment, Land, Buildings, Leasehold Improvements, and the like. These
generally correspond to General Ledger asset accounts. Assets in one category usually share
some depreciation characteristics, such as estimated service life and depreciation limits.
G L O S S A R Y
G L O S S A R Y 1 6 P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L
Asset Class
An asset group used for reporting purposes. It can be used in conjunction with Category to
refine asset classification.
Asset Liability Management
See PeopleSoft Asset Liability Management.
Asset Life
The number of years an asset will depreciate, after which time it might be kept or sold for its
Salvage Value. Also see Useful Life.
Asset Profile
A template that contains standard depreciation criteria for an asset type and its corresponding
asset books. You can use the information in asset profiles as default values when adding
assets.
Assignment of Life Insurance
Effective 10/3/94, Federal employees can assign their Basic, Option A and Option B insurance
to another person(s), firm(s), or trust(s); Option C is excluded. The assignment of benefits
transfers ownership of the FEGLI coverage to the assignee(s). The insured no longer has
control over his/her insurance coverage and can no longer designate beneficiaries.
Assignment is irrevocable. Either all or none of the insurance can be assigned. Assignment
does not have to be to the same person or firm. Assignments must be made in percentages of
total insurance versus an assignment of Basic Insurance to one person and Option A to
another. Additionally, terminally ill employees can assign their insurance to a Viatical
Settlement Firm in exchange for cash (approx. 60% - 85% of the face value of the coverage).
Life Expectancy is usually 24 months or less for a Viatical Settlement Agreement.
Assignment Type
This defines the behavior of the object, (resource, activity, or cost object) within PeopleSoft
Activity-Based Management. If the object is identified as a source then costs may be
allocated from that object to another object, which must be identified as a target. If an object
ID is identified as a target it may be allocated costs from another object ID but may not
allocate costs. An object ID can be both a source and a target, thereby having the functionality
of each.
Associated Primary BOM
With multiple outputs, it’s possible that a given co-product can be created in more than one
way – in other words, an item is a co-product on more than one items’ primary BOM. By
assigning an associated primary BOM to a co-product, you are telling the system which BOM
to use in exploding the co-product to the next level.
G L O S S A R Y
P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L G L O S S A R Y 1 7
AT Section
In France, this stands for Section Accident du Travail, or Work Accident Section. It is
information needed to identify the establishment risk code for insurance purposes.
ATP Reserved Order
An order that has been promised against future supply. The user has an obligation to the
customer to fulfill the order quantity by a certain date. ATP-reserved orders are also referred
to as promised orders.
Attendance
A component of time reporting application whose purpose is to apply business rules related to
Benefit Entitlement and Administration and Organizational Administration to time reported as
worked or not worked, and to satisfy a variety of reporting needs.
Attendance Reporting
A Time and Labor report that indicates an employee’s attendance record. It includes sick
leave, vacation time, and other leaves taken.
Attribute
An attribute is an element within a dimension. For example, the element “Store” is an
attribute of the dimension “Geography” for the retail industry. An attribute is also a column
heading on an analysis and reporting template.
Audit Trail
See Drill-Back Calculation.
Auditor
Person designated to review expense sheets and cash advances before payment.
Automatic Revision Incrementing (Auto Rev)
The ability to automatically set up revision control and generate revisions for revision-
controlled items at the business unit level. This includes setting up a revision scheme or a
predetermined, ordered list of revision names.
Automatic Spouse Benefit
A joint and survivor pension benefit provided without any actuarial reduction to a pension
benefit. The automatic benefit is a n% joint and survivor; the employee is still entitled to
choose any optional form of payment and any beneficiary for the remainder of the benefit.
G L O S S A R Y
G L O S S A R Y 1 8 P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L
Availability Date
The date a lot becomes acceptable for fulfillment in PeopleSoft Inventory or for consumption
in PeopleSoft Production Management. (Availability Date = Creation Date + Availability
Lead Time)
Available to Promise (ATP)
The projected supply of a product less the actual demand, which informs the sales and
marketing department of the products that can still be sold without modifying the master
schedule. ATP isn’t cumulative – it’s calculated for each period.
Average Daily Balancing
A feature in PeopleSoft General Ledger that enables you to target the ChartFields on which
you base average balance calculations, summarize amounts for selected ChartField values
according to your reporting requirements, and define the periods for these calculations.
Used by the financial analytic applications in Enterprise Performance Management. For a
reporting period (usually monthly) this refers to the average daily balance of an account as
opposed to the month-end-balance, which is the balance as of the last day of the month.
Average Daily Balance Ledger (ADB_Ledger)
In the PeopleSoft Enterprise Warehouse, the Average Daily Balance Ledger table
(PF_ADB_LEDGER_F00) is similar to the functionality of the PF Ledger table
(PF_LEDGER_F00), in that it too supports reporting. However, the Average Daily Balance
Ledger is used for average daily balances. It is a table that is used mostly for processes
associated with the financial services industry.
Average Inventory
In PeopleSoft Inventory Planning, one half of the average lot size plus the safety stock when
demand and lot sizes are expected to be relatively uniform over time. When demand and lot
sizes are not uniform, the stock level versus time can be charted to determine the average.
Average Price
The average price derived from either the bid and ask prices (for bid/ask/average) or from the
high and low prices (for high/low/average).
Average Static Calc Flag
In PeopleSoft Inventory Planning, a method used with static policies. The average method
sets the static policy equal to the weighted-average, time-phased policy over the next
argument periods.
Award
A special payment to an employee for certain prescribed kinds of activities or
accomplishments.
G L O S S A R Y
P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L G L O S S A R Y 1 9
B
Back Pay Interest
Under certain circumstances, an employee can be eligible to receive additional pay relative to
a delayed receipt in salary caused by administrative error in processing a personnel action.
The U.S. Office of Personnel Management has established guidelines for Federal agencies on
when and how to make these calculations.
Background Process
Any task or process that is grouped with another and runs in the background. Background
processes are usually scheduled to run on a regular basis. All background processes are
executed through process-specific COBOL programs run outside the Windows environment.
Backlog Reason Code
An identifier indicating the reason an item could not be shipped. Example codes might
include out of stock, discontinued, or seasonal.
BAD Forecast Ratio
In PeopleSoft Demand Planning,the maximum acceptable value of the ratio of the and the base
component (Standard Deviation/Base Component). When this value is exceeded, the system
automatically resets forecast model parameters. The higher the value, the less likely it is that
the system will reset the parameters. In most organizations, a BAD ratio of 1.00 or lower is
appropriate for most items.
Balance Segmentation
Balance Segmentation is used in Funds Transfer Pricing to divide balances in deposit accounts
between core (stable) and non-core (volatile) segments. Core funds represent the minimum
balances that are retained on a long-term basis, building a relatively reliable source of funding
to the bank. Non-core funds are temporary in nature due to their volatility caused by customer
preferences for liquidity, and cannot be utilized on a long-term basis.
Balance Type
Balance Type is a lookup code used to define the type of instrument balances that will be
stored in the PeopleSoft Enterprise Warehouse and processed by the analytic applications.
Examples of different Balance are Current Balance, Average Daily Balance, Period Ending
Balance, or Commitment Balance.
Balanced Scorecard
See PeopleSoft Balanced Scorecard.
G L O S S A R Y
G L O S S A R Y 2 0 P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L
BAM
Business Analysis Model. XXX I think this term is incorrect because we use BAM to refer to
the application. If we were referring to the business analysis model, we would say BAM
model (that is, Business Analysis Modeler model.)
BAM Model
The BAM database published from the template. The model contains both the data and
analytic structure used in the application. The BAM database is physically separate from the
Enterprise Warehouse database. Data is sent to the model through migration processes.
BAM Template
A file created using BAM design tools, representing the model prior to its creation as a
database. This file has an extension of .MDL. This file is published to a BAM database once
the model design process is complete. Each application using BAM will deliver templates
which the customer will review and publish to a database in their environment.
Bank Identification Number (BIN)
In PeopleSoft Payables, a part of the bank information that identifies business unit banks.
Base Budget
The initial budget defined by the Budget Coordinator. The base budget is distributed as a
starting point for Budget to review and edit. The base budget can be zero-based or
incremental.
Base Compensation
In PeopleSoft Workforce Analytics, Cash Compensation that is typically categorized as fixed.
It includes base pay and shift differentials as well as associated merit, equity, and step
increases.
Base Currency
Base Currency is used to consolidate and report financial results of a multinational company.
When a company transacts its business operations in different transaction currencies, those
currencies are translated to the base currency for reporting purposes.
Base Currency Equivalent (BCE) Amount
If the monetary amount is in a currency other than the base currency, either the Extract-
Transform-Load (ETL) process or the Multi Currency Engine can be used to convert the
monetary amount to the Base Currency Equivalent (BCE) Amount.
Base Factor
In PeopleSoft Demand Planning, an element of a smoothing constant simulation set that
controls base component smoothing in the Model Reset Simulation process.
G L O S S A R Y
P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L G L O S S A R Y 2 1
Base Metric
Metric found on a fact table. A base metric usually contains an aggregate operator, for
example “sum” or “count”.
Base Pay
A pay component included in the job comp (job compensation rate) calculation. It is pay for a
regularly assigned workweek. For example, you can set up a regular hourly rate plus a shift
rate, a union-negotiated rate for hazardous work, and so on.
Base Pay Structure
A PeopleSoft Workforce Rewards module you use to create or revise pay structures, and to
assess the cost and impact of implementing new structures.
Base Time Zone
Customer defined time zone used for converting reported time to a common time zone for ease
of applying rules (see Time Administration).
Batch
Batch systems are used when realtime updates are not needed. Batch-oriented data collection
applications, developed in-house or by a third-party vendor, produce transactions that are
collected in an ASCII text file. The text file is fed to a PeopleSoft SQR program that loads the
transactions into the database.
Batch Processes
Any of the background programs in the client/server environment of PeopleSoft applications.
Batch processes perform operations—such as pay confirmation, deduction calculation, and so
forth—on groups of records, and are usually scheduled to run on a regular basis. You run
these processes from the Process Scheduler, and they are executed through process-specific
COBOL programs.
Before-Tax Deduction
Deduction that reduces net pay and FWT taxable gross, applied prior to the calculation of
federal and state/provincial withholding taxes. Also called “pre-tax” deductions.
Begin Calc Date
The date on which PeopleSoft Asset Management begins to deduct from an asset's life.
Begin Depr Date
The date on which PeopleSoft Asset Management begins to calculate depreciation for an asset.
Begin Depr Date is calculated using In-Service Date and Prorate convention.
G L O S S A R Y
G L O S S A R Y 2 2 P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L
Benchmark Job
In PeopleSoft Workforce Analytics, this refers to a Job Code for which there is corresponding
salary survey data from published, third party sources. Jobs for which there is no
corresponding salary survey data are referred to as non-benchmark jobs.
Benefit Commencement Date (BCD)
The date on which a pension payee elects to begin receiving payments.
Benefit Deduction
Any amount taken from an employee’s pay check to offset all or part of the cost of the
employee's benefits.
Benefit Eligibility
The PeopleSoft Pension Administration function that determines if an employee is eligible for
retirement or ancillary benefits. A plan may have several retirement types—normal, early,
late, death, and disability—each with its own eligibility criteria.
Benefit Entitlement
Any rules governing the circumstances under which employees are entitled to receive certain
benefits. Typically, entitlement to benefits is based on type of employee (for example, full
time, part time, occasional), length of employment, and specific rules which apply thereto, i.
e., work group affiliation, and compensation base. Other criteria may also apply, such as
reasons-for-claiming or job performance.
Benefit Formula
The formula that determines a participant’s pension benefit in a defined benefit plan, as well
as the PeopleSoft Pension Administration function that calculates the benefit.
Benefit Group
Part of a group of defaults assigned to job codes. Benefit group may include medical, dental,
and health benefits dependent on individual company parameters.
Benefit Plan
A specific benefit within a plan type. For example, your company’s life plan type might
include benefit plans of one times salary, two times salary, and three times salary.
Benefit Plan Type
Any category of benefit, such as health, life, or savings.
Benefit Program
A set of benefits and deductions valid for an employee or group of employees. A single
company may have any number of programs. An individual employee may belong to only
G L O S S A R Y
P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L G L O S S A R Y 2 3
one program; the deductions and benefits contained in that program are the only valid
deductions and benefits for that employee.
Benefit Tables
Any of the tables that contain employee benefits information. These are often relevant to
payroll processing.
Benefits Base
The salary used for benefit calculations. The benefits base will be either the employee Annual
Rate or Annual Benefits Base Rate.
Benefits Compensation
In PeopleSoft Workforce Analytics, Benefits Compensation is value associated with
employment benefits. It can include benefits types for Health and Welfare (Medical, Life
Insurance), Retirement (annuities, savings plans, pensions), and Paid Time Off (Vacation
Leave, Sick Leave). Benefits compensation is sometimes fixed, and sometimes variable,
depending upon the benefit type.
Betriebszählung (Company Statistics Report)
Also called the OFIAMT report. This report provides statistics required by the Swiss Federal
Department of Statistics (BFS).
Bias Signal Limit
In PeopleSoft Demand Planning, a number between one and six that indicates how many
Forecast Period to test for bias. If the bias test is violated, the system records a Tracking
Signals error in the period up to the number of periods determined by the bias signal limit.
Bias Test
In PeopleSoft Demand Planning, a forecasting test that sets the limit for tripping a Tracking
Signals. The lower the value, the more likely it is that a tracking signal is set.
Bid Price
The price a prospective buyer is prepared to pay at a particular time for trading a unit of a
given security.
BIF file
This is the bulk insert file (input.bif) used with the Verity search engine to specify the
documents to be submitted to a collection (search index). It contains a unique key, document
size (in bytes), field names and values, and document location in the file system.
Bilan Social Report
See Employee Survey Report.
G L O S S A R Y
G L O S S A R Y 2 4 P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L
Bill
In PeopleSoft Billing, any group of bill lines.
Bill Adjustment
The process of making credit or credit and rebill adjustments to an invoiced billing activity.
Bill By Identifier
The Bill By Identifier is used to define how billing activity is grouped when added to a bill
through the billing interface or the Populate Billing process.
Bill Header
The record containing information that pertains to the bill as a whole. Each bill has a unique
bill header that identifies it within the system.
Bill Inquiry Phone
Bill Inquiry Phone is the number printed on your invoices for your customers to call if they
have any questions about their bill.
Bill Line
The basic unit of billing activity representing a billable charge, including the charge identifier,
quantity, price, and any other information regarding an individual transaction. Every bill line
is related to a bill header that may have one or more bill lines related to it.
Bill Search
A method of finding a bill or bill line when you don't have enough information to call up the
bill directly. Customer Bill Search enables you to locate a bill by Customer Name. You can
also choose other parameters to limit your search. With Bill Line Search you first search for a
particular bill and then a line on that bill. Parameters for bill line search include Reference,
Date, and Amount.
Bill Source
The point where billing activity originates. Bill sources may be external to the system
(imported through the billing interface) or entered directly online. Examples of bill sources
include order management, project costing, and contract administration.
Bill To Customer
A customer who receives an invoice.
Bill Type
A category of billing activity variety. Examples of Bill Types include standard and custom
order activities.
G L O S S A R Y
P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L G L O S S A R Y 2 5
Bill Update
The process that adjusts bills that have either been entered manually or generated within the
system.
Billable Indicator
A status flag that identifies an item as eligible for billing to a customer.
Billback Discount (BB)
A per unit discount which typically requires a customer to perform one or more merchandising
activities to receive the discount. A BB discount is not deducted from the customer invoice,
but once the customer performs the merchandising activity, a sales representative or broker
can approve payment for the discount amount. Billback discounts can originate from a
National Allowance or Customer Promotion, and are passed to PeopleSoft Order Management
for informational purposes only. Billback discounts are recognized as a liability when the
product is shipped.
Billing Location
A number identifying a customer address. Each customer may have multiple locations, but
must have one Primary Location at which you contact them.
Blackout Period
The period of time, determined by the company, which prohibits certain activity in the
company stock. Blackout Periods can affect the trading of some key individuals or can be
placed on the entire company.
Bonus Tax Method
Annualizes your year-to-date earnings by multiplying them by the number of pay periods in
the year. This method is used for Canadian tax processing.
Book
In PeopleSoft Asset Management, a data location storing financial information—like cost,
depreciation attributes, and retirement information—on assets.
Borrow/Loan
The temporary reassignment of an employee to other task reporting or compensation
requirements to allow the business to meet unexpected, short-term, fluctuations in staffing or
work load. Typically, this kind of reassignment is done informally at a local level, where HR
isn’t involved and a new job record isn’t created. Companies may have specific rules about
how long an employee may be borrowed/loaned, how and where productive, non-productive,
and compensated absence time will be charged, and what business rules to apply to the
borrowed employee’s time for the purpose of compensation and benefit entitlement and
administration. See also Casual work Assignment.
G L O S S A R Y
G L O S S A R Y 2 6 P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L
Bracket
Brackets are a way to look up and retrieve database table values. After you've defined a table,
the system finds a corresponding row on that table and returns the value of the bracket. The
result is then available for use in other items such as formulas.
Branch
A tree node that rolls up to nodes above it in the hierarchy, as defined in the Tree Manager.
Branch Of Military Service
Identifies, if any, military service in which the employee served.
Breadcrumbs
Breadcrumbs show the navigation path to the current web page location. As you drill down
through the different levels of the registry, a “breadcumb trail” appears that shows the path
you’ve selected. Each registry level is separated by an angled brace (>), and you can select
any level to navigate directly back to that level.
A typical Breadcrumb would look like this:
Home > HR > Administer Workforce > Benefits
Break Funding
Charges assessed for mortgages that are paid off before maturity. In the Funds Transfer
Pricing (FTP) application, Break Funding charges are factored into the transfer price for a loan
that may be prepaid.
Break in Service
A period of time for which an employee does not meet stated service requirements.
Break Price
The price used to determine which options are eligible for repricing. For example, if the break
price is $36, then all outstanding option with a grant price of $36 and greater are eligible for
repricing.
Break Punch
An in/out punch of when a time reporter takes a break.
Brokers
Individuals or organizations who buy and sell securities. Often they are account executives
who work for firms registered with the Stock Exchanges and the SEC. Unlike Transfer
Agents, (who are not responsible for sales) Brokers do not maintain records on all your
company’s certificates. They maintain only sales records and stocks for their clients.
G L O S S A R Y
P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L G L O S S A R Y 2 7
BSC (Balanced Scorecard)
See PeopleSoft Balanced Scorecard.
Budget Activity
A type of activity peformed using PeopleSoft Budget Planning. Budget activities include Line
Item Budgeting, Line Item Mass Adjustments, Budget Allocations, and Position Budgeting.
PeopleSoft Budget Planing-specific.
Budget Amount Ledger
Stores budget amounts and is updated by posting budget entries, transfers, and adjustments.
Budget Analyst
A role within PeopleSoft Budgeting. Budget Analysts are typically people within an
organization responsible for reviewing and analyzing a prepared budget before submitting it to
the Budget Coordinator. PeopleSoft Budgeting-specific.
Budgetary Account Only
An account used by the system only and not by users; this type of account will not accept
transactions. You can only budget with this account. Formerly called “system-maintained
account.”
Budget Category
A set of related expenses that are accumulated for proposal budgets and reporting to a sponsor.
The estimated cost for a set or class of accounts.
Budget Category
Numeric/alpha identification given to each category of positions.
Budget Center
In PeopleSoft Budgets, any entity responsible for producing or reviewing budget data. For
example, a Budget Center might be the individual departments responsible for producing
budgets.
Budget Center Dimension
In PeopleSoft Budgets, the dimension by which you distribute budget data. If you budget by
department, your department dimension will be your Budget Center Dimension. You’ll assign
Budgets Users to the nodes and detail values on the tree you use to build your Budgets Center
Dimension.
Budget Check
In commitment control, the processing of source transactions against control budget ledgers,
to see if they pass, fail, or pass with a warning.
G L O S S A R Y
G L O S S A R Y 2 8 P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L
Budget Check Override
Selective suspension of Budget Processing. With this feature you can override the controlled
budget for a transaction that failed budget checking due to insufficient funds; or override the
tolerance limits for a transaction rejected due to exceeded tolerance limits. When you push
the Override button, the system flags the transaction to allow the Budget Processor to process
successfully regardless of available funding. You can cancel the override any time before the
Budget Processor is run by clicking the Cancel Override button.
Budget Control
In commitment control, it ensures that commitments and expenditures don’t exceed budgets.
It enables you to track transactions against corresponding budgets and abort a document’s
cycle if the defined budget conditions are not met. For example, you can prevent a purchase
order from being dispatched to a vendor if there are insufficient funds in the related budget to
support it.
Budget Coordinator
A role within PeopleSoft Budgeting. Budget coordinators are responsible for monitoring the
budget process. The Budget Coordinator is typically located within an organization’s central
budget office and builds the budgeting model. PeopleSoft Budgeting-specific.
Budget Detail
A level of itemization that when combined makes up a major budget category.
Budgeted Rates
In PeopleSoft Activity-Based Management, the rate your organization uses based on the
budget.
Budget Error Exception
A transaction that fails budget checking, causing an Error or Warning to be issued. See Error
Exception and Warning Exception.
Budgeting Functions
PeopleSoft Budgeting’s six main action categories, including: system administration,
budgeting setup, budgeting preparation, budgeting analysis, data integration and my profile.
Your user role determines how many of these functions display and are available.
Budgeting Model
The framework for an organization’s budget development process. Business unit defines a
Budgeting Model. The Budget Coordinator typically defines the model and includes the time
period of a budget cycle, time period for phases within a budget cycle, the sources of data that
will be available to budget users, the methods that will apply to line-item budgets, and other
budget options and control parameters. PeopleSoft Budgeting-specific.
G L O S S A R Y
P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L G L O S S A R Y 2 9
Budgeting Type
Associated with the budget ledger type set definition, a budget type is an indication of whether
the organization uses a standard budget ledger, project budget ledger, or controlled budget
ledger for budgeting.
Budget Justification
Written explanation further defining the what and why of a budget category.
Budget Period
The period in which you define plans to meet your organizations training requirements.
The interval of time (such as 12 months or 4 quarters) into which a period is divided for
budgetary, and reporting purposes. The ChartField allows maximum flexibility to define
operational accounting time periods without restriction to only one calendar.
Budget Phase
In PeopleSoft Budgets, a span of time during which a budget or portion of a budget is to be
completed. You’ll filter dimensions, assign alternate Budgets Users, enable Position and
Asset budgeting, and specify Budgets User notification options at the Phase level.
Budget Plan
In PeopleSoft Workforce Rewards, when working with a Compensation Planning BAM
model. A budget plan is a rollup of like compensation rules. For example, for base pay rules
budget plans are a rollup of values for like Action Reasons. For variable pay rules budget
plans are a rollup of the values for like Variable Compensation Plan IDs.
Budget Preparer
A role within PeopleSoft Budgeting. Budget preparers are typically people within an
organization responsible for developing the detailed budget for a Budget Center and
submitting it to a Budget Reviewer or Analyst for review and approval. PeopleSoft
Budgeting-specific.
Budget Reviewer
A role within PeopleSoft Budgeting. Budget reviewers are typically people within an
organization responsible for reviewing and approving a prepared budget submitted by a
Budget Preparer. PeopleSoft Budgeting-specific.
Budget Seeding
Represents a new budget or forecast, such as historical data that is manipulated to develop a
more current representation for a proposed budget. Uses detail data as the budget seed or
basis to create the base budget that represent the level of detail in which budget numbers are
prepared.
G L O S S A R Y
G L O S S A R Y 3 0 P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L
Budget Translation Trees
Trees translate (summarize) source transactions into the appropriate levels for processing
against control budgets. This is because you usually budget above the level of your source
transaction ChartFields on a tree.
Budget Type
Indicates whether a budget is for expenditures or revenues.
Budget Warning
See Warning Exception.
Budgets User
In PeopleSoft Budgets, any user who needs to gain access to the Budgets. You’ll designate
Budgets Users on the Budgets Users page through the Coordinate Budgets window. You’ll
also assign these users to the tree representing your Budget Center Dimension.
Budget View
A user-defined view where selected dimensions, columns and rows of data determine the
layout of line-item budgets affecting the view or entry of data.
Budget Year
The institutionally defined, consecutive, 12-month period to which a financial transaction or
summary applies.
Build Option
A detailed PeopleSoft Planning model that specifies a method of building an assembly item.
This model specifies the routing, resources, and materials that are necessary to produce the
item.
Built-in function
Prior to PeopleTools 8.0, there were only built-in functions, like FetchValue, ScrollSelect, etc.
A built-in function, in your code, is on a line by itself, and doesn't (generally) have any
dependencies. You don't have to instantiate anything before you can use a built-in.
Business Interlink Definition
A definition encapsulating an external Transaction or Query and providing a set of generically
typed input/outputs that can be assigned to PeopleCode variable or Record Fields at runtime.
A Business Interlink Definition is added to the Application Designer’s objects at the same
level as Fields, Records, Panels, etc.
G L O S S A R Y
P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L G L O S S A R Y 3 1
Business Interlink Design-Time Plug-in
An XML file that, when coded for an external system, encapsulate that external system and
provide a catalog of Transactions, Classes and Criteria specific and meaningful to that external
system.
Business Interlink Framework
The framework for integrating any external system with PeopleTools application objects. It is
composed of the following components:
1) An External System, 2) Generic definitions for a Transaction/Query command interfaces, 4)
Business Interlink Definitions, 4) Business Interlink Plug-in.
Business Interlink Object
An instantiation based on a Business Interlink Definition. Actual data can be added to the
inputs of the Business Interlink Objects once the appropriate bindings are provided. The
Business Interlink Object can be executed to perform the external service. Once a Business
Interlink Object is executed, the user of that object can retrieve the outputs of the external
service. The Business Interlink Objects use buffers to receive input and send output. When a
Business Interlink Object is executed, the transaction/query/class associated to the Business
Interlink Object will be executed once per each row of the input buffers corresponding to the
input Records. If there is only one row, after appropriate substitution by the driver, it is
executed only once.
Business Interlink Runtime Plug-in
A set of C++, Visual Basic, or other high-level language methods that, when coded for an
external system, encapsulate that external system and provide the execution methods to match
the Business Interlink Design-Time Plug-in. (The catalog of Transactions, Classes and Criteria
provided by the Design-Time Plug-in can also be provided by the Runtime Plug-in.)
Business Objects
A way of identifying those mass changes that have been designed to be referenced by a
flexible formula and provide them with a shorter name to simplify the creation of flexible
formulas.
Business Planning
The type of planning that focuses on elimination activities that are not needed by changing the
drivers.
Business Rules
Rules that can process information differently depending on the values of data in the
PeopleSoft Enterprise Warehouse.
G L O S S A R Y
G L O S S A R Y 3 2 P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L
Business Unit
A corporation or a subset of a corporation that is independent with regard to one or more
operational or accounting functions. PeopleSoft General Ledger business units typically
comprise individual entities for accounting purposes.
Business units in PeopleSoft Projects represent operational structures but not necessarily
independent financial units.
PeopleSoft Payables business units are either Vouching (have payables accrued to them) or
Charge to (have voucher expense distributions charged to them), and pass journals to general
ledger units.
PeopleSoft Purchasing business units share vendor, purchase order, and receiving information
with PeopleSoft Payables units in the same SetID.
A PeopleSoft Inventory business unit is a storage facility that maintains its own replenishment
and costing methods, as well as its own definitions and guidelines.
The Manufacturing business unit must be identical to the Inventory business unit in order to
link the manufacturing and inventory processes.
The Order Management business unit controls certain order processing parameters (tax and
freight calculation methods, base currency, credit card hold options, and so on) for its
associated PeopleSoft eStore and Mobile Order Management merchant variants.
Business Unit Audit List
One or more business units specifically targeted for expense report and cash advance audits.
Buying Agreement
You can structure flexible and easy-to-use buying agreements for customers or groups of
customers. You can set up maximum amounts and specify the minimum dollar value per
order placed against it. You can automatically generate sales orders or create sales orders
online from buying agreements. Rebate and penalty calculations can be implemented for
buying agreements.
C
Cafeteria-Style Benefits
Any programs offering several benefit plans from which participants make elections.
Cafeteria-style benefits may or may not include flexible credits.
Calculation
In PeopleSoft Pension Administration, the determination of a participant’s pension benefit.
G L O S S A R Y
P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L G L O S S A R Y 3 3
Calculation Rule
Criteria for calculating benefits, including as-of dates for age, service, premium, and coverage
calculations; rounding rules; and minimum and maximum coverage amounts. Any number of
program and plan combinations can use a single set of calculation rules.
Calculation Rule [Global Payroll]
Any rule you develop using combinations of elements to command the system to perform a
type of calculation.
Calendar
In PeopleSoft Manufacturing, a list defining the days your enterprise is available and the hours
of operation for each day. The system first looks to see whether you are using a work center
specific calendar. If none is defined, it looks at the production calendar. If no production
calendar is defined, planning and scheduling functions base start and due dates on a five-day
workweek.
In PeopleSoft Demand Planning and Inventory Planning, a list defining the start and end dates
for each time-phased period. It also contains daily weights for distributing raw data into
different period buckets.
In PeopleSoft General Ledger, your accounting calendar defines the time periods to which you
post transactions for different ledger group and business unit combinations. You can have
multiple calendars, so you can keep a calendar for actuals, another for budget and forecast
activity, and still others for special reporting or transitional needs.
Calendar Group ID
Allows you to group together multiple Calendars that you want to run together at the same
time. It also controls the order in which the Calendars are processed. You can only group
calendars together that are for the same country (based on pay entity country).
Calendar Scope
A time period type (Day-Factored, Month-Factored, or Week-Factored) for use in building
your time period calendar.
Canada Academic Teaching Surveys
Statistics Canada requires that all Canadian universities (all degree granting institutions)
produce full-time and part-time Canada Academic Teaching Surveys. These reports are a
legislative requirement. PeopleSoft HRMS 8 provides you with the functionality to code
HRMS information using Statistics Canada codes and create both the full-time and part-time
Academic Teaching Surveys.
Canadian Industrial Sector
The Canadian industrial classification code with which employees are associated for Canadian
employment equity reporting purposes.
G L O S S A R Y
G L O S S A R Y 3 4 P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L
Canadian National Occupational Classification (NOC) Codes
NOC codes are occupational classification codes for Canadian companies provided by the
government.
Canadian Standard Occupational Classification (SOC) Codes
SOC codes are occupational classification codes for Canadian companies provided by the
government.
Cancellation
A process that terminates stock fulfillment requests, allowing reserved and allocated items to
be returned to inventory.
Cancellation
In the context of an employee stock plan, a transaction (usually triggered by a specific event,
such as a termination of employment) in which outstanding securities are declared void and
inactive and returned to the pool of securities reserved for issuance under the plan or retired.
Candidate Keys
In PeopleSoft Demand Planning, elements of data that can be used to construct the Forecast
Item key field at different levels of the forecast.
Capacity Rate
A rate you assign to a capacity cost object. This enables you to track and report on excess
capacity.
Capacity Fence
A time fence that indicates that date and time after which PeopleSoft Enterprise Planning or
Production Planning solvers ignore capacity violations. The solvers do not use this date in
processing capacity violations.
Capacity Multipliers
A multiple used in PeopleSoft Enterprise Planning and Production Planning to determine the
available capacity on a resource. Since a capacity multiplier is effective-dated, you can use it
to vary the resource’s available capacity over time.
Capital Acquisition Plan (CAP)
A method of projecting and tracking capital expenditures for a project. Budgeted assets and
actual expenditures can be associated with a CAP Plan so the owner can track planned against
actual costs.
G L O S S A R Y
P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L G L O S S A R Y 3 5
Capital Gain
The difference between an asset’s purchase price and selling price, when the difference is
positive. Capital gains can be either short-term (where the capital asset was held for 12 months
or less) or long-term (where the capital asset was held for 12 months or more).
Capital Gains Tax
A tax on profits from appreciation in owned real property, recognized at the time the property
is sold; real property includes owned company shares.
Capitalization
The total types and amount of the outstanding securities that have been issued by a
corporation. Generally includes both equity and debt securities.
Capital Markets Instrument
In the financial services industry, Capital Market Instruments are assorted financial
instruments issued by organizations to raise capital for funding operations. Participants are
made up of interested parties that choose to supply or acquire the capital funding through such
vehicles. Derivatives, debt instruments, equities and foreign exchange instruments that are
traded in highly liquid markets represent the instruments. In the PeopleSoft financial analytic
applications, Capital Market securities refer to instruments that are bought/sold by the
institution for its own investment account. The capital markets set the product prices and
interest rates.
CAP Sequence Number
The number that distinguishes a small project belonging to a CAP plan. Budgeted assets can
be associated with an overall CAP Plan and a CAP Sequence, if that level of detailed tracking
is desired.
Carry-Forward
Residual contributions that remain in a stock purchase participant’s account after the purchase
of shares that are used toward future purchases.
Carrying Cost
In PeopleSoft Inventory Planning, a value that shows the cost associated with holding a dollar
of inventory for one year. The value is presented as a percentage.
Case Officer
In Germany employees in your company are designated as Case Officers, and have
responsibilities for handling health and safety incidents.
Cash Balance Accounts
The PeopleSoft Pension Administration function that tracks the activity in an employee’s
hypothetical account under a cash balance plan.
G L O S S A R Y
G L O S S A R Y 3 6 P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L
Cash Balance Plan
A defined benefit plan designed to look like a defined contributory plan. The plan
periodically credits a percentage of pay to each employee's hypothetical account.
Cash Compensation
In PeopleSoft Workforce Analytics, Cash Compensation is a component of direct
compensation. Cash Compensation consists of direct cash payments made to an employee for
base compensation and short-term variable compensation.
Cash Exercise
At the time of exercise, the optionee is required to pay in cash the total option price plus any
withholding taxes due to the company.
Cash Flow Generator
This is a support module for the PeopleSoft financial services analytic applications. It
generates actual and projected cash flows for financial instruments by using output from the
other support modules, such as loan prepayment rates, deposit runoff rates, product pricing
indices, discount rates, and product definitions (such as start and end dates, balance amount,
interest rate, term, payment dates, repricing and compounding frequency, and accrual basis) to
generate the cash flows. The Financial Performance Measures module accesses the cash flow
results to calculate the required financial measures.
Casual Preparer
An additional user role at the lowest level of budget preparation for a budget center. This user
performs the same activities as the Budget Preparer role when access is granted. The system
does not, however, enable the Casual Preparer role to define their own private views for line-
item budgeting.
Casual Work Assignment
The temporary assignment of an employee to a work position or location to meet the needs of
the business. Typically, there is no Human Resource activity to support the work assignment
(that is, a new Job record is NOT created). Often compensation rules that accrue to the
temporary assignment override the compensation rules that apply to the employee's normal
work assignment. See also Borrow/Loan.
Catalog
The list of transactions, classes, and queries used to interface to the external system.
Integration users are presented with this list when they pick the type of Business Interlink
Plug-in they are going to use. There are four types of catalogs: transaction, class, operator, and
configuration parameter.
Catalog
A way of organizing your training courses into classifications for increased flexibility.
Catalogs consist of categories and subcategories.
G L O S S A R Y
P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L G L O S S A R Y 3 7
Category
Categories are the primary level of a two-tier structure of training courses. Categories can
consist of subcategories that provide further course definition.
Category Tree
A hierarchical structure that groups products by category to control how they are displayed in
PeopleSoft eStore web pages. Used also by Mobile Order Management to enable product
information to be accessed by a wireless device.
CBM
See PeopleSoft Customer Behavior Modeling.
Census Metropolitan Area (CMA) Code
In Canada this code is prescribed by the government and refers to the area of an urbanized
core with a population of at least 100,000.
Central Personnel Data File (CPDF)
Two types of reporting made by agencies to the OPM include the Dynamic and Status files
(quarterly and monthly, respectively) covering a range of employee personnel/payroll data.
Certain and Continuous Payment Option
A form of pension payment where the benefit is paid out for the lifetime of the participant
with a specified number of payments guaranteed so that a beneficiary will receive payments
until the end of the guarantee period if the employee dies before the guaranteed payments are
complete. For example, under a ten-year certain and continuous payment option, a retiree who
lives less than ten years receives payments until death, then the retiree's beneficiary continues
to receive payments for the remainder of the ten year period. A retiree who lives longer than
ten years continues receiving payments after the ten year period until death. Also knows as a
"Term Certain and Continuous" payment option.
Certain Only Payment Option
A form of pension payment where the benefit is paid out entirely over a specified period of
time—usually five, ten, or fifteen years—with no ongoing payments after the specified period.
If the retiree dies before payment period is over, the remaining payments are made to a
beneficiary. Also known as a "Term Certain" payment option.
Change To Lower Grade
• For positions under the General Schedule or under the same wage grade schedule, a
change-to-lower grade changes the employee to a lower grade; and
• When both the old and new positions are under the same type ungraded wage
schedule, or in different pay-method categories, a change-to-lower grade changes the
employee to a position with a lower rate of basic pay.
G L O S S A R Y
G L O S S A R Y 3 8 P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L
Charge Out
A Material Issue used when the item is scheduled for future return.
ChartField
A field storing a chart of accounts, resources, and so on, depending on the PeopleSoft
application. ChartField values represent individual account numbers, department codes, and
so forth.
ChartField Balancing
PeopleSoft enables you to set up ChartFields and indicate that you want specific ChartFields
to match (balance) on the debit and the credit side of a transaction. When you work with
Controlled Budgets, the Fund and Budget Period are already set up in the system to balance (
match). For example, suppose you want to balance by Class and Program. You indicate that
these on a panel that these ChartFields are required, along with Fund and Budget Period which
should already be selected. When you enter a transaction, you must enter the same Class,
Program, Fund, and Budget Period ChartFields on both sides of the accounting entry. but you
can modify any ChartFields, other than these four, on the user-defined line. The system
always requires that total debits equal credits.
ChartField Combination Edit
Also called Combo Edit. The process of editing journal lines for valid ChartField
combinations based on user-defined rules.
ChartKey
One or more fields that uniquely identify each row in a table. Some tables contain only one
field as the key, while others require a combination.
ChartViews
Charts of data in the model, presented through the Worksheet which retains the ability to drag
dimensions on the chart as desired.
Check In/ Check Out
The process of retrieving planning activities from the BAM database (check out) and posting
changes and results back into the database (check in).
Child
A node or detail on a tree linked to another, higher-level node (referred to as the parent).
Child nodes—projects, customers, and so on—can be rolled up into the parent. A node can be
a child and a parent at the same time depending on its location within the tree.
G L O S S A R Y
P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L G L O S S A R Y 3 9
Child
A node or detail of a tree linked to another, higher-level node referred to as the parent. Child
nodes can be rolled up into their parent. A node can be a child and a parent at the same time
depending on its location within the tree.
Chunking
Chunking is a PeopleSoft Enterprise Warehouse mechanism that makes voluminous
processing easier through the use of multiple small parallel processes. By enabling chunking,
multiple jobs are spawned from one Jobstream. These jobs run in parallel (behind the scenes)
to process data efficiently.
Citizenship Code
Numeric indicator as to whether the employee is a U.S. citizen or a foreign national serving in
the U.S. The codes are:
• citizen
• other
Civil Service Retirement System (CSRS)
A retirement plan available to employees of the federal government. CSRS covers all
employees appointed to a position in the federal government before January 1, 1984.
Coverage includes a basic annuity plan with employee contributions and the Medicare
Hospital Insurance component (1.45%) of the Social Security tax.
Class catalog
Lists classes used to interface to an external system. A class contains data members of basic
types and/or objects that are typed after another class. A Class can also contain lists of basic
types or objects.
Class ChartField
A ChartField value that identifies a unique appropriation budget key when you combine it
with a Fund, DeptID, and Program Code as well as a Budget Period. Formerly called “sub-
classification.
Classification Code
Need App A code that categorizes an engineering change. Example classification codes
include the following: Mandatory, Optional, Upgrade, Quality, and Safety.
Clock Hour Reporting
Method of reporting time by recording actual times in and out (start and stop) (see Time
Reporting).
G L O S S A R Y
G L O S S A R Y 4 0 P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L
Clone
To create a unique copy of an object. When used in PeopleCode, clone will always mean to
make a unique copy. Copy, on the other hand, may or may not mean making a unique copy.
Copy may mean making a new reference to an object, so if the underlying object is changed,
both the copy and the original change.
Cloning
The process that enables you to copy run controls to create employee schedules from existing
Run Control ID’s that have already been executed and saved.
Close Date
The date in which time entry is no longer allowed for a given pay period. Defined as an offset
number of days to the pay period end date.
Close Price
The price of the final trade for a security at the end of the trading day.
Closure Calendar
A calendar that establishes closure dates for shipping, receiving, and materials management
operations for a specific Business Unit. Typically, application processes account for these
closure dates when determining Lead Time and dates for anticipated fulfillment processing
dates (scheduled shipment dates, scheduled arrival dates, and lot retest dates, for example).
CMA (Census Metropolitan Area) Code
In PeopleSoft Workforce Analytics, the CMA code is prescribed by Statistics Canada, and
refers to the main labor market area of an urbanized core with a population of at least 100,000.
COBRA (Consolidated Omnibus Budget Reconciliation Act)
In PeopleSoft Workforce Analytics, this refers to legislation that requires employers to offer
continued health care coverage to employees, and their dependents, who lose benefits
coverage under certain defined conditions such as voluntary termination, divorce, becoming
an overage dependent, or retirement. Any individual, whether employee or dependent, that is
covered under a health plan at the time of a qualifying event, has the option to elect COBRA
coverage.
Codepage
One character set.
Collection
To make a set of documents available for searching in Verity, you must first create one or
more collections. A collection is set of directories and files that allow search application users
to use the Verity search engine to quickly find and display source documents matching various
search criteria. A collection is a set of statistics and pointers to the source documents, stored
G L O S S A R Y
P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L G L O S S A R Y 4 1
in a proprietary format on a file server. Since a collection can only store information for a
single locale, PeopleSoft maintains a set of collocations (one per language code) for each
search index object.
Combined Federal Campaign (CFC)
A vehicle used by federal employees to contribute to a charity or charities of their choice.
Commercial-Off-The-Shelf (COTS)
Equipment or software that is currently sold commercially to at least one customer.
Commission Tax Method
A payroll tax calculation method that adds year-to-date earnings to earnings for this pay
period and finds the annualized gross by multiplying by the number of pay periods in the year;
the gross is then divided by the number of tax periods specified on the paysheet. This method
is used for Canadian processing only.
Commitment Control
Commitment control includes budget control and commitment accounting functionality.
Common Shares Issued and Outstanding
Represents the residual ownership interests in the corporation. This is the composite number
of shares available and tradable on the open market.
Community Background
In the United Kingdom Community Background refers to the religious category, such as
Catholic or Protestant, of employees, job applicants or appointees. See the Northern Ireland
Report for more information.
Compa-Ratio
In PeopleSoft Workforce Analytics, Compa-Ratio is most commonly defined as the
relationship between current pay and the midpoint calculated as: (Incumbent
Pay/Midpoint)*100. Usually expressed in whole numbers, or in percentage form by dropping
the multiplication operation. Much less common is the use of a compa-ratio calculation as:
range midpoint/market rate.
Compensation Frequency
In PeopleSoft Workforce Analytics, this is the frequency at which a job is paid. This is the
value you use for reporting or quoting pay. Examples include Annually, Monthly and
Weekly.
G L O S S A R Y
G L O S S A R Y 4 2 P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L
Compensation Planning
In PeopleSoft Workforce Analytics, this is the process through which employee compensation
plans are defined, and compensation budgets are allocated throughout an organization. Major
components of compensation planning include designing pay structures, setting individual pay
levels, and budgeting and forecasting compensation spending.
Compensation Rate
In PeopleSoft Workforce Analytics, this is the compensation rate for a job. This is the rate the
company uses for quoting and reporting pay.
Comp time (compensatory time)
A PeopleSoft Time and Labor-managed employee benefit where time off is granted in
exchange for time worked based on customer-defined criteria; is associated with an expiration
and is used as reported time (see Attendance).
Compensation
The process by which a worker is remunerated for services rendered to, or work performed on
behalf of a business entity.
Compensation Package
All of the base and non-base components on a job row.
Compensation Rules
Business methodology or logical process that is applied to reported time in order to determine
payable time (see Time Administration).Competency
In PeopleSoft Workforce Analytics, Competency is a knowledge, ability, skill,
accomplishment, or National Vocational Qualification (NVQ).
Competency Inventory
All of the roles, tasks, competencies and accomplishments possessed by the workers in the
current workforce. This data is migrated from internal source systems into the data warehouse
tables of the PeopleSoft Enterprise Warehouse.
Competency Strategy
The type and number of roles, tasks, competencies and accomplishments essential to
accomplishing a business scenario based on your strategic business goals.
Competitive Appointment
An appointment to a position in the competitive service following open competitive
examination or under direct-hire authority. The competitive examination, that is open to all
applicants, may consist of a written test, an evaluation of an applicant's education and
G L O S S A R Y
P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L G L O S S A R Y 4 3
experience, and/or an evaluation of other attributes necessary for successful performance in
the position to be filled.
Competitive Service
All positions as defined by 5 USC 2102 in the executive branch of the Federal Government
are in the competitive service unless they are specifically excluded from it. Positions in the
legislative and judicial branches are outside of the competitive service unless they are
specifically included.
Compress
The act of placing a Planning task as early as possible in the schedule without violating any
constraints.
Compressed Split
In PeopleSoft Demand Planning, an optional function that allows a split database to be
compressed so it can be transferred to an account manager’s computer.
Concurrent Offerings
Multiple stock purchase offerings that are active and outstanding at the same time. The end
date is measured from the employee’s grant date.
Concurrent Processing
The situation in which you run multiple batch processes at a time. In PeopleSoft Benefits
Administration, for example, simultaneous open enrollment and event maintenance qualifies
as concurrent processing.
Configuration Code
A unique 50-character identification code that accurately tracks and costs inventory with the
PeopleSoft Product Configurator. It corresponds to a lot number for a non-configured item.
Configuration Costing
The overall process of reviewing and evaluating anticipated cost data for a configured item.
Configuration parameter catalog
Used to configure an external system with PeopleSoft. For example, it might set up
configuration and communication parameters for an external server.
Consolidate Assets
In PeopleSoft Asset Management, the process of consolidating multiple load lines, usually
coming from a separate application, into one asset.
G L O S S A R Y
G L O S S A R Y 4 4 P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L
Consolidate Depreciation
In PeopleSoft Asset Management, the process of summing all open Add and Adj transactions
by transaction type, Transaction Date, and accounting date for all composite members
reporting to one composite asset.
Consolidated Bill
A grouping of bills gathered together for invoice presentation. The bills belonging to a
consolidated bill are invoiced and printed together, with a page summarizing the bills as a
group.
Consolidations
The PeopleSoft Pension Administration functions that accumulate hours, earnings, and
pension contributions based on payroll data.
Consolidations-Elimination Set
A related group of intercompany accounts that is processed during consolidations. Once
eliminated, this group of accounts should normally net to zero.
Constraint
A limit to a schedule, that, when violated, must be repaired to produce a valid schedule. User-
configurable Planning constraints include Missed Request Dates, Missed Promise Dates, BI
Shortages, RM Shortages, Capacity Overloads, Missed Inventory Targets, Changeovers, and
Excess Inventory. See also Temporal Constraint.
Constraints
In the PeopleSoft Enterprise Warehouse, a constraint can consist of one or more filters and is
used to define complex business logic. Constraints are based on DataMaps.
Consumption Pattern
In PeopleSoft Activity-Based Management, an attribute used to describe how an activity
interacts with the cost objects to which it has been assigned. A unit type activity can expect to
be performed on a regular basis so that each time a product is produced. A batch type activity
may only be performed periodically for a given range of transactions. For example, each time
a machine is setup to produce another product type. Sustaining type activities generally occur
to support the overall operation of a company unrelated to products produced or customers
served.
Contact
A person associated with a Customer ID. Contacts can be internal contacts or external
contacts. Internal contacts are your employees who manage the relationship with your
customers, from handling billing inquiries to product/warranty questions, to basic
product/service questions. Interactions with customers can be recorded via PeopleSoft
Conversations. Self service interactions can be recorded through PeopleSoft Contact Us.
External contacts are your customer’s representatives who can access self-service transactions
G L O S S A R Y
P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L G L O S S A R Y 4 5
and receive documents such as sales order acknowledgements. Contacts must have a User ID
to access self-service transactions.
Contact Us
A method by which customers and unregistered guest users send email messages to specific
addresses or members of the merchant’s organization. Merchants can also define automatic
response messages.
Container
An Inventory stock unit for receiving, putaway, bin to bin transfers, picking, shipping,
adjustments, and physical accounting. Each container is associated with a unique container
ID.
Content Reference
Content references are pointers to some kind of content registered in the portal registry. These
are typically either URLs or iScripts. Content references fall into three broad categories:
target content, templates, and template pagelets.
Contextual reference
PeopleCode refers to a row or buffer field determined by the current context; that is, the
context in which the PeopleCode program is currently executing.
Contingent Beneficiary
In PeopleSoft Pension Administration, any non-spouse pension beneficiary, including a child,
other relative, or a trust. Spousal consent is required in order for an employee to name a
contingent beneficiary.
Contracting Officer (CO)
Individual who has the authority and the official responsibility to produce a sound acquisition
document.
Contracting Officer's Technical Representative (COTR)
Individual responsible for monitoring a contract and its associated tasks and deliverables.
Contractor
Any individual or non-employee reporting time that will not be paid through the payroll
system.
Contribution
Represents money a stock purchase participant elects to contribute to the plan. Contributions
are deducted from the participant’s paycheck and used to purchase stock pursuant to the
offering and purchase period they are enrolled.
G L O S S A R Y
G L O S S A R Y 4 6 P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L
Contributory Plan
A Pension plan to which employees contribute. Contributions are typically a percentage of
pay deducted from the employees’ paychecks.
Control Budget
Commitment control enables you to establish budgets that provide extensive, active budgetary
controls over transactions, rather than just passively recording transactions.
Control ChartField
A control ChartField is a key ChartField that you designate to be the control field. Designating
a ChartField as the control allows you to set attributes for a specific value of the ChartField
that are different from the attributes specified for the budget type in general. For example, if
the tolerance for a Projects budget type is set to 10% in general, you can override this value,
making it higher or lower for specific projects.
Control Group
A mechanism to relate vouchers together for the purpose of controlling voucher input into
PeopleSoft Payables. Generally used for assigning vouchers to data entry personnel and for
reviewing input.
A set of parameters that determines the major forecast process options. The Control Group
code is assigned to a group of Forecast Item and controls the forecast development and
tracking for each item in the group.
Control groups are used by the Analytic Forecast Component to govern particular properties
of the forecast rule, such as what accuracy to expect and what statistical method to apply.
Forecast elements are assigned to exactly one control group. They manage differences among
forecasts within a set.
Control Hierarchy
The relationship between business units, origins, vendors, and control groups in PeopleSoft
Payables that defines which processing data will be automatically entered on each voucher.
Control Number
A sequential identifying number used to identify an exercise.
Control Plan
In PeopleSoft Quality, a plan that brings together application, measurement, and control and
response criteria for a specific product and process.
Conversation
Any notes, transcript, or detail of a telephone call between an employee and a customer.
Conversations may be tied to items, payments, purchase orders, document references, or bills
of lading.
G L O S S A R Y
P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L G L O S S A R Y 4 7
Conversion data profile
A conversion data profile takes the values from a particular PeopleSoft database table (such as
the table holding bank transaction codes) and specifies how that value appears in PeopleSoft
Business Documents.
Conversion data profile
A conversion data profile takes the values from a particular PeopleSoft database table (such as
the table holding bank transaction codes) and specifies how that value appears in PeopleSoft
Business Documents.
Conversion Loader
A sample SQR delivered with PeopleSoft Asset Management that transfers data from multiple
fixed-length ASCII files into sample, relational conversion tables.
Copy Bill
In PeopleSoft Billing, the online environment providing for the replication of a single bill,
generating a new bill with its own unique invoice number.
Core Functionality
Core functionality is the set of information in PeopleSoft HRMS that is common to your entire
global workforce tracking needs—and is always displayed on the primary page.
Core hours
The hours a workday, workweek or pay period in which a time reporter must be present for
work in a flexible work schedule (see Scheduling).
Corporate Account
In PeopleSoft applications, this is equivalent to the Account (ACCOUNT) ChartField. The
term is used to make a distinction between the chart of accounts typically used to record and
report financial information for management, stockholders, and the general public, as opposed
to a chart of statutory (Alternate ) accounts required by a regulatory authority for recording
and reporting financial information.
Corporate Reporting
Companies with more than $10 million in assets whose securities are held by more than 500
owners must file annual and other periodic reports. Publicly held companies are required to
file documents with the SEC which include:
• Registration statements for newly-offered securities
• Annual and quarterly filings (Forms 10-K and 10-Q)
• Proxy materials sent to shareholders before an annual meeting
G L O S S A R Y
G L O S S A R Y 4 8 P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L
• Annual reports to shareholders
• Documents concerning tender offers (a tender offer is an offer to buy a large number
of shares of a corporation, usually at a premium above the current market price)
• Filings related to mergers and acquisitions
Corporate Repurchase
When a corporation elects to repurchase some of it’s own securities. This reduces the
Common Shares Issued and Outstanding. Typically, used to improve the valuation of the
company’s common securities outstanding as well as the Earnings Per Share (EPS).
Correction to IRR
An IRR type used when corrections need to be made to an original IRR that has already been
submitted to the Office of Personnel Management (OPM). Federal employees covered by the
CSRS retirement plan require SF-2806-1. Federal employees covered by the FERS retirement
plan require SF-3101. A Correction IRR is also used if original retirement deductions were
over-reported. See also Individual Retirement Record (IRR).
Correspondence Customer
A customer to whom all correspondence (statements) is addressed, often a corporate customer
receiving correspondence for associated child customers.
Cost Accounting
A method where business costs are accumulated and distributed to products, processes, or
discrete undertakings on an equitable basis. There are a variety of cost accounting methods,
but they all share the same basic functions. classifying costs, recording costs, allocating costs
to products or activities, summarizing and reporting costs to management. Cost accounting
requirements and financial accounting requirements are not necessarily synonymous.
Cost Assignment
Resources assigned to cost objects or activities.
Cost Basis
Typically, this refers to the original price of an asset used in determining capital gains.
However, in the case of death of an optionee, the appraised value of the asset at the time of
death is the cost basis.
Cost Center
A Time and Labor Business Unit, in which all related costs attributable to some center within
a business (such as an activity, an organization, or a program), are segregated for accounting
or reimbursement purposes.
G L O S S A R Y
P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L G L O S S A R Y 4 9
Cost Element
See Inventory Cost Element and Manufacturing Cost Element.
Cost Flow
Determines how depletions will occur for purposes of costing a transaction. Cost flows
available include Specific Lot ID, Specific Serial ID, FIFO, and LIFO.
Cost Objects
Cost objects represent cost information about products, customers, and channels. They are the
final results of the activities performed by your business, representing the focal point of
costing and profitability analysis. Examples are products, customers and channels. They are
the final results of the activities performed by your business. Your model’s resources and
activities are linked to the cost objects. They are often the focal point of profitability analysis.
Cost of Capital
An attribute used to describe the behavior of a particular cost object. A primary cost object is
typically the main focus of the activity-based management analysis. This may be a product,
customer or channel that you wish to calculate cost for. A support cost object may be used in
a similar manner but may be further allocated to other support cost objects or primary cost
objects.
Cost Of Living Allowance (COLA), Non-Foreign
A cost-of-living allowance payable to an employee at a location in a non-foreign area where
living costs are substantially higher than those in the Washington, DC area.
Cost Profile
A combination of a receipt cost method, a cost flow, and a deplete cost method. A profile is
associated with a cost book and determines how items in that book are valued, as well as how
the material movement of the item is valued for the book.
Cost Profile Group
A grouping of items for the purpose of costing transactions and valuing inventory for a given
book. Assigning an item to a cost profile group determines the books used by the item when
accounting for that item.
Cost Roll-up
A process for calculating item costs. Cost roll-up provides a summation of all of the costs
associated with the bill of material structure and the routing used in producing the item.
Cost Row
A cost transaction and amount for a set of ChartFields.
G L O S S A R Y
G L O S S A R Y 5 0 P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L
Cost Template
A collection of cost components that you can apply to a group of purchased items.
Cost Type
A user-defined method of categorizing item costs in Manufacturing for simulations and what-
if analysis. Examples of cost types include current costs (which reflect the item's current bill
of material or routing), proposed costs (which could be used in preparation for the next
standard cost period), or activity-based costs (which include costs for items that consume a
given activity).
Cost Version Type
A combination of cost types and cost versions used in cost rollups. Valid values include
production (rolls up only manufacturing data and uses only the primary BOM and routing,
each with a code of 1), engineering (can roll up with either manufacturing or engineering data,
with any combination of BOM/routing codes), or simulation (only rolls up with manufacturing
data, but can use any combination of BOM/routing codes).
Count Grade
A user-defined evaluation of a counting event.
Count Point
A predefined step on a routing or operation list where you can gather operation completion
information. You define the appropriate points on the routing, record completions at these
count points, and the system automatically backflushes the prior operations. This is only used
on production IDs.
Counts
Count elements allow you to count the number of days or hours from a specific period of time.
Counts are used primarily during proration calculations, but can potentially be utilized in other
situations as well.
Court-Ordered Benefits Coverage
As prescribed in Title 5, United States Code and Title 5, Code of Federal Regulations, court
orders that stipulate that an employee must continue or begin the coverage features for all
employee benefits must be enforced. Federal employees are mandated by court orders to
continue covering or begin covering their former spouses and/or children under their federal
employee benefit programs (health, life, and thrift savings).
Court-Ordered Garnishments
As prescribed in Title 5, United States Code and Title 5, Code of Federal Regulations, court
orders enforcing child support, alimony, or collection of commercial indebtedness are served
on the appropriate entity within the Federal agency and implemented as offsets against the
employee's salary.
G L O S S A R Y
P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L G L O S S A R Y 5 1
Coverage
An employee’s chosen benefit plan and coverage level; that is, what sort of benefit is provided
as well as the value.
CPAM (Caisse Primaire d'Assurance Maladie)
In France, CPAMs are the local social security offices that manage health coverage for French
workers. CPAMs are regulated and established by the French government. If you’re
managing a French workforce you’ll need to identify and track the CPAM offices that impact
your enterprise.
CRAM (Caisse Régionale d'Assurance Maladie)
In France, CRAM is the regional social security body which oversees the running of CPAMs.
CRAM offices work with companies to both prevent and compensate workers for industrial
injury.
Create Date
The date that you extracted a deduction or offset to PeopleSoft Deduction Management or
created a split deduction.
Create Missing Items
In PeopleSoft Demand Planning and Inventory Planning, a feature that enables automatic
system generation of master records that don’t exist in the system.
Created Time
Time collecting device time or elapsed time generated by the system based on the time
reporter’s schedule (see Time Administration)
Creating Time
The preliminary generation of time segments as close as possible to their likely values when
you officially report time—so that the information on the time records is as fresh and current
as possible. The system shows you time that has already been created, rather than you having
to create it “on the fly” when you come in to report. The process fills in reporting day gaps as
defined by work schedules.
Credit Analyst
A required field used in PeopleSoft Receivables, Billing, Order Management, and Deduction
Management when working with items. Each item must be assigned to a credit analyst. If no
credit analyst is assigned to an item, the credit analyst assigned to the customer is used as the
default.
Credit Risk Spreads
In the financial services industry, the additional charge to a risk-free interest rate, based on a
riskier credit rating.
G L O S S A R Y
G L O S S A R Y 5 2 P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L
Credits
See Flexible Credits.
CREF
Acronym for Content Reference.
Crew Reporting
A Time and Labor process that enables you to report the earnings which consist of one or
several time reporting codes and associated quantities of hours, amounts, or units, and task
information for one date under report for a user-defined crew. The system transforms the
information into instances of daily time for each crew member for the entered date.
Critical Success Factors (CSFs)
In PeopleSoft Balanced Scorecard, things that an organization must do well or excel at to
achieve its goals. One or more key factors or objectives that must be accomplished for a
particular strategic thrust. Key Performance Indicators are attached to CSFs.
CRM Warehouse
See Warehouses.
Cross Border Walker
This term is used in Europe for an employee who lives near a border in one country and works
in another country. Such employees are subject to different tax and social security rules.
Cross-Plan Validation
The process by which the PeopleSoft Benefits Administration determines enrollment
prerequisites for benefit plans. You can define four types of cross-plan validation
prerequisites: prerequisites based on plan types, benefit plans, dependent enrollments, and
coverage percentage limits for Life and AD/D plans.
Cross-View Reconciliation
In PeopleSoft Demand Planning, a process that enables the balancing of forecasts between
selected levels of related views with the same Forecast Item key. The process is used when
adjustments have been made to a working view and are then required in a related view.
Cube
See Multidimensional Database (MDDB).
Cube View
In PeopleSoft Demand Planning, defines the user's own view of a forecast. The parent
working view and dimensions determine what forecast data is included and how aggregates
are formed.
G L O S S A R Y
P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L G L O S S A R Y 5 3
Cumulative Tax Method
A payroll tax calculation method that adds together year-to-date earnings and earnings for the
current pay period, then annualizes the result before calculating tax. This method is useful
when Payrolls vary greatly in amounts from pay period to pay period, such as in the case of
sales commissions.
Currency Calendar
In the financial services industry, business calendars for markets outside the organization’s
domestic operations that reflect the foreign markets’ holiday schedules.
Currency Conversion Engine
A PeopleSoft Enterprise Warehouse Engine that processes financial information in multiple
currencies.
Current Period
The earliest pay period for which the close date has not passed (see Time Reporting).
Current Period (Time and Labor)
In Time and Labor, the employee's current pay period which will be determined via the
employee's Pay Group affiliation. Although there can be only one definition of Current Period
per installation, the user can change it manually.
Current View
A reporting screen in Time and Labor whose effective date is within the date boundaries of an
employee's current pay period, and for which pay has not yet been confirmed. A Future Time
Reporting Transaction is one that has an effective date after the last day of the employee's
current pay period. An Historical Time Reporting Transaction is one that has an effective
date before the first day of the employee's current pay period.
Current Year
A period for event maintenance processing.
Curve Generator
A supporting module (common to financial services industry applications) that enables you to
construct curves used to determine appropriate interest rates for given maturities and / or time
periods. You can import market data from outside sources such as Bloomberg, upload the
data from a spreadsheet, or manually enter the data. You can then build configured curves
from segments or combinations of other curves.
CUSIP Number
A nine digit alphanumeric number associated with issuers’ securities. CUSIP (Committee on
Uniform Securities Identification Procedures). A uniform numbering system widely used to
identify specific securities and their issuers.
G L O S S A R Y
G L O S S A R Y 5 4 P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L
Custom Statement
A user-created logical or mathematical expression that determines information about an
employee in PeopleSoft Pension Administration. Custom Statements commonly define
employee groups and benefit formulas.
Customer Inquiry
A window containing options to review customer balances, aging, history, items, actions, and
conversations.
Customer Scorecard
See PeopleSoft Customer Scorecard.
Customer Tree
A user-defined graphical representation of your current sales organization. A customer tree is
used to establish and distribute funds and to determine authority levels for promotional
activities.
Cut Session
Cut sessions are a means of dividing a course session. You use cut sessions where a course
session does not run on consecutive days from start to finish, or if there are multiple
instructors or locations. Each cut session has it’s own start/end date, location, and instructor.
For example, if you have a course that runs for two days a week for a month, you would
divide the course session into four cut sessions, each of which is two days long.
Cycle Count
A manual counting event that does not cover an entire inventory business unit. Usually
includes every item (and lot, if applicable) in a location or family.
Cycle Interval
The number of days between cycle counts.
Cycle Procedures
Inventory planning tasks that need to be performed on a regular basis to ensure an up-to-date
Inventory Policy. The tasks can be performed either at the end of a processing period or
within the period, and should always be performed if the forecast or Control Group or Policy
Item parameters change. Tasks include generating a policy and reviewing Work Queue
messages.
G L O S S A R Y
P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L G L O S S A R Y 5 5
D
DAT file
A text file (input.dat) used with the Verity search engine that contains all of the information
from documents that will be searchable but not returned in the results list.
Data Elements
Data elements, at their most simple level, define a subset of data and the rules by which to
group it.
For PeopleSoft Balanced Scorecard, data elements are used as the basis for key performance
indicators, and as target values for Key Performance Indicator (KPI) objects.
For Workforce Analytics, data elements are rules that tell the system what measures to retrieve
about your workforce groups.
Data Entry Access List
Used to present a concise list of often-performed data entry tasks to a user. You can assign
multiple control plans to a single data entry access list.
Data Extract
A report that creates a file used to transmit data to a third party on magnetic media. There is
no meaningful printed output for this type of report.
Data Loader
Data Loader is a PeopleSoft Enterprise Warehouse utility that moves data from the
Operational Data Store staging area to either the ODS reporting area or the Data Warehouse.
The Data Loader utility is made up of several pages that allow you to enter Metadata to define
your source and target records and your transformation rules and then perform the load by
running an Application Engine.
Data Loader Map
Defines how to extract data from the Operational Data Store (ODS), transform it, and load to a
Target Table. The target table can reside in the warehouse or the ODS layer.
Data Manager
A PeopleSoft Enterprise Warehouse engine that distributes revenue, expense, analytical
application engine results, statistical quantities and other measures across business units,
departments, products, customers and channels—any field or logical group in the chart of
accounts. You can define a number of types and options within this engine. It is also used as
a means of posting to the Performance Ledger.
G L O S S A R Y
G L O S S A R Y 5 6 P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L
Data Manager Rules
In the PeopleSoft Enterprise Warehouse, Data Manager rules use Constraints to specify the
source as well as the target tables for moving, aggregating, or multidimensionalizing your
engine output. Rules use Data Manager methods to enrich the PeopleSoft Enterprise
Warehouse data.
See Data Manager Methods.
Data Manager Methods
There are several methods: Copy, GL Mapper, Prorata, Spread Even, and Tree Aggregation.
Each method enables you to move and/or enrich engine output.
Data Mart
A Data Mart is a data structure that uses a central fact table and related dimension tables to
generate a “relational cube” or directly generate an Insight report.
Data Mart Builder
The Data Mart Builder is a multiple Application Engine (AE) process, that is, a framework of
procedural programs, that creates a Data Mart.
DataMaps
Information that builds upon the data captured in the TableMap records. DataMaps enable
you to define a logical view of the physical PeopleSoft Enterprise Warehouse tables.
DataMaps bring together information from many different tables and fields and define it all as
one entity or table.
Data Row
Contains the entries for each field in a table. To identify each data row uniquely, the system
uses a key consisting of one or more fields in the table.
DataSet
DataSets are used as input for various engines and processes, for instance, the Analytic
Forecasting component, the Data Manager, user defined functions, drivers in Activity-Based
Management, and data elements in the Key Performance Indicator Manager. DataSets provide
a user defined set of information to the engines. DataSets use Constraints to restrict used
columns and restrict returned rows. Each DataSet is created by a process specific setup.
However, the underlying logic is the same, enabling you to more easily understand the
functional aspects of the process.
Data Warehouse
A large database containing data summarized from one or more transactional systems,
optimized to support the analysis needs of the enterprise. An ideal data warehouse contains all
the data necessary to make business decisions. Users analyze the data in the warehouse using
Online Analytical Processing (OLAP) tools and ad hoc query/reporting tools. An increasing
G L O S S A R Y
P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L G L O S S A R Y 5 7
number of organizations have "virtual" data warehouses, where the data warehouse is not one
physical database, but rather a collection of specialized (and distributed) data marts.
See also PeopleSoft Enterprise Warehouse.
Data Warehouse Tables
Data Warehouse tables act as the portal for getting data into the PeopleSoft Enterprise
Warehouse from PeopleSoft, OLTP applications or other “outside” sources. These tables are
used:
• As targets for loading operational data.
• For error detection and handling
• For data validation.
• For aggregation.
Database Alias
The PeopleSoft Pension Administration utility that looks up employee data.
Dataset
A file containing data to be analyzed by the Quality Server program. The dataset is similar in
content to a spreadsheet.
In PeopleSoft Planning, a file that stores schedule information such as tasks, resources,
calendars, and so on.
Date
See Accounting Date Transaction Date or Effective Date.
Date
If you want to either include a date in a calculation, or determine a new date by taking a
starting date and either adding or subtracting a period of time to come up with another date,
you use a date element.
Date Classified
Date the Position Description is approved by Management/Position Management.
Date Eligible To Retire
Date an employee is eligible to optionally retire based on the combination of age and service
that meets legal requirements.
G L O S S A R Y
G L O S S A R Y 5 8 P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L
Date Under Report
The date (day) in PeopleSoft Time and Labor for which time is being reported. The Date
Under Report does not have to equal today’s date.
Day Breaker
Customer defined time that is used to determine when one day becomes the next. It’s used to
determine the “logical” date of a punch. (See Understanding Workgroups.)
Days Supply
In PeopleSoft Inventory Planning, a method that can be used with several types of Inventory
Policy. Using this method, a specific number of days of supply for an item should be used to
calculate the item's inventory policy.
Deal Type
PeopleSoft Treasury has categorized deals into several basic deal types from which you can
choose when defining an instrument.
Death Coverage
The PeopleSoft Pension Administration function that determines the factor used to reduce an
employee’s benefit when the plan charges for PRSA coverage.
Decompressed Split
In PeopleSoft Demand Planning, a function for returning a compressed split database to its
original form. See also Compressed Split.
Deduction
Any amount taken from an employee’s pay check each pay period. Deductions may include
health or medical benefits, union dues, and so on. See also Benefit Deduction and General
Deduction.
Deduction Date
The as of date for the deduction item in PeopleSoft Receivables.
Deduction Item
An individual item that you created in receivables and is an open receivable on the customers
account due to a deduction that they took in a payment for a receivable item.
Deduction Reason
Code that describes the type of deduction. When assigned to a write-off resolution, it
determines what accounting entries to create.
G L O S S A R Y
P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L G L O S S A R Y 5 9
Deduction Specialist
The individual responsible for tracking and resolving deductions in PeopleSoft Deduction
Management.
Deduction Subset
A group of deductions selected from a company’s standard set of deductions. Deduction
subsets minimize data entry time in special processing situations such as bonus check runs.
Default Mode (DM) model
In the financial services industry, an approach used by financial institutions to predict a
decline in portfolio value. Only two outcomes are considered – default or non-default. If the
debt does not default, there is no change in the value. If the debt does default, then the loss is
calculated as the difference between what was contractually owed and the value of any
collateral recovered.
Defection Analysis
In PeopleSoft Workforce Analytics, the identification of employees who are likely to leave the
organization based on predefined assessment criteria.
Deferred Compensation
Compensation payments that are payable to an individual in the future such as pension plan
payments, annuities, stock awards and profit sharing. Note: Profit sharing can be considered
direct pay if paid out in cash on a periodic basis or deferred pay if cumulative with the
intention of payment in the long-term future.
Deferred Vesting
The adjustment made to the original option’s vesting schedule that pushes the vesting into the
future.
Defined Benefit Plan (DB Plan)
A retirement income plan (usually called a pension plan) where the employee's benefit is
definitely determinable based on a plan-specified benefit formula.
Definition or Function Definition
The parameters for any of PeopleSoft Pension Administration’s nineteen core functions. A
definition has to be explicitly associated with an employee Group Definition before it can be
applied.
Dekit
The ability to return material issued in kits to inventory. This is used when entire kits need to
be returned; individual components are handled through kit issues/returns.
G L O S S A R Y
G L O S S A R Y 6 0 P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L
Delete Non-Matching Items
In PeopleSoft Inventory Planning, an option used in the Generation process to delete
Inventory Planning items that don’t have corresponding items in Demand Planning. The item
deletion occurs when the system generates the policy.
Delta
When retroactive processing occurs for a given payee, the system recalculates each element
generated for the payee. The system compares the recalculated results to the original results.
The difference between these results is typically referred to as the retro “delta.” A retro delta
can represent either an underpayment or an overpayment that results in an adjustment to the
payee’s earnings.
Demand
Collection of training requests. This could be an employee demand, a departmental one or a
company-wide demand.
Demand Filter Width
In PeopleSoft Demand Planning, specifies the confidence interval within which demand is
considered to be reasonable. Actual demand that is outside the confidence interval is
automatically filtered and replaced by the value at the edge of the interval. The value is
expressed as a percentage.
Demand Filtering
In PeopleSoft Demand Planning, provides a way to detect and highlight unusual demands and
forecast errors. If the demand falls outside of a band that is considered reasonable, the system
automatically adjusts it to the level of the boundary and logs a message to the Work Queue.
Demand Number
The configured product sub-component sequence number.
Demand Planning
In PeopleSoft Activity-Based Management, this type of planning focuses on studying the
impact of cost objects and activity volumes.
Demand Priority
The placing of importance on independent demand. The Planning engine uses the demand
priority value to determine the order in which you fulfill the demand. You can set a demand
priority from 1 to 998 with 1 being the most important level. The priority value of 999 is
reserved for the system.
Demand Priority Rules
In PeopleSoft Inventory, a set of rules that will sort demand so the most important demand
will have the first opportunity to reserve available inventory. If demand priority rules have
G L O S S A R Y
P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L G L O S S A R Y 6 1
been defined, the Material Reservations process (INPLDMND) sequences orders by priority
rank, processing those with the lowest rank value first.
Deplete Cost Method
Determines how you cost a depletions transaction within a book. The deplete cost methods
available include Actual, Non-Cost, Perpetual Weighted Average, Periodic Weighted
Average, and Value at Current Standard.
Depreciate When in Service
A switch that indicates whether PeopleSoft Asset Management should allocate depreciation as
of the date an asset was placed in service. This is valid only in the year the asset was
acquired.
Depreciation - Declining Balance
Budgeting calculates this as: Cost minus Accumulated Depreciation divided by Life divided
by number of periods per year. It results in a higher depreciation expense in the early years of
an asset, which decreases as you near the end of its useful life.
Depreciation - Double Declining Balance
Budgeting calculates this as: Cost minus Accumulated Depreciation multiplied by 2 divided
by Life divided by number of periods per year. It results in a higher depreciation expense in
the early years of an asset, which decreases as you near the end of its useful life.
Depreciation Methods
The various methods of spreading the aquisition cost across the life of an asset rather than
expense the full value of an asset at the time you acquire it The value of the asset
consequently decreases (or depreciates) through time. The four depreciation formulas
delivered with PeopleSoft Budgeting include: declining balance, double declining balance,
straight line, and sum of the years.
Depreciation - Straight Line
A method of depreciating asset value in equal amounts across the life of the asset. Per-Period
Straight-Line depreciation is calculated as the cost of an item minus the salvage value divided
by the number of periods to depreciate.
Depreciation - Sum of the Years
A depreciation method equal to the value of the remaining years of life divided by the sum of
the years remaining is multiplied by the Net Book Value. This figure is then multiplied by the
percent of years to depreciate. This results in a higher depreciation expense in the early years
of an asset, which decreases as you near the end of its useful life.
G L O S S A R Y
G L O S S A R Y 6 2 P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L
Depromote
In PeopleSoft Demand Planning, the process of making an adjustment to actual demand data
that removes the effect of a promotion during a defined period. As a promoted period moves
into history, the system creates an adjusted demand entry that is equal to the Prorated
Forecast.
DeptID
A ChartField that defines departments or administrative offices that have operational, fiscal
and/or budgetary responsibility for specific sets of activities.
Derived Metric
The result of a calculation on a report of base metrics.
Detail
A temporary assignment to a different position for a specified period when the employee is
expected to return to his/her regular duties at the end of the assignment. This employee is
considered for pay and strength count purposes to be permanently occupying his/her regular
position. Unless the agency chooses to use an SF50, a detail is documented with an SF52.
Detail Tree
A tree that employs ranges of detail values under each node; you must manually specify the
detail values.
DFI ID (Depository Financial Institution ID)
A PeopleSoft Payables bank identifier, consisting of Transit Number, Swift ID, or CHIPS ID.
Dimension
A single element of a business model, such as product, department, or location. Cube Manager
uses the term Conforming Dimension.
In terms of data analysis, dimensions can be thought of as criteria, such as time, product, and
location, used to pinpoint a particular piece of data. For example, in the retail industry a set of
dimensions could be geography, product, time, customer, and vendor. The geography
dimension would include company, chain, region, district, and finally store attributes. A
dimension is also a column heading on an analysis and reporting template which you can drill
through or roll up to the multiple levels.
In PeopleSoft Budgeting, a view option that assists in summarizing the rows of data in line-
item budgeting.
A single element of a budgeting model, such as account, product, project, department, or
operating unit. In PeopleSoft Budgeting, these dimensions typically represent the ChartFields
used by your organization during your budgeting process.
G L O S S A R Y
P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L G L O S S A R Y 6 3
Dimension Table
In the PeopleSoft Enterprise Warehouse, Dimension Tables store additional attributes or data
about Facts. Some example dimensions include Customer, Channel, Geography and Product.
Direct Compensation
In PeopleSoft Workforce Analytics, Direct Compensation is payment made to workers in
exchange for their contributions to the organization. Direct Compensation is typically
categorized as including Cash Compensation and Long-term Variable Compensation.
Cash payments made to workers in exchange for their contributions to the organization.
Direct pay is typically categorized as fixed pay (for example, base pay, shift differentials) and
variable pay (for example, profit sharing, incentive, bonus). Note: Profit sharing can be
considered direct pay if paid out in cash on a periodic basis or deferred pay if cumulative with
the intention of payment in the long-term future.
Direct Calculation
Calculate actual and directly assigned dollars.
Direct Cost
In PeopleSoft Workforce Analytics, a direct cost of an activity or a cost object. An example is
the salary cost of employees working on a project.
Director
An affiliate of the company who holds a seat on the Board of Directors for the corporation. A
Director, generally, is not an employee of the corporation.
Disability and Discrimination Act of 1995
In the United Kingdom this act makes it unlawful to discriminate against individuals on the
basis of their disability in relation to recruitment, promotion, training, benefits, terms and
conditions of employment, and dismissal.
Disability Rate Code
The desired percentage of disabled persons that should be employed by French employers, as
mandated by the French government.
Disbursement View
In PeopleSoft Demand Planning, a Forecast View that allows the forecast from a working
view to be reported on using an alternate key. Disbursement views are built directly from the
working views and inherit many working view attributes, including time period and associated
user data definitions, from the parent working view.
G L O S S A R Y
G L O S S A R Y 6 4 P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L
Discounted Stock Option
Rights to a stock option at a price less than 100 percent of fair market value at the time of
grant.
Discretionary Plan
In PeopleSoft Workforce Analytics, this is a plan for distributing compensation awards that
provide managers the ultimate discretion over a pool of money which is either funded based
on company, group, or employee performance, or it’s budgeted. The discretionary award
determination is sometimes guided by a pre-determined percent of the participant’s salary,
expressed as an opportunity. This figure can then be modified based upon management’s
perception of actual value created by the group or employee.
Disqualifying Disposition (DD)
When an optionee sells or otherwise disposes of the shares of stock acquired through the
exercise of an incentive stock option or through an employee stock purchase plan before the
holding period for preferential tax treatment has lapsed.
In the case of Incentive Stock Options, the holding period is one year of the date of exercise
and two years of the date of grant. At the time of disposition, the individual recognizes
compensation income equal to the difference, if any, between the option price and the fair
market value of the corporation’s stock on the date of exercise. If the sale price is less than
the fair market value of the stock on the date of exercise, the compensation income is limited
to the total sales price less the total option price, less any fees.
In the case of purchases through an employee stock purchase plan, the holding period is one
year from the purchase date and two years from the enrollment date. Compensation income in
a disqualifying disposition is equal to the difference between the total fair market value on the
purchase date and the total purchase price.
Distribution
Provide a repository of time and associated estimated and actual allocated labor costs to other
systems
The process of assigning values to ChartFields. A distribution is a string of ChartField values
assigned to items, payments, and budget amounts.
Distribution Network
A distribution network is a prioritized list of Inventory business units (IBUs). When a
customer orders a product, the system uses this network to determine which warehouse the
stock ships from.
Distribution Profile
A definition of ChartField distributions assigned for compensation costs. A distribution
profile can be used to set up defaults for how the system should distribute costs associated
with a position’s salary, benefits, and earnings. PeopleSoft Budgeting-specific.
G L O S S A R Y
P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L G L O S S A R Y 6 5
Distribution Rule
You use distribution rules to determine the order in which the system searches for matches
against the distribution sets matrix when sales orders are entered.
Distribution Set
Distribution Sets assign account distribution information to combinations of defining elements
used on sales orders.
Distribution Type
An identifier that defines one of the different transactions that move an item into or out of an
inventory business unit. Distribution types are used to create debit and credit transactions to
the general ledger via the Journal Generator.
Dividend
Distribution of earnings back to shareholders, prorated by the class of security and paid
typically in the form of money or stock. The amount of a dividend is decided by the Board of
Directors and is usually paid quarterly.
Document Management
The process through which a user has complete control of document version including the
ability to view, query, and edit documents in a secure vault. Document management enables
you to seamlessly perform online document queries and view documents directly, launching
them from within PeopleSoft applications. You can associate pertinent documents with
engineering change requests (ECR), engineering change orders (ECO), item revisions, bills of
material, manufacturing and engineering routings, production component lists, and production
operation lists.
Document Sequence Number
A value that the PeopleSoft system assigns to a document (such as an invoice, voucher, or
journal) when you create a document for a business unit that you have enabled for document
sequencing. The system determines the number by the values of the business unit, accounting
date, and document type.
Document Sequencing
A flexible method that sequentially numbers the financial transactions (for example, bills,
purchase orders, invoices, and payments) in your system for the purpose of statutory reporting
and tracking of commercial transaction activity. Document sequencing requires that you
classify all financial transactions into three transaction types—journal type, journal code, and
document type—and that within each transaction type, all documents you enter are numbered
sequentially. When you create a document (such as an invoice, voucher, or journal), the
PeopleSoft system assigns a document sequence number to that document.
G L O S S A R Y
G L O S S A R Y 6 6 P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L
Document Type
The final level of three categories for defining a financial transaction (or document), necessary
when using document sequencing. It represents the business purpose of a financial
transaction, such as domestic customer invoice or customer credit memo. Document type is
within one and only one journal code; journal code is within one and only one journal type.
Document type is the only required category, because the values of the other two categories
can be derived from document type.
Dollar Tolerance
In PeopleSoft Inventory, the acceptable cost difference between expected cycle count
quantities and actual quantities counted. This value allows a margin of error for an item
during cycle count reconciliation based on item cost.
Domestic Relations Order (DRO)
A preliminary version of a court order (usually stemming from a divorce settlement) ordering
a division of a participant’s pension benefits. The order is not in effect until it is determined to
be “qualified” by virtue of meeting certain requirement. At that point it becomes a Qualified
Domestic Relations Order, or QDRO.
Double Byte Characters
If you’re working with Japanese or other Asian employees, you can enter the employee’s
name using double-byte characters. The standard double byte character set name format in
PeopleSoft applications is: [last name] space [first name].
Draft Worksheet
A work space used in PeopleSoft Receivables to track a draft through its processing life cycle.
Drill-Back Calculation
Assigns indirect dollars and Drill-Back calculations. Also, this picks-up all costs in the
Calculations Detail (CALC_DETAIL_F00) that was assigned during direct calculations.
Drill Down
The ability to go down to the next level of detail in a set of data. For instance, if you’re
looking at an expense figure for a division, you can drill down to the expenses for each
department in the division.
Drill Down
The ability to go down to the next level of detail in a set of data. For instance, if you’re
looking at an expense figure for a division, you can drill down to the expenses for each
department in the division.
G L O S S A R Y
P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L G L O S S A R Y 6 7
Driver Lookup Table
Tables associated with a driver that enable different rates and amounts unique to a budget
center.
Drivers
In PeopleSoft Activity Based Management, drivers are a means of assigning dollar amounts
from resources, activities, and cost objects to other resources, activities, and cost objects
throughout the model in PeopleSoft Activity-Based Management. Drivers can also be
assigned across business units. There are different types of driver categories (transactional,
duration, and intensity), and different ways of specifying how those dollar amounts are
calculated (amount, percentage, spread even, and direct), as well as different ways that dollar
amounts are assigned (depending on assignment type and object type).
In PeopleSoft Business Planning, a driver can be defined as a set of values that are used as an
input to another process. In this context, a driver should be interpreted as a projection of
external factors and other indicators. The user can the define a relationship between the driver
and a financial result. The driver values and the defined relationship then combine to produce
a projection of the financial result. For example, a projection of the number of square feet used
(driver) and the price per square foot paid in rent (driver) can combine to produce a projection
of rent expense (financial result).
DRO
See Domestic Relations Order.
DSS (Decision Support System)
A DSS is a workstation-based analysis and reporting system, typically aimed at analysts and
line managers. OLAP tools provide a powerful DSS.
Duration
In PeopleSoft Pension Administration, the utility that calculates the length of time between
two dates.
Duration [Global Payroll]
An element type that calculates a period of time between two dates. For example, if you want
to determine a payee’s age, you can calculate the duration between his birth date and the
calendar period end date.
Dynamic Group
A group in Time and Labor that enables you to establish criteria or attributes for a group of
employees. All employees who fit this criteria at processing time belong to the group.
Dynamic Tree
A tree that takes its detail values—Dynamic Details—directly from a table in the database,
rather than from a range of values entered by the user.
G L O S S A R Y
G L O S S A R Y 6 8 P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L
Dynamic Views
In PeopleSoft Demand Planning, a Forecast View that allows interaction with the forecast
data using an alternate key structure. By using dynamic views, you streamline the working
view and can complete the working-view design without having to anticipate all conceivable
adjustments.
E
Earliest Change Date
Determines both the range of dates and the amount of data that will be processed for each time
reporter (see Batch Processing)
Early Punch
A punch that is more than the predefined number of hours/minutes before a scheduled punch
where a time reporter is warned
Early Retirement Date (ERD)
A retirement date earlier than a plan-specified “normal” retirement date. Employees usually
must meet age and/or service requirements to be eligible for early retirement, and early
retirement benefits are often reduced to compensate for the longer duration of payments.
Early Retirement Factor
The reduction made to an employee's benefit if the employee elects for early retirement.
Early Warning
In commitment control, warning of possible future budget exceptions. You can specify that
you are to receive a warning when commitments and expenditures reach a predetermined
percentage of budget. For example, you can instruct the system to let you know when
commitments and expenditures reach 50%, 80%, or some other percent of a budget.
Early/Late Adjustments
The PeopleSoft Pension Administration function that calculates early retirement factors or late
retirement factors.
Earning Group
Part of a group of defaults assigned to job codes. Earnings group may include non-salaried
items such as holidays and bonus pay dependent on individual company parameters.
Earnings
The amount owed to an employee based on salary, hours worked, or other calculation routines,
plus other types of compensation and holiday, vacation, and bonus pay.
G L O S S A R Y
P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L G L O S S A R Y 6 9
Earnings [Global Payroll]
An element type that defines the different types of compensation that are added to a person’s
pay. Examples include salary, commission, bonuses, and retirement pay.
Earnings Accrual Class
Categorizes a set of accruable earnings.
Earnings Code
Codes that represent the various types of earnings such as regular, overtime or leave.
Earnings Per Share (EPS)
The portion of a company's profit allocated to each outstanding share of common stock. Net
income (reported or estimated) for a period of time is divided by the total number of shares
outstanding during that period.
Earnings Type
An abbreviated and encrypted set of business instructions containing compensation
instructions. Earnings Type may also contain Benefit Entitlement and Administration
instructions, taxation instructions, Financial Accounting instructions, Organizational
Administration instructions, work group and labor affiliation instructions, and other
instructions.
Economic Loss
In Funds Transfer Pricing, this refers to the break fund economic loss, calculated by applying
the theoretical value of the interest rate differential (IRD) against a cash flow stream, based on
the amount of the prepayment or cancelled draw-down.
Economic Value Added
In the financial services industry, Economic Value Added is a financial metric that factors into
the measurement of an activity’s profitability the cost of economic capital assigned to that
activity.
EDGAR (Electronic Data Gathering, Analysis, and Retrieval)
An electronic system implemented by the SEC that enables companies to file documents in
conjunction with disclosure requirements mandated by the SEC.
EDI Agent
Used in EDI processing, the inbound EDI Agent loads trading partner data (flat files) into the
PeopleSoft database using transaction, map, and trading partner definitions set up using EDI
Manager. The outbound EDI Agent extracts information from the PeopleSoft database and
generates data files that can then be processed for transmission to a trading partner.
G L O S S A R Y
G L O S S A R Y 7 0 P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L
EDI Manager
A suite of online pages used to define transaction sets, trading partner profiles, and translation
maps for EDI transactions.
Edit Table
A table on the database that has its own record definition, such as the Department table. As
fields are entered into a PeopleSoft application, they can be validated against an edit table to
ensure data integrity throughout the system.
EEO Company Code
In the United States companies are assigned this federal code for EE0 and VETS100 reporting.
Effective Date
A method of dating information in your system. You can predate information to add historical
data to your system, or postdate information in order to enter it before it actually goes into
effect.
Effective Date
A method of dating information in your system. You can predate information to add historical
data to your system, or postdate information in order to enter it before it actually goes into
effect. The Effective Date usually defaults to your system’s current date.
Effective Periods
In PeopleSoft Demand Planning, the number of periods of historical demand used in the
Model Reset process. The value can be used to exclude older, possibly unrepresentative
historical demand data from model Optimization.
Effective Sequence
A system-generated number assigned to distinguish between two job entries with the same
effective date.
Effective Tax Rate
The ratio of income tax paid over gross income, showing the percentage of income actually
paid in taxes.
Effectivity Date
The date on which a component can be added or substituted in production, typically specified
on an item's bill of material.
G L O S S A R Y
P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L G L O S S A R Y 7 1
EIS (Executive Information System)
An EIS is a workstation-based analysis and reporting system for executives. An EIS provides
a higher-level view of the data than a DSS, and typically requires less knowledge about the
underlying transactional systems. OLAP tools provide a powerful EIS.
Elapsed Schedule
A method of scheduling a time reporter’s time that is based on TRC and duration. This
method can be used for scheduling of elapsed time reporters (see Scheduling.)
Elapsed Time
Reporting non-clock time in increments of hours or partial hours (see Managing Time /
Understanding Time Reporting).
Elapsed Time Service
A method of calculating a period of service that uses only the start and end dates of the period
to determine the amount of service. Hours worked or other measures of the actual work
performed during the period are not taken into account.
Electronic Certification System (ECS)
An automated Payment Voucher authorized by the Certifying Officer for use within the
Treasury Department, Financial Management Service's financial system. PeopleSoft provides
a method to record and generate data files for on- and off-cycle processed payments.
Element
In PeopleSoft Global Payroll, an element refers to both primary elements and supporting
elements. Primary elements are comprised of earnings, deductions, absence entitlements, and
absence take elements. Supporting elements are element components that are combined to
create primary elements.
In PeopleSoft Enterprise Performance Management, elements are used to create a Profile. An
Element can be one or more columns of data in an Enterprise Warehouse table, associated
with a single dimension (for example, Customer, Product, Department, or Channel). An
Element can also be KPI, Population, subscription data from a third party, preexisting Profiles,
and data mining scores.
Element Group
Element Group identifies a group of elements to provide eligibility. You can then use this as a
notational shortcut—instead of having to list each element, you can use the element group
name. Element Group’s expedite the process of manipulating earnings and deductions.
Element Name
Name assigned by the user for data fields, rules, formulas, and tables. For example, the names
you give to new rules, elements, or objects.
G L O S S A R Y
G L O S S A R Y 7 2 P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L
Element Segment
When an element changes mid-period, requiring the affected element (and perhaps a subset of
other elements) to be calculated multiple times on either side of the date on which the change
takes place, element segmentation is used. Unlike period segmentation, the system segments
only the elements you select, and creates separate result columns only for the specified
elements. In element segmentation, there is only one gross-to-net result set.
Eligibility Group
Eligibility groups define the possible earnings, deduction, absence entitlement, and absence
take elements that a payee might be eligible to receive. This enables you to group payees so as
to assign eligibility for certain pay elements.
Eligibility Rule
PeopleSoft Benefits Administration uses eligibility rules during Benefits Administration
processing to determine which benefit programs and options an employee is eligible for.
Eligibility rules are closely associated with event rules: they determine what options an
employee can have, while event rules determine which of those options an employee will
actually be able to choose.
Elimination Set
See Consolidations-Elimination Set.
Email Template
Pre-defined parameters that establish automatic email generation during budget submittal,
rejection, publishing, and/or targeting.
Employee
An individual employed by an organization and administered as an employee in the
PeopleSoft Human Resources system.
Employee Accounts
The PeopleSoft Pension Administration function that tracks employee contributions to a
pension plan.
Employee ID
A unique identification code for an individual associated with your organization.
Employee Paid Benefit
The portion of a pension benefit funded by the employee’s own contributions to the pension
plan. Also, the PeopleSoft Pension Administration function that determines this amount.
G L O S S A R Y
P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L G L O S S A R Y 7 3
Employee Profile
This PeopleSoft Activity-Based Management feature enables time and labor information to be
part of an analysis.
Employee Stock Purchase Plan
A type of statutory stock option plan through which employers grant options to their
employees in order to provide them with additional forms of compensation.
Employee Survey
In PeopleSoft Workforce Analytics, a method for capturing information about the activities
performed by a given employee as well as the amount of time they spend performing each
activity to perform activity-based management.
Employee Survey Report
The Employee Survey Report is an annual regulatory report that the French government
requires from employers with more than 200 employees. In French it is called "Le Bilan
Social". The report is communicated to both labor unions and the government. It provides a
snapshot view of the company over the past 3 years for about 200 indicators.
Employee Training Cost
Amount budgeted to pay for students’ salaries while on training courses.
Employer Identification Number (EIN)
In the United States a company is typically defined as a business enterprise that has a unique
federal Employer Identification Number (EIN) for payroll tax reporting purposes.
Employer’s Liability Insurance Associations (Berufsgenossenschaften)
Social Insurance in Germany is maintained and administered by private organizations that act
as employer’s liability insurance associations. Employers pay out premiums to these
associations, who administer and pay out funds to workers who are injured on the job.
Employment Cost Index (ECI) Adjustment
Annual increase to wages established/permitted by statute.
Employment Equity Computerized Reporting System (EECRS)
Canadian companies are required to report to the Federal Government on employment equity.
PeopleSoft Human Resources contains the Canadian Employment Equity report (PER101CN),
which creates a data interface file to the federal government’s Employment Equity
Computerized Reporting System (EECRS).
G L O S S A R Y
G L O S S A R Y 7 4 P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L
Employment Record Number (EMPL RCD#)
A field in PeopleSoft Human Resources Management Systems and PeopleSoft Workforce
Analytics that indicates an employee has multiple job records in the system. A numeric value
(0, 1, 2) is assigned to each job as a way to uniquely identify that job record.
Encumbrance
A claim against funds. It is a projection of future expenses based on the situation, as we know
it today. Encumbering funds is not the same as spending them or even guaranteeing that you
will spend them. It just means that if the situation as it exists today does not change, you will
spend all of those funds by the end of the fiscal year.
Engineering Bill of Material (EBOM)
A listing of all the parts, raw materials, and subassemblies that form the basis of all item and
product structures. EBOMs differ from MBOMs (Manufacturing Bills of Material) in that
they are not visible within Production Planning or Production Management and are isolated
from Manufacturing.
Engineering Change Order (ECO)
A revision to a blueprint or design, released by engineering to modify or correct a part and/or
bill of material. PeopleSoft Engineering uses ECOs to manage and document required
assembly and component changes.
Engineering Change Request (ECR)
A document that allows you to request manufacturing process improvements and report
product defects directly to the engineering department. When workflow is enabled, ECRs can
also be routed for review and approval, after which they change into ECOs.
Engineering Cost Version
The process of generating cost versions for new and modified configurations based on
engineering bills of material (EBOM) and costing data.
Engineering Workbench
An engineering environment, separate from production, consisting of engineering bills of
material (EBOM), engineering change requests, engineering change orders, EBOM cost roll-
up capability, online BOM comparisons, and seamless integration to a document management
vault.
Engineering Workbench
An engineering environment, separate from production, consisting of engineering bills of
material (EBOM), engineering routings, engineering change requests, engineering change
orders, EBOM cost roll-up capability, online BOM comparisons, and seamless integration to a
document management vault.
G L O S S A R Y
P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L G L O S S A R Y 7 5
Enterprise
In PeopleSoft Time and Labor, all of the business units of the installation site.
Enterprise Performance Management (EPM)
See PeopleSoft Enterprise Performance Management
Enterprise Portal
The PeopleSoft Enterprise Portal is a separate product offering purchased independently of
any other PeopleSoft applications. It can be used with or without any PeopleSoft application.
It can be used as a standalone corporate portal that does not access PeopleSoft data at all.
Enterprise Resource Planning (ERP)
The encompassing term for all the transaction-oriented database applications an organization
deploys across it’s business enterprise. The term includes financial, manufacturing and supply
chain, human resources, and payroll applications, among others.
Enterprise Warehouse (EW)
See PeopleSoft Enterprise Warehouse
Entry Authority
Authorization granted by employees to specific user IDs for entering expense data on their
behalf.
Entry Currency
The currency used to enter budget data.
Entry Event
An automated process that generates multiple debits and credits resulting from single
transactions, to produce standard supplemental accounting entries.
Entry Event Code
Designation of an Entry Event; an identifier or label.
Entry Event Generator
A mechanism that generates standard, supplemental accounting entries based on Entry Event
codes.
Entry Event Process
An accounting transaction. Entry Event processes combine to form Entry Events. For
example, requisition posting is a Purchasing process, and cash clearing is a Payables process.
Each process can involve one or several Entry Event Steps.
G L O S S A R Y
G L O S S A R Y 7 6 P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L
Entry Event Step
Part of an accounting transaction. For example, the BUDG process includes these steps,
among others: prepare allotment budgets, prepare organization budgets, and prepare revenue
estimates. Entry Event steps combine to form Entry Event processes.
Entry On Duty Date (EOD)
Date that indicates when an employee started to work at his/her current agency.
Entry Type
Any activity that creates or updates an item.
EPM (Enterprise Performance Management)
See PeopleSoft Enterprise Performance Management
Equal Employment Opportunity Commission (EEOC)
In the United States the EEOC requires that most companies file one or more reports from a
series named EEO-1 through EEO-9. These reports include counts by federal employment
categories of male and female employees in certain ethnic groups.
Equitization
A process that enables parent companies to calculate the net income of subsidiaries on a
monthly basis and adjust that amount to increase the investment amount and equity income
amount before performing consolidations. For organizations with complicated
parent/subsidiary business unit relationships, this automated process reduces the process time
and reduces the possibility for errors.
Equity Increase
In PeopleSoft Workforce Analytics, Equity Increases are base pay increases granted to bring
an employee’s pay up to some internally specified standard for your organization.
Equivalent Standard Deviation
In PeopleSoft Demand Planning, a Standard Deviation developed during the Model Reset
process that enables you to compare standard deviations from different models. The deviation
is calculated by multiplying the Model Equivalency Factors defined on the Control Group
by the standard deviation.
ERISA (Employee Retirement Income Security Act of 1974)
The U.S. Federal legislation enacted to prevent abuses of employee pension rights by
employers.
G L O S S A R Y
P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L G L O S S A R Y 7 7
Error Exception
A transaction that is stopped because the budget limits would be exceeded if it continued. For
the transaction to proceed, action must be taken, such as canceling or reducing the transaction
amount, increasing the budget amount, overriding the budget limits, or transferring available
funds from another budget.
Error Ratio
The ratio of the statistical Standard Deviation to the base component that gives an indication
of the accuracy of the forecast. The ratio is presented in the PeopleSoft Demand Planning
Audit and Accuracy Review and is calculated during the Forecast Calculation Process.
Estimated Gross
Estimated labor cost associated with reported time (see Managing Time, Understanding time
Reporting Codes).
Estimated Shipments
A group of shipment schedules used to manage sales order requested shipment data and actual
shipment data. Used in conjunction with weight and volume pricing and freight charge
calculations.
Ethnic Code
The Federal Office of Management and Budget (OMB) racial and ethnic census categories
used for classifying individuals in U.S. Government reports.
ETL (Extract-Transform-Load)
See Extract-Transform-Load.
ETL maps
ETL maps provide rules for importing your source data to the data warehouse tables.
Evaluated Receipts Settlement (ERS)
A PeopleSoft Payables feature that matches receipts against purchase orders and generates
vouchers without requiring an invoice.
Evaluations Periods
In PeopleSoft Demand Planning, indicates the number of future periods to use for the
calculation of forecast errors. For example, if the number of evaluation periods is two, then
the forecast error in April 2001 (after posting demand for April) would be determined by
comparing the actual demand for April and the April forecast generated in February 2001.
Evaluation periods are set separately for each view.
G L O S S A R Y
G L O S S A R Y 7 8 P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L
Event
Events are predefined points either in the Application Processor flow or in the program flow.
As each point is encountered, the event fires on each component, triggering any PeopleCode
program associated with that component and that event. Examples of events are FieldChange,
SavePreChange, OnRouteSubscription, and so on.
Event
Occurrence or happening.
Event Class
An event or type of event that results in a change of benefits eligibility for an employee or
dependent. Event classes are prominently used in COBRA and Benefits Administration
processing.
Event Maintenance
The process that enables you to manage ongoing enrollments during a plan year. Changes
involving maintenance include new hires and re-hires, terminations, family status changes,
and changes to benefits eligibility.
Event Rule
Used by PeopleSoft Benefits Administration to determine how events are processed by the
system. Event rules look at the benefit plan options an employee is eligible for and determine
which options the employee can actually choose. Event rules are closely associated with
eligibility rules but it is important to note that they are not the same. Event rules should not be
used to determine eligibility.
Event Trigger
You use triggers to tell the system that when a change takes place to certain data (an event), it
should perform an action automatically. When the event occurs, the system writes a line to a
trigger table. Then when it’s time for the action, the system reads the data from the trigger
table and performs the appropriate action.
EW (Enterprise Warehouse)
See PeopleSoft Enterprise Warehouse.
See also PeopleSoft Enterprise Performance Management (EPM).
Expected Losses
In the financial services industry, the amount the institution predicts it will lose in portfolio
value. Loan loss reserves are set aside to cover the expected losses.
G L O S S A R Y
P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L G L O S S A R Y 7 9
Excepted Service
As defined by 5 USC 2103, the Excepted Service consists of those civil service positions that
are not in the competitive service or Senior Executive Service.
Exception
User or system delivered, defined conditions applied to scheduled, reported or payable time
that require audit or review (see Time Management)
Exception Rules
A rule (s) that is applied to scheduled, reported time, and payable time in order to determine
conditions which require audit or review (see Time Administration).
Exception Severity
The degree of importance associated with an exception. For example, in exception which is a
result of an employee clocking in late may have a Medium severity, while an exception which
is a result of an employee not clocking in has a High severity (see Time Management).
Exception Time Reporting
A method of time reporting where only differences to the schedule are provided (see Time
Reporting).
Excess Plan
A pension plan where the benefit formula provides an increased benefit for Final Average
Earnings above a specified integration level. This compensates for the fact that Social
Security benefits are based only on earnings up to a specified maximum.
Exchange Rate Variance
In PeopleSoft Cost Management, the change in currency exchange rate between the time the
item is received into inventory and vouchered in Accounts Payable.
In PeopleSoft Payables, a matching feature that compares the exchange rate on the purchase
order and the invoice and then copies any variance to PeopleSoft Inventory tables for analysis
and accounting purposes.
Exclusive Pricing
Supersedes all pricing structures in effect for customers and products, except Buying
Agreement, and enables you to drive pricing with a promotional structure. Exclusive pricing
can be set up for a specific time frame and associated with particular orders.
Executive Schedule (EX)
Compensation and pay plan used by the Executive Branch of the federal government.
Statutory pay limits are derived from several of the pay levels within this plan and imposed on
the General Schedule and other existing pay plans throughout the Federal government.
G L O S S A R Y
G L O S S A R Y 8 0 P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L
Exercisable
The option shares that are available to the optionee to exercise.
Exercise
The transaction in which an individual purchases or “exercises” the right to purchase the
option shares. The IRS refers to the purchase of company stock in an employee stock
purchase plan as an exercise.
Exercise Date
The date on which an individual purchases underlying shares from and option grant or
transacts a simultaneous purchase and sale of underlying option shares through a cashless
exercise and collects option profit in cash or shares.
Exercise Price
The price per share required to exercise a stock option.
Exercise Proceeds
Cash, stock or other recognition received by a company as a result of option exercises,
including cash or stock paid by individuals to exercise options and cash company tax savings
from deducting non-statutory option profits at exercise.
Expense Location
Geographic area defined to enable the recording, tracking, and reporting of expense activity.
Expense Location Amount
Authorized spending defined for an expense type in a particular expense location and
currency.
Expense Location Group
Collection of expense locations based on a common classification such as state, country, or
continent.
Expense Type
Means of itemizing various kinds of business expenses. Examples are hotel, dinner, or ground
transportation.
Expense Type Edit
User-defined requirement that mandates input of additional data—such as an airline ticket
number or number of nights in a hotel—when an expense type is selected in an expense report.
G L O S S A R Y
P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L G L O S S A R Y 8 1
Expense Type Group
Expense types that are classified together for reporting and tracking.
Expensed Item
Non-inventory item which may represent software, manuals, documentation, or any item for
which no quantity on hand is maintained, but which can be specified on a bill of material
(BOM). Expensed items can only exist as components on a BOM and cannot have a BOM,
routing, or production area/item definition.
Expiration
The process by which the outstanding shares of an option cease to be exercisable, generally at
the end of the option term. The length of the option term and the date of expiration are
established in the Grant Agreement.
Expiration Date
In PeopleSoft Inventory, the date a lot exceeds its Shelf Life and is no longer acceptable for
fulfillment or consumption. (Expiration Date = Creation Date + Shelf Life)
Expiration Date
The last day of an option term in which the option is canceled and no longer exercisable.
Expiration Grace Period
When you enter a stock action allows the exercise of the already vested shares as of the action
date, the system will calculate the date these shares expire based on the grace period defined
on the Stock Action Rules page for that stock action. The system will automatically cancel
vested shares not exercised at the end of the expiration grace period.
Express Customer
A customer for whom the minimum necessary information is entered.
Expressions
Expressions enable you to create pseudo-columns made up of mathematical calculations based
on actual fields on a table. Since expressions are resolved at run-time, duplicate information is
not stored on the database.
Express Order
An order entry shortcut in PeopleSoft eStore and Mobile Order Management whereby the
customer populates the shopping cart and goes directly to the order summary to checkout,
bypassing any billing or shipment modification screens. Billing and shipping information
defaults in as previously entered.
G L O S S A R Y
G L O S S A R Y 8 2 P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L
External Data
Data from external sources. For instance, in PeopleSoft Workforce Analytics, external data
may include third party salary surveys and benchmark metric surveys.
External Scheme
In the United Kingdom an External Scheme is a vocational training, education and job
placement program involving an employee, an employer and the government.
External System
Any system that is not directly compiled with the PeopleTools servers.
Extra Time
Any hours worked outside of an employee's normal (scheduled/shift) hours or days. Extra
time may be scheduled in advance of when it is worked, and may be subject to special
compensation rules. It may be treated differently than standard time for purposes of Benefit
Entitlement and Administration.
Extraction
A reusable query that specifies what information should be retrieved from the Quality
database.
Extract-Transform-Load (ETL)
The extraction and transport of data from one server to another remote server. In PeopleSoft
budgeting ETL specifically refers to the process by which financial and human resource data
is extracted from PeopleSoft Financials and HRMS and transferred to the PeopleSoft
Enterprise Warehouse which PeopleSoft Budgeting uses to access and record data
transactions. Within PeopleSoft Enterprise Warehouse, data migration typically refers to
information moved from outside sources into the Operational Data Store tables.
Extrinsic Rewards
Tangible rewards that can be given to the individual. Typically categorized as financial and
non-financial rewards. Financial rewards would include direct compensation, indirect
compensation and deferred compensation. Non-financial rewards are provided to the
individually and viewed as a benefit by the individual based on the culture of the organization
such as the size or location of one’s office.
In PeopleSoft Workforce Analytics, tangible rewards given to an individual. Typically
categorized as financial and non-financial rewards. Financial rewards would include direct
compensation, indirect compensation and deferred compensation. Non-financial rewards are
provided to the individually and viewed as a benefit by the individual based on the culture of
the organization such as the size or location of one’s office.
G L O S S A R Y
P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L G L O S S A R Y 8 3
F
Fact
Facts are numeric data values from fields from a source database as well as an analytic
application. A fact can be anything you want to measure your business by, for example,
revenue, actual, budget data, or sales numbers. A fact is stored on a fact table.
Fact Table
A fact table is where facts are stored in the PeopleSoft Enterprise Warehouse.
Fair Labor Standards Act (FLSA)
A federal regulation governing several time and labor issues. FLSA Overtime requires that all
nonexempt employees be paid at a rate of time-and-one-half for all hours over 40 physically
worked during a workweek. This requirement may be superseded by state or local laws when
the lesser law is to the greater benefit of the employee, or by union contract. An FSLA
Workweek is a permanently established, regular workweek for a group of employees.
Fair Market Value (FMV)
The price of a company stock based on the current market value as determined by supply and
demand, or a valuation method. The stock market sets the fair market value for a public
company. For a private company the fair market value is more subjective, but typically
determined by financial factors or set by an outside valuation company.
Fair Market Value Tracking Methods
Methods used to track and report trading activity on various exchanges (i.e. NYSE, AMEX,
NASDAQ, etc…).
Family Medical Leave Act (FMLA)
A federal regulation that protects health benefits and job restoration for employees who must
take a leave from work to care for themselves or family members. FMLA regulations contain
provisions regarding employer coverage, employee eligibility and entitlement, notice and
certification, continuation of health benefits, and job restoration. PeopleSoft Benefits
applications offer FMLA Plans that help employers and employees determine FMLA
eligibility and schedule and track FMLA leave requests.
Federal Employee Group Life Insurance Program (FEGLI)
Generally, if the employee has Federal retirement coverage or is on a temporary appointment
exceeding one year, he/she is eligible to participate in the FEGLI program. Once eligible,
he/she is covered automatically for Basic Life Insurance and premiums will be deducted from
gross salary unless coverage is waived within the first period of eligibility. The program
offers Basic Insurance coverage and three types of optional coverage: Option A (Standard),
Option B (Additional), and Option C (Family).
G L O S S A R Y
G L O S S A R Y 8 4 P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L
Federal Employee Pay Comparability Act (FEPCA)
This law provides a structure and methodology to determine and authorize locality-based pay
adjustments to Federal employees in order to elevate their basic pay to be commensurate with
private sector employees working in the same occupations in the same geographic localities.
It also includes a feature to authorize agencies to make advance salary payments to attract
candidates for open positions which have consistently been hard-to-fill in certain geographic
areas.
Federal Employees' Compensation Act (FECA)
This law provides compensation and medical benefits to civilian employees of the United
States for disability due to personal injury or disease sustained while in the performance of
duty. A feature of this law provides for the continuation of pay (COP) without charge to leave
for up to 45 calendar days due to disability and/or medical treatment following a traumatic
injury. Employees file claims with the U.S. Department of Labor, Office of Worker's
Compensation, which adjudicates the claims and compensates the employing agencies for the
employee's pay and benefits during the claim period.
Federal Employees Health Benefits (FEHB)
Generally, the employee is entitled to coverage by the FEHB program if appointed to a
position with Federal retirement coverage or has been on the rolls on a temporary appointment
for more than one year. The Federal employer shares the cost of the premium (about 75%);
actual premiums depend on the plan selected. If under a temporary appointment, the
employee pays both the employer and employee shares. If the position is part-time, the
employee pays the employee share and a portion of the employer’s share.
Federal Employees Retirement System (FERS)
A retirement plan available to employees of the federal government. FERS covers all
employees appointed to a position in the federal government after January 1, 1987. Coverage
includes Social Security, a basic annuity plan, and a TSP.
Federal Employer Identification Number (EIN)
Used to identify the tax accounts of businesses. Businesses, which have employees or operate
business as a partnership or corporation, must obtain an EIN.
Federal Insurance Compensation Act (FICA)
Employee and employer contributions to Social Security.
Federal Reserve Transit Number
A unique identifier for U.S.-based banks, allowing banks to transfer funds within the Federal
Reserve system.
G L O S S A R Y
P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L G L O S S A R Y 8 5
Feeder Line
A type of production line replenishment used in PeopleSoft Flow Production. If you are using
feeder line replenishment, smaller production lines create subassemblies that feed directly to
your production line.
FEGLI Living Benefits Act
Beginning 7/25/95, a Federal employee who is terminally ill may elect to receive a lump-sum
payment equal to the full amount of basic life insurance only, or a limited portion designated
in multiples of $1000. An election to receive this benefit is irrevocable; the individual is
considered terminally ill if his /her life expectancy is 9 months or less.
FICA (Federal Insurance Contributions Act)
FICA consists of both a Social Security (retirement) payroll tax and a Medicare (hospital
insurance) tax. The tax is levied on employers, employees, and certain self-employed
individuals.
Fictitious Calculations
Fictitious calculation rules perform temporary calculations. A fictitious calculation is a sub-
calculation run during a normal calculation to determine a net that would have been computed
if certain parameters were used. This result is then used for further processing in the normal
calculation. A fictitious calculation is always started from inside a normal calculation, run for
one payee, and run for a specified set of periods.
FIFO (First In First Out)
Method used by companies to record Disqualifying Disposition Income. If a company uses
this method they record the optionees disposition of shares by attributing the shares to the
earliest exercise, purchase or release dates for which shares remain available for sale.
Fill-In Employment
Employment held by persons during the time period after leaving their regular occupation in
anticipation of, but before entering, military service.
Filter
A filter creates a subset of information. Filters are used in templates to limit your information
from a pick list of attribute values.
Final Average Earnings (FAE)
The PeopleSoft Pension Administration function that averages earnings from a specified
period of an employee’s career. The result is used as a component of the pension benefit
formula.
G L O S S A R Y
G L O S S A R Y 8 6 P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L
Final Forecast
The final forecast is the prorated version of the adjusted forecast, summarized to all levels of
the product hierarchy. This is the best-guess version of the forecast that is used to make all
decisions dependent on the forecast.
Final Table Merge Engine
Final Table Merge Engine is used by the PeopleSoft Enterprise Warehouse; it moves enriched
data from one table into another. When you run a job in a jobstream, the immediate results are
stored in temporary tables. At the end of the jobstream, the Merge Engine runs and merges
the output temporary tables into the final tables, where processing can continue.
Financial Accounting
The accounting for a business entity’s assets, liabilities, revenues, and expenses to determine
its net worth and to produce financial statements. Within Generally Accepted Accounting
Principles, a business has some latitude as to when and how to record its financial
transactions, as long as it continues to meet its legal and regulatory requirements. A business’
financial accounting requirements are not necessarily the same as its cost accounting
requirements. The one should not be mistaken for the other (i.e. the extent to which a
company’s financial accounting system meets its cost accounting needs depends on how it has
chosen to describe its chart of accounts and the level at which it has chosen to record financial
transactions.
Financial Instrument
In the financial services industry, a specific product or service sold by a financial institution to
its customers. In terms of the reporting hierarchy, a product falls under a ledger account,
while an instrument falls under a product. A product may be treated like a generic description
or category, while an instrument is a specific instance of a category.
Financial Performance Measures (FPM)
For the financial services industry, the Financial Performance Measures program performs
calculations on financial instruments based on the rules defined in the Financial Calculation
Rules module, and using input from the Cash Flow Generator, Stratification engine, Product
Pricing, and Curve Generator. Its calculations include: measures of duration, option-adjusted
spread and option-adjusted cost for PeopleSoft Funds Transfer Pricing, and Monte Carlo
simulation for PeopleSoft Asset Liability Management.
Financial Product
In the financial services industry, a product or service sold by a financial institution to its
customers. In terms of the reporting hierarchy, a product falls under a ledger account, while
an instrument falls under a product. A product may be treated like a generic description or
category, while an instrument is a specific instance of a category.
G L O S S A R Y
P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L G L O S S A R Y 8 7
Financial Services Instrument
In the financial services industry, products created by financial institutions and sold to retail
customers. Product prices and interest rates are set by the financial institutions and take into
account its customers’ behavioral models.
Financial Statement Simulation
A facility within Planning & Simulation which establishes rules for simulating future period,
or pro-forma, financial statements. The user defines corporate financial policies, such as
corporate tax rates, dividend distribution frequency, and force balancing rules, which are then
applied to cash flows for a given future accounting period. The Financial Statement Simulator
engine drives costs and revenues to accounts on PF_LEDGER_F00 via a scenario.
Financials Warehouse
See Warehouses.
First Year Amount
See 1st Year Amount.
Fixed Basis
The basis option enables you to create the data for the Basis online, as part of the rule. Fixed
Basis is used with the Allocation Manager only. It is available with all methods except when
Period-Based Allocation is being used. The Fixed Basis is a predetermined table that can be
populated online.
Fixed Offering
The offering type is fixed when the end date of each offering is the same for all employees
regardless of the employee’s grant dates.
Fixed Percentage
A fixed percentage value. The source pool amount will be split based on this percentage to get
the target amount. Used with the Allocation Manager.
Fixed Period Requirements
In PeopleSoft Enterprise Planning and Production Planning, a lot-sizing technique that sets the
order quantity to the demand for a given length of time.
Fixed Picking Bin
A dedicated picking location for an inventory item. Fixed picking bins are replenished from
bulk locations when the available quantity falls below the optimal quantity.
G L O S S A R Y
G L O S S A R Y 8 8 P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L
Fixed Plan
A stock purchase offering period where the ending offering date will be the same as the
purchase date. Eligible employees will always purchase stock on the specific purchase dates
and by the purchase rules you define.
Fixed Quantity
An Inventory Policy method that defines a fixed amount of an item to be ordered to meet
replenishment needs. This method can be selected as an inventory policy for order quantity,
safety stock, Reorder Point, and minimum and maximum parameters.
Fixed Source
The fixed source option enables you to create the data for the Source online, as part of the
rule. Fixed Source is used with the Allocation Manager only. It is available with all methods
except when Period-Based Allocation is being used. The Fixed Source is a predetermined
table that can be populated online.
Flexible Credit
Any credit associated with a given benefits program, plan, or type of coverage. Credits based
on an entire program can be applied toward the benefit costs however the employee chooses.
Flexible Hours
Hours during the workday, workweek or pay period during which a time reporter covered by a
flexible work schedule may choose to vary his times of arrival and departure from the
worksite (see Scheduling)
Flexible Spending Account (FSA)
An account to which an employee and (optionally) an employer pledge an annual amount for a
plan year. The employee then submits claims for authorized expenses.
Flexible TimeSpan
A user-defined period into which costs can be collected. Flexible TimeSpans can be as long
or as short as you like—covering multiple years or a single day. The main purpose of Flexible
TimeSpans is to assist you in analyzing costs.
Flexible Work Schedule
A method of scheduling a time reporter’s time that is based on a range of flex hours of start
and stop times and core work hours. This method can be used for scheduling clock and
elapsed time reporters (see Scheduling)
FLSA Status
A PeopleSoft Human Resources term that is used to indicate whether a job is exempt or
nonexempt according to the Fair Labor Standards Act. All employees associated with a
G L O S S A R Y
P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L G L O S S A R Y 8 9
particular job will receive that job’s FLSA Status. FLSA Status is an eligibility determination
factor for PeopleSoft Benefits Administration.
Forecast Attribution
A FSI (financial services industry) transformation process through which forecasted product
originations are pooled and run through the cash flow engine for future periods.
Forecast Calculation Process
In PeopleSoft Demand Planning, the process by which a Statistical Forecast is generated for
each item at each level of the view. When a Forecast Item is set to recalculate, the system
tries several forecast calculation methods and picks the one with the least amount of error.
This process also makes adjustments for promotions and filters for abnormal demand.
Forecast Definition
Forecast definitions are a set of forecasting rules that generally govern multiple forecasts
distinguished by key properties such as products, customers, channels, and so forth.
Forecast Element
Each forecast within a single definition is called a Forecast Element.
Forecast Fulfillment
In PeopleSoft Demand Planning, a process used to manage forecasted demand over a period of
time. The process makes it possible to divide the total forecast demand into portions so that
certain portions can be met, even if the total forecast cannot be met entirely.
Forecast Item
In PeopleSoft Demand Planning, a logical item used as the basis to forecast demand. The
components of a forecast item key are defined for each level in a forecast view.
Forecast Level
See Level.
Forecast Period
A period in time as defined by the calendar for which data is processed through the PeopleSoft
Demand Planning model.
Forecast Start Period/Year
Determines the most recent period for which demand data is available for a forecast view.
This period can also be described as the last actual demand period to have had an impact on
the forecast.
G L O S S A R Y
G L O S S A R Y 9 0 P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L
Forecast View
See View.
Foreign Education
Education acquired outside of any state of the U.S., the District of Columbia, the
Commonwealth of Puerto Rico, a Trust Territory of the Pacific Islands, or any territory or
possession of the U.S.
Form 10-K
A form used for annual reports pursuant to Section 13 or 15(d) of the Securities Exchange Act
of 1934 for which no other form is prescribed.
Form 10-Q
A form used for quarterly reports under Section 13 or 15(d) of the Securities Exchange Act of
1934, filed pursuant to Rules 13a-13 or Rule 15d-13. This report, which public companies are
required to file quarterly with the SEC, provides unaudited financial information and other
selected material.
Form 5500 Participant Count Extract
A PeopleSoft Pension Administration data extract containing data that a plan administrator
needs in order to complete IRS Form 5500, used to report on the number of plan participants.
Form S-8
A form used to register securities offered by a reporting company under its employee benefits
plans, including stock option plans. Also called the Registration Statement under the
Securities Act of 1933.
Form W-2
A form used by employers to provide workers with a statement of wages, tips and other
compensation from the previous year. This form, distributed employees by January 31 of each
year, reflects state and federal taxes, social security, Medicare wages, and tips withheld.
Formula
Element which enables you to define your own formulas for use—gives further flexibility to
define complex organizational needs.
Formula Plan
This compensation distribution plan type is based on a pay out rule, as the pay out rule is
defined. The pay out rule can be based on a flat amount, a percentage, or a data element.
Whereas a Target Plan distributes pay out based on a comparison of a performance measure
against a target, in a Formula Plan the pay out is based just on the pay out rule.
G L O S S A R Y
P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L G L O S S A R Y 9 1
French Professional Elections
French companies employing a certain number of employees must hold elections for selecting
personnel representatives (Délégués du personnel), and members of the Work Council
(Comité d'Enterprise).
Frozen Rate
A rate that is applied to allocate resources to activities in place of the actual, budgeted and
capacity rates calculated by the Activity-Based Management (ABM) Engine.
FTE (Full Time Equivalency)
FTE is the percent of full time the employee should normally work in this job. Full time is
defined by the Standard Hours specified in either the Salary Plan Table or the Default
Standard Hours specified in the Installation Table.
FTP (Funds Transfer Pricing) Adjustments
Adjustments made to the PeopleSoft Funds Transfer Pricing (FTP) base rate, for such factors
as geographic premiums, liquidity premiums, embedded options, or incentive programs.
FTP (Funds Transfer Pricing) Base Rate
In PeopleSoft Funds Transfer Pricing (FTP), this refers to the basic charge or credit that is
applied to a ledger account, a product, or an off-balance sheet position.
FTP (Funds Transfer Pricing)
See PeopleSoft Funds Transfer Pricing.
Full-Time Equivalent
See FTE.
Function
A category of pension calculation. PeopleSoft Pension Administration divides a pension
calculation into nineteen “core functions” such as Service, Final Average Earnings, and
Benefit Formula.
Function Result
The calculation rules for any of PeopleSoft Pension Administration’s nineteen core functions.
These rules match Definitions—the specific parameters for the function—to the Groups of
employees that use that particular definition. Function Result also refers to the value produced
by the rules.
G L O S S A R Y
G L O S S A R Y 9 2 P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L
Fund ID
In the financial services industry, Fund ID is a lookup code used to track investment funds
associated with a financial instrument or account. Provided primarily by the financial analytic
applications to track investment funds for insurance policies.
Funds Transfer Pricing (FTP)
See PeopleSoft Funds Transfer Pricing.
Fungible
This term describes a resource used for multiple activities.
Future Period
Any pay period which is not current and whose close date hasn’t passed (see Time Reporting).
Future Periods
The number of periods of future forecasts maintained by the PeopleSoft Demand Planning
system.
G
Gang Reporting
See Crew Reporting.
General Deduction
Any non-benefit deduction. Examples include charitable deductions, union dues, parking,
garnishments, and bonds. General Deductions are calculated from the General Deduction
Table; Benefit Deductions draw on one of the benefits tables.
General Ledger Distribution
The process and guidelines by which accounting information is transferred from your
PeopleSoft Receivables or Deduction Management system to a general ledger system.
General Schedule (GS)
Compensation and pay plan used by the Executive Branch of the federal government.
Generation Control
Generation control elements allow you to indicate to the system whether to process an element
based upon criteria you define. There are six parameters that control this function and
comprise the definition of the generation control element—HR Status, HR Action/Reason,
Segment Status, Frequency, Formula, and Run Types.
G L O S S A R Y
P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L G L O S S A R Y 9 3
Generic Conversion Factor
A conversion factor that applies universally between two units of measure. The factor is used
in the conversions between levels of PeopleSoft Demand Planning Forecast Items and
Inventory Planning Policy Item.
Generic Process Type
This term applies to Process Scheduler. Process types are identified by a generic process type.
For example, the generic process type "SQR" includes all SQR process types, such as "SQR
Process," "SQR Report," and so on.
Geo RSZ Code
This code is for Belgian employers to track the geographical location for RSZ codes.
Geographic Location Code
In Canada this code is prescribed by the government and refers to the location a business is in.
Giveaway Adjustment Type
In PeopleSoft Order Management, the price break tables are set up to indicate what product
the user receives as a free premium based on defined quantities or prices. The giveaway item
does not have to be the same product that the customer is purchasing. For instance, you may
set up a price break that indicates that a purchase of 100 widgets entitles the customer to one
or more free T-shirts. The system automatically adds an order line for the free item.
Giveaways cannot be applied to the total order.
Goals Matrix
In PeopleSoft Workforce Analytics, a matrix used to create calculation rules for group or
employee performance goals. You can combine and standardize multiple performance goals
into a single, weighted, goal score, against which actual performance is compared. A Goals
Matrix can be used to in conjunction with a pay out distribution plan called a Target Plan.
Grace Period
A period that is a number of hours or minutes before or after a scheduled punch where a time
reporter’s punch is accepted. For Stock Administration, the period of time an optionee has to
exercise an option after termination and before the option expires.
Grade
A range of pay in a graduated scale that includes positions of different occupational groups.
The work performed should be equivalent as to the level of difficulty and responsibility and
the level of qualification requirements of the work. The levels are established and designated
within a specific pay plan by law or regulation.
G L O S S A R Y
G L O S S A R Y 9 4 P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L
Graduate Education
Successfully completed education in a graduate program for which a bachelor's or higher
degree is normally required for admission. To be creditable, such education must show
evidence of progress through a set curriculum, i.e., it is part of a program leading to a master's
or higher degree, and not education consisting of undergraduate and/or continuing education
courses that do not lead to an advanced degree.
Grandfathered Benefit
A benefit that an employee was entitled to prior to a change in the plan and that defines the
employee’s new minimum level of benefits. The change might be caused by a plan merger,
new legislation, or a plan amendment.
Grant
A contractual right giving an individual the option to purchase a specified number of shares of
stock through an Equity Compensation Plan. Also known as an option.
Grant Agreement
The legal document issued by a company defining the number of shares granted, grant price,
vesting schedule and other terms and conditions of the stock option or stock award.
Grant Date
The date the individual begins participating in a stock purchase offering. The date on which
an option or other award is granted. The date the company enters into the grant agreement.
The underlying stock’s fair market value on this date generally derives the option price.
Grant Price
The price per share at which the stock option was granted. This is the price per share the
individual must pay when exercising the option.
Gross Salary
The sum of an employee’s salary and earnings defined as part of gross salary. The gross
salary is used to calculate budget amounts for benefit plans defined as a percentage of an
employee’s salary.
Gross-up
The process used to calculate taxes and resultant gross pay from a check for an exact net
amount.
Group
In PeopleSoft Billing, a specific term for a posting entity composed of one or more
transactions (items, deposits, payments, transfers, matches, or write-offs).
G L O S S A R Y
P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L G L O S S A R Y 9 5
Group
Any set of records associated under a single name or variable in order to run various
calculations in PeopleSoft Business Processes. In Time and Labor, for example, employees
are placed in groups for time reporting purposes, while in Administer Variable Compensation,
groups identify which employees are eligible for what forms of compensation. In PeopleSoft
Pension Administration, you’ll use Custom Statements to define criteria for grouping
employees, then by associating calculation rules (Definitions) with specific Groups, you can
vary rules for different classes of employees.
Group Asset
A financial asset with no cost information. It is used to depreciate the sum of the costs of its
associated group member assets.
Group Asset Depreciation
The depreciation of a group asset calculated using an average service life set by a local
regulatory agency and a calculated group depreciation rate.
Group Coverage (Or Generic) Qualification Standards
Standards prescribed for groups of occupational series that have a common pattern of
education, experience, and/or other requirements.
Group Member Asset
A financial asset with cost information. Cost information for all group members of a group
asset is summed up to the group asset level, where depreciation is calculated.
Group Security
The ability to grant or deny access to groups. You can set up group security by Group ID or by
user ID.
Group Security [Time and Labor]
The ability to grant access to employee time, by providing security through Time and Labor’s
groups functionality. For example, you might want your employees to only access their own
records, or allow your supervisors who handle all of the time input for have access to specific
groups. You can restrict the user from accessing everyone, or allow the user to be able to
access only their own records, or only a specific group. This feature also provides the ability
for employees to report their own time.
Group Type
An indicator of the activity that created the billing group: billing, maintenance, payment,
transfers, or unposted.
G L O S S A R Y
G L O S S A R Y 9 6 P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L
H
Handicap Code
A code that identifies a type of physical or mental impairment that substantially limits one or
more of an employee's major life activities.
Hazard/Disposal Code
An inventory item group sharing a disposal routine.
Headcount
The number of people represented by a given Employee Survey record in the PeopleSoft
Enterprise Performance Management product line.
Health and Safety Executive (HSE)
Health and Safety reporting for your UK operations is sent to the local office of the HSE per
the requirements of the RIDDOR (Reporting of Injuries, Diseases, and Dangerous
Occurrences Regulations).
Health Benefits Code
An alpha/numeric code that identifies each Health Benefit plan.
Health Benefits Effective Date
Date the health benefit plan goes into effect or the effective date of cancellation.
Hierarchy
Hierarchy refers to the relationship between the levels in a dimension.
Highly Compensated Employee (HCE)
An IRS employee category applied to employees who are considered “highly compensated”
according to a federally set standard. This distinction is used for the purposes of
nondiscrimination tests, to determine that Section 401 and Section 129 plans do not
discriminate in favor of highly compensated employees.
HIPAA
The Health Insurance Portability and Accountability Act of 1996. PeopleSoft Benefits
applications enable you to comply with this act, which requires that employers provide
Certificates of Group Health Plan Coverage to employees who have their health coverage
terminated. This certificate lists group health coverage an employee had for the twelve month
period prior to the date coverage ended as a result of termination of coverage. The HIPAA
certificate will be used by subsequent health coverage carriers to evaluate pre-existing
condition clauses, if applicable.
G L O S S A R Y
P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L G L O S S A R Y 9 7
Historical Periods
In PeopleSoft Demand Planning, a component that indicates the maximum number of periods
of historical demand maintained for a Forecast Item within a Forecast View. Historical
periods must be a minimum of two years in order to support the development of seasonal
models based on an item’s demand history.
Historical Rules
An element used to set up rules that retrieve data from prior periods. Historical rules can be
used in formulas and fictitious calculations.
Historical Usage Calculation Method
In PeopleSoft Inventory Planning, a method that defines the set safety stock or minimum
inventory level. The usage is based on the review of historical demand over the number of
effective periods. The historical demand quantity is determined by one of four methods;
maximum possible usage, Lead Time, estimated daily or period use, and static values
calculations.
Hold Grade/Step
Grade/step the employee was in prior to receiving a temporary promotion.
Hold Last Equivalent Increase (LEI)
Date held by an employee for this event prior to receiving a temporary promotion. Necessary
in order to establish the WGI due date if returning to original grade/step.
Hold Position Description
The new position description number that is the result of a reclassification action prior to the
NOA being processed.
Hold Purchase
A flag that tells the system to keep this participant in the purchase process. The hold flag is
maintained at the contribution page.
Hold Within Grade Increase (WGI) Due Date
WGI due date prior to an employee receiving a temporary promotion.
Holding Period
Typically refers to the holding period required for ISO’s and Qualified Section 423 Purchase
Plans, to receive preferential tax treatment on a disposition of shares. See Disqualifying
Disposition.
G L O S S A R Y
G L O S S A R Y 9 8 P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L
Hours Counting Service
A service calculation that uses actual or generated hours to determine the service credited to a
pension plan participant.
Hours Equivalence Service
A service calculation that uses hours to determine service, but that uses a set number of hours
per day, week, or other period worked rather than counting actual hours.
HR Action/Reason Category
A group of related job actions—for example, hire and rehire—treated similarly for pension
purposes in PeopleSoft Pension Administration.
HRMS Warehouse
See Warehouses.
I
Ignore Plan
Complex event processing feature of PeopleSoft Benefits Administration that enables the user
to designate plan types linked to a particular Event Rules/Event Classification combination as
being unaffected by Benefits Administration processing.
Ignore Violations
The ability to report over capacity violations but not to score or repair them during the
optimization process.
Imputed Income
Theoretical income that a company pays on behalf of an employee but the individual does not
actually receive. This “theoretical income” must be added to the employee’s gross wages. In
general, imputed income refers to the value of excess Group Term Life or Dependent Life
coverage.
In Punch
Indicates start of a shift.
In the Money Option
When the fair market value of the stock is greater than the grant price of an option.
G L O S S A R Y
P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L G L O S S A R Y 9 9
INAIL code
In Italy, the INAIL code is used to classify jobs according to the level of risk associated with
the job and the related risk insurance required by the employer. INAIL codes are defined by
the employer.
Incentive Pay Plans
In PeopleSoft Workforce Analytics, pay plans that are formula-driven based on the expected
results defined at the beginning of a performance cycle. Incentive plans are designed for the
individual worker, or for group levels such as teams, business units, divisions, or company-
wide. Incentive plans are used for a variety of reasons; including cost control, alignment of
employee and shareholder interests, and increased focus on specific performance indicators.
Incentive Plans
Pay plans that are formula-driven based on the expected results defined at the beginning of a
performance cycle. Incentive plans can be designed for the individual worker or at group
levels such as teams, business units, divisions or company wide.
Incentive Stock Option (ISO)
For an option to be considered an Incentive Stock Option, it must have the following
characteristics:
• The option must be granted pursuant to a plan which includes the aggregate number of
shares which may be issued under options and the employees (or class of employees)
eligible to receive options, and which is approved by the stockholders of the granting
corporation within 12 months before or after the date such plan is adopted;
• The option must be granted within 10 years from the date such plan is adopted, or the
date such plan is approved by stockholders, whichever is earlier;
• The option is not exercisable after the expiration of 10 years from the date such option
is granted;
• The option price is not less than the fair market value of the stock at the time such
option is granted;
• The option is not transferable by such individual otherwise than by will or the laws of
descent and distribution, and is exercisable, during his lifetime, only by him, and;
• The optionee, at the time the option is granted, does not own stock possessing more
than 10% of the total combined voting power of all classes of stock of the employer
corporation or of its parent or subsidiary corporation.
Incomplete Punch
A punch that cannot be processed (i.e. missing employee ID, invalid date or time).
G L O S S A R Y
G L O S S A R Y 1 0 0 P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L
Incremental Budgeting
A budgeting option during budget development that uses prior year actual or budget values as
a basis and then applies a percentage that increments the base. PeopleSoft Budgeting-specific.
Incumbent
An employee currently assigned to a position.
Indirect Compensation
Typically involves non-cash types of compensation awarded to the individual in exchange for
their contribution to the organization. Common types of indirect pay include health and
welfare benefits (for example, medical, dental, vision, long-term disability, short-term
disability, unemployment insurance), payment for time not worked (for example, holiday,
vacation, sick), and employee services and perquisites (for example, club memberships,
parking, holiday gifts).
Indirect Cost
A cost that is assigned by management to an activity or a cost object. An example is the cost
of office space assigned to an activity.
Individual Occupational Requirements
Requirements, e.g., experience or education, for particular occupational series of positions
within a series and are used in conjunction with a group coverage (generic) standard.
Individual Retirement Record (IRR)
Used by the Office of Personnel Management (OPM) as the basic record for determining the
retirement benefits payable to separated federal employees and their survivors. Employees
covered by the CSRS retirement plan require SF-2806. Employees covered by the FERS
retirement plan require SF-3100. In addition, the SF-2806-1 and SF-3101 are used for
corrections to the IRR. See also Correction to IRR.
Inherit Control Group Policies
In PeopleSoft Inventory Planning, a feature that controls whether the policy for an item is set
explicitly or defaults from the associated Policy Control Group. A series of check boxes
enable you to define which policies to inherit.
Initial COBRA Events
The event which makes an individual eligible for COBRA coverage. Typical initial COBRA
events include loss of benefits eligibility due to termination, reduction in hours, retirement,
and military leave, as well as divorce, death of employee, and Medicare entitlement. See
COBRA and Secondary COBRA Events.
G L O S S A R Y
P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L G L O S S A R Y 1 0 1
INSEE (National Institute for Statistical and Economical Studies) Codes
INSEE is an official statistics and economics organization in France. INSEE codes for your
French company's organizations are used in regulatory reporting.
INSEE PCS (Classification par Catégorie Socio-Professionnelle) Code
Each PeopleSoft Human Resources French Jobcode is linked to a four-digit INSEE PCS, or
social/professional classification code.
In-Service Date
In PeopleSoft Asset Management, the date upon which an asset is placed in service. In-
service date is used in conjunction with an asset's prorate convention to determine Begin Depr
Date.
Inservice Placement
Includes a noncompetitive action in which a position is filled with a current or former
competitive service employee through promotion, reassignment, change to lower grade,
transfer, reinstatement, reemployment, or restorations. Inservice placement also includes
noncompetitive conversion f appointees whose Federal excepted positions are brought into the
competitive service under Title 5 CFR 316.702, and Department of Defense/Nonappropriated
Fund (DOD/NAF) and Coast Guard NAF employees whose positions are brought into the
competitive service.
Insider
An officer, director or principal shareholder of a publicly owned company and members of his
or her immediate family. This category may also include other employees of the company and
people who obtain nonpublic information about the company.
Insider Trading
When a person trades a security while in possession of material non-public information in
violation of a duty to withhold the information or refrain from trading. The securities law
broadly prohibits fraudulent activities of any kind in connection with the offer, purchase, or
sale of securities.
Instance
A row of data on the Positive Input table. Instances of positive input can be entered manually,
or can be system generated. They can also be received from other applications, such as
PeopleSoft Time and Labor.
Integration Level
The salary level in a defined benefit excess plan at which a higher benefit rate becomes
applicable. For example, the following formula uses a $10,000 integration level: 1% of Final
Average Earnings up to $10,000 plus 1.75% of Final Average Earnings over $10,000.
G L O S S A R Y
G L O S S A R Y 1 0 2 P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L
Integration Template
A high-level template that defines the integration between PeopleSoft Projects and your other
financial applications. Each integration template you create defines a specific set of business
units from your other financial applications. Each project is then assigned an integration
template containing this preset integration information. You can use Integration Templates to
set up joint ventures, and new transactions added to that project will reflect the business units
defined in the integration template.
Intensity
The cost for each unit of the activity driver.
Interest
Some companies pay interest on the monies that are being withheld from employees’
paychecks. The interest plus the employees’ stock purchase contributions are used to
purchase stock at the end of the purchase period.
Interest Rate Modeling
An FSI feature that allows you to model interactively interest rate scenarios for Asset Liability
Management, and to run rate scenarios and analysis in real time.
Interest Rate Sensitivity Model
In the financial services industry, this support module describes in granular terms how a group
of customers holding a specific type of instrument with a particular interest rate will respond
to changes in interest rates in the market.
Interface Loader
An SQR delivered with PeopleSoft Asset Management that is used to transfer load lines into
the PeopleSoft Asset Management loader tables.
Internal Data
Data from PeopleSoft ERP systems, or other legacy ERP systems used by your organization.
Interpolation
To calculate a value of a function, or series, between two known values.
Interunit Account
The account for each business unit to which other business units in the same corporation refer
when they need to distribute amounts across business units. These accounts are used to keep
the individual ledgers in balance when a single transaction affects multiple business units.
G L O S S A R Y
P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L G L O S S A R Y 1 0 3
Inter-Unit Drivers
Drivers that provide a means of establishing relationships between the cost objects of one
organization with the supporting activities of the organizations that share business units and
models.
Interunit Transaction
A transaction that involves moving amounts from an account in one PeopleSoft General
Ledger business unit to an account in another General Ledger business unit.
InterUnit Transfer
A transfer that occurs between different business units.
IntraUnit Transfer
A transfer that occurs within one business unit.
Intrinsic Rewards
A reward that is generated by the worker internally such as job satisfaction, as opposed to
Extrinsic Rewards which are tangible rewards.
Inventory Adjustment
A process that enables you to change the quantity of an item in the inventory system to match
the actual physical quantity found in the Storage Location.
Inventory Business Unit
Usually a warehouse. You establish a separate inventory business unit (IBU) for any one of
the following reasons: 1) You want on hand visibility to a specific location of your business
that manages inventory. 2) You want to define replenishment rules for a specific location of
your business that manages inventory. 3) You maintain standard and average costs in a
specific location of your business that manages inventory.
Inventory Cost Element
A cost that can be associated with inventory items and inventory transactions. Examples
include freight, overhead, and transportation. Each cost element has a unique cost code.
Inventory Item
A tangible commodity that is stored in an Inventory business unit (Ship From warehouse).
Inventory Location
See Storage Location.
G L O S S A R Y
G L O S S A R Y 1 0 4 P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L
Inventory Policy
In PeopleSoft Inventory Planning, a set of rules that controls how inventory policy values are
calculated for items. Inventory policy is defined at the Policy Control Group and
stockkeeping-unit levels. The elements that make up inventory policy are order quantity,
safety stock, Reorder Point, and minimum and maximum policies.
Inventory Transaction
An event that moves inventory into, within, or out of the inventory business unit. Examples
include material transfers, inventory adjustments, and standard issues.
Inventory Transaction Group
An identifier that categorizes transactions by type for costing purposes. For example, you can
group all types of interunit transfers together.
Invoice Format Identifier
An identifier for the formatting options that determine the sorting and summarization levels of
invoice information.
IRC 423 (Internal Revenue Code 423)
The section of the IRC that defines a Qualified Employee Stock Purchase Plan.
IRR Fiscal Data Accumulation
This report accumulates all retirement deductions for employees, as well as any LWOP and
any basic pay that was received when an employee was not covered by the CSRS or FERS
retirement plans.
IRR Remarks
Special remarks that are documented on an employee's IRR. IRR Remarks can be set up
ahead of time and can be system-entered text or employee-specific.
IRR Status
IRRs can be in pending or final status. Those in pending status can be updated and corrected.
A final status indicates that the IRR has been processed and can't be updated or corrected
except through a Correction IRR or a Supplemental IRR.
IRR Worksheet
A preliminary IRR form that enables an agency to print a pending IRR for a separated
employee, review it and make corrections, if necessary. Agencies can also use the IRR
Worksheet to view a current IRR for an active employee.
G L O S S A R Y
P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L G L O S S A R Y 1 0 5
ISO IRS $100K Limit
The limit the IRS places on the exercisable value of Incentive Stock Options (ISOs) of $100K
per calendar year based upon the fair market value at the time of grant (Section 422 of the
Internal Revenue code).
ISO to NQ Grace Period
The period of time after which an Incentive Stock Option is treated as a Non-Qualified Stock
Option for tax purposes upon the termination of employment according to Internal Revenue
Code Sections 421 and 422. Depending on the termination reason the option is treated:
• If the termination reason is for any reason other than death or disability, and an
exercise occurs more than three months from the termination date, the system
withholds taxes as if the option is a non-qualified stock option.
• If the termination reason is disability, the system withholds taxes if an exercise occurs
more than twelve months from the termination date.
• If the termination reason is death, the system always treats the option as an ISO.
Issue
See Material Issue.
Issuer
A legal entity that has the power to issue and distribute a security.
Item
See Inventory Item Planning Item or Receivables Item.
Item Content Provider
Third-party software consisting of web-based catalogs of item and price information. These
systems benefit the design and purchasing of new products by accelerating item location,
maximizing design reuse, and reducing acquisition costs. PeopleSoft Purchasing,
Engineering, and Inventory integrate to Item Content Providers, and the information is used by
many other PeopleSoft applications.
Item Rounding Rules
A set of rules determining how fractional values are rounded so that calculations result in
whole numbers. Rounding rules are used in conjunction with Quantity Precision Rules.
Item Simulation
In PeopleSoft Demand Planning, a process that enables you to interact with the forecast in a
manageable manner and perform "what-if" analysis by comparing the effects of different
forecast models.
G L O S S A R Y
G L O S S A R Y 1 0 6 P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L
Item Type
An identifier that defines inventory items at a very high level, and may include sets of Item
Families. For example, the families Computer Items and Office Furniture might be
categorized by types like Outside Manufacturing, Finished Goods, and Work In Progress.
Item-Specific Conversion Factor
A conversion between the same two units of measure when the measurements have a different
value for an item. For example, a conversion between packaging unit and stocking unit.
Iterative Processing
Refers to a concept on only re-calculating those payees who have had changes and need to be
recalculated (if you choose to run your payroll multiple times before actually finalizing it).
This concept saves you a lot of time as you only have to recalculate those payees who have
had a data change or who you indicate you would like to be recalculated.
J
Java Server Handlers (JSH)
The JSH manages network connectivity, making service requests from the Jolt Repository,
and translating Tuxedo buffer data into the Jolt buffer.
Java Station Listeners (JSL)
The JSL handles the work of the client connection, tracking client messages, and session
handoff.
Job Code
An ID for a job as defined on the Job Code table.
Job Code Components
The pay components assigned to a job code by associating rate codes with job codes on the
Default Compensation page or the Non-Base Compensation page of the Job Code table.
Job Code Cost
Evaluation of salaries for specific job codes.
Job Compensation Rate
The compensation rate of the corresponding job row.
G L O S S A R Y
P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L G L O S S A R Y 1 0 7
Job Events
Actions relevant to an employee’s employment—such as a hire, transfer, or termination—that
can affect benefit program or plan eligibility. Used by PeopleSoft Benefits Administration.
See Event Class.
Job Order Cost Accounting
A cost accounting method that attempts to develop a discrete cost for each job performed or
product produced. Only the material, labor, and overhead required to complete the job are
attributed to the job cost.
Joint and Survivor Payment Option
A form of pension payment in which benefits are paid for the life of the participant and a
beneficiary. Should the beneficiary outlive the participant, the benefit continues (often in a
reduced amount) for the life of the beneficiary.
Joint Staffing Report
In the United Kingdom governmental agencies are required submit the Joint Staffing Report.
Although it is mainly designed for government sector organizations, commercial organizations
may also use this SQR to provide a summary of their staffing by department, job code, gender
and full/part time employment status.
Jolt
A BEA/Tuxedo companion product that runs on an application server domain and is used to
listen for Web Client Java requests and transfer them to Tuxedo.
Journal Code
The second highest level of three categories for defining a financial transaction (or document),
necessary when using document sequencing. Examples of journal code are domestic sales and
export sales. This category is preceded by journal type and followed by document type.
Journal Generator Template
A table containing defaults to be used in journal generation. PeopleSoft Asset Management
and Billing require one journal generator template for each transaction type.
Journal Line
A record storing a double-sided, balanced entry for a given journal. A single journal usually
includes multiple lines. The sum of the monetary amounts for the journal lines in one journal
totals zero (debits = credits).
Journal Template
A list of the characteristics of the general ledger journal entries that will be created from your
PeopleSoft Receivables system.
G L O S S A R Y
G L O S S A R Y 1 0 8 P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L
Journal Type
The highest level of three categories for defining a financial transaction (or document),
necessary when using document sequencing. Examples of journal types are sales journal and
purchase journal. This category is followed by journal code, then document type within the
journal code.
Journal Voucher
A PeopleSoft Payables voucher that enables you to make accounting entry modifications
while keeping your PeopleSoft General Ledger and Payables systems in sync. Like the
adjustment voucher, the journal voucher is linked to an existing voucher.
K
Kanban ID
A unique identifier used to track Kanban cards and replenishment requests when using
PeopleSoft Flow Production.
Keep Ledgers in Sync
An option in PeopleSoft General Ledger that defines how a transaction should be posted—to
all ledgers in a ledger group as opposed to only a single specified ledger.
Key
See ChartKey.
Key
One or more fields that uniquely identify each row in a table. Some tables contain only one
field as the key, while others require a combination.
Key Performance Indicator (KPI)
KPI is used by the PeopleSoft Performance Management analytical applications. KPIs are
high-level measurements of how well an organization is doing in achieving critical success
factors. A KPI defines the data value or calculation from the Data Warehouse tables upon
which an assessment is determined.
KPI (Key Performance Indicator)
See Key Performance Indicator.
Knowledge, Skills, And Abilities (KSA)
Also known as Competencies, these are attributes required to perform a job and are generally
demonstrated through qualifying experience, education, or training. Knowledge is a body of
information applied directly to the performance of a function. Skill is an observable
G L O S S A R Y
P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L G L O S S A R Y 1 0 9
competence to perform a learned psychomotor act. Ability is competence to perform an
observable behavior or a behavior that results in an observable product.
L
Labor Costs
Actual expenditures associated with salary portion of time reporter expense.
Labor Dilution
A process that occurs after the Labor Distribution process in PeopleSoft Time and Labor. The
labor dilution process takes the costs that the payroll system has calculated for payable time,
determines an average or rate per hour, and applies the average amount evenly across all
reported hours for the day.
Labor Distribution
The process of distributing payroll expense to the corresponding payable time entries
generated in PeopleSoft Time and Labor.
Labor Distribution Amount
An actual labor cost associated with reported time.
Last Equivalent Increase (LEI)
Reflects the effective date of the last step received in grade or the last promotion, whichever is
most current (does not include QSI). Used as the basis to establish an employee's WGI due
date.
Last Physical Counting Event
The last date the inventory item was counted. This information is stored with each inventory
item.
Last Purchase Date
The item's most recent purchase date in the inventory business unit.
Last Putaway Date
The item's most recent putaway date in the inventory business unit.
Last Putaway Document Number
The item's most recent putaway document identification number in the inventory business
unit.
G L O S S A R Y
G L O S S A R Y 1 1 0 P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L
Last Receiving Date
The item's most recent receipt date in the inventory business unit.
Last Shipping Date
The item's most recent ship date in the inventory business unit.
Last Shipping Document Number
The item's most recent shipping document identification number in the inventory business
unit.
Law Enforcement Officers (LEOs)
Positions within the Federal government involving law enforcement. Under FEPCA, many of
these positions are entitled to additional special pays.
Lead-Time Estimated Usage
An inventory planning method for calculating historical usage of an item. The historical
demand is prorated on a daily basis and then multiplied by the number of days lead time for
each effective historical period. The maximum period value is then used as the safety stock or
minimum stock level. This method should be used for items that have a steady demand
pattern throughout each period.
Lead-Time Period Usage
An inventory planning method for calculating historical usage of an item. The purchase lead
time is rounded up to a specified number of periods. The historical demand is calculated as the
maximum usage during these periods and the safety stock or minimum-stock level is set to
this value.
Leave
Time entitled to an employee as a benefit, such as, Sick, Vacation, STD, and LTD. This
process is managed by HRMS (see Time Reporting).
Leave Accrual Processing
Processing of leave accruals is used to maintain employee leave balances. All leave benefit
plans accrue leave by length of service or number of hours worked. Leave accrual processing
is used to determine the employee’s leave accrual award and resulting leave balance.
Leave Accruals
Hours that employees earn to use at another time, such as annual leave and sick leave.
Leave Plan
A method for earning and managing leave time.
G L O S S A R Y
P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L G L O S S A R Y 1 1 1
Leave Without Pay (LWOP) Total (Cumulative)
An employee's cumulative number of hours of leave without pay (LWOP).
Ledger Group
In PeopleSoft General Ledger, a group of ledgers consisting of one primary ledger
andsecondary ledgers.
Ledger Mapping
Ledger mapping is a process that enables you to relate expense data from your general ledger
accounts to resource objects. Multiple ledger line items can be mapped to one or more
resource IDs. You can also use ledger mapping to map dollar amounts (referred to as rates) to
business units. You can map the amounts in two different ways: an actual amount that
represents actual costs of the accounting period, or a budgeted amount that can be used to
calculate the capacity rates as well as budgeted model results. In the PeopleSoft Enterprise
Warehouse (EW), Ledger Mapping enables you to map general ledger accounts to the EW
Ledger table.
Ledger Template
A table containing records and fields common to all ledgers that ensures that all ledgers
specified in a ledger group share the same physical layout.
Ledger Type
The unique combination of a single ledger, scenario, and fiscal year. Multiple ledger types
make up a ledger type set.
Ledger Type Set
A collection of ledger types, the members of which will represent the members of your ledger
type dimension.
Legend ID
A way of recording information that is displayed upon the Issuance Instruction Report. Can
be used to record a notice that should appear on the back of a stock certificate indicating that
the shares represented are "Restricted Securities." Can also be used to indicate how shares
should be processed, as in the case of Swaps, Trades, Repurchases and SAR Exercises.
Level
A section of a tree that organizes groups of nodes.
Defines a set of Forecast Item with a common key structure. Each level is related in a
hierarchical definition with other levels in the view. A level definition contains descriptive
and control data that relates to the operation of the forecast at each level within the view.
G L O S S A R Y
G L O S S A R Y 1 1 2 P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L
Level
The section of a tree that organizes groups of nodes.
Level Income Payment Option
An annuity form of pension payment in which payments are increased in early years (prior to
eligibility for Social Security benefits) and decreased in later years when Social Security
benefits are also received. The goal is to provide a relatively constant total retirement income
both before and after Social Security eligibility.
Life Profile
In PeopleSoft Demand Planning, a feature that enables you to establish product forecasts
based on predefined patterns in an item's life cycle.
Lifecycle (of Reported Time)
A representation of time through the various stages of Time and Labor; includes processing of
current, future, and previous period time from scheduling and time capture through Time
Administration and distribution.
LIFO (Last In First Out)
Method used by companies to record Disqualifying Disposition Income. If a company uses
this method they record the optionees disposition of shares by attributing the shares to the
most recent exercise, purchase or release dates for which shares remain available for sale.
Line-Item Budgets
The budget amounts associated with ChartField distributions that make up an organization’s
budget. Line-item budgets include personnel costs as well as operating and maintenance
costs. They also include revenue estimates. PeopleSoft Budgeting-specific.
Line Schedule Editor (LSE)
PeopleSoft Production Planning utility or tool that displays production tasks for multiple
products on multiple resources across multiple periods of time.
Literal Mapping
In PeopleSoft Demand Planning, a mapping option for formatting data that is common to all
records being imported. This enables you to set an available field value for all the loaded
rows.
Load
The feature that initiates a process to automatically load information into a PeopleSoft
application—for example, populating the PeopleSoft Benefits database with plan-level
election information.
G L O S S A R Y
P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L G L O S S A R Y 1 1 3
Load Activation
Load Activation enables you to specify exactly which part of your Data Mart to build,
including security. You set up load activation on the Load Activation page.
Load Planning
The PeopleSoft Inventory feature that picks, packs, and ships orders by Load ID. Load
Planning is also used to estimate shipping weight, volume, and charges.
Loader Table
Any table in PeopleSoft Asset Management used to store load lines before they are loaded into
the system as open transactions. The loader tables comprise INTFC_FIN, INTFC_PHY_A,
and INTFC_PHY_B.
Loan Exercise
A form of cash exercise, typically requiring a loan agreement and a promissory note.
Local Code
In PeopleSoft Demand Planning, a type of validation used for a user-defined field code. If a
user-defined field is marked to require local table validation, User-Field Code are used to
determine the list of valid values for the field.
Local Functionality
Local functionality is the set of information in PeopleSoft HRMS that is available for a
specific country. You can access this information when you click on the appropriate country
flag push button in the global window, or when you access it by a local country menu.
Location Accounting
An accounting method that captures and records material movement within the warehouse,
providing accounting visibility based on where the inventory resides. You can designate
certain Storage Area as raw material, WIP, or finished goods by assigning the corresponding
account ChartField (account, department, product, and project ID) to the storage area. All
inventory locations in a storage area use the storage area account.
Location Code
Locations enable you to indicate the different types of addresses a company has—for example,
one to receive bills, another for shipping, a third for postal deliveries, and a separate street
address. Each of these addresses has a different location number. Every customer role must
have a primary location, which will be used throughout the system on all panels that display a
customer address. The primary location—indicated by a 1—is the address you use most often
when contacting the customer, and may be different from the customer's main address.
G L O S S A R Y
G L O S S A R Y 1 1 4 P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L
Location Summary
A Picking Plan option that sorts the picking plan according to the highest-level sort options
defined and prints the order lines and the total item quantity to pick from each Storage
Location. Because the layout of the printed report reflects the actual positions of stock to be
picked, personnel can follow a serpentine path through the warehouse, fulfilling all orders on
the picking plan without revisiting locations.
Lock for Confirm
A flag on the Pay Line record that enables users to access the database 7 days a week, 24
hours a day, without affecting or interrupting payroll processing. Issues a warning message
“A payroll is currently in process for this employee. This data will not be processed until the
next payroll."
Log file
One way that you can monitor the build process is to review the log files that the build process
automatically generates. Keep in mind that the log file is entirely separate from the script file;
do not confuse the two. How much information that the log file contains is up to you. You
can set up your logging so that all status (both good and bad) appears in the log, or you can
specify that just the errors or warnings appear in the log. This section describes the options
you can specify in regards to the Build log file.
Long-Term Variable Compensation
In PeopleSoft Workforce Analytics, a component of direct compensation that consists of long-
term payments to an employee in the form of stock programs, and deferred compensation.
Lookup Codes
In the financial services industry, these are user-defined codes that enable the system to define
and categorize incoming Instrument table information. They also provide a means for you to
report on specific data, such as treasury position, balance type, and ledger account.
Lot Status
The status assigned to a lot. In PeopleSoft Inventory, a lot’s status can be Hold, Open,
Rejected, or Restricted.
Lump Sum
A tax method that determines withholding based on the Canadian Lump-Sum tax table.
Lump Sum Payment Option
A form of pension payment in which some or all of a participant's benefit is paid as a single
sum.
G L O S S A R Y
P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L G L O S S A R Y 1 1 5
Lump Sum Reporting
A Time and Labor process that enables you to report time in a lump sum of hours or units for
a single Time Reporting Code, and quantities of time. The system uses a batch process to
gather the information you enter, perform edits, and update the daily time tables. The system
uses the default assignments you establish for workgroups, taskgroups, shifts and so on.
M
Maintenance Worksheet
A work space for creating write-offs, matches, or adjustments to clean up posted items.
Manage Base Pay Structure
See Base Pay Structure
Manage Compensation Planning
A PeopleSoft Workforce Rewards module that facilitates modeling and analysis of
compensation costs across organization units, specific job classifications, or groups. You can
focus on the impact of changes to workforce size, or on changes to fixed and variable
compensation elements, and determine their effects on current and future payroll costs.
Manage Market Compensation
A PeopleSoft Workforce Rewards module you use to match your company’s jobs to similar
jobs found in published market compensation surveys. You then calculate a target market rate
based on a weighted average from multiple surveys. This market rate is then used to assess
your company’s gap to market and to perform cost impact analysis.
Manage Retention Planning
A PeopleSoft Workforce Rewards module that enables organizations to analyze the factors
that lead to employee turnover, and how retention of key employees affects business
performance and goals.
Manual Checks
Any checks calculated and prepared outside of the PeopleSoft Payroll system that you must
enter into the system manually.
Manual Count
A PeopleSoft Inventory procedure in which you enter the actual count data and then create the
counting event with its header, item records, and count quantities.
G L O S S A R Y
G L O S S A R Y 1 1 6 P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L
Manual Events
Events that are inserted by the user manually through the BAS Activity table. Events are
actions that occur, which potentially change employee benefit coverage eligibility—see Event
Class for more information. Used by PeopleSoft Benefits Administration.
Manufacturing Cost Element
A particular category of an item's cost. For example, when you produce a subassembly that
has a cost of $100, the cost can be broken down further into material costs, labor costs, and
overhead costs.
Manufacturing Execution Systems (MES)
Third-party system that enables detailed planning and execution of production activities from
production order release to completing finished goods. PeopleSoft Manufacturing integrates
to MES.
Manufacturing Task
Any job that can be performed within your manufacturing facility. A manufacturing task is
associated with the work center in which the task is completed.
Map File
A file that defines the relationship between fields in a third-party system and PeopleSoft
Demand Planning tables.
Mapper Type
This defines whether you are mapping actual or budgeted general ledger line items to resource
ID within PeopleSoft Enterprise Performance Management.
Marginal Tax Rate
The tax rate that applies to the next dollar of income generated.
Market Compensation
A compensation review process in which you match your company’s jobs to similar jobs
found in published market compensation surveys, for the purpose of establishing new target
market rates. Also referred to as Market Based Pricing or Market Analysis.
Market Capitalization
The value of a corporation as determined by the fair market value of its issued and outstanding
common stock. It is calculated by multiplying the number of outstanding shares by the current
fair market value of a share. Analysts look at market capitalization in relation to book, or
accounting, value for an indication of how investor’s value a company’s future prospects.
G L O S S A R Y
P E O P L E S O F T P R O P R I E T A R Y A N D C O N F I D E N T I A L G L O S S A R Y 1 1 7
Market Rate
Compensation rates, usually for regular base compensation or total cash compensation, found
in published salary surveys. You use the Market Compensation module in PeopleSoft
Workforce Rewards to age and weight this data, to create market rates you can compare
against your organization’s current pay rates.
Mark-to-Market (MTM) Model
In the financial services industry, the reevaluation of a portfolio’s position at current market
levels.
Market Variance
A comparison of the difference between an individual's, or group's, actual compensation, and
available market compensation data for a comparable population in industry. Market
compensation data is usually tied to job codes, and comparisons are usually made between
similar jobs. Although the variance to market can be evaluated for any of the compensation
components in the Compensation tree hierarchy (such as Total, Direct, or Base), market
compensation data is most typically available for, and used in evaluating Base Pay (Base
Salary). The main point of reviewing the market variance is to evaluate how well your
workforce is paid in comparison to both prevailing compensation in industry, and your own
organization's compensation strategy.
Mass Adjustment
A process of applying an amount or percentage change to one or many line item budgets at
once. PeopleSoft Budgeting-specific.
Mass Cancellation of Requisitions and Purchase Orders
A utility that allows you to select and cancel groups of requisitions and purchase orders. You
can use this utility during the year as well as at year-end in preparation for closing. The utility
enables you to specify ChartField criteria for selecting documents for cancellation. For
example, you can select all requisitions or purchase orders for a particular fund and
organization, which have a remaining balance. Then you may select a subset of those records
to approve for cancellation.
Mass Change
A user-configurable entity that defines the movement of data between the tables that store
your business information. Mass Changes enable you to define the criteria by which you
move or replace data in your tables. Based on the configuration of your system, Mass Change
dynamically builds data access and gives you complete control over your system processing.
Mass Change Template
The foundation for defining mass changes. Mass change templates enable you to control
which fields will be available for the operator to specify when defining a mass change, and
whether those fields will be used as selection criteria or defaults.