Content deleted Content added
Added logo, updated official website and external documentation resources for developers. |
No edit summary |
||
(45 intermediate revisions by 40 users not shown) | |||
Line 1:
{{Short description|Business application development language}}
{{Promotional|date=January 2023}}
}}
'''OpenEdge Advanced Business Language''', or '''OpenEdge ABL''' for short, is a business application development language created and maintained by [[Progress Software|Progress Software Corporation]]
▲{{Infobox Software
▲ |name = OpenEdge Advanced Business Language (ABL)
▲ |screenshot =
▲ |caption =
▲ |developer = [[Progress Software Corporation]]
▲ |latest_release_version = OpenEdge 12.1
▲ |latest_release_date = {{start date and age|2019|05|03}}
▲ |operating_system = [[Cross-platform]] (see below)
▲ |genre = [[Relational database management system|RDBMS]]
▲ |license = Proprietary
▲ |website = https://www.progress.com/openedge
▲|logo=File:OpenEdge_logo.png}}
OpenEdge ABL helps developers to develop applications optionally using its own integrated [[relational database]] and [[programming tool]]s. These applications are portable across computing systems and allow access to various popular data sources without having to learn the underlying [[data access]] methods. This means that the [[end-user]] of these products can be unaware of the underlying architecture.▼
▲'''OpenEdge Advanced Business Language''', or '''OpenEdge ABL''' for short, is a business application development language created and maintained by [[Progress Software|Progress Software Corporation]] (PSC). The language, typically classified as a [[fourth-generation programming language]], uses an English-like syntax to simplify software development.<ref name="p2">Campbell, John, ''Programmer's Progress, a guide to the progress language.'' white star software, 1991</ref> The language was called '''PROGRESS''' or '''Progress 4GL''' up until version 9, but in 2006 [[Progress Software Corporation|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.<!-- year? --><ref name="introABL">Salvador Vinals, Introducing OpenEdge Advanced Business Language (ABL), PSC whitepaper, 2007</ref> A subset of the language, called ''SpeedScript'', is used in the development of web applications.<ref name="webspeedcomplete">Crawford, G. ''WebSpeed Complete'', Innov8 Computer Solutions, {{ISBN|0-9718679-0-9}}</ref>
By combining a fourth
▲OpenEdge ABL helps developers to develop applications optionally using its own integrated [[relational database]] and [[programming tool]]. These applications are portable across computing systems and allow access to various popular data sources without having to learn the underlying [[data access]] methods. This means that the [[end-user]] 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]] (RAD) model for developing software. A programmer and even end users can do [[rapid prototyping]] using the integrated and GUI tools of the development environment.
==History==
The original Progress 4GL was designed
==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 programming|object-oriented]] 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
==Examples==
===Hello
▲{{main|Hello world program}}
The following ABL code creates a window with the text "Hello, World!" and a button labelled "OK".
<
DEFINE VARIABLE w AS HANDLE NO-UNDO.
Line 42:
HEIGHT = 5
MESSAGE-AREA = FALSE
STATUS-AREA = FALSE.
CURRENT-WINDOW = w.
Line 56:
WAIT-FOR "CHOOSE" OF btnOK.
DELETE OBJECT w.
</syntaxhighlight>
A message-box can be used to achieve the same effect:
<
MESSAGE "Hello World!"
VIEW-AS ALERT-BOX INFO BUTTONS OK.
</syntaxhighlight>
The
<
DISPLAY "Hello
</syntaxhighlight>
===SQL <code>SELECT</code> equivalent===
The [[SQL]] statement:
<
SELECT * FROM customer;
</syntaxhighlight>
(along with your chosen language connection and display procedures) can be expressed in Progress / ABL as:
<
FOR EACH customer NO-LOCK:
DISPLAY customer.
END.
</syntaxhighlight>
===SQL <code>UPDATE</code> equivalent===
The SQL statement:
<
UPDATE customer
SET salesman = 'Fred'
WHERE custno = 14;
</syntaxhighlight>
(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.
</syntaxhighlight>
..
(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, in contrast to the result-set-based processing found in traditional SQL languages. While SQL operations typically act on sets of records, ABL processes one record at a time, similar to using a cursor in SQL.
==Notes==▼
Record-based processing provides a fine-grained locking model, allowing the developer to apply different lock levels (e.g., EXCLUSIVE-LOCK, SHARE-LOCK, or NO-LOCK) when accessing records.
This approach can offer predictable memory usage, especially in environments using shared memory connections, where the application and database reside on the same host. In client-server (networked) deployments, however, each record or block of records fetched typically involves a network round trip. For example, with a default prefetch size of 50 records and a network latency of 50 ms, retrieving 1,000,000 records may result in up to 1,000 seconds of latency. This illustrates a potential drawback of record-by-record access in high-latency environments.{{Citation needed|date=August 2025}}
==Application areas==
{{Unreferenced section|date=August 2020}}
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:<ref>{{Cite web |date=2024-01-26 |title=Use Cases of Progress OpenEdge 2024 |url=https://www.trustradius.com/products/openedge/reviews?qs=product-usage |access-date=2024-06-26 |website=www.trustradius.com |language=en-US}}</ref>
* 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/>
==References==
* Sadd, J. ''OpenEdge Development: Progress 4GL Handbook'', Progress Software Corporation, {{ISBN|0-923562-04-4}}, {{ISBN|978-0-923562-04-5}}
* Kassabgi, G. ''Special Edition : Using Progress'', Que Publishing, {{ISBN|0-7897-0493-5}}
== External
▲* [https://www.progress.com/openedge Official Website]
* [https://community.progress.com/community_groups/openedge_general OpenEdge Community]
* [https://docs.progress.com/category/openedge-information-hub OpenEdge Resource Hub]
* [https://www.progress.com/openedge/whats-new What’s New in OpenEdge]
* [https://riptutorial.com/progress-4gl Getting started with progress-4gl]
[[Category:Object-oriented programming languages]]
[[Category:
[[Category:Data-centric programming languages]]
[[Category:Articles with example code]]
|