Progress Client Deployment Guide
Progress Client Deployment Guide
Client Deployment
Guide
©
2001 Progress Software Corporation. All rights reserved.
Progress® software products are copyrighted and all rights are reserved by Progress Software Corporation.
This manual is also copyrighted and all rights are reserved. This manual may not, in whole or in part, be
copied, photocopied, translated, or reduced to any electronic medium or machine-readable form without
prior consent, in writing, from Progress Software Corporation.
The information in this manual is subject to change without notice, and Progress Software Corporation
assumes no responsibility for any errors that may appear in this document.
The references in this manual to specific platforms supported are subject to change.
Progress, Progress Results, Provision and WebSpeed are registered trademarks of Progress Software
Corporation in the United States and other countries. Apptivity, AppServer, ProVision Plus, SmartObjects,
IntelliStream, and other Progress product names are trademarks of Progress Software Corporation.
SonicMQ is a trademark of Sonic Software Corporation in the United States and other countries.
Progress Software Corporation acknowledges the use of Raster Imaging Technology copyrighted by
Snowbound Software 1993-1997 and the IBM XML Parser for Java Edition.
©
IBM Corporation 1998-1999. All rights reserved. U.S. Government Users Restricted Rights — Use,
duplication or disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
Progress is a registered trademark of Progress Software Corporation and is used by IBM Corporation in the
mark Progress/400 under license. Progress/400 AND 400® are trademarks of IBM Corporation and are used
by Progress Software Corporation under license.
Java and all Java-based marks are trademarks or registered trademarks of Sun Microsystems, Inc. in the
United States and other countries.
Any other trademarks and/or service marks contained herein are the property of their respective owners.
.
May 2001
Preface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ix
Purpose . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ix
Audience . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ix
Organization of This Manual . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ix
How to Use This Manual . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . x
Typographical Conventions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . x
Syntax Notation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xi
Progress Messages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xv
Other Useful Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xvii
Getting Started . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xvii
Development Tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xviii
Reporting Tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xix
4GL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xx
Database . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxi
DataServers. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxi
SQL-89/Open Access . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxi
SQL-92 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxii
Deployment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxii
WebSpeed. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxiii
Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxiii
iv
Contents
v
Contents
Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Index–1
vi
Contents
Figures
Figure 2–1: Connection Denial When the User Count Is Exceeded . . . . . . . . . . . . 2–13
Figure 4–1: Sample Statistics (-y) Output . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4–7
Figure 4–2: Sample Segment Statistics (-yd) Output . . . . . . . . . . . . . . . . . . . . . . . 4–8
Figure 5–1: Windows Environment Information Search Path . . . . . . . . . . . . . . . . . 5–6
Figure 5–2: Sample Progress Initialization File in Windows . . . . . . . . . . . . . . . . . . 5–8
Figure 5–3: Sample buildenv Script on UNIX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5–35
Figure 5–4: Parts of a PROTERMCAP Entry . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5–37
Figure 6–1: Loading R-code from a File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6–3
Figure 6–2: Loading R-code from a Standard Library . . . . . . . . . . . . . . . . . . . . . . . 6–4
Figure 6–3: Loading R-code from a Memory-mapped Library . . . . . . . . . . . . . . . . 6–5
Figure 7–1: Sample Application Startup Procedure (UNIX) . . . . . . . . . . . . . . . . . . 7–9
Figure 7–2: Sample Application Startup Procedure (NT) . . . . . . . . . . . . . . . . . . . . 7–10
Figure 7–3: Sample Output-routing Table . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7–11
Figure 7–4: Sample Printer-control Table . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7–14
Figure A–1: Build Process Steps . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A–2
vii
Contents
Tables
Table 3–1: Security Permissions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3–4
Table 3–2: Access Restrictions for Tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3–4
Table 4–1: Startup Parameters for Tuning the Execution Environment . . . . . . . . . 4–4
Table 4–2: Startup Parameters for Tuning R-code Libraries . . . . . . . . . . . . . . . . . 4–5
Table 4–3: Startup Parameters for Monitoring R-code Activity . . . . . . . . . . . . . . . . 4–6
Table 4–4: Temporary Client Session Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4–11
Table 4–5: Startup Parameters for Tuning Sort Performance . . . . . . . . . . . . . . . . . 4–12
Table 5–1: DLL Files for AS/400 Communications . . . . . . . . . . . . . . . . . . . . . . . . . 5–10
Table 5–2: User-definable Key Bindings in Windows . . . . . . . . . . . . . . . . . . . . . . . 5–26
Table 5–3: Static Key Bindings in Windows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5–28
Table 5–4: User-definable Key Bindings in Windows . . . . . . . . . . . . . . . . . . . . . . . 5–29
Table 5–5: Environment Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5–32
Table 5–6: Windows Installed Icons . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5–33
Table 5–7: Syntax for Specifying String Values . . . . . . . . . . . . . . . . . . . . . . . . . . . 5–39
Table 5–8: Alphabetical Listing of Capability Mnemonics . . . . . . . . . . . . . . . . . . . . 5–43
Table 5–9: Data Types and Operators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5–46
Table 5–10: Vermont Views Key Function Mnemonics . . . . . . . . . . . . . . . . . . . . . . . 5–48
Table 5–11: Syntax for Specifying Cursor Motion String Value . . . . . . . . . . . . . . . . 5–52
Table 5–12: Progress PROTERMCAP Key Functions . . . . . . . . . . . . . . . . . . . . . . . 5–53
Table 5–13: Setting the Terminal Type . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5–63
Table 5–14: Setting the PROTERMCAP Environment Variable . . . . . . . . . . . . . . . . 5–64
Table 5–15: Reverting to the Default PROTERMCAP File . . . . . . . . . . . . . . . . . . . . 5–64
Table 6–1: PROLIB Utility Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6–10
Table 6–2: List (-list) Parameter Library Information . . . . . . . . . . . . . . . . . . . . . . . . 6–16
Table 6–3: List (-list) Parameter File Information . . . . . . . . . . . . . . . . . . . . . . . . . . 6–16
Table 7–1: Standard Printer Control Sequences . . . . . . . . . . . . . . . . . . . . . . . . . . 7–12
Table A–1: PROBUILD Software Requirements . . . . . . . . . . . . . . . . . . . . . . . . . . . A–4
Table A–2: PROBUILD Product List on UNIX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A–7
Table A–3: Configurable Elements on UNIX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A–11
Table A–4: PROBUILD Product List in Windows . . . . . . . . . . . . . . . . . . . . . . . . . . A–17
Table A–5: Configurable Elements in Windows . . . . . . . . . . . . . . . . . . . . . . . . . . . A–22
Table B–1: Input/Output Limits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . B–2
Table B–2: Sorting Limits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . B–2
Table B–3: Name Limits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . B–3
Table B–4: Compiler Limits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . B–4
viii
Preface
Purpose
This guide describes the Progress 4GL client application deployment process and application
administration concepts and procedures.
Audience
This guide is intended for Progress application administrators.
Presents an overview of the client deployment process, and outlines the deployment and
administration tasks you must perform.
Describes Progress r-code libraries and how to use the PROLIB utility.
Describes the process and requirements for building customized Progress executables. It
also provides instructions for using PROBUILD in Windows and on UNIX.
Describes the Progress limits you must consider when developing a Progress client
application.
Typographical Conventions
This manual uses the following typographical conventions:
x
Preface
– New terms
– Code examples
– System output
• Small capitals are used for Progress key functions and generic keyboard keys.
END-ERROR, GET, GO
• When you have to press a combination of keys, they are joined by a dash. You press and
hold down the first key, then press the second key.
CTRL-X
• When you have to press and release one key, then press another key, the key names are
separated with a space.
ESCAPE H
ESCAPE CURSOR-LEFT
Syntax Notation
The syntax for each component follows a set of conventions:
• Uppercase words are keywords. Although they are always shown in uppercase, you can
use either uppercase or lowercase when using them in a procedure.
SYNTAX
xi
Progress Client Deployment Guide
• Italics identify options or arguments that you must supply. These options can be defined
as part of the syntax or in a separate syntax identified by the name in italics. In the
ACCUM function above, the aggregate and expression options are defined with the
syntax for the ACCUM function in the Progress Language Reference.
• You must end all statements (except for DO, FOR, FUNCTION, PROCEDURE, and
REPEAT) with a period. DO, FOR, FUNCTION, PROCEDURE, and REPEAT
statements can end with either a period or a colon, as in this example:
• Square brackets ([ ] ) around an item indicate that the item, or a choice of one of the
enclosed items, is optional.
SYNTAX
In some instances, square brackets are not a syntax notation, but part of the language.
For example, this syntax for the INITIAL option uses brackets to bound an initial value
list for an array variable definition. In these cases, normal text brackets ( [ ] ) are used:
SYNTAX
• Braces ({ }) around an item indicate that the item, or a choice of one of the enclosed
items, is required.
xii
Preface
In this example, you must specify the items BY and expression and can optionally specify
the item DESCENDING, in that order:
SYNTAX
{ BY expression [ DESCENDING ]}
In some cases, braces are not a syntax notation, but part of the language.
For example, a called external procedure must use braces when referencing arguments
passed by a calling procedure. In these cases, normal text braces ( { } ) are used:
SYNTAX
{ &argument-name }
In this example, EACH, FIRST, and LAST are optional, but you can only choose one:
SYNTAX
SYNTAX
• Ellipses (...) indicate that you can choose one or more of the preceding items. If a group
of items is enclosed in braces and followed by ellipses, you must choose one or more of
those items. If a group of items is enclosed in brackets and followed by ellipses, you can
optionally choose one or more of those items.
xiii
Progress Client Deployment Guide
In this example, you must include two expressions, but you can optionally include more.
Note that each subsequent expression must be preceded by a comma:
SYNTAX
In this example, you must specify MESSAGE, then at least one of expression or SKIP, but
any additional number of expression or SKIP is allowed:
SYNTAX
In this example, you must specify {include-file, then optionally any number of argument
or &argument-name = "argument-value", and then terminate with }:
SYNTAX
{ include-file
[ argument | &argument-name = "argument-value" ] ... }
• In some examples, the syntax is too long to place in one horizontal row. In such cases,
optional items appear individually bracketed in multiple rows in order, left-to-right and
top-to-bottom. This order generally applies, unless otherwise specified. Required items
also appear on multiple rows in the required order, left-to-right and top-to-bottom. In cases
where grouping and order might otherwise be ambiguous, braced (required) or bracketed
(optional) groups clarify the groupings.
SYNTAX
xiv
Preface
In this example, ASSIGN requires one of two choices: either one or more of field, or one
of record. Other options available with either field or record are grouped with braces and
brackets. The open and close braces indicate the required order of options:
SYNTAX
Progress Messages
Progress displays several types of messages to inform you of routine and unusual occurrences:
• Compile messages inform you of errors found while Progress is reading and analyzing a
procedure prior to running it (for example, if a procedure references a table name that is
not defined in the database).
• Startup messages inform you of unusual conditions detected while Progress is getting
ready to execute (for example, if you entered an invalid startup parameter).
• Continues execution, subject to the error-processing actions that you specify, or that are
assumed, as part of the procedure. This is the most common action taken following
execution messages.
• Returns to the Progress Procedure Editor so that you can correct an error in a procedure.
This is the usual action taken following compiler messages.
• Halts processing of a procedure and returns immediately to the Procedure Editor. This
does not happen often.
xv
Progress Client Deployment Guide
Progress messages end with a message number in parentheses. In this example, the message
number is 200:
Use Progress online help to get more information about Progress messages. On the Windows
platform, many Progress tools include the following Help menu options to provide information
about messages:
• Choose Help→ Recent Messages to display detailed descriptions of the most recent
Progress message and all other messages returned in the current session.
• Choose Help→ Messages, then enter the message number to display a description of any
Progress message. (If you encounter an error that terminates Progress, make a note of the
message number before restarting.)
On the UNIX platform, you can use the Progress PRO command to start a single-user mode
character Progress client session and view a brief description of a message by providing its
number. Follow these steps:
install-dir/dlc/bin/pro
3 ♦ Type the message number, and press ENTER. Details about that message number appear.
4 ♦ Press F4 to close the message, press F3 to access the Procedure Editor menu, and choose
File→ Exit.
xvi
Preface
Getting Started
Progress Electronic Documentation Installation and Configuration Guide (Hard copy only)
A booklet that describes how to install the Progress EDOC viewer and collection on UNIX
and Windows.
A manual that describes how to install and set up Progress Version 9.1 for the UNIX
operating system.
A manual that describes how to install and set up Progress Version 9.1 for all supported
Windows and Citrix MetaFrame operating systems.
A guide that provides a brief description of each new feature of the release. The booklet
also explains where to find more detailed information in the documentation set about each
new feature.
Progress Language Tutorial for Windows and Progress Language Tutorial for Character
Platform-specific tutorials designed for new Progress users. The tutorials use a
step-by-step approach to explore the Progress application development environment using
the 4GL.
xvii
Progress Client Deployment Guide
Progress Master Glossary for Windows and Progress Master Glossary for Character (EDOC
only)
Platform-specific master glossaries for the Progress documentation set. These books are
in electronic format only.
Progress Master Index and Glossary for Windows and Progress Master Index and Glossary for
Character (Hard copy only)
Platform-specific master indexes and glossaries for the Progress hard-copy documentation
set.
A reference manual that describes the Progress startup commands and parameters in
alphabetical order.
A booklet that explains how Progress software and media are packaged. An icon-based
map groups the documentation by functionality, providing an overall view of the
documentation set. Welcome to Progress also provides descriptions of the various services
Progress Software Corporation offers.
Development Tools
Progress ADM 2 Guide
A programmer’s guide to using the Progress AppBuilder visual layout editor. AppBuilder
is a Rapid Application Development (RAD) tool that can significantly reduce the time and
effort required to create Progress applications.
Progress Basic Database Tools (Character only; information for Windows is in online help)
A guide for the Progress Database Administration tools, such as the Data Dictionary.
xviii
Preface
Progress Basic Development Tools (Character only; information for Windows is in online help)
A guide for the Progress development toolset, including the Progress Procedure Editor and
the Application Compiler.
A guide for the Progress Application Debugger. The Debugger helps you trace and correct
programming errors by allowing you to monitor and modify procedure execution as it
happens.
A guide that describes how to develop and integrate an online help system for a Progress
application.
A guide that describes how to use the Progress Translation Manager tool to manage the
entire process of translating the text phrases in Progress applications.
A guide that describes how to use the Progress Visual Translator tool to translate text
phrases from procedures into one or more spoken languages.
Reporting Tools
Progress Report Builder Deployment Guide (Windows only)
An administration and development guide for generating Report Builder reports using the
Progress Report Engine.
A tutorial that provides step-by-step instructions for creating eight sample Report Builder
reports.
A guide for system administrators that describes how to set up and maintain the Results
product in a graphical environment. This guide also describes how to program, customize,
and package Results with your own products. In addition, it describes how to convert
character-based Results applications to graphical Results applications.
xix
Progress Client Deployment Guide
Progress Results User’s Guide for Windows and Progress Results User’s Guide for UNIX
Platform-specific guides for users with little or no programming experience that explain
how to query, report, and update information with Results. Each guide also helps advanced
users and application developers customize and integrate Results into their own
applications.
4GL
Building Distributed Applications Using the Progress AppServer
A guide to accessing non-Progress applications from Progress. This guide describes how
to use system clipboards, UNIX named pipes, Windows dynamic link libraries, Windows
dynamic data exchange, Windows ActiveX controls, and the Progress Host Language Call
Interface to communicate with non-Progress applications and extend Progress
functionality.
A guide to developing Progress applications for markets worldwide. The guide covers
both internationalization—writing an application so that it adapts readily to different
locales (languages, cultures, or regions)—and localization—adapting an application to
different locales.
A three-volume reference set that contains extensive descriptions and examples for each
statement, phrase, function, operator, widget, attribute, method, and event in the Progress
language.
xx
Preface
Database
Progress Database Design Guide
A guide that uses a sample database and the Progress Data Dictionary to illustrate the
fundamental principles of relational database design. Topics include relationships,
normalization, indexing, and database triggers.
This guide describes Progress database administration concepts and procedures. The
procedures allow you to create and maintain your Progress databases and manage their
performance.
DataServers
Progress DataServer Guides
These guides describe how to use the DataServers to access non-Progress databases. They
provide instructions for building the DataServer modules, a discussion of programming
considerations, and a tutorial. Each DataServer has its own guide, for example, the
Progress DataServer for ODBC Guide, the Progress DataServer for ORACLE Guide, or
the Progress/400 Product Guide.
The Enterprise DataServer for ODBC includes MERANT ODBC drivers for all the
supported data sources. For configuration information, see the MERANT documentation,
which is available as a PDF file in installation-path\odbc. To read this file you must
have the Adobe Acrobat Reader Version 3.1 or higher installed on your system. If you do
not have the Adobe Acrobat Reader, you can download it from the Adobe Web site at:
http://www.adobe.com/prodindex/acrobat/readstep.html.
SQL-89/Open Access
Progress Embedded SQL-89 Guide and Reference
A guide that describes how to write and deploy Java and ActiveX applications that run as
clients of the Progress AppServer. The guide includes information about how to expose
the AppServer as a set of Java classes or as an ActiveX server.
xxi
Progress Client Deployment Guide
A user guide and reference for programmers who use interactive Progress/SQL-89. It
includes information on all supported SQL-89 statements, SQL-89 Data Manipulation
Language components, SQL-89 Data Definition Language components, and supported
Progress functions.
SQL-92
Progress Embedded SQL-92 Guide and Reference
A guide to the Java Database Connectivity (JDBC) interface and the Progress SQL-92
JDBC driver. It describes how to set up and use the driver and details the driver’s support
for the JDBC interface.
A guide to the ODBC interface and the Progress SQL-92 ODBC driver. It describes how
to set up and use the driver and details the driver’s support for the ODBC interface.
A user guide and reference for programmers who use Progress SQL-92. It includes
information on all supported SQL-92 statements, SQL-92 Data Manipulation Language
components, SQL-92 Data Definition Language components, and Progress functions. The
guide describes how to use the Progress SQL-92 Java classes and how to create and use
Java stored procedures and triggers.
Deployment
Progress Developer’s Toolkit
A guide to using the Developer’s Toolkit. This guide describes the advantages and
disadvantages of different strategies for deploying Progress applications and explains how
you can use the Toolkit to deploy applications with your selected strategy.
xxii
Preface
A guide that explains how to use the Progress toolset to build applications that are portable
across all supported operating systems, user interfaces, and databases, following the
Progress programming model.
WebSpeed
Getting Started with WebSpeed
Provides an introduction to the WebSpeed Workshop tools for creating Web applications.
It introduces you to all the components of the WebSpeed Workshop and takes you through
the process of creating your own Intranet application.
Provides instructions for installing WebSpeed on Windows and UNIX systems. It also
discusses designing WebSpeed environments, configuring WebSpeed Brokers,
WebSpeed Agents, and the NameServer, and connecting to a variety of data sources.
Provides a complete overview of WebSpeed and the guidance necessary to develop and
deploy WebSpeed applications on the Web.
A booklet that provides a brief description of each new feature of the release. The booklet
also explains where to find more detailed information in the documentation set about each
new feature.
A booklet that explains how WebSpeed software and media are packaged. Welcome to
WebSpeed also provides descriptions of the various services Progress Software
Corporation offers.
Reference
Pocket Progress (Hard copy only)
A reference that lets you quickly look up information about the Progress language or
programming environment.
A reference that lets you quickly look up information about the SpeedScript language or
the WebSpeed programming environment.
xxiii
Progress Client Deployment Guide
xxiv
1
Progress Client Deployment Overview
1. Planning — The phase in which you identify your deployment requirements and define
your deployment strategy.
2. Development — The phase in which you design, develop, and debug your client
application.
3. Installation and Configuration — The phase in which you deliver your client application
to end-users, and set up the end-user environment.
Each phase of the client deployment process has its own set of requirements and dependencies
that you must consider when defining your client deployment strategy. Decisions made in an
earlier phase will affect the following phases and the process as a whole.
Progress Software Corporation provides you with the following services to help you identify
your client deployment options and accomplish the client deployment process for your
application:
• The Progress Software Consulting Services organization which can assist you in all phases
of the client deployment process.
• The Progress Technical Services staff which can answer your questions about the ADE
tools, 4GL usage, and database administration.
1–2
Progress Client Deployment Overview
The remaining chapters in this guide provide detailed information about each of these tasks, as
well as the procedures and utilities you use to accomplish them. The appendixes provide useful
information about building Progress executables and Progress application limits.
NOTE: Certain deployment and administration tasks will differ among operating systems.
For information about designing and coding a Progress 4GL client application, see the Progress
Programming Handbook.
For information about creating and maintaining a Progress database, see the Progress Database
Administration Guide and Reference.
For information about AppServer deployment and administration tasks, see the Building
Distributed Applications Using the Progress AppServer manual.
1–3
Progress Client Deployment Guide
1–4
2
Managing Client Access to Databases
This chapter describes how to connect and disconnect databases for Progress clients. It provides
information about the following topics:
• Connection modes
• Connection parameters
• Connection techniques
2–2
Managing Client Access to Databases
For example, to assign the logical name firstdb to the physical database mydb1.db using the PRO
command, enter the command using the following syntax:
Logical database names allow you to run procedures on different physical databases without
recompiling. To run a compiled procedure on a second physical database, the database must
meet the following criteria:
• It must have the identical structure (data definitions) and table time stamps as the database
you compiled the procedure against. However, if you use CRC-based object code (the
default), the database’s table time stamps do not affect the ability of the code to run on the
database. The structure of the database must be the same. For more information about
CRC-based object code, see the Progress Programming Handbook.
• It must be connected with the same logical name as the database you compiled the
procedure against.
A database connection fails if the logical database name of the database that you are connecting
has the same logical name as an already connected database. If you try to connect a database
with a logical database name that matches the logical database name of an existing connected
database of the same database type (Progress, ORACLE, etc.), Progress assumes that database
is connected and ignores the request.
You can change a database’s logical name in a Progress procedure with the CREATE ALIAS
statement. For more information about logical and physical database names and aliases, and the
CREATE ALIAS statement, see the Progress Language Reference and the Progress
Programming Handbook.
• Single-user — Only the current Progress session can access the specified database. If the
database is already in use by another user, you cannot connect to the database from the
current Progress session.
• Multi-user client — The current Progress session accesses the database through a server
process. Multi-user client is the default connection mode on non-shared-memory systems
and when you use the Host Name (-H) and Service Name (-S) parameters on
shared-memory systems. All remote (over a network) connections access the database
through a database server and are in multi-user client mode.
2–3
Progress Client Deployment Guide
• Multi-user direct access — The current Progress session accesses the database directly
using shared memory. A process connected in multi-user direct-access mode is a
self-service client. Direct access is available only on shared-memory systems and is the
default connection mode on these systems. For information about shared-memory
configurations, see the Progress Installation and Configuration Guide Version 9 for
Windows or the Progress Installation and Configuration Guide Version 9 for UNIX.
When you connect to a database with a Progress multi-user startup command, each database you
specify on the command line is connected in the default multi-user mode. Each database you
specify in a startup file or in a CONNECT statement in an application is also connected in the
default multi-user mode for the current machine.
The first database specified after the Progress single-user or Progress single-user batch
command is connected in single-user mode by default. Any additional databases specified with
the Database Name (-db) connection parameter are connected in the default multi-user mode for
the system. Use the Single-user Mode (-1) startup parameter to override the default multi-user
connection mode for a database and connect to the database in single-user mode.
For more information about the Host Name (-H), Service Name (-S), Database Name (-db), and
Single-user Mode (-1) startup parameters, see the Progress Startup Command and Parameter
Reference.
2–4
Managing Client Access to Databases
• With the CONNECT statement (in the Progress Procedure Editor or in a Progress
procedure)
NOTE: Starting a server or broker for a database is distinct from connecting to a database.
You must start a server or broker for a database before you can connect to the
database in multi-user mode. For information about starting a server or broker, see
the Progress Installation and Configuration Guide Version 9 for Windows or the
Progress Installation and Configuration Guide Version 9 for UNIX.
This section explains how to connect to databases using the various techniques. The Progress
Programming Handbook explains why you might choose one technique instead of another.
Connecting at Startup
You can connect to databases at session startup with one of the Progress startup commands or
with an application startup file. For example, the following PRO command starts a single-user
session and connects to three databases:
NOTE: To retain compatibility with earlier versions, Progress does not require you to specify
the Database Name (-db) connection parameter for the first database on the
command line.
If you specify more than one database when you start a session, it is important to specify the
connection parameters for each database directly after the database name to which they apply,
and before the next Database Name (-db) connection parameter. Progress applies database
connection parameters only to the previously specified database.
2–5
Progress Client Deployment Guide
The following syntax example illustrates the correct location for database connection
parameters:
You can specify all other parameters anywhere on the command line. If you specify the same
parameter more than once, Progress uses the value you specified for the last instance of the
parameter.
You can also use a parameter file to specify database connection parameters. The following
example shows a UNIX startup script for a Progress application. The last line invokes the
_progres executable:
The previous startup script sets up environment variables for a Progress application and starts a
Progress application session using two parameter files called parm1.pf and parm2.pf. The
parm1.pf parameter file contains the following entry:
This example illustrates a common approach to connecting multiple databases when you start
Progress using a parameter file for each database. Each parameter file is specified on the
command line with the Parameter File (-pf) startup parameter.
2–6
Managing Client Access to Databases
The following CONNECT statements connect the appldb1 database in single-user mode, the
appldb2 database in multi-user mode, and the databases specified in the parameter file,
parm3.pf (respectively):
Connecting with the CONNECT statement is very similar to connecting at startup. Although it
is possible to connect to several databases within one CONNECT statement, it is a good idea to
connect only one database per CONNECT statement. A connection failure for one database
causes a termination of the current CONNECT statement, leaving any subsequent database
specified with the CONNECT statement unconnected. For detailed information about the
CONNECT statement, see the Progress Language Reference and the Progress Programming
Handbook.
1 ♦ Access the Data Dictionary. The Data Dictionary main window appears:
2–7
Progress Client Deployment Guide
3 ♦ Choose the Options button. The Connect Database dialog box expands to show optional
connection controls:
• Logical Name — Specifies the database name that references a connected physical
database.
• Database Type — Specifies the database type. The only possible value is Progress.
• Network — Specifies the network type, if you are connecting to a network server.
The only possible values are TCP or SNA (for Progress/400).
• Multiple Users — Specifies whether you want multiple users to be able to access
this database simultaneously.
2–8
Managing Client Access to Databases
• Parameter File — Specifies the parameter filename that contains the startup
parameters for the database.
Progress returns you to the Data Dictionary main window. The Data Dictionary constructs
(and executes) a CONNECT statement using the information you supply. Therefore, any
rules that apply to the CONNECT statement also apply to database connections using the
Data Dictionary.
1 ♦ Access the Data Administration tool. The Data Administration main window appears:
2–9
Progress Client Deployment Guide
3 ♦ Choose the Options button. The Connect Database dialog box expands to show optional
connection controls:
• Logical Name — Specifies the database name that references a connected physical
database.
• Database Type — Specifies the database type. The only possible value is Progress.
• Network — Specifies the network type, if you are connecting to a network server.
The only possible values are TCP or SNA (for Progress/400).
• Multiple Users — Specifies whether you want multiple users to be able to access
this database simultaneously.
2–10
Managing Client Access to Databases
• Parameter File — Specifies the parameter filename that contains the startup
parameters for the database.
Progress returns you to the Data Administration main window. The Data Administration
tool constructs (and executes) a CONNECT statement using the information you supply.
Therefore, any rules that apply to the CONNECT statement also apply to database
connections using the Data Administration tool.
2–11
Progress Client Deployment Guide
Use the Data Administration tool to build an auto-connect list for a primary database. Follow
these steps to create or edit an auto-connect list:
2 ♦ Choose Utilities→ Edit Progress Auto-Connect List. The Edit Auto-Connect List dialog
box appears:
If you connect to a database with the CONNECT statement, and that database also has an
auto-connect entry in an already connected database, the connection information from both the
CONNECT statement and the auto-connect list is merged. In this situation, the connection
information in the CONNECT statement takes precedence. For more information about the
CONNECT statement, see the Progress Language Reference.
If the primary database is a schema holder for a DataServer schema, the DataServer schema is
automatically included in the auto-connect list, but it does not appear on the auto-connect list as
viewed from the Data Dictionary.
1 ♦ Create a Progress database. This database stores the target database’s structure as a
Progress schema; it is a schema holder. A schema that corresponds to a non-Progress
database is a DataServer schema.
2–12
Managing Client Access to Databases
3 ♦ Use the appropriate Create Schema parameter from the Data Dictionary’s database menu
to create the DataServer schema in the schema holder. This parameter:
• Creates a _Db table record (auto-connect entry) for the non-Progress database in the
schema holder database
• Displays the menu so that you can choose the tables that you want to include in the
Progress schema
For complete information about connecting and using non-Progress databases, see the Progress
DataServer guides (the Progress DataServer for ODBC Guide, the Progress DataServer for
ORACLE Guide, or the Progress/400 Product Guide).
2–13
Progress Client Deployment Guide
User1
User2
Database Database
Server (with -n = 3)
User3
User4 Connection
User4
Request Denied
• During connection, the client reads all the _Db and _File records.
• When the database is referenced, the client reads all the _Index, _Index-field, _File-trig,
and _Field-trig records.
2–14
Managing Client Access to Databases
The time required to read the schema is usually minimal. However, the time required to read the
schema might be unacceptable under the following conditions:
• When a large number of clients connect to a database simultaneously. For example, after
a database shutdown or crash.
To reduce the amount of time required to connect, Progress lets you store the schema cache as
a binary file, called a schema cache file, on a local disk. The client can then read the schema
directly from the schema cache file.
To create the schema cache file, you build the desired schema cache and save it to a binary file
using the Progress statement SAVE CACHE. The schema cache file is portable across systems,
so you can create the file once and distribute it across a heterogeneous network of systems. For
information about building and saving the schema cache file, see the Progress Programming
Handbook. For information about the SAVE CACHE statement, see the Progress Language
Reference.
To connect using the local schema cache file, specify the Schema Cache File (-cache) startup
parameter when you connect to a database. If the schema cache file is valid, Progress reads the
schema from the local file instead of from the database. The schema cache is valid if the time
stamp of the schema cache file matches the time stamp in the database master block. If the time
stamps do not match, or for some reason Progress cannot read the file, Progress issues a warning
message and reads the schema from the database. For information about the Schema Cache File
(-cache) startup parameter, see the Progress Startup Command and Parameter Reference.
2–15
Progress Client Deployment Guide
1 ♦ Access the Data Dictionary. The Data Dictionary displays the connected databases and
their tables and fields.
Follow these steps to select a working database with the Data Dictionary when using a character
interface:
2 ♦ Choose Database→ Select a Working Database. Progress lists the connected databases.
3 ♦ Select the new working database, then choose Enter to return to the Data Dictionary main
window.
2 ♦ Choose Database→ Select a Working Database. Progress lists the connected databases.
3 ♦ Select the new working database, then choose OK to return to the Data Administration
main window.
2–16
Managing Client Access to Databases
1 ♦ Access the Data Dictionary. The Data Dictionary displays the connected databases and
their tables and fields.
2 ♦ Select the database you want to disconnect from the database selection list.
Follow these steps to disconnect a database with the Data Dictionary when using a character
interface:
2–17
Progress Client Deployment Guide
2–18
3
Maintaining Application Security
Progress provides two types of security: application security which prevents unauthorized users
from running application procedures or accessing data in a database, and database file security
which prevents unauthorized users from modifying or removing database files.
Progress provides four levels of security: compile-time security ensures that only authorized
users can compile procedures that perform specific data accesses, run-time security ensures that
only authorized users can run specific precompiled procedures, connection security ensures that
only authorized users can connect to the database, and schema security ensures that only
authorized users can modify table, field, and index definitions.
Progress also relies on security mechanisms at the operating system level to ensure that only
authorized users access r-code procedure files, procedure library files, and database files.
This chapter provides information about the following topics:
• “Compile-time Security”
• “Run-time Security”
For information about establishing and maintaining connection security, schema security, and
database file security, see the Progress Database Administration Guide and Reference.
Progress Client Deployment Guide
3–2
Maintaining Application Security
1 ♦ Access the Data Administration tool if you are using a graphical interface or the Data
Dictionary if you are using a character interface.
If you are using a graphical interface, the Edit Data Security dialog box appears:
If you are using a character interface, Progress alphabetically lists the tables defined for
the working database. Choose the table for which you want to specify permissions. The
Edit Data Security dialog box appears:
3–3
Progress Client Deployment Guide
3 ♦ Choose the table or field for which you want to specify permissions.
If you are using a graphical interface, use the Permissions for Selected Table and
Permissions for Selected Field radio buttons, then choose the table or field from the
selection lists.
If you are using a character interface, use the options at the bottom of the dialog box to
choose the table or field.
4 ♦ Specify the security permissions for the table or field. Table 3–1 lists the security
permissions you can specify for a table or field.
Permission Description
Can-Write Specifies the users who can write to a table or update records.
Can-Create Specifies the users who can create new records. The user with
Can-Create privileges automatically has Can-Write privileges.
Can-Delete Specifies the users who can delete records from a table.
Can-Dump Specifies the users who can dump database or table definitions and
data.
Can-Load Specifies the users who can load database or table definitions and
data.
NOTE: Use commas, not periods, to separate the names in these options.
Table 3–2 lists the values you use to define the permissions for a table.
Expression Meaning
3–4
Maintaining Application Security
Expression Meaning
string* User IDs that begin with this string have access.
Any changes you make to the table permissions do not affect the current session or any
other current sessions. This means that if other users are working while you change table
permissions, they are not affected. To use the new permissions, you must exit and restart
Progress.
NOTE: Do not try to bypass the Data Dictionary to modify the permissions for the tables
and fields in the database. You might lock yourself out of the database.
Suppose you want all users to have Can-Read permission for the customer table, but only users
with the specified user IDs to have Can-Write, Can-Create, and Can-Delete privileges. The
following example shows how to specify this information for the customer table:
Can-Read: *
Can-Write: salesrep,manager
Can-Create: salesrep,manager
Can-Delete: manager
3–5
Progress Client Deployment Guide
In the next example for the customer table, all users have Can-Read permission for the Name
field. In addition, all users have Can-Write permission, except users with the user ID of
inventory:
Can-Read: *
Can-Write: *,!inventory
In the next example for the customer table, all users, except those with a user ID of inventory,
have Can-Read permission for the Max-credit field. Here, only managers have permission to
write to this field:
Can-Read: *,!inventory
Can-Write: manager
1 ♦ Access the Data Administration tool if you are using a graphical interface or the Data
Dictionary if you are using a character interface.
2 ♦ Choose Admin→ Security→ Disallow Blank Userid Access. Progress prompts you to verify
that you want to prevent users with blank user IDs from accessing the working database.
3 ♦ Choose Yes. Progress denies the user all security permissions and inserts an exclamation
point (!) at the beginning of all the table and field permissions for the database. You can
restore a blank user ID’s access to selected tables and fields by modifying the permissions.
3–6
Maintaining Application Security
These permissions indicate that you are the only user allowed to read from (R) and (W) write to
p-adcust.p. No other users are allowed any kind of access to that procedure.
For more information about using the operating system to protect database files, see the
Progress Database Administration Guide and Reference. For more information about setting
operating system permissions, see your operating system documentation.
3–7
Progress Client Deployment Guide
3–8
4
Managing Client Performance
On client systems, Progress consumes system resources to execute Progress 4GL procedures,
store variables and record buffers, sort records, and store temporary files. When managing client
performance, be aware of key performance factors such as procedure loading and execution,
temporary file I/O, and sorting I/O. In addition to these factors, application design and coding
can significantly affect client performance. For information about this topic, see the Progress
Programming Handbook.
This chapter provides information about the following topics:
• “Sorting I/O”
Progress Client Deployment Guide
When you execute r-code procedures from a memory-mapped library in shared memory, you
gain the following additional advantages:
• Requires less memory because multiple clients access the same r-code segments in shared
memory
4–2
Managing Client Performance
• Execution buffer — The portion of local memory that Progress allocates and uses to store
the chain of loaded r-code segments for all standard r-code procedures executing in local
memory.
• Session sort file (.srt) — A file that Progress uses to dynamically swap standard r-code
segments in and out of the execution buffer.
• Shared memory buffer — The portion of shared memory that the operating system
allocates and uses to store and execute the r-code segments for all memory-mapped r-code
procedures.
• Segment descriptor table — An in-memory table that references the r-code segments
required by all executing procedures, including the location of each r-code segment in
local or shared memory and usage count information.
• R-code directory — An in-memory table that contains information about all r-code
procedures executing in local or shared memory, including r-code size, usage count,
segment descriptions, and a reference to the segment descriptor table for each segment.
For more information about the r-code execution environment, see the Progress Programming
Handbook.
Progress loads and executes r-code procedures in different ways, depending on whether you
store the r-code files in an r-code library and the type of library. The following sections provide
an overview of how Progress loads and executes r-code from an operating system file, a
standard procedure library, and a memory-mapped procedure library.
4–3
Progress Client Deployment Guide
of your Progress session or until you remove the library from the PROPATH. When Progress
needs to load an r-code segment for a procedure in that library, it accesses the open library in
local memory. This is much faster than loading the same procedure from an operating system
file.
When executing an r-code procedure from a standard r-code library, Progress accesses and
executes the r-code segments in the execution buffer in local memory. Progress does not swap
r-code segments to the session sort file unless you specify the PROLIB Swap (-pls) startup
parameter. By default, Progress reloads segments from the open library in local memory.
Maximum Memory (-mmax) Use this parameter to set the initial execution buffer
ceiling. The default is 3096K. Progress increases the
execution buffer dynamically as required, but only after
attempting to swap segments to the sort file. To
minimize swapping I/O, increase this parameter.
Directory Size (-D) Use this parameter to set the initial number of r-code
directory entries. Progress can reuse directory entries
for inactive r-code files. However, reusing an entry
requires some overhead. To reduce this overhead,
increase the value of the -D parameter. The default is
100 entries, the minimum is 5 entries, and the maximum
is 500 entries.
4–4
Managing Client Performance
Stack size (-s) When you load data definitions for very large tables or
use recursive procedures, you might receive an error
message directing you to increase this parameter. This
parameter changes the size of the stack (an internal
memory area used by Progress program modules).
For more information about these startup parameters, see the Progress Startup Command and
Parameter Reference.
PROLIB Swap (-pls) Use this parameter to allow swapping from a standard
library to a sort file. Progress typically reads
library-stored r-code from the library instead of
swapping to a sort file. However, when storing the
library over a network, swapping to a local sort file
might be faster than accessing the remote library.
If you specify the PROLIB Memory (-plm) and PROLIB Swap (-pls) startup parameters with
memory-mapped libraries, Progress ignores them.
For more information about these startup parameters, see the Progress Startup Command and
Parameter Reference.
4–5
Progress Client Deployment Guide
Statistics (-y) Collects procedure access and usage statistics throughout the
Progress session and writes them to an output file (by
default, client.mon in your current working directory). Use
the SHOW-STATS statement at any time during the session
to instruct Progress to write the statistics immediately.
Statistics with CTRL-C Collects the same statistics as the -y parameter, but lets you
(-yc) press CTRL-C as an alternative to executing the
SHOW-STATS statement. Use this parameter if you cannot
execute SHOW-STATS.
Segment Statistics (-yd) Collects r-code segment statistics and writes them to the
client monitor file (by default, client.mon in your current
working directory). It provides a breakdown of an r-code file
by segment type, including the number of segments and its
size. It also summarizes read and write access to the sort file
by segment type and access type, including the number of
times the sort file was accessed and the number of bytes read
from or written to the sort file.
For more information about these startup parameters, see the Progress Startup Command and
Parameter Reference.
4–6
Managing Client Performance
4–7
Progress Client Deployment Guide
parameter. For more information, see the “Tuning R-code Execution” section earlier in this
chapter.
4–8
Managing Client Performance
The Per procedure temp file access statistics fields show the swap rates for each segment of each
procedure executed during the session. The Per procedure segment information fields show the
number and size of r-code segments in each procedure. Use this information to determine how
your application design is affecting r-code performance. For more information about
application design and r-code performance, see the Progress Programming Handbook.
• Procedure files
• Temporary files
• Log files
4–9
Progress Client Deployment Guide
Once you have distributed your procedure files, modify the PROPATH environment variable in
the startup files on each application workstation to include the directory search path that
contains those files. The following example sets the PROPATH environment variable to the
working directory (.) and the \ACCTPAY directory on the C: drive of a Windows workstation:
SET PROPATH=.;C:\ACCTPAY
In Windows, you can use the registry or progress.ini file to set this environment variable. For
more information, see Chapter 5, “Maintaining User Environments.”
• Event log, which contains a history of significant database events, such as Progress startup
and shutdown and system errors. This file always has a .lg extension. Place the event log
file in the same directory as the database file.
• Transaction log, if you are using the two-phase commit feature. The log records two-phase
commit transactions, and uses a .tl extension. The transaction log file belongs on the same
disk as the database.
• Progress AppServer log, if you are using the Progress AppServer option. The log records
Progress AppServer broker and server startup and shutdown information, and it contains
other system messages that are not directed elsewhere with the OUTPUT TO
KEEP-MESSAGES statement. The default location of the AppServer log is the directory
where the application broker starts. For information about moving the AppServer log file,
see the Building Distributed Applications Using the Progress AppServer manual.
4–10
Managing Client Performance
File Description
By default, Progress stores the temporary files in the user’s working directory. Use the
Temporary Directory (-T) startup parameter to specify an alternate location. When a session
ends, Progress deletes these files unless you specify the Save Temp Files (-t) startup parameter.
For more information about the Temporary Directory (-T) and Save Temp Files (-t) startup
parameters, see the Progress Startup Command and Parameter Reference.
On UNIX, unless you use the Save Temp Files (-t) startup parameter, you do not see the
temporary files in the directory, because they are created unlinked. However, if your system
crashes, the UNIX file system recovery program, fsck, finds the files. This program might then
prompt you to delete the files. If this occurs, delete them.
On Windows, these temporary files are always visible during a Progress session, but the file
sizes are set to zero. Windows does not record file sizes until files are closed.
Writing to these temporary files creates I/O activity that might slow down client performance.
The amount of temporary file I/O activity varies among applications.
You might find that running a particular procedure results in Progress abnormally terminating
in a way that indicates the hard disk is full. However, when you check the disk immediately
afterward, adequate space is available. One possibility is that temporary files created during a
Progress session become quite large, taking up disk space as they expand. Since Progress erases
temporary files at the end of a session, they do not appear when you check the disk. Of the
temporary files, the following files are most likely to cause this problem:
• Temp table file (.dbi) — Progress uses this file to store temporary tables. If the application
uses a lot of temporary tables, this file can grow quite large.
4–11
Progress Client Deployment Guide
• Local before-image file (.lbi) — Progress uses this file to back out of subtransactions and
variable value changes. If the local before-image file becomes too large, the procedures
probably use a lot of subtransactions. Examine the transaction structure of the application
procedures to understand why Progress starts so many subtransactions. For more
information about transaction processing, see the Progress Programming Handbook.
• Session sort file (.srt) — Progress uses this file to dynamically swap r-code segments in
and out of the execution buffer. Use the r-code usage statistics startup parameters to collect
information about I/O to the sort file, as explained in the “Monitoring R-code Activity”
section earlier in this chapter. Using r-code libraries helps reduce the amount of I/O
required to load r-code files. For more information, see the “Using R-code Libraries to
Improve R-code Performance” section earlier in this chapter.
If temporary files grow to exceed disk space, change the application to reduce the size of
temporary files, or use the Temporary Directory (-T) parameter to store the temporary files on
a disk with sufficient space to hold the files. To optimize performance, place the temporary files
on a dedicated disk.
Speed Sort (-TB) Increase this parameter to 8K, 16K, or even 31K, particularly
for index rebuild operations. Increasing this parameter
increases memory usage during sorting and index rebuilds. It
also slightly increases disk space usage.
Merge Number (-TM) Increase this parameter to 32 to speed the merge phase of the
sort process (at the cost of increased temporary memory
usage).
For more information about these startup parameters, see the Progress Startup Command and
Parameter Reference.
4–12
5
Maintaining User Environments
This chapter explains how to maintain user interface environments in Windows and on UNIX.
For more information about modifying the progress.ini file, see the “Maintaining the
progress.ini File” section later in this chapter.
ini2reg
5–2
Maintaining User Environments
1 ♦ From the INI File to Registry Translation dialog box, choose the Browse button or File→
Open. The Open dialog box appears.
2 ♦ Type in or browse for the initialization file you want to translate, and choose OK. The
name of the selected file appears in the .INI file to translate field.
3 ♦ From the Registry base key drop-down list, select the base key under which you want to
create the subkey entries. The default subkey that corresponds to the selected initialization
file and base key appears in the Registry subkey field.
If you want to use a subkey other than the default, type the subkey name in the Registry
subkey field.
4 ♦ To begin the translation, choose the Translate button or File→ Translate. For each entry in
the initialization file, INI2REG creates a Registry key entry with the same value. As each
entry is translated, it appears in the Values being translated display area. If a Registry key
entry already exists, INI2REG prompts you to overwrite it.
5–3
Progress Client Deployment Guide
-a
Automates the translation. That is, it processes the translation automatically without
presenting the graphical user interface.
-ao
-i ini-file-name
-b base-key
The base key under which the subkey is created. The value of base-key must be one of
following:
• HKEY_CURRENT_USER (default)
• HKEY_USERS
• HKEY_LOCAL_MACHINE
• HKEY_CLASSES_ROOT
• HKEY_CURRENT_CONFIG
• HKEY_DYN_DATA
-s subkey
The subkey under which entries are created. The subkey is created under the base key
specified in the -b parameter.
5–4
Maintaining User Environments
-d default-subkey
The default subkey under which entries are created. The default subkey is created under
the base key specified in the -b parameter.
base-key\[SOFTWARE]\default-subkey\[rootname]
By default, the INI2REG utility creates Registry key entries at the following location:
HKEY_CURRENT_USER\SOFTWARE\PSC\PROGRESS\version
5–5
Progress Client Deployment Guide
-ininame =
progress.ini, or no Registry yes
basekey specified? -basekey =
-ininame “INI”?
unspecified? (-basekey)
yes no
yes no
Progress searches:
1. HKEY_CURRENT_USER\<path>
\<root name>.<extension> -ininame
2. HKEY_CURRENT_USER\SOFTWARE no specified?
\PSC\PROGRESS\<version>\<path>
\<root name>.<extension> Progress searches
3. HKEY_CURRENT_USER\SOFTWARE for progress.ini yes
\<path>\<root name>.<extension> file
4. HKEY_CURRENT_USER\<root name>
5. HKEY_CURRENT_USER\SOFTWARE
\PSC\PROGRESS\<version>\<root name> yes
6. HKEY_CURRENT_USER\SOFTWARE -ininame =
\<root name> progress.ini?
7. HKEY_LOCAL_MACHINE\<path> Progress searches
\<root name>.<extension> for the specified .ini
8. HKEY_LOCAL_MACHINE\SOFTWARE file, in this order:
\PSC\PROGRESS\<version>\<path> no
\<root name>.<extension>
1. Current directory
9. HKEY_LOCAL_MACHINE\SOFTWARE 2. Windows directory
\<path>\<root name>.<extension> 3. Progress directory
10. HKEY_LOCAL_MACHINE\<root name> 4. PROPATH
11. HKEY_LOCAL_MACHINE\SOFTWARE -ininame
\PSC\PROGRESS\<version>\<root name> no specified?
12. HKEY_LOCAL_MACHINE\SOFTWARE
\<root name> Progress searches in
13. File named the Registry only for
yes
“<path>\<root name>.<extension>” <basekey>\SOFTWARE
\PSC\PROGRESS\<ver>
Progress searches:
yes
1. HKEY_CURRENT_USER\SOFTWARE -ininame =
\PSC\PROGRESS\<version> progress.ini?
2. HKEY_LOCAL_MACHINE Progress searches
\SOFTWARE\PSC\PROGRESS\<version> in the Registry only for
3. File named progress.ini <basekey>\<ininame> no
5–6
Maintaining User Environments
When Progress does not find environment information in the Registry, or when it was started
with the -basekey INI startup parameter, it searches through directories for a progress.ini file
in the following order:
1. The current working directory (as defined in the Working Directory field in the Program
Item properties sheet for Windows).
After Progress locates the environment information, Progress reads the values for DLC,
PROMSGS, and other environment variables. For each variable, Progress first searches the
location where it found the environment information. If Progress does not find the variable, it
searches for an operating system environment variable.
Progress expects to find all environment settings in the same location it finds the environment
variables. There is one exception: Progress searches HKEY_CURRENT_USER and
HKEY_LOCAL_MACHINE first when it starts without the -basekey parameter and finds the
environment information in the Registry. If Progress writes a value to the Registry, however, it
will always write it to HKEY_CURRENT_USER. This allows multiple users of a single
machine to customize settings individually. The environment setting location could be either a
Registry key or an initialization file, but not both.
The Progress 4GL GET-KEY-VALUE statement also searches for user environment
information. The GET-KEY-VALUE statement searches either the Registry or a progress.ini
file, but not both. When GET-KEY-VALUE searches the Registry, it searches both of the
HKEY_CURRENT_USER and HKEY_LOCAL_MACHINE keys if the following conditions
are true:
• The Progress startup command (prowin32) used for the current session did not include the
-basekey parameter.
• Progress found the environment information in the Registry at startup or at the last LOAD
statement.
5–7
Progress Client Deployment Guide
The Progress 4GL PUT-KEY-VALUE statement writes to the location where the environment
information was found at startup. If that location is the Registry, and if the prowin32 command
did not include the -basekey parameter at startup, the PUT-KEY-VALUE statement writes to
the HKEY_CURRENT_USER key and not to the HKEY_LOCAL_MACHINE key.
• Options required by Progress tools (such as the Procedure Editor and the Report Builder)
• User-defined options
• Environment variables
[Startup]
V6Display=NO
V6FontNumber=3
DefaultV6UpdateFont=fixedsys,underline
ImmediateDisplay=NO
MultitaskingInterval=0
DefaultFont=system
DefaultFixedFont=fixedsys
PrinterFont=courier new, size=10
PrinterFont1=courier new, size=8
PrinterFont2=courier new, size=12
.
.
.
[WinChar Startup]
PROPATH=.,C:\DLC
PROMSGS=C:\DLC\PROLANG\PROMSGS.GER
PROCFG=C:\DLC\PROGRESS.CFG
PROBUILD=C:\DLC\PROBUILD
DLC=C:\DLC
EnableMouse=YES
V6Keys=NO
V6FKeys=NO
.
.
.
5–8
Maintaining User Environments
• “Startup Section”
• “Colors Section”
• “Fonts Section”
The progress.ini file can also contain the following optional sections:
• “Debug-Init Section”
• “Debug-Macros Section”
• “Debug-Buttons Section”
• “Keys Section”
• “Keymap Section”
You can edit the progress.ini file to customize environments at different sites. The
progress.ini file is located in the $DLC/probuild/eucapp directory, by default.
Startup Section
The Startup section of the progress.ini file contains options that specify the following
environment characteristics for graphical user interface clients:
5–9
Progress Client Deployment Guide
The Startup section also contains Progress environment variables that you can set for use with
graphical user interface clients. See Table 5–5 in the “Specifying Environment Variables”
section later in this chapter for a list of environment variables you can set in the Startup section.
The Startup section contains the following options:
AlignFrameTitles
AlignFrameTitles=n
Lets you specify the alignment of frame titles in a graphical user interface. Valid settings
include the following: 0 (left justified), 1 (centered), and 2 (right justified). The default is
centered.
AS/400_AppcDllName
AS/400_AppcDllName=dll-filename
For Version 7.3B and later, you can specify the name of the DLL that you want to use for
AS/400 communications. Table 5–1 lists the available DLLs depending on the AS/400
communication protocol and the type of network support you use.
AS/400
Communication Type of
Protocol Network Support DLL Filename
5–10
Maintaining User Environments
CarefulPaint
CarefulPaint={ YES | NO }
Lets you set the accuracy with which Progress repaints overlapping 3D widgets and
frames. Set to YES for Progress to repaint overlapping 3D widgets and frames slowly and
carefully. Set to NO for Progress to repaint overlapping 3D widgets and frames quickly
(which might reduce the quality of the graphic). The default value is YES.
ClientTimeOut
ClientTimeOut=n
Lets you specify the number of minutes a client session can remain inactive before the
server disconnects the session.
The server process determines whether a client has been inactive for a specified period of
time, and if so, the server disconnects the client and backs out any related active
transactions.
DefaultFixedFont
typeface
point-size
The size of the font, in points. If you omit the point size, Progress uses the default
point size as defined by the typeface.
keyword
You can specify the following keywords: bold, italic, underline, or strikeout.
5–11
Progress Client Deployment Guide
scriptname
By default, Progress uses the script (character set) of the Windows FixedSys font for
all fonts specified in the environment. If you select a different script when editing a
font using the font common dialog, Progress writes the specified script name to the
font entry.
DefaultFont
typeface
point-size
The size of the font, in points. If you omit the point size, Progress uses the default
point size as defined by the typeface.
keyword
You can specify the following keywords: bold, italic, underline, or strikeout.
scriptname
By default, Progress uses the script (character set) of the Windows FixedSys font for
all fonts specified in the environment. If you select a different script when editing a
font using the font common dialog, Progress writes the specified script name to the
font entry.
DefaultV6UpdateFont
5–12
Maintaining User Environments
typeface
point-size
The size of the font, in points. If you omit the point size, Progress uses the default
point size as defined by the typeface.
keyword
You can specify the following keywords: bold, italic, underline, or strikeout.
scriptname
By default, Progress uses the script (character set) of the Windows FixedSys font for
all fonts specified in the environment. If you select a different script when editing a
font using the font common dialog, Progress writes the specified script name to the
font entry.
The DefaultFixedFont and the DefaultV6UpdateFont should be the same base font.
If you change them, make sure that the font is fixed and that the
DefaultV6UpdateFont has the underline attribute. Progress does not automatically
add the underline attribute to the DefaultV6UpdateFont setting.
EndMsgTitle
EndMsgText
EndMsgTitle=title-text
EndMsgText=message-text
Lets you specify the title and text for the Windows shutdown message box.
When Windows shuts down, a dialog box prompts the user to verify the shutdown. If the
user answers YES, Progress closes and the Windows Exit procedure continues. If the user
answers NO, the Windows Exit procedure terminates and Windows remains active.
5–13
Progress Client Deployment Guide
FrameSpacing
FrameSpacing=n
Lets you specify how the Progress layout processor spaces frames.
Setting the value to -1 places the frame at the next character unit boundary. Setting the
value to 0 places frames one half of a character unit apart. Setting the value greater than 0
spaces the frames by the specified number of pixels.
ImmediateDisplay
ImmediateDisplay={ YES | NO }
If you do not set this option, some Version 6 applications will not draw the screen
correctly. Set this option for applications with existing code that you do not want to
modify. The default setting is NO.
You can also use the IMMEDIATE-DISPLAY attribute with the SESSION system handle
to surround the offending code. This is the preferred technique.
For more information about the IMMEDIATE-DISPLAY attribute and the SESSION
system handle, see the Progress Language Reference.
Keep3DfillinBorder
Keep3DfillinBorder={ YES | NO }
Set to YES to display a disabled fill-in field with a border. Set to NO to display a disabled
fill-in field without a border. The default value is NO.
MultitaskingInterval
MultitaskingInterval=n
Lets you specify how the Progress session interacts with a Windows cooperative
multi-tasking environment. Its value determines how often Progress filters events or
5–14
Maintaining User Environments
messages between itself and other Windows applications. As Progress filters these events
more often, it executes procedures less efficiently but allows other Windows applications
more opportunity to execute. Adjusting the internal event filter is particularly useful
during background processing, such as report generation.
To maximize performance during batch-mode processing, set the value to 9999 (the
maximum value allowed). If you want to run another application while you run Progress
in batch mode, set the value to 1000. If you set the value to 0 (the default), the internal loop
never executes. Although this results in high performance, interoperability with other
Windows applications is poor. The lower the number, the more often the loop executes,
resulting in better interoperability. Set this option for applications with existing code that
you do not want to modify.
You can also use the MULTITASKING-INTERVAL attribute with the SESSION system
handle to control how Progress interacts with Windows cooperative multi-tasking by
surrounding long 4GL processing loops with this attribute.
See the Progress Language Reference for more information about the
MULTITASKING-INTERVAL attribute and the SESSION system handle.
Opsys
Opsys=character-string
Lets you specify the value used by the OPSYS preprocessor directive or the value returned
by the OPSYS function. Valid settings include any character string.
PopupAppOverridesSys
PopupAppOverridesSys={ YES | NO }
Set to YES to display the system-default pop-up menu only if a user-defined pop-up menu
is not available. Set to NO to display the system-default pop-up menu regardless of a
user-defined pop-up menu. If a user-defined pop-up menu is available, it is displayed after
the system pop-up menu is closed. The default value is YES.
NOTE: The system-default pop-up menu is displayed when you click the right mouse
button on a fill-in field or an editor widget and a user-defined pop-up menu is not
available.
5–15
Progress Client Deployment Guide
PopupNoSysDefault
PopupNoSysDefault={ YES | NO }
Set to YES to suppress the system-default pop-up menu. Only the user-defined pop-up
menu is displayed. The default value is NO.
NOTE: The system-default pop-up menu is displayed when you click the right mouse
button on a fill-in field or an editor widget and a user-defined pop-up menu is not
available.
PopupOnMouseDown
PopupOnMouseDown={ YES | NO }
Set to YES to display a pop-up menu when the right mouse button is depressed. Set to NO
to display a pop-up menu when the right mouse button is released. The default value is
NO.
NOTE: This option applies only to pop-up menus that are displayed with the right mouse
button (that is, MENU-MOUSE = 3). Menus that are displayed with the left or
middle mouse button are always displayed when the buttons are depressed.
PrinterFont
PrinterFont=typeface, [ size=screen-point-size ]
Lets you specify the printer fonts Progress uses with the OUTPUT TO PRINTER
statement.
PrinterFontn
PrinterFontn=typeface, [ size=screen-point-size ]
Lets you specify the printer font Progress uses with the OUTPUT TO LPTn statement.
5–16
Maintaining User Environments
UseNative3D
UseNative3D={ YES | NO }
Set to YES to use the 3D drawing capabilities in Windows 95/NT 4.0. Set to NO to use the
3D drawing capabilities in Progress. The default value is YES.
Use-3D-Size
Use-3D-Size={ YES | NO }
Lets you specify how Progress calculates the height of a character unit.
If you set the value to YES, Progress uses the height of a three-dimensional fill-in. If you
set the value to NO, Progress uses the height of a non-three-dimensional fill-in. The
default setting is YES.
V6Display
V6Display={ YES | NO }
When you compile a procedure in Windows, Progress compiles the borders and fonts
associated with user interface widgets into the screen layout by default. As a result, you
might encounter compilation problems when you try to run a Version 6 application in
Progress Version 7 for Windows. There might not be enough space on the display to
accommodate the borders and default fonts that are automatically associated with user
interface widgets of the Version 6 application.
To avoid this problem, set V6Display to YES to specify that you are running Version 6
code.
You can also set a session attribute to control the run-time setting of the V6Display state.
The attribute is V6DISPLAY and has a Boolean value. Setting this attribute has the same
effect as specifying the setting at startup. However, you must hide all existing windows.
5–17
Progress Client Deployment Guide
• The character unit height is recalculated to the height of the font specified by the
DefaultV6UpdateFont option.
• The character unit width is recalculated to the width of an average character in the
font specified by the DefaultV6UpdateFont option.
• The default font is automatically changed to use the font specified by the
DefaultFixedFont option.
• All Progress fill-ins that are enabled for update use the font specified by the
DefaultV6UpdateFont option (by default, the default fixed font with underlines).
This means that updateable fill-ins are drawn with underlines.
• Frame titles are drawn so that the frame title height measures exactly one character
unit.
The V6Display option or attribute does not enable support for PUT SCREEN. In addition,
if you set the V6Display option, Version 7 applications that have not been compiled with
the V6Display option set to YES will draw screens incorrectly.
NOTE: The V6Display option is intended for use with applications, not with the Progress
ADE. The ADE is not supported when V6Display is set to YES.
If you plan to use Version 6 user interface code with Version 7 tools (or your own Version
7 interface), Progress Software recommends that you use the V6Frame option instead of
V6Display.
V6FontNumber
V6FontNumber=n
By default, this option points to the font defined as font3 in the [Fonts] section. Font3 is
the ADE character-mode font. If you change the V6FontNumber value, make sure you
define the new font number in the [Fonts] section.
5–18
Maintaining User Environments
NOTE: Do not change the definition of font3 in the [Fonts] section. Progress relies on
that font definition for other purposes.
V6FrameBGC
V6FrameBGC=n
Lets you specify the default background color for all frames that use the V6FRAME
option. Valid settings include any number that corresponds to a color in the Progress color
table.
WindowSystem
WindowSystem=character-string
Lets you specify the value used by the WINDOW-SYSTEM preprocessor directive. Valid
settings include any character string.
Colors Section
The Colors section of the progress.ini file contains options that specify the colors that make
up the color table for use with graphical user interface clients. There are 16 colors available to
an application for use as either foreground or background colors. You can specify up to 256
colors.
NOTE: Do not change the first 16 colors. These colors are reserved for the Application
Development Environment (ADE) tools. Changing them could cause the Progress
ADE tools to malfunction.
Each entry in the Colors section performs two semantic functions: it defines a color, and it maps
that color to an integer in the range 0 to 255. An application specifies this integer when making
a color assignment to a widget.
Specify a color entry using the following syntax:
colorn = { R , G , B , | colorname }
5–19
Progress Client Deployment Guide
colorname
Any of the following color names, mapped to the colors defined in the Windows Control
Panel:
COLOR-SCROLLBAR
COLOR-BACKGROUND
COLOR-ACTIVECAPTION
COLOR-INACTIVECAPTION
COLOR-INACTIVECAPTIONTEXT
COLOR-MENU
COLOR-WINDOW
COLOR-WINDOWFRAME
COLOR-MENUTEXT
COLOR-WINDOWTEXT
COLOR-CAPTIONTEXT
COLOR-ACTIVEBORDER
COLOR-INACTIVEBORDER
COLOR-APPWORKSPACE
COLOR-HIGHLIGHT
COLOR-HIGHLIGHTTEXT
COLOR-BTNFACE
COLOR-BTNHIGHLIGHT
COLOR-BTNSHADOW
COLOR-GRAYTEXT
COLOR-BTNTEXT
Any entries you add to the color table must be sequential. For example, since the installed
progress.ini file defines color0 to color15, the next color you add must be color16. If you add
an entry for color17, Progress ignores it if color16 is undefined.
For backward compatibility, color0 to color15, as installed, are the same as the colors supported
in Version 6. See the chapter about colors and fonts in the Progress Programming Handbook
for a listing of these colors.
5–20
Maintaining User Environments
For backward compatibility, the progress.ini file specifies the following color pairs for
Version 6 applications:
• NORMAL specifies the colors for fill-ins that do not have input focus.
• INPUT specifies the colors for fill-ins that have input focus.
NORMAL, INPUT, and MESSAGES each take a pair of integer values from 0 to 255. The
integers represent color table entries. For example, in the default progress.ini file, NORMAL
is defined as foreground equal to color table entry 0 (RGB value 0,0,0) and background equal
to color table entry 15 (RGB value 255,255,255).
The following example shows how to redefine NORMAL as foreground equal to color table
entry 3 and background equal to color table entry 12:
NORMAL=3,12
• The size; specify the size as a number of rows and columns. The default size is 25 by 80.
[Default Window]
x=
y=
rows=
columns=
Fonts Section
The progress.ini file as installed contains font table entries for the Progress ADE tools.
Progress uses the default system fonts defined in the Startup section, unless you add additional
fonts to the existing font table in the Fonts section.
NOTE: You can add site-specific fonts to the file. Do not change the first 8 fonts. These fonts
are reserved for the Application Development Environment (ADE) tools. Changing
them could cause the Progress ADE tools to malfunction.
5–21
Progress Client Deployment Guide
Determine which screen fonts exist in your environment. The fonts you choose should be
graphically compatible. One way to choose fonts is to use the font common dialog box.
The font table can contain up to 256 entries. Each entry in the table performs two semantic
functions: it names a font that exists in your environment and it maps that font to an integer from
0 to 255. An application specifies this integer when making a font assignment to a widget.
NOTE: You cannot enter extra spaces in the font definition section. Extra spaces will cause
the error 4499.
Specify a font entry using the following syntax:
typeface
point-size
The size of the font, in points. If you omit the point size, Progress uses the default point
size as defined by the typeface.
keyword
You can specify the following keywords: bold, italic, underline, or strikeout.
scriptname
By default, Progress uses the script (character set) of the Windows FixedSys font for all
fonts specified in the environment. If you select a different script when editing a font using
the font common dialog, Progress writes the specified script name to the font entry.
5–22
Maintaining User Environments
The WinChar Startup section also contains Progress environment variables that you can set for
use with character clients. See Table 5–5 in the “Specifying Environment Variables” section
later in this chapter for a list of environment variables you can set in the WinChar Startup
section.
The WinChar Startup section contains the following options:
BrowseRowMarker
BrowseRowMarker=n
Lets you specify a character to represent a browse row marker. Valid settings include any
number that corresponds to a character in the CPSTREAM character set.
CursorHeight
CursorHeight=n
Lets you specify the height of a cursor as a percentage. Valid settings include any number
between 0 and 100. This option overrides the UseDosCursor setting.
EnableMouse
EnableMouse={ YES | NO }
Set to YES to enable mouse input. Set to NO to disable mouse input. The default value is
YES.
MenuMnemonicColor
MenuMnemonicColor=n
Lets you specify the color of mnemonic characters in menu items. Valid settings include
any number that corresponds to a color in the Progress color table.
5–23
Progress Client Deployment Guide
SingleLineBorder
SingleLineBorder=n,n,n,n,n,n,n,n
Lets you specify the characters used to draw borders and lines (such as frame borders,
rectangles, submenu and pop-up menu borders, and horizontal and vertical lines). Valid
settings include any eight numbers that correspond to characters in the CPSTREAM
character set, separated by commas.
These eight numbers represent the corners and sides of a rectangle and must be specified
in the following order: top, bottom, left, right, top-left corner, top-right corner,
bottom-right corner, and bottom-left corner.
SysCheckmark
SysCheckmark=n
Lets you specify a character to represent a selection marker in widgets (such as a selection
list, menu, or browser). Valid settings include any number that corresponds to a character
in the CPSTREAM character set.
UseDosCursor
UseDosCursor={ YES | NO }
Set to YES to change the cursor from an underscore to a solid block when switching from
insert mode to over-strike mode in a fill-in field or editor widget. Set to NO to use an
underscore as the cursor in either mode. The default value is NO.
V6Keys
V6Keys={ YES | NO }
Set to YES to use a set of key bindings that are Version 6 compatible by default. The
default value is NO.
5–24
Maintaining User Environments
V6FKeys
V6FKeys={ YES | NO }
Set to YES to use the bindings for the CTRL, ALT, SHIFT, and F13 to F39 keys that are
Version 6 compatible by default. The default value is NO.
keyword | colorn
You can also specify color0, color1, and color2 using the NORMAL, INPUT, and
MESSAGES keywords, respectively. The keyword overrides the colorn specification.
That is, if you specify both colorn and its corresponding keyword, Progress displays the
colors you specified with the keyword.
fgnd-color
bgnd-color
For information about color definitions for the WinChar Colors section, see the Color Phrase
reference entry in the Progress Language Reference.
5–25
Progress Client Deployment Guide
rows if you want the application to be compatible with Progress Version 6 or if you want to port
the application to a character terminal.
The following is an example WinChar Default Window section:
APPEND-LINE CTRL-A
BLOCK CTRL-V
BREAK-LINE CTRL-ALT-B
CLEAR F8
COPY F11
CUT F10
DEFAULT-POP-UP SHIFT-F4
DELETE-LINE CTRL-D
END-ERROR ESC
ENTER-MENUBAR F3
FIND CTRL-F
GET F5
GO F1
5–26
Maintaining User Environments
HELP F2
INSERT-MODE INS
NEW-LINE CTRL-N
NEXT-FRAME CTRL-TAB
PASTE F12
PREV-FRAME CTRL-SHIFT-TAB
PUT F6
RECALL F7
keyfunction=keylabel [ , keylabel ]
Use a single entry to specify a key binding; additional entries for the same key function are
ignored.
If you specify more than one key label, Progress uses the first when it needs to display a key
label given a key function, as in “Enter data or press Escape to end.”
For example, the following entry maps the Help key function to the F2 key label, and the Go
key function to the F1 key label:
HELP=F2
GO=F1
You can use any combination of CTRL, SHIFT, and ALT keys. However, SHIFT only has an effect
when used with ASCII keys. If an entry contains nonexistent key labels, the entry is ignored.
NOTE: Set the V6Keys option in the [WinChar Startup] section to enable Progress to use a
set of key bindings that are Version 6 compatible by default.
5–27
Progress Client Deployment Guide
Debug-Init Section
Do not modify information in the Debug-Init section.
Debug-Macros Section
The Debug-Macros section of the progress.ini file contains a list of parameters that define
initial macros used by the Debugger. You can also define your own macros. For more
information, see the Progress Debugger Guide.
Debug-Buttons Section
The Debug-Buttons section of the progress.ini file contains a list of parameters that define
initial buttons used by the Debugger. You can also define your own buttons. For more
information, see the Progress Debugger Guide.
Keys Section
The Keys section is an optional section you can create in the progress.ini file to customize
key bindings for the Windows environment.
Table 5–3 lists the static key bindings in the Windows environment.
BACKSPACE BACKSPACE
BACK-TAB SHIFT-TAB
CURSOR-DOWN CURSOR-DOWN
CURSOR-LEFT CURSOR-LEFT
CURSOR-RIGHT CURSOR-RIGHT
CURSOR-UP CURSOR-UP
DELETE-CHARACTER DEL
END END
HOME HOME
PAGE-DOWN PAGE-DOWN
5–28
Maintaining User Environments
PAGE-UP PAGE-UP
RETURN ENTER
TAB TAB
Table 5–4 lists the user-definable key bindings in the Windows environment.
APPEND-LINE No default
BLOCK No default
BREAK-LINE No default
CLEAR No default
DEFAULT-POP-UP F4
DELETE-LINE No default
END-ERROR ESC
FIND No default
GET No default
GO F2
HELP F1
INSERT-MODE INS
NEW-LINE No default
NEXT-FRAME F6
PREV-FRAME SHIFT-F6
5–29
Progress Client Deployment Guide
PUT No default
RECALL No default
Keymap Section
The Keymap section is an optional section you can create in the progress.ini file to define
mappings between standard ASCII (7-bit) characters and extended (8-bit) characters. Extended
characters are typically non-English alphabetical characters. Progress uses these keymap entries
to build a translation table for processing characters in the input and output streams.
NOTE: Using the Keymap section is the Version 6 technique for mapping characters. Using
conversion tables is a better technique for processing characters. For information
about defining conversion tables, see the Progress Internationalization Guide.
Use the IN statement, in a keymap entry, to map an ASCII character to an extended character
using the following syntax:
[ MAP-language ]
:IN(\ascii-char)=\extended-char:
language
ascii-char
The 7-bit character, in octal (\nnn) format. You must specify all three digits.
extended-char
The 8-bit character, in octal (\nnn) format. You must specify all three digits.
Use the OUT statement, in a keymap entry, to map an extended character to an ASCII character
using the following syntax:
[ MAP-language ]
:OUT(\extended-char)=\ascii-char:
5–30
Maintaining User Environments
You can use multiple IN and OUT statements in a single keymap entry.
If you use extended character sets, you must specify character mappings for each character set
on a per-terminal basis. For example, the following code fragment demonstrates how to map
characters to German language characters:
[MAP-german]
:IN(\102)=\341:
:IN(\101)=\216:
:IN(\141)=\204:
:IN(\117)=\231:
:IN(\157)=\224:
:IN(\125)=\232:
:IN(\165)=\201:
The IN statements in the preceding example map ASCII characters (B, A, a, O, o, U, and u) to
German characters (ß, Ä, ä, Ö, ö, Ü, and ü). When Progress sees the character A (\101) on input,
it converts the character to Ä (\216). Likewise, when Progress needs to send an Ä to the
terminal, it sends [ (\101). The terminal sees A and displays Ä.
Suppose the terminal cannot display an Ä. You can use the OUT statement to specify an
appropriate character to display for Ä, such as capital A. For example:
[MAP-german]
:OUT(\216)=\101:
You can also specify keymap entries for the input and output streams using the MAP option
with each of the following Progress language elements:
• OUTPUT TO statement
For more information about these language elements, see the Progress Language Reference.
5–31
Progress Client Deployment Guide
5–32
Maintaining User Environments
On the icon command line, install-dir is the directory where you have installed the products.
5–33
Progress Client Deployment Guide
See the Windows user documentation for more information about creating additional icons,
copying and modifying existing icons, and general information about the Windows Explorer.
• Choose Start→ Run from the task bar and enter startup parameters on the command line.
Starting the Progress client places you in the Progress Procedure Editor with no databases
attached.
1 ♦ Select the client icon from the Progress program group and choose File→ Properties from
the Windows Explorer, or right-click on the icon and choose Properties from the pop-up
menu. The Properties dialog box appears.
2 ♦ From the Shortcut tab, modify the command-line in the Target field. You can supply up to
259 characters in this field. The command-line limit of 259 characters is still valid for the
expanded version of the command-line text.
3 ♦ Choose OK.
You can specify environment variables in the command-line. For example, specifying the
following command runs the PROWIN32 executable located in the path where the %DLC%
environment variable points:
%DLC%\BIN\PROWIN32.EXE
5–34
Maintaining User Environments
You must also maintain the PROTERMCAP file. PROTERMCAP is a terminal definition file
that contains the terminal description for your monitor’s terminal type. Progress uses this file to
determine how to interact with your terminal, console, or terminal emulator.
• Options required by Progress tools (such as the Procedure Editor and the PROBUILD
utility)
• User-defined options
• Environment variables
#! /bin/sh
MACHINE="sun4"
PROLOAD=${PROLOAD-"$DLC/probuild"}
LDXOPT=${LDXOPT-"-x"}
LDOPT=${LDOPT-"-Bstatic"}
CCNOPT=${CCNOPT-""}
CC=${CC-"cc"}
SOCKLIB=${SOCKLIB-"-lsocket"}
TLILIB=${TLILIB-"-lns -lnsl"}
X11LIB=${X11LIB-"-lXt -lXext -lX11"}
CISAMLIB=${CISAMLIB-"lisam.a"}
SYBLIB=${SYBLIB-"libsybdb.a"}
ORALIB=${ORALIB-"$ORACLE_HOME/rdbms/lib/libocic.a
$ORACLE_HOME/rdbms/lib/osntab.o $ORACLE_HOME/rdbms/lib/libsqlnet.a
$ORACLE_HOME/rdbms/lib/libora.a"}
XPMLIB=${XPMLIB-"$DLC/probuild/4gl/libXpm.a"}
export MACHINE LDXOPT LDOPT CCNOPT CC
export CISAMLIB NETISAMLIB ORALIB X11LIB
export SOCKLIB TLILIB PROLOAD XPMLIB
5–35
Progress Client Deployment Guide
• Terminal name
• Terminal capabilities
5–36
Maintaining User Environments
The PROTERMCAP file contains a lengthy entry for each terminal type supported by Progress.
Each entry has six parts. Figure 5–4 shows a partial example of each part of a PROTERMCAP
entry.
• The general syntax rules that apply when specifying fields in any of the six
PROTERMCAP sections.
• The syntax rules that apply when specifying string values within a field. String values can
occur in the terminal capabilities section, the key bindings section, and the color table
section.
Syntax rules that apply only to specific sections of the PROTERMCAP file are explained in
context.
5–37
Progress Client Deployment Guide
General Syntax
A PROTERMCAP entry is a single logical line that contains many fields. The syntax for an
entry is as follows:
• Each field is terminated by a colon (:). (Use the octal equivalent \072 to specify a colon
that is not a terminator.)
• Unless stated otherwise, a field cannot contain embedded separators. Spaces and tabs
improve readability, but they are considered empty fields and must be terminated by a
colon.
• Comment lines begin with a pound sign (#), and can only occur at the beginning and end
of each PROTERMCAP terminal entry (that is, before the terminal name line and after the
pointer to key functions line).
– A field definition.
– A backslash (\).
– A return.
The backslash indicates that the terminal entry continues on the next physical line of the
file. If you need to include a literal backslash in a field, use two backslashes.
5–38
Maintaining User Environments
The following code fragment from the entry for the Wyse 370 shows the use of the colon, tab,
space, backslash, and return characters:
String Syntax
Certain fields in the capabilities, key bindings, and color sections are specified using strings.
Strings are typically a combination of command sequences, literal values, and encoded
arguments that tell Progress how to control some aspect of the display.
Table 5–7 show the symbols that are common to all strings. Symbols that are unique to strings
specified in the capabilities, key bindings, or color sections are explained in context.
Mnemonic Description
\n New line
\r Return
\t Tab
\b Backspace
\f Form feed
5–39
Progress Client Deployment Guide
Mnemonic Description
\^ ^
\\ \
Some terminal types require you to specify a delay period, also called a padding constant, with
certain string capabilities. The delay, in milliseconds, gives the terminal adequate time to
execute the command. Specify this delay as an integer value after the equals sign (=) in a string,
as shown in the following example:
:cm=20\E[%i%d;%dH:\
This tells Progress to wait 20 milliseconds after sending the cursor motion (cm) command
sequence.
You can optionally follow an integer delay value with an asterisk (*) for commands that affect
more than one line of the display. In this case, Progress delays the specified time for each line
affected by the command. However, this significantly degrades performance and usually is not
required.
When you specify proportional delay, you must specify an integer as the delay in a string field.
It cannot have a fractional part; for example, a delay of 1.5* is not valid.
NOTE: Do not specify a padding constant with the GS, GH, GV, GE, G1, G2, G3, and G4
capabilities.
5–40
Maintaining User Environments
• A description of the terminal in which only the last name can contain blanks for readability
(optional).
PROTERMCAP requires at least one of the name entries (1, 2, or 3, above) to be entered without
spaces; the other two, and the description, are optional. See the following examples.
For example:
Abbreviation Description
5–41
Progress Client Deployment Guide
• For certain capability types, a value that allows Progress to understand and interact with
the capability on a specific terminal
For example:
:ct:\
:cm=\E[%i%d;%dH:\
:co#80:\
:li#24:\
:G1=k:\
These are the graphics character terminal capabilities that Progress supports:
NOTE: Do not use a padding constant with any of the above graphic strings.
These are miscellaneous terminal capabilities that Progress supports:
co, li, CA, ce, cl, is, Se, Si, te, ti, pc, xi
k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, k0, k. (period), k, (comma), k- (hyphen)
NOTE: The ce, cl, and cm capabilities are required for Progress to start up.
Vermont Views supports all the capabilities listed here, except ce, te, and ti, and the
key translation capabilities.
5–42
Maintaining User Environments
5–43
Progress Client Deployment Guide
k0-9 STRING Define the codes sent by the numeric keypad keys if
k. these are different from the codes sent by the standard
k, 0-9, period, comma, and hyphen keys. These are only
k- used by Progress.
ku STRING Up arrow.
5–44
Maintaining User Environments
sf STRING Scroll forward. You can use this on terminals that have
scrolling regions (for example, terminals with cs and sr
defined).
5–45
Progress Client Deployment Guide
ws BOOLEAN Uses the device /dev /tty for the current port to
determine the number of columns and rows for the
terminal. Meaningful primarily for emulated terminals
in a windowing system (that is, xterm). If successful,
overrides co and li; otherwise, defaults to co and li.
Progress will not automatically resize if the size of the
terminal changes after initialization.
There are four types of terminal capability fields: BOOLEAN, NUMERIC, CHARACTER, and
STRING. Table 5–9 summarizes the four data types and the operators used in conjunction with
each. Boolean fields are specified by a mnemonic abbreviation only. The mnemonic indicates
that the feature is present and its absence indicates that the feature is not present. All other
capabilities take a value. The value can be a string, a character, or a numeric value.
BOOLEAN none
5–46
Maintaining User Environments
The following code fragment from the terminal entry for the Wyse 370 terminal shows how to
specify BOOLEAN, NUMERIC, CHARACTER, and STRING capabilities:
:ct:\
:cm=\E[%i%d;%dH:\
:co#80:\
:li#24:\
:G1=k:\
In this example, the mnemonic ct is a Boolean switch that indicates that the terminal supports
color. The mnemonic cm specifies cursor motion and takes a string. The assignment operator
for string values is an equals sign (=). The mnemonics co and li specify the number of columns
and lines on the display and each takes an integer. The assignment operator for integer values
is a pound sign (#). The mnemonic G1 specifies the upper-right corner line-graphic character
and takes a character. The assignment operator for character values is an equals sign (=).
• A list of the matching key label capabilities. The label in this column always starts
with “L_”.
5–47
Progress Client Deployment Guide
Here is an example:
:ku=\E[A: :L_ku=<Up>:\
:kd=\E[B: :L_kd=<Down>:\
:kr=\E[C: :L_kr=<Right>:\
:kl=\E[D: :L_kl=<Left>:\
:kh=\E[E: :L_kh=<Home>:\
Vermont Views
Labels
Mnemonics
NOTE: For readability in the PROTERMCAP file, the bc, ku, kd, kl, and kr capabilities are
usually repeated in the Vermont Views part of the file, even though both Progress
and Vermont Views use these capabilities as they appear earlier in the Progress
capabilities part. To avoid confusion, the key sequences for the Vermont Views
capabilities should be the same as the Progress capabilities.
Table 5–10 summarizes the Vermont Views key function capabilities mnemonics.
Mnemonic Description
PU Page up
PD Page down
ki Insert toggle
DL Delete character
bt Back tab
5–48
Maintaining User Environments
Mnemonic Description
fk2 Function Key 3 (enter the menu bar, then exit the menu bar)
Akw Contents
tc=v7kf:
If you modify or create new PROTERMCAP entries, be sure to include this line as the last line
in the entry. This line ensures that the terminal entry can support Progress Version 7 and later.
5–49
Progress Client Deployment Guide
If you want to use Version 6 mappings with Progress Version 7 and later, change the pointer as
follows:
tc=v6kf:
color-number
An integer from 5 to 127 that specifies the location of the color in the color table. The color
number is the mechanism used to assign a color pair in an application.
color-name
The name of the color. You can use any color value except a Progress keyword. Although
this is optional, including a name makes the color section of the terminal entry
self-documenting (you cannot embed comments) and also makes the color specifications
backwardly compatible.
start-sequence
stop-sequence
5–50
Maintaining User Environments
For example, the following fields from the Wyse 370 terminal define color table locations 5 and
6:
COLOR 5 RED/BLACK=\E[31;40m:\E[m:\
COLOR 6 GREEN/BLACK=\E[32;40m:\E[m:\
• Color 0 holds the Version 6 color NORMAL, which is set by the terminal initialization (is)
field.
• Color 1 holds the Version 6 color INPUT and is set and cleared by us and ue. As installed,
this is underline mode.
• Color 2 holds the Version 6 color MESSAGE and is set and cleared by so and se. As
installed, this is reverse-video.
• Color 3 holds the colors used for high intensity and is set and cleared by HS and HR.
• Color 4 holds the colors used for blink and is set and cleared by BB and BR.
NOTE: The PROTERMCAP file, as installed, does not support spacetaking (embedded
attribute) terminals. These are terminals that use characters on the display to hold
control codes for video and color capabilities. If you add support for such terminals,
Progress ignores the capability when displaying the interface.
• Control characters
The conversion specifications allow Progress to convert an integer row value and an integer
column value into the arguments the terminal expects.
5–51
Progress Client Deployment Guide
The cm string syntax is exactly the same as that used in the standard UNIX termcap file, in
which the conversion specifications follow the pattern of the UNIX printf() command. Table
5–11 lists the supported conversion specifications, each of which begins with a percent sign
(%).
Mnemonic Description
%% Gives a single %.
%x Gives a two-byte, zero-padded, hex value as in the “%0.2x” format for the
UNIX printf() function.
5–52
Maintaining User Environments
The following example is the cursor motion field for the wyse 370 terminal:
:cm=\E[%i%d;%dH:\
• \E[ — The standard ANSI console lead-in sequence (Escape, followed by a left square
bracket). Progress transmits this literally.
• %i — Instructs Progress to add one to the row and column values to compensate for a
terminal whose origin is 1,1.
• %d — Instructs Progress to send the row and column values to the terminal in ASCII
format.
• H — A terminating character.
To create a cm string for a new terminal type, find the description of this capability in your
terminal’s documentation to determine the control characters and the arguments it expects to
move the cursor to a random spot on the display. The documentation specifies an algorithm for
converting a row/column integer pair to the arguments it needs. The manual also specifies the
order in which the row and column values are expected (typically row first), and the character
to use to separate the two values. For example, to move to column 65, row 66, a terminal might
expect the characters A and B, which have ASCII values of 65 and 66, respectively.
UNIX
Key Function Key Label
ABORT CTRL-\
CTRL-ALT-DEL
APPEND-LINE CTRL-A
5–53
Progress Client Deployment Guide
UNIX
Key Function Key Label
BACKSPACE BACKSPACE
CTRL-H
DEL-CHAR
BACK-TAB BACK-TAB
CTRL-U
SHIFT-TAB
BELL BELL
CTRL-G
BLOCK SELECT
CTRL-V
BOTTOM-COLUMN ESC-CTRL-B
BREAK-LINE ESC-B
CANCEL-PICK ESC-CTRL-X
CHOICES ESC-CTRL-H
CLEAR F8
CTRL-Z
CLOSE ESC-Z
COMPILE ESC-P
COPY F11
ESC-C
CURSOR-DOWN CURSOR-DOWN
CTRL-J
CURSOR-LEFT CURSOR-LEFT
CTRL-O
CURSOR-RIGHT CURSOR-RIGHT
CTRL-L
5–54
Maintaining User Environments
UNIX
Key Function Key Label
CURSOR-UP CURSOR-UP
CTRL-K
CUT F10
ESC-X
DEFAULT-POP-UP ESC-U
DELETE-CHARACTER DEL
DELETE-COLUMN ESC-CTRL-Z
DELETE-END-LINE ESC-K
DELETE-FIELD ESC-CTRL-D
DELETE-LINE REMOVE
CTRL-D
DELETE-WORD ESC-D
EDITOR-BACKTAB CTRL-B
EDITOR-TAB CTRL-G
END END
ESC ->
ESC-.
END-ERROR F4
PF4
ESC
CTRL-E
ENTER-MENUBAR F3
PF3
ESC-M
EXIT ESC-Q
FIND CTRL-F
FIND
5–55
Progress Client Deployment Guide
UNIX
Key Function Key Label
FIND-NEXT ESC-F
FIND-PREVIOUS ESC-I
GET F5
ESC-O
GO F1
PF1
CTRL-X
DO
GOTO ESC-G
HELP HELP
F2
ESC-?
PF2
HOME HOME
ESC-H
ESC-h
ESC-<
ESC-,
INSERT-COLUMN ESC-CTRL-N
INSERT-FIELD ESC-CTRL-G
INSERT-FIELD-DATA ESC-CTRL-F
INSERT-FIELD-LABEL ESC-CTRL-E
INSERT-MODE INS
F9
CTRL-T
CTRL-@
LEFT-END ESC-LEFT-ARROW
MAIN-MENU ESC-CTRL-M
5–56
Maintaining User Environments
UNIX
Key Function Key Label
MOVE ESC-CTRL-V
NEW ESC-N
NEW-LINE INSERT-HERE
CTRL-N
NEXT-ERROR ESC-E
NEXT-FRAME ESC-CTRL-I
NEXT-WORD CTRL-W
OPEN-LINE-ABOVE ESC-L
OPTIONS ESC-CTRL-O
PAGE-DOWN PAGE-DOWN
ESC-CURSOR-DOWN
ESC-DOWN-ARROW
NEXT-PAGE
NEXT-SCRN
PAGE-LEFT ESC-W
PAGE-RIGHT ESC-Y
ESC-CTRL-J
PAGE-RIGHT-TEXT ESC-CTRL-J
PAGE-UP PAGE-UP
ESC-CURSOR-UP
ESC-UP-ARROW
PREV-PAGE
PREV-SCRN
PASTE F12
ESC-V
PICK ESC-CTRL-P
PICK-AREA ESC-CTRL-W
5–57
Progress Client Deployment Guide
UNIX
Key Function Key Label
PICK-BOTH ESC-CTRL-Q
PREV-FRAME ESC-CTRL-U
PREV-WORD CTRL-P
PUT F6
ESC-S
RECALL F7
CTRL-R
REPLACE ESC-R
REPORTS ESC-CTRL-A
RESUME-DISPLAY CTRL-Q
RETURN RETURN
CTRL-M
RIGHT-END ESC-CURSOR-RIGHT
ESC-RIGHT-ARROW
SAVE-AS ESC-A
SCROLL-LEFT ESC-CTRL-L
SCROLL-MODE ESC-T
SCROLL-RIGHT ESC-CTRL-R
SETTINGS ESC-CTRL-@
STOP CTRL-C
CTRL-BREAK
STOP-DISPLAY CTRL-S
5–58
Maintaining User Environments
UNIX
Key Function Key Label
TAB TAB
CTRL-I
TOP-COLUMN ESC-CTRL-T
keyfunction(key-label) = sequence:
keyfunction
key-label
sequence
As in other sections of the PROTERMCAP file, string values are assigned using an equal sign
(=) and the field is terminated with a colon (:).
For example:
RECALL(F7)=^AF\r:
This field in a PROTERMCAP terminal entry defines the F7 key as transmitting a CTRL-A
followed by a capital F followed by a carriage return, and associates use of F7 with the RECALL
function.
The following field defines SCROLL-DOWN to act like PAGE-DOWN:
PAGE-DOWN(SCROLL-DOWN)=\021:
5–59
Progress Client Deployment Guide
If you assign the same key label to two or more different key functions, you get a warning
message when you start Progress. For example, “You cannot use DELETE for both
DELETE-CHARACTER and BACKSPACE.”
If you use a key in the Progress ON statement or GO-ON option only, and do not have to assign
it to a standard action, then use the following syntax in the PROTERMCAP entry:
(key-label)=sequence:
For example, the following entry indicates that pressing F16 sends a capital O followed by a
carriage return:
(F16)=O\r:
If any of the control code sequences sent when you press a key on the keyboard begin with a
control key, you cannot use that control key on your keyboard and the key does not have its
normal Progress meaning. For example, if you specify CTRL-F in a control code sequence when
creating a key mapping, you can no longer use CTRL-F for FIND. You have to map another key
to the FIND action.
The key labels that the UNIX stty command specifies for FLUSH and SUSPEND override the
PROTERMCAP file’s use of the same key labels. For example, if the stty settings for FLUSH
and SUSPEND are CTRL-Q and CTRL-S, you cannot map these key labels to key functions in the
PROTERMCAP file. If you do, you receive no warning; the labels assume their stty meanings
at run time and Progress ignores them.
The labels specified by the stty command are of two forms: either CTRL-X or DEL if the
DELETE key (octal 177, decimal 127) is used. When entering the stty command, indicate the
control character by holding down the CTRL key and pressing the specified key; you do not type
a caret (^) followed by the key.
5–60
Maintaining User Environments
If an entry in the PROTERMCAP file uses one of the key labels specified in the stty command,
you get a warning message when you start Progress. For example, if the stty command
specifies the DELETE key for the STOP function and the PROTERMCAP file specifies the
DELETE key for the DELETE-CHARACTER function, you receive a warning message.
In UNIX environments that do not use the Bourne shell (for example, the Korn shell or C shell),
job control allows you to end a job currently executing on a terminal. In most environments this
is initiated using CTRL-Z; however, Progress uses this character sequence to clear the editor.
The IN statements in the preceding example map ASCII characters (B, A, a, O, o, U, and u) to
German characters (ß, Ä, ä, Ö, ö, Ü, and ü). When Progress sees the character A (\101) on input,
it converts the character to Ä (\216). Likewise, when Progress needs to send an Ä to the
terminal, it sends [ (\101). The terminal sees A and displays Ä.
Suppose the terminal cannot display an Ä. You can use the OUT statement to specify an
appropriate character to display for Ä, such as capital A. For example:
:OUT(\216)=\101:
The IN and OUT statements express both the ASCII character and the extended character in
octal (\nnn) format.
5–61
Progress Client Deployment Guide
Given the appropriate PROTERMCAP file entries for a language and terminal, set the TERM
environment variable to terminal/language (for example, TERM=wy60/german).
You can also specify character mappings for the input and output streams using the MAP option
with each of the following Progress language elements:
• OUTPUT TO statement
For more information about these language elements, see the Progress Language Reference.
5–62
Maintaining User Environments
• Test to see that colors are working correctly on widgets and frames.
Operating
System Command Environment
Alternately, you can change the terminal type from within a Progress program with the
following Progress statement:
TERMINAL = termid
See the TERMINAL Function reference entry in the Progress Language Reference for more
information.
NOTE: Terminal names are case sensitive.
5–63
Progress Client Deployment Guide
:tc=terminal-name
• To override a capability in the copied entry, specify the capability in the new terminal’s
entry. Commands specified first always override those specified later.
5–64
Maintaining User Environments
• To suppress the inclusion of a capability that you do not want to specify in the new
terminal’s entry, specify only the mnemonic, followed by an at symbol (@) in the new
terminal’s entry. This tells Progress to ignore the capability when it reads it from the
similar terminal.
• You cannot use the Version 6 PROTERMCAP in Version 7 or later. You can edit the
PROTERMCAP to use the Version 6 key bindings by editing the following line at the end
of the file:
• Place the similar terminal entry in the PROTERMCAP file before entries that reference it.
• The combined length of all the definitions must be less than 8,192 bytes.
For example, the following code fragment is a terminal entry for a Wyse 370 in 132 column
mode. The entry specifies the name of the terminal, a terminal initialization sequence, the
number of columns, and then uses tc to append the specifications for the Wyse 370 terminal:
5–65
Progress Client Deployment Guide
5–66
6
Managing R-code Libraries
• “Library Overview”
• “Setting Up a Library”
When you execute r-code procedures from a memory-mapped library in shared memory, you
gain the following additional advantages:
• Requires less memory because multiple users access the same r-code segments in shared
memory
When loading and executing r-code procedures from operating system files in a directory,
Progress must open and close each file individually. When loading and executing r-code
procedures from standard or memory-mapped libraries, Progress opens only one file—the
library itself—to access all of the r-code files in the library.
The r-code files that you place in a library are called members. Progress opens a library the first
time you run a member procedure from the library. The library stays open until the end of your
Progress session or until you remove the library from the PROPATH. For more information
about how standard and memory-mapped libraries interact with PROPATH during a Progress
session, see the “Libraries and PROPATH” section later in this chapter.
For information about monitoring and optimizing r-code execution during a Progress client
session, see Chapter 4, “Managing Client Performance.” For more information about r-code
structure and execution, see the Progress Programming Handbook.
6–2
Managing R-code Libraries
Standard R-code
Execution Buffer
in Local Memory
ADDCUST.R
Client
ADDCUST.R File
Process
Sort File
(1 per User)
6–3
Progress Client Deployment Guide
Execution Buffer
in Local Memory
Client APPL.PL
ADDCUST.R
Process Library
6–4
Managing R-code Libraries
Client
Process
A APPL.PL
ADDCUST.R
Client Library
Process
B
1 ♦ Create the standard library with the PROLIB utility. (All libraries must have a .pl
extension.)
2 ♦ Add the r-code files to the library with the PROLIB utility.
3 ♦ If you are setting up a memory-mapped library, use the PROLIB utility to generate the
memory-mapped library from the standard library.
For more information about the PROLIB utility, see the “Using the PROLIB Utility” section
later in this chapter. For more information about placing libraries in the PROPATH, see the
“Libraries and PROPATH” section later in this chapter.
6–5
Progress Client Deployment Guide
RUN /usr/appl/addcust.r
To run a procedure from a library in a specific directory, reference the library and procedure
using an absolute pathname. For example:
RUN /usr/appl.pl<<addcust.r>>
When you reference a procedure in a specific library, you must enclose the member name in
double angle brackets as shown.
6–6
Managing R-code Libraries
When you reference a procedure in either an operating system file or an unspecified library
using a relative pathname, Progress searches each directory and library defined in the
PROPATH until it finds the first occurrence of the procedure. For example:
RUN mydir/appl/addcust.r
When you reference a procedure in a specific library using a relative pathname, Progress
searches the PROPATH until it finds the first occurrence of the library. For example:
RUN mydir/appl.pl<<addcust.r>>
When you reference a procedure in a specific library, you must enclose the member name in
double angle brackets as shown.
The most flexible way to find procedures is to specify relative pathnames for all procedures run
in your application. This allows you to put a procedure into a library for production, but
maintain separate procedure and r-code files during development. In a development
environment, either place the library in the PROPATH after your development directories or
omit it from the PROPATH entirely. In a production environment, place the library at or near
the beginning of the PROPATH to avoid long searches.
NOTE: Progress cannot find procedure files in a library; it can find only r-code files.
For more information about how libraries interact with PROPATH, see the “Libraries and
PROPATH” section later in this chapter. For more information about the RUN statement, see
the Progress Language Reference.
library-pathname<<member-name>>
For example:
/usr/dictionary/dictionary.pl<<dict.r>>
Other Progress functions make use of this syntax. The LIBRARY function parses the pathname
and returns the name of the library (in this example, /usr/dictionary/dictionary.pl). If the
argument to LIBRARY is not in the form library-pathname<<member-name>>, the LIBRARY
6–7
Progress Client Deployment Guide
function returns the unknown value (?). This is also true of the MEMBER function, which
parses the pathname and returns the name of the member file (in this example, dict.r).
For more information about the SEARCH, LIBRARY, and MEMBER functions, see the
Progress Language Reference.
• The first time you run a member procedure from a standard or memory-mapped library
that is specified in the PROPATH, Progress locates the procedure by searching through
each directory and library in the PROPATH until it finds the procedure. To search a library
for a member procedure, Progress must open the library. When Progress opens a standard
library, it loads the procedure into local memory. When Progress opens a memory-mapped
library, it maps the library in shared memory.
• When searching through directories and libraries in the PROPATH, Progress starts at the
beginning of the PROPATH and searches each directory and library, in defined order, until
it finds the procedure. Thus, placing the library at the beginning of the PROPATH
improves performance.
• A library remains open until the end of your Progress session or until you remove the
library from the PROPATH. If you remove a library from the PROPATH while a member
procedure is still active (either running, or waiting for a subprocedure to return), Progress
displays an error message and the library remains open until you end your Progress
session. Otherwise, Progress closes a standard library and unmaps a memory-mapped
library.
• If you use a SEARCH or RUN statement to open a library that is not in the PROPATH,
the library remains open until you end your Progress session.
• If you use libraries, Progress accesses r-code files as if you had specified the Quick
Request (-q) startup parameter. That is, Progress searches the PROPATH only on the first
reference to a procedure. Thereafter, if the procedure still resides in memory, in the local
session compile file, or in an r-code library, Progress reuses the procedure instead of
searching the PROPATH again. For more information about the Quick Request (-q)
startup parameter, see the Progress Startup Command and Parameter Reference.
NOTE: To ensure that all users access the same memory-mapped library in shared memory,
each user must place the library in their PROPATH using the same library pathname.
6–8
Managing R-code Libraries
For more information about running procedures from a library, see the “Running Procedures
from a Library” section earlier in this chapter.
Operating
System Syntax
UNIX
Windows
prolib library-name parameter [ file-name ... ]
library-name
Specifies the name of an r-code library. The library name must have a .pl extension.
6–9
Progress Client Deployment Guide
parameter
Specifies what action to take on the library. Table 6–1 lists the parameters and their
descriptions.
Parameters Description
-list Lists library information such as library name, format, code page,
and file contents.
-extract Extracts files from a standard library. This parameter copies a file
from the library into another file, outside of the library, and gives it
the same name.
-yank Extracts files from a standard library and places them in the current
working directory.
-nowarn Suppresses any warning message that might occur during the
operation of the primary parameters. If you add a file to a standard
library with the -add and -nowarn parameters, and the file already
exists in the library, PROLIB replaces the file.
-date Specifies the format of the date as it appears when you use the -list
parameter.
6–10
Managing R-code Libraries
When specifying a parameter, you do not have to type the complete parameter name. You
can type the minimally unique string for each parameter (for example, -l for -list and -e for
-extract).
The -nowarn and -verbose parameters modify the behavior of the -create, -makeshared,
-add, -replace, -delete, -list, -extract, and -yank parameters.
You can place the -nowarn, -pf, and -verbose parameters anywhere on the command line.
They affect the processing of all other specified parameters.
You must place the -create parameter before all other parameters. PROLIB processes
parameters in left-to-right order as they appear on the command line. If an error occurs
during the PROLIB command, PROLIB terminates. This behavior occurs so that options
specified later in the command line, which might depend on the failed option, do not
execute.
You cannot use the -add, -replace, -delete, -extract, -yank, or -compress parameters with
a memory-mapped library (that is, when you specify a memory-mapped library in
library-name).
file-name
Specifies the name of an r-code file, or a memory-mapped library file when using the
-makeshared parameter.
The -add and -replace parameters act on operating system files. PROLIB uses system calls to
copy the files. Thus, when you use these parameters, use your operating system’s standard
conventions to specify wild cards.
The -extract, -list, -delete, and -yank parameters act on files that are already placed in a library.
PROLIB does not use system calls to act on the files, but instead uses its own internal code. On
UNIX, you must escape your wild card arguments by either enclosing them in quotes (for
example, prolib app.pl -delete "sys*.r") or escaping the wild card characters individually
(for example, prolib app.pl -delete sys\*.r). Your operating system might use different
6–11
Progress Client Deployment Guide
techniques to escape wild cards. In Windows, you do not need to escape wild card arguments
because the operating system does not expand them before passing them to PROLIB.
Operating
System Syntax
All libraries must have a .pl extension. You can add libraries to the PROPATH
environment variable by specifying the file’s absolute or relative pathname.
codepage-name
Specifies the name of the code page for the library you want to create.
A library can contain r-code procedures with different code pages. All r-code procedures
retain their respective code pages.
If you do not specify the -codepage parameter at creation time, Progress marks the r-code
library with the code page specified in the Internal Code Page (-cpinternal) startup
parameter.
For information about code page compatibility, see the section “Code Page Compatibility”
later in this chapter.
6–12
Managing R-code Libraries
Operating
System Syntax
standard-library-name
Specifies the name of the standard library from which to generate the memory-mapped
library. The library name must have a .pl extension. You can add libraries to the
PROPATH environment variable by specifying the file’s absolute or relative pathname.
NOTE: Save the standard library. It is the source of modification for the memory-mapped
library. Each time you modify the standard library you must regenerate the
memory-mapped library.
mapped-library-name
Specifies the name of the memory-mapped library you are generating. The library name
must have a .pl extension.
6–13
Progress Client Deployment Guide
Operating
System Syntax
library-name
Specifies the name of the library where you want to add the file.
file-name
Specifies the pathname of the file. You can add a file to a library by specifying the file’s
absolute or relative pathname.
When you add a file to a library, the library entry for that file retains the entire pathname. For
example, enter a file into a library called newlib.pl using the following command:
The pathname /usr/apps/proc1.r appears in the library’s table of contents. You can display
the library’s table of contents with the -list parameter.
When you extract a file from a library, PROLIB copies the file into the directory specified by
the pathname (in this example, /usr/apps). See the “Extracting Files from a Standard Library”
section for more information.
If you try to add a file that already exists, PROLIB displays an error message. However, if you
specify the -nowarn parameter, PROLIB replaces the existing file. See the “Replacing Files in
a Standard Library” section for more information.
6–14
Managing R-code Libraries
Operating
System Syntax
library-name
Specifies the name of the library with the file you want to replace.
file-name
When you replace a file, the system overwrites the old file with a file of the same name.
Therefore, the pathname you supply for the file has to be the same as the pathname you used
originally to add the file to the library. If you try to replace a file that does not exist, PROLIB
displays an error message. However, if you specify the -nowarn parameter, PROLIB adds the
existing file to the library. See the “Adding Files to a Standard Library” section for more
information.
Operating
System Syntax
library-name
Specifies the name of the library with the file you want to delete.
file-name
Specifies the name of the file. You can specify more than one file at a time.
6–15
Progress Client Deployment Guide
Operating
System Syntax
library-name
Specifies the name of the library with the contents you want to list.
file-name
Specifies that PROLIB should list information about that file only; file-name has to be the
same absolute or relative pathname as when you originally add the file. You can specify
more than one file at a time.
Table 6–2 lists the information that appears in the header section of the output.
Information Description
Code Page The code page in which the library was created.
Format The format of the library. The valid library formats are STANDARD
and MAPPED.
Table 6–3 lists the information that appears in the output for each file in the library.
Information Description
6–16
Managing R-code Libraries
Information Description
Type The file type. PROLIB recognizes two file types: R (r-code file type)
and O (any other file type). Although libraries are specifically
designed to hold r-code files, you can place any type of file in them.
Offset The distance, in bytes, of the start of the file from the beginning of the
library.
Added To Lib The date and time the file was entered into the library.
You can also change the format of the dates as they appear in the
Modified and Added To Lib fields with the -date parameter, where
date-format is three letters: m (month), d (day), and y (year). To
specify a format, place the letters in the order you want the months,
days, and years to appear on screen. The default is mdy.
Operating
System Syntax
library-name
Specifies the name of the library with the file you want to extract.
file-name
Specifies the name of the file. You can specify more than one file at a time.
6–17
Progress Client Deployment Guide
When you extract a file from a library, PROLIB copies the file and places it in its original
directory. Depending on how you add a file to a library, PROLIB extracts differently:
• If you added the file by specifying a relative pathname, PROLIB searches your current
working directory for the subdirectory indicated in the pathname. For example, if you
added a file by using the relative pathname apps/proc1.r, PROLIB searches your current
working directory for the subdirectory apps. If the directory does not exist, PROLIB
displays an error message.
• If you added the file by specifying its absolute pathname, PROLIB searches for the
original directory. If the directory does not exist, PROLIB displays an error message.
NOTE: If you specify the -yank parameter instead of -extract, Progress strips everything but
the filename from the pathname and places the file in your current directory.
If the file you are extracting (or yanking) already exists in the directory outside of the library,
PROLIB displays the following message:
where file-name is the pathname of the file you are extracting (or yanking). If you answer yes,
PROLIB overwrites the file. If you answer no, PROLIB does not overwrite the file. If you
answer rename, PROLIB displays the following message:
where file-name is the pathname of the file you are extracting (or yanking). After you enter the
pathname, PROLIB gives the file the new pathname and places it in the appropriate directory.
6–18
Managing R-code Libraries
To extract files from a library using the -yank parameter, enter the following command:
Operating
System Syntax
library-name
Specifies the name of the library with the file you want to extract.
file-name
Specifies the name of the file. You can specify more than one file at a time.
Operating
System Syntax
library-name
Specifies the name of the library you are compressing. The -compress parameter removes
extra spaces that occur in the library as a result of repeated adds or deletes.
To compress a library, PROLIB creates a temporary file that requires an area of disk space equal
to the size of the compressed library. Before compressing a library, make sure you have enough
disk space for the temporary file. Temporary files have names that begin with the letters PLB,
followed by numbers and possibly letters.
If your system goes down during a compress operation, the temporary file might remain on your
disk. Delete this file to free up disk space. The original library will not be damaged.
6–19
Progress Client Deployment Guide
Repeated adds create empty spaces in the library over time. To minimize the rate at which these
empty spaces are created, you can use one command instead of many. For example, instead of
entering the following commands:
You can use the -list parameter to determine how much space in your library is unused.
The following example adds all the r-code files in the current directory that begin with the
letters sys to the standard library app.pl. In this example, the r-code files are in a directory, so
the operating system processes the wild card argument:
The following example deletes all r-code files ending with the letters dev from the standard
library app.pl and lists all of the files in the library. In this example, the r-code files are in the
app.pl library, so PROLIB processes the wild card argument. This requires escaping the
*dev.r argument. On UNIX, this means placing quotes around it. Your operating system might
use different techniques to escape wild cards:
6–20
Managing R-code Libraries
The following example replaces the files appmenu.r and apprept.r in the standard library
app.pl, then compresses the library to free up unused disk space:
The following example creates a standard library called app.pl in your current directory, adds
all the r-code files in the current directory that begin with the letters sys to the library app.pl,
and generates a memory-mapped library called app_map.pl:
6–21
Progress Client Deployment Guide
6–22
7
Managing Print Devices
System administrators are responsible for setting up and maintaining the output devices
required by an application. Most Progress applications access printers to print reports or other
output. This chapter provides an overview of how to set up print devices on Progress-supported
operating systems. It also describes how to use Progress to set up and control output routing and
printing characteristics.
This chapter provides information about the following topics:
• “Printing in Progress”
• “Printing on UNIX”
• “Printing in Windows”
• “Setting Up Output-routing”
• “Configuring a Printer”
Progress Client Deployment Guide
• OUTPUT TO statement
7–2
Managing Print Devices
[ PAGED ]
[ PAGE-SIZE { constant | VALUE ( expression ) } ]
.
.
.
Use the OUTPUT TO statement with the PRINTER option to send output to the default print
device on the current operating system. For example:
OUTPUT TO PRINTER.
On UNIX, the OUTPUT TO PRINTER statement sends output to the default spooler. To use a
spooler other than the default, start Progress using the Printer (-o) startup parameter.
In Windows, the OUTPUT TO PRINTER statement sends output to the printer defined in
default print context. The default print context is the set of values that defines the default printer
and setup for that printer in Windows. If there is no default print context, Progress uses the
printer control settings from the current environment.
Use the SYSTEM-DIALOG PRINTER-SETUP statement to display the Windows Print dialog
box and let the user change the default print context at runtime. Use the PRINTER-NAME
attribute of the SESSION system handle to change the printer name in the default print context
without user intervention. You can change the system default printer from the Windows Control
Panel.
7–3
Progress Client Deployment Guide
Use the OUTPUT TO PRINTER statement with its various options to override the default print
context for a specific print job. For example, send output to a printer other than the default
printer by using the following syntax:
Progress assumes that all printers can handle hard-coded form feed characters (CTRL-L or 0C
Hex). The OUTPUT TO PRINTER statement automatically paginates Progress output on the
default printer. To paginate output on a printer, other than the default printer, use the OUTPUT
TO PRINTER statement with the PAGED or PAGE-SIZE option.
Use the Printer (-o) startup parameter to specify a default printer to use when processing the
OUTPUT TO PRINTER statement in procedures. The specified printer must be set up on the
current operating system.
For a complete description of the OUTPUT TO PRINTER statement, the SYSTEM-DIALOG
PRINTER-SETUP statement, and the SESSION system handle, see the Progress Language
Reference. For more information about the Printer (-o) startup parameter, see the Progress
Startup Command and Parameter Reference.
You can also use the OUTPUT THROUGH statement to access spooling capabilities on UNIX
systems. For example, this command sends output to the printer named lw on a UNIX system:
For a complete description of the OUTPUT THROUGH statement, see the Progress Language
Reference.
7–4
Managing Print Devices
1 ♦ Install and configure a device in the /dev directory. Make sure the device is not configured
as a login terminal.
2 ♦ Use the lpadmin command to set up a new printer. This command allows you to specify a
printer name and a printer-interface program, and connects them with a print device that
exists in the /dev directory.
3 ♦ Use the lpsched command to start the LP scheduler once the printer has been set up.
4 ♦ Use the accept and enable commands to let the printer accept print requests and enable
spooling for the printer.
To set up a printer on a UNIX Berkeley 4.n system, make sure that the lpr system and the
printer hardware are installed and that the lpd daemon is running. The lpd daemon is the master
server that services print requests and routes them to the proper spooling directories for printing.
The lpd daemon usually starts when you boot your system. Log in as the root user, then follow
these steps:
1 ♦ Install and configure a device in the /dev directory. Make sure the device is not configured
as a login terminal.
2 ♦ Edit the /etc/printcap file. This file contains definitions for all of the printers on a
system (or accessible over a network). Each printer definition in /etc/printcap does the
following:
7–5
Progress Client Deployment Guide
3 ♦ Create the spooling directory and make sure the spooling directory and the directories of
the lpr system have the proper permissions and ownership.
4 ♦ Use the lpc start and lpc enable commands to let the printer accept print requests and
enable spooling for the printer.
Most UNIX System V or Berkeley 4.n systems have printer installation scripts that perform the
printer installation steps described in this section.
The OUTPUT TO PRINTER statement sends output to the UNIX system default spooler. To
use a spooler other than the default, start Progress using the Printer (-o) startup parameter
followed by the name of the spooler. For example:
Alternately, you can use the OUTPUT THROUGH statement to direct output to a spooler other
than the default spooler:
or:
With both the OUTPUT THROUGH statement and the Printer (-o) startup parameter, you can
specify UNIX spooler options for the spooler that you designate. If you want to specify spooler
options with the Printer (-o) startup parameter, surround the spooler name and options with
quotes. For example:
For more information about printing on UNIX, see the UNIX system documentation.
7–6
Managing Print Devices
On TCP/IP networks, remote spooling is handled with two spooling queues, one on the local
machine and one on the remote machine.
Follow these steps to set up remote printers using TCP/IP networks:
1 ♦ Be sure that the required TCP/IP system files are set up on both the local and remote
machines. The local and remote machines have entries in their /etc/hosts and
/etc/hosts.equiv files to facilitate network operations.
3 ♦ Define an entry for the remote printer in the /etc/printcap file on the local machine. This
remote-printer entry must have an empty field for the lp capability, a remote machine
designation, a remote printer designation, and a remote spooler directory designation. The
remote printer that you define in the /etc/printcap file can be the default print spooler
for the local machine.
4 ♦ Create the spooling directory, then use the lpc start and lpc enable commands to allow the
remote printer to receive print requests and to enable spooling for the printer.
When you initiate a remote print job with lpr, the job is queued locally and a daemon process is
created to oversee the transfer of the job to the remote machine. If the destination machine is
unreachable, the job remains queued until it is possible to transfer the files to the spooling queue
on the remote machine.
Follow these steps to set up remote print spooling using the Basic Networking Utilities:
1 ♦ Be sure that the Basic Networking Utilities (uucp) are installed on both the remote and
local machines. The Basic Networking Utilities use a series of files to define network
machines (L.sys), to set up communications mechanisms and characteristics (L.devices
and L-dialcodes), to determine what commands can be executed remotely (L-cmd), and
to set up network permissions (USERFILE). An entry is also required in the /etc/passwd
file on each network machine to allow uucp logins.
3 ♦ Create an executable script to use the uux command to enact a print job on the printer
attached to the remote node.
When you use the uux command to execute a remote print job, the network request is queued in
the local uucp spooling directory, permissions are checked, and the request is sent to the remote
machine. The remote machine places the print request in the spooling directory of the printer.
For more information about UNIX networks and printers, see the UNIX system administration
documentation.
7–7
Progress Client Deployment Guide
• Default mode
In default mode, Progress uses the Windows device drivers. This mode is sufficient for all basic
printing that does not use any printer access control codes, such as those sent by PUT, PUT
CONTROL, or DISPLAY statements.
In WPP mode, Progress bypasses the Windows device drivers. This means you can send control
codes (such as POSTSCRIPT commands) directly to the printer with the PUT, PUT
CONTROL, or DISPLAY statements. To enable windows passthrough printing for a session,
use the Windows Passthrough Printing (-wpp) startup parameter. You can only use this
parameter on the command line.
You cannot use WPP mode with a POSTSCRIPT printer to print Progress standard reports, such
as those produced by the Data Dictionary.
NOTE: When using windows passthrough printing under Windows95, you must change the
Spool Data Format from EMF spooling to RAW spooling. Use the Control Panel to
access the Printer Properties for the printer, then select Spool Setting from the Details
tab of the Printer Properties tab. Change the Spool Data Format to RAW spooling.
For a complete description of the PUT, PUT CONTROL, and DISPLAY statements, see the
Progress Language Reference. For more information about the Windows Passthrough Printing
(-wpp) startup parameter, see the Progress Startup Command and Parameter Reference.
7–8
Managing Print Devices
Another output-routing scheme could direct output to different printers based on both the user
and the type of report.
You can set up an output-routing scheme in the following ways:
7–9
Progress Client Deployment Guide
Figure 7–2 shows a sample application startup procedures on NT. This application startup
procedure designates LPT2 as the default print device for the current Progress session and starts
up a Progress application located in the /usr/appl1 directory that access a database called
appldb.
echo off
set APPL1=\usr\APPL1
set PROPATH=%PROPATH%;%APPL1%
%DLC%\_progress -D 20 -o LPT2 -p
\usr\APPL1\mainmenu.p appldb
7–10
Managing Print Devices
Usrprnt
userid outdev
The include file searches the Usrprnt table for a record that has a user ID that matches the user
ID established for the current application session. If there is no user ID match or established user
ID for the application session, Progress uses the default system printer. If there is a match,
Progress sends the application output to the output device contained in the corresponding
outdev field.
The VALUE option of the OUTPUT THROUGH statement allows you to designate a
substitutable output device. The USERID function allows you to capture system user IDs on
UNIX. For more information about the _User table, see Progress Database Administration
Guide and Reference.
7–11
Progress Client Deployment Guide
After creating an include file to route application output, replace all OUTPUT statements in
your application with the include file. For example:
{output1.i}.
~nnn Single character Use to send a single character to the printer, where
nnn is an octal code between 000 and 377. You
must specify all three digits.
~t Tab character Use to send the 011 octal code to the printer.
~r Carriage return Use to send the 015 octal code to the printer.
~n Line feed Use to send the 012 octal code to the printer.
7–12
Managing Print Devices
~f Form feed Use to send the 014 octal code to the printer.
The PUT statement with the CONTROL option allows you to specify a control sequence that
you want to send to a printer. The PUT statement has the following syntax:
In the following example, the control sequence ~017 turns on the compressed printing feature
of the current print device:
The control sequences sent to the output destination do not affect the current line, page counters,
and positions maintained within Progress. For more information about the PUT CONTROL
statement, see the Progress Language Reference.
7–13
Progress Client Deployment Guide
There is no easy way to employ a Progress UPDATE statement to interpret the printer-control
sequences and enter them into a printer-control table. For example, the Progress UPDATE
statement interprets the octal sequence ~017 as the character string:
[TILDE][ZERO][ONE][SEVEN]
[CONTROL-0]
You can create a system administration procedure that lets you convert printer-control
sequences into the appropriate ASCII character strings, and store the printer-control sequences
as ASCII character strings in the fields of a printer-control table.
Keep the printer-control table up to date with a record for each printer on your system. Figure
7–4 shows a sample printer-control table.
prntcfg
default ** ** ... ** ** **
lpr -Pcx1 ** ** ** ** **
lpr -Plw1 ** ** ** ** **
7–14
Managing Print Devices
To access the proper control sequences for a printer from a printer-control table, set up an
include file to determine the print device used in the application, then substitute the
corresponding control sequences into the PUT CONTROL statements of the application. For
example:
The include file searches the Usrprnt table to determine the output device (Usrprnt.outdev) for
the current user ID. After determining the output device, the include file searches the
printer-control table to find the appropriate control sequences for the current printer. Notice that
the printer-control table contains a default entry for the default printer.
The PUT CONTROL statements in your application should use a field in the printer-control
table or a variable name to access the proper control sequence for the current printer. This allows
you to change print devices without recoding the printer-control sequences for all the PUT
CONTROL statements in your application. For example:
{output2.i}.
In this procedure, the first PUT CONTROL statement turns on compressed printing, and the
second PUT CONTROL statement turns off compressed printing for the current print device.
7–15
Progress Client Deployment Guide
7–16
A
Building Progress Executables
When you purchase a Progress product, you receive a set of executable files, database files, and
other files that are necessary to run the product on your system. In most cases, the files included
in your initial product installation fulfill your system requirements. However, you might need
to customize a Progress executable by adding or removing product capabilities. For example,
you might need to change network protocols or access a non-Progress data source. When you
need to customize a Progress executable, use the PROBUILD utility. PROBUILD is an
end-user configuration utility that helps you to build customized versions of certain Progress
executables.
This appendix provides information about the process and requirements for building
customized Progress executables. It also provides instructions for using PROBUILD on UNIX
and in Windows. This appendix contains the following sections:
• “Licensing Requirements”
• “PROBUILD Overview”
• “Troubleshooting”
Progress Client Deployment Guide
1 ♦ Make a backup copy of the original Progress executable for safekeeping, if necessary.
A–2
Building Progress Executables
• Optional Progress capabilities (configurable elements) that you are licensed to build
into a Progress product
You must specify these components when you create the link script using PROBUILD in
Step 5.
See the “Running PROBUILD on UNIX” section for the list of Progress products and
configurable elements you can build on UNIX. See the “Running PROBUILD in
Windows” section for the list of Progress products and configurable elements you can
build in Windows.
3 ♦ Verify the system requirements. The system must meet all applicable software, hardware,
and licensing requirements.
See the “Software and Hardware Requirements” section for information about system
requirements. See the “Licensing Requirements” section for information about licensing.
See the “Preparing the UNIX Software Environment” section for information about
preparing the UNIX software environment. See the “Preparing the Windows Software
Environment” section for information about preparing the Windows software
environment.
5 ♦ Create the link script by running PROBUILD on the appropriate operating system and
specifying the build components. You will use this link script to generate the customized
executable in the next step.
See the “Running PROBUILD on UNIX” section for instructions on running PROBUILD
on UNIX. See the “Running PROBUILD in Windows” section for instructions on running
PROBUILD in Windows.
6 ♦ Generate the customized executable by using the link script on the appropriate operating
system.
See the “Linking on UNIX” section for instructions on running the link script on UNIX.
See the “Linking in Windows” section for instructions on running the link script in
Windows.
For information about the linker utility, see the documentation supplied with the operating
system.
A–3
Progress Client Deployment Guide
A–4
Building Progress Executables
PROBUILD creates link scripts that are specific to the operating system where you run the
utility. On UNIX, PROBUILD creates a shell script. In Windows, PROBUILD creates a linker
response file (with a .lnk extension). Run PROBUILD on UNIX to create a link script for UNIX,
and run PROBUILD in Windows to create a link script for Windows. You then use the link
script to generate the actual executable.
• Linking on UNIX
• Verify that the buildenv script includes proper settings for the PROLOAD environment
variable, which defines the PROBUILD installation directory ($DLC/probuild, by
default), and any other customized environment variables. When run, the link script that
PROBUILD creates on UNIX calls the buildenv script.
• Verify that the probuild script updates the PROPATH environment variable to include
the euc.pl procedure library in the $DLC/probuild/eucapp directory. If PROPATH does
not contain both the eucapp directory and the euc.pl procedure library, PROBUILD will
not run.
• Verify that the PATH environment variable contains the path to the C++ compiler.
For more information about maintaining environment variables in the buildenv script, see
Chapter 5, “Maintaining User Environments.”
A–5
Progress Client Deployment Guide
For more information about UNIX environment variables, see the Progress Installation and
Configuration Guide Version 9 for UNIX.
$PROLOAD/eucapp/probuild
2 ♦ In the Install Link Script Into field, type the name of the directory in which PROBUILD
will put the link script, and ultimately, the customized executable. Your current directory
is the default. If you enter a directory that does not exist, the utility creates it for you.
A–6
Building Progress Executables
The product list contains the products that you are licensed to build. Table A–2 presents
all the Progress products you can build on UNIX organized in order of appearance.
Product Description
ESQL/C Large Client A full Progress Client executable that contains ESQL-89
(Full) application code and includes the SQL compiler. The
ESQL/C Large Client processes static and dynamic SQL
requests directly.
Default link script name: ldesqlc
Default executable name: fullesql
A–7
Progress Client Deployment Guide
Product Description
PROSHUT A utility executable that lets you stop server and broker
processes. PROSHUT also lets you disconnect users before
shutting down a database.
Default link script name: ldprshut
Default executable name: _mprshut
Database Utility A utility executable that lets you perform various database
(PROUTIL) administration operations on a Progress database, such as:
• Index maintenance
• Database conversion
• Database state and usage inquiry
Default link script name: ldproutl
Default executable name: _proutil
A–8
Building Progress Executables
Product Description
Open Interface Driver A server executable that processes static and dynamic SQL
requests for an ESQL/C Small Client.
Default link script name: ldoidrvr
Default executable name: _prooidv
4 ♦ Select the product you want to customize from the product list. Use the arrow keys to scroll
through the list. Press ENTER to select the product. Press TAB to move to a button, then
press ENTER to execute.
NOTE: You can create a link script for only one product at a time. After you create a link
script for one product, you can create link scripts for additional products
individually.
A–9
Progress Client Deployment Guide
6 ♦ In the Link Script Name field, type a name for the link script or accept the default name.
The link script name is the name of the link script that PROBUILD creates and that you
use to generate the customized executable. PROBUILD uses a different default link script
name for each type of executable on each supported operating system. For example, ldpro
is the default name for the Progress Client link script on UNIX systems.
7 ♦ In the Executable Name field, type a name for the executable or accept the default name.
The executable name is the name of the customized executable. PROBUILD does not
generate this executable. PROBUILD inserts the name you specify here into the link
script, which you run to generate the executable image. You can change the executable
name later by editing the link script directly. PROBUILD uses a different default
executable name for each type of executable on each supported operating system. For
example, _progres is the default name for the Progress Client executable on UNIX
systems.
A–10
Building Progress Executables
The configurable elements list contains the optional capabilities that you are licensed to
build into the currently selected product. Each product has its own combination of
appropriate configurable elements. Table A–3 presents all the Progress configurable
elements you can build on UNIX organized in order of appearance.
Configurable
Element Purpose
TCP/IP Network Include in the executable to provide support for the TCP/IP
Protocol network protocol.
A–11
Progress Client Deployment Guide
Configurable
Element Purpose
No Debugger Comm Include in the executable if the executable will not support
Modules 4GL debugging capabilities. Debugging capabilities require
networking software. This element excludes the
dependence on networking.
9 ♦ Select the configurable elements you want to build into the currently selected product. Use
the SPACEBAR or the mouse to deselect an item.
10 ♦ Choose Continue.
If you selected a product or configurable element that requires one or more object files that
you developed and compiled separately, PROBUILD prompts you to identify these object
files in the Object Files dialog box:
Type in the object filenames, including the file extension required on the operating system,
and choose Continue. PROBUILD includes these objects in the link script.
A–12
Building Progress Executables
NOTE: If you are not prepared to list an object file, enter a comment line in the object
field. PROBUILD includes the comment line in the link script. You can edit the
link script later to replace the comment line with the actual object filename. Use
comment characters if you want to run the link script before you replace the
comment line. The link script might not run if you use only placeholder text for
the comment line.
PROBUILD creates the specified link script. It also returns to the Product List dialog box
where you can create another link script, or choose Return to return to the Progress EUC
dialog box.
11 ♦ From the Progress EUC dialog box, you can enter another link script directory or choose
Exit to exit PROBUILD.
ldpro
The linker utility generates the customized executable as specified in the link script. You can
now use the customized executable.
For link utility error and troubleshooting information, see the documentation supplied with the
operating system.
• Linking in Windows
A–13
Progress Client Deployment Guide
When you install Progress, the installation program automatically updates the registry with the
information in the progress.ini file that is shipped to you. Progress Software recommends that
you maintain environment variables in both the progress.ini file and the registry. If you
modify environment variables in the progress.ini file, you must update the information in the
registry.
Although there are several methods for adding and deleting information from the registry
directly, Progress Software recommends that you do not use these direct update methods.
Instead, maintain the registry information by editing the progress.ini file and using the
INI2REG utility to update the registry. This approach synchronizes the information in the
progress.ini file and the registry without causing unintended edits to the registry.
• Verify settings for PROPATH and other environment variables in both the progress.ini
file and the registry. For example, PROPATH must include the euc.pl procedure library
in the %DLC%\probuild\eucapp directory. If PROPATH does not contain both the eucapp
directory and the euc.pl procedure library, PROBUILD will not run.
• Verify that the Microsoft Visual C++ compiler is installed on the system.
• Verify that the PATH environment variable contains the path to the C++ compiler and the
linker command (link.exe).
For more information about maintaining environment variables in the progress.ini file and
the registry, and using the INI2REG utility, see Chapter 5, “Maintaining User Environments.”
For information about Windows environment variables, see the Progress Installation and
Configuration Guide Version 9 for Windows.
A–14
Building Progress Executables
1 ♦ Run PROBUILD by double-clicking the PROBUILD icon. The Progress EUC dialog box
appears:
You can also run PROBUILD by entering the following command on the command line:
2 ♦ In the Install Link Script Into field, type the name of the directory in which PROBUILD
will put the link script, and ultimately, the customized executable. Your current directory
is the default. If you enter a directory that does not exist, the utility creates it for you.
A–15
Progress Client Deployment Guide
The product list contains the Progress products you are licensed to build. Table A–4
presents all Progress products you can build in Windows organized in order of appearance.
A–16
Building Progress Executables
Product Description
ESQL/C Large Client A full Progress Client executable that contains ESQL-89
(Full) application code and includes the SQL compiler.
The ESQL/C Large Client processes static and dynamic
SQL requests directly.
Default link script name: wcesql.lnk
Default executable name: esqltllg.exe
A–17
Progress Client Deployment Guide
Product Description
PROSHUT A utility executable that lets you stop server and broker
processes. PROSHUT also lets you disconnect users before
shutting down a database.
Default link script name: proshut.lnk
Default executable name: _mprshut.exe
Database Utility A utility executable that lets you perform various database
(PROUTIL) administration operations on a Progress database, such as:
• Index maintenance
• Database conversion
• Database state and usage inquiry
Default link script name: proutil.lnk
Default executable name: _proutil.exe
Open Interface Driver A server executable that processes static and dynamic SQL
requests for an ESQL/C Small Client.
Default link script name: oidrvr32.lnk
Default executable name: oidrvr32.exe
A–18
Building Progress Executables
Product Description
4 ♦ Select the product you want to customize from the product list. Use the arrow keys to scroll
through the list. Press ENTER to select the product. Press TAB to move to a button, then
press ENTER to execute.
NOTE: You can create a link script for only one product at a time. After you create a link
script for one product, you can create link scripts for additional products
individually.
A–19
Progress Client Deployment Guide
6 ♦ In the Link Script Name field, type a name for the link script or accept the default name.
Choose the Browse Scripts button to view your directories and files before choosing a link
script name.
The link script name is the name of the link script that PROBUILD creates and that you
use to build the customized executable. PROBUILD uses a different default link script
name for each type of executable on each supported operating system. For example,
prchar.lnk is the default name for the Progress Character Mode Windows Client link
script.
7 ♦ In the Executable Name field, type a name for the executable or accept the default name.
The executable name is the name of the customized executable. PROBUILD does not
generate this executable. PROBUILD inserts the name you specify here into the link
script, which you run to generate the executable image. You can change the executable
name later by editing the link script directly. PROBUILD uses a different default
executable name for each type of executable on each supported operating system. For
A–20
Building Progress Executables
example, _prchar.exe is the default name for the Progress Character Mode Windows
Client executable.
The configurable elements list contains the optional capabilities that you are licensed to
build into the currently selected product. Each product has its own combination of
appropriate configurable elements. Table A–5 describes all the Progress configurable
elements you can build in Windows.
NOTE: The exact set of configurable elements that appear in the list depends on the
Progress products you have purchased.
A–21
Progress Client Deployment Guide
Configurable
Purpose
Element
CTOS Network Include in the executable to provide support for the CTOS
Protocol network protocol.
Winsock TCP/IP Include in the executable to provide support for the Winsock
TCP/IP network protocol.
No Debugger Comm Include in the executable if the executable will not support
Modules 4GL debugging capabilities. Debugging capabilities require
networking software. This element excludes the
dependence on networking.
9 ♦ Select the configurable elements you want to build into the currently selected product. Use
the SPACEBAR or the mouse to deselect an item.
A–22
Building Progress Executables
10 ♦ Choose Continue.
If you selected a product or configurable element that requires one or more object files that
you developed and compiled separately, PROBUILD prompts you to identify these object
files in the Object Files dialog box:
Type in or browse for the object filenames, including the file extension required on the
operating system, and choose Continue. PROBUILD includes these objects in the link
script.
NOTE: If you are not prepared to list an object file, enter a comment line in the object
field. PROBUILD includes the comment line in the link script. You can edit the
link script later to replace the comment line with the actual object filename. Use
comment characters if you want to run the link script before you replace the
comment line. The link script might not run if you use only placeholder text for
the comment line.
PROBUILD creates the specified link script. It also returns to the Product List dialog box
where you can create another link script, or choose Return to return to the Progress EUC
dialog box.
A–23
Progress Client Deployment Guide
11 ♦ From the Progress EUC dialog box, you can enter another link script directory or choose
Exit to exit PROBUILD.
link @link-script-filename
For example, the following command generates the Progress Character Mode Windows Client
executable:
link @prchar.lnk
The linker utility generates the customized executable as specified in the link script. You can
now use the customized executable.
For link utility error and troubleshooting information, see the documentation supplied with the
operating system.
A.7 Troubleshooting
Following are some common errors that might occur when you attempt to link an executable:
For link utility error and troubleshooting information, see the documentation supplied with the
operating system.
A–24
B
Progress Application Limits
The hardware and operating system version on which applications run often determines the
limits for Progress applications. This appendix lists the Progress limits you must consider when
developing a Progress application. The limits are organized in the following categories:
• “Input/Output Limits”
• “Sorting Limits”
• “Name Limits”
• “Compiler Limits”
For information about Progress database limits, see the Progress Database Administration
Guide and Reference.
Progress Client Deployment Guide
Operating
Device Limit
System
Windows 80 columns
Export file All 1 to 3,000 characters per field; 32K bytes per
record
Import file All 1 to 3,000 characters per field; 32K bytes per
record
NOTE: Windows NT batch files limit you to no more than nine (9) input parameters. This is
a Windows limitation. Actual Progress executables handle more than nine.
Category Limit
Size Typically, 1 to 197 bytes (that is, approximately 200 bytes minus some
overhead per column and expression). The size limit depends on the
number of columns and expressions you are sorting. Each column and
expression uses up some number of available bytes.
B–2
Progress Application Limits
Operating
Name Type Limit
System
B–3
Progress Client Deployment Guide
Element Limit
Variables 32,000 bytes for UNDO and NO-UNDO variables per external
procedure. 32,000 bytes for local UNDO and local NO-UNDO
variables per internal procedure or trigger block.
Statements 1 to 32,000 characters per statement. Use the Input Characters (-inp)
startup parameter to limit the number of characters allowed in a single
statement.
The number of tokens allowed per statement is limited only by the
available system resources. Each word or special character, such as a
parenthesis, plus sign, and minus sign, counts as one token. Use the
Token (-tok) startup parameter to limit the number of tokens allowed
in a single statement.
Nested blocks 1 to 255 blocks, including called procedures. Use the Nested Blocks
(-nb) startup parameter to limit the number of nested blocks allowed
in a procedure.
For more information about the Input Characters (-inp), Token (-tok), and Nested Blocks (-nb)
startup parameters, see the Progress Startup Command and Parameter Reference.
B–4
Index
A Building executables
See also Linking executables,
Application security. See Security PROBUILD utility
build process A–2
Applications buildable products
See also Building executables in Windows A–16
accessing databases 2–1 on UNIX A–7
administration 1–2 building in Windows A–13
deployment 1–2 building on UNIX A–5
limits B–1 configurable elements
maintaining user environments in Windows A–21
in Windows 5–2 on UNIX A–11
on UNIX 5–34 default names
performance 4–1 in Windows A–16
on UNIX A–7
Audience ix hardware requirements A–4
licensing requirements A–4
Auto-connect feature 2–11 software requirements A–4
B C
Blank user IDs 3–6 client.mon files 4–6
Bold typeface Colors. See progress.ini file,
as typographical convention x PROTERMCAP file
buildenv scripts Compiler limits B–4
and the PROBUILD utility A–5
maintaining 5–35 Compile-time security
sample 5–35 defined 3–1
establishing 3–2
Progress Client Deployment Guide
Index–2
Index
Index–3
Progress Client Deployment Guide
Libraries (continued) M
standard format 6–2
adding files 6–14 Manual
advantages 6–2 organization of ix
compressing files 6–19 syntax notation xi
creating 6–12
deleting files 6–15 MEMBER function 6–8
extracting files 6–17
loading and executing 4–3, 6–3 Memory-mapped library. See Libraries
replacing files 6–15
tuning 4–5 Messages, displaying descriptions xv
Linking executables O
See also Building executables,
PROBUILD utility Operating system security 3–7
creating link scripts
in Windows A–13 Output routing 7–8
on UNIX A–5
creating linker response files A–13 OUTPUT THROUGH statement 7–4, 7–6
linking in Windows A–24 OUTPUT TO statement 7–3, 7–6
linking on UNIX A–13
PRINTER option 7–3
troubleshooting A–24
Local before-image files 4–11, 4–12
P
Logical database names 2–2
changing with the ALIAS statement 2–3 Parameter files. See Startup parameters
Index–4
Index
Index–5
Progress Client Deployment Guide
Index–6
Index
Index–7
Progress Client Deployment Guide
U
W
User count, exceeding 2–13
Wide area networks, connecting 2–14
User environments
maintaining in Windows 5–2 Wild cards
maintaining on UNIX 5–34 and the PROLIB utility 6–11
Index–8