OpenEdge Advanced Business Language, or OpenEdge ABL for short, is a business application development language created and maintained by
Progress Software Corporation. Typically classified as a
fourth-generation programming language
A fourth-generation programming language (4GL) is a high-level programming language, high-level computer programming language that belongs to a class of languages envisioned as an advancement upon third-generation programming languages (3GL). Each ...
, it utilizes an English-like syntax to simplify software development.
[Campbell, John, ''Programmer's Progress, a guide to the progress language.'' white star software, 1991] The language was called PROGRESS or Progress 4GL up until version 9, but in 2006,
PSC changed the name to OpenEdge Advanced Business Language (OpenEdge ABL), in order to overcome a presumed industry perception that 4GLs were less capable than other languages.
[Salvador Vinals, Introducing OpenEdge Advanced Business Language (ABL), PSC whitepaper, 2007]
OpenEdge ABL helps developers to develop applications optionally using its own integrated
relational database
A relational database (RDB) is a database based on the relational model of data, as proposed by E. F. Codd in 1970.
A Relational Database Management System (RDBMS) is a type of database management system that stores data in a structured for ...
and
programming tool
A programming tool or software development tool is a computer program that is used to develop another computer program, usually by helping the developer manage computer files. For example, a programmer may use a tool called a source code editor ...
s. These applications are portable across computing systems and allow access to various popular data sources without having to learn the underlying
data access
Data access is a generic term referring to a process which has both an IT-specific meaning and other connotations involving access rights in a broader legal and/or political sense. In the former it typically refers to software and activities relat ...
methods. This means that the
end-user
In product development, an end user (sometimes end-user) is a person who ultimately uses or is intended to ultimately use a product. The end user stands in contrast to users who support or maintain the product, such as sysops, system administrato ...
of these products can be unaware of the underlying architecture.
By combining a fourth-generation language and relational database, OpenEdge ABL allows the use of the
Rapid Application Development
Rapid application development (RAD), also called rapid application building (RAB), is both a general term for adaptive software development approaches, and the name for James Martin's method of rapid development. In general, RAD approaches to ...
(RAD) model for developing software.
History
The original Progress 4GL was designed in 1981 as an architecture-independent language and integrated database system that could be used by non-experts to develop business applications by people who were not computer scientists but were knowledgeable in their business domain. At that time, business applications were often written in
COBOL
COBOL (; an acronym for "common business-oriented language") is a compiled English-like computer programming language designed for business use. It is an imperative, procedural, and, since 2002, object-oriented language. COBOL is primarily ...
(for machines like corporate
IBM
International Business Machines Corporation (using the trademark IBM), nicknamed Big Blue, is an American Multinational corporation, multinational technology company headquartered in Armonk, New York, and present in over 175 countries. It is ...
mainframes) and sometimes in
C (for departmental minicomputers running the UNIX operating system). When the IBM PC became popular, it developed a need for business software that could be used on those and other inexpensive computers. The Progress system was created to be used on both IBM PC machines running DOS and on a variety of computers that could run UNIX and
minicomputer
A minicomputer, or colloquially mini, is a type of general-purpose computer mostly developed from the mid-1960s, built significantly smaller and sold at a much lower price than mainframe computers . By 21st century-standards however, a mini is ...
operating systems such as
OpenVMS
OpenVMS, often referred to as just VMS, is a multi-user, multiprocessing and virtual memory-based operating system. It is designed to support time-sharing, batch processing, transaction processing and workstation applications. Customers using Op ...
.
Syntax and semantics
Progress ABL is a strongly typed, late-bound,
English-like programming language. Although initially designed as a procedural language, starting with version 10.1 it was enhanced with
object-oriented
Object-oriented programming (OOP) is a programming paradigm based on the concept of '' objects''. Objects can contain data (called fields, attributes or properties) and have actions they can perform (called procedures or methods and impleme ...
grammar elements, which can be mixed with the original procedural style. A block of code may have a transaction scoped to it, in which case database changes will be committed when it completes. An error raised within such a block will undo these changes. These defaults may be overridden by the programmer.
Simple programs run without a graphical user interface, but there is syntax to create one programmatically, or programmers can use the provided tools to build one.
Examples
Hello World
The following ABL code creates a window with the text "Hello, World!" and a button labelled "OK".
DEFINE VARIABLE w AS HANDLE NO-UNDO.
CREATE WINDOW w ASSIGN
WIDTH = 50
HEIGHT = 5
MESSAGE-AREA = FALSE
STATUS-AREA = FALSE.
CURRENT-WINDOW = w.
DEFINE BUTTON btnOK LABEL "OK" SIZE 12 BY 1.2.
FORM
"Hello World!" VIEW-AS TEXT AT COL 20 ROW 2
btnOK AT COL 20 ROW 4
WITH FRAME f SIZE 50 BY 5 NO-BOX THREE-D.
VIEW FRAME f.
ENABLE btnOK WITH FRAME f.
WAIT-FOR "CHOOSE" OF btnOK.
DELETE OBJECT w.
A message-box can be used to achieve the same effect:
MESSAGE "Hello World!"
VIEW-AS ALERT-BOX INFO BUTTONS OK.
The
INFO
parameter controls the message icons, and can be replaced with
ERROR
or
WARNING
for different looks.
The most basic "Hello, World" program is:
DISPLAY "Hello ".
SQL SELECT
equivalent
The
SQL
Structured Query Language (SQL) (pronounced ''S-Q-L''; or alternatively as "sequel")
is a domain-specific language used to manage data, especially in a relational database management system (RDBMS). It is particularly useful in handling s ...
statement:
SELECT * FROM customer;
(along with your chosen language connection and display procedures) can be expressed in Progress / ABL as:
FOR EACH customer NO-LOCK:
DISPLAY customer.
END.
SQL UPDATE
equivalent
The SQL statement:
UPDATE customer
SET salesman = 'Fred'
WHERE custno = 14;
(again, along with your chosen language connection and display procedures) can be expressed in Progress / ABL as:
FOR EACH customer WHERE customer.custno = 14 EXCLUSIVE-LOCK:
ASSIGN customer.salesman = 'Fred'.
END.
..
(Some assumptions have been made about indexing, locking and transaction scoping in order to keep this example simple.)
Data access in the ABL is record based as opposed to result-set based processing in traditional SQL-based languages. In SQL operations work on a set of records, in the ABL, the operation is applied to a record at a time - much like using a cursor in SQL. Record-based processing provides a clean and reliable locking mechanism which allows the developer to EXECUTIVE-LOCK, SHARE-LOCK or NO-LOCK a record when accessed by the application.
Application areas
The language is used in a wide variety of application areas, some examples:
* Mortgage and Auto Loan Origination at US Banks
* Rental Car Reservation Systems
* Manufacturing ERP
* Wholesale Distribution ERP
* Warehouse Systems
* Transportation Systems
* Commercial Service Force Dispatching
* Security Card Systems
* Gaming Systems (think Las Vegas, not video)
OpenEdge can be used for:
* Microsoft Windows GUI (Graphical User Interface)
* WWW Programming (UNIX and Windows)
* CHUI (CHaracter User Interface) (UNIX and Windows)
* JSON and XML appserver programming (UNIX and Windows)
* as well background process programming (UNIX and Windows).
Notes
References
* Sadd, J. ''OpenEdge Development: Progress 4GL Handbook'', Progress Software Corporation, ,
* Kassabgi, G. ''Special Edition : Using Progress'', Que Publishing, {{ISBN, 0-7897-0493-5
External links
Official Website
OpenEdge Community
OpenEdge Resource Hub
What’s New in OpenEdge
Getting started with progress-4gl
Object-oriented programming languages
Fourth-generation programming languages
Data-centric programming languages
Articles with example code
Database-related software for Linux