Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
OpenEdge Advanced Business Language
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
{{Short description|Business application development language}} {{Promotional|date=January 2023}} {{Infobox software | name = OpenEdge Advanced Business Language (ABL) | screenshot = | caption = | developer = [[Progress Software Corporation]] | latest_release_version = OpenEdge 12.8 | latest_release_date = {{start date and age|2024|01|21}} | 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 Advanced Business Language''', or '''OpenEdge ABL''' for short, is a business application development language created and maintained by [[Progress Software|Progress Software Corporation]]. Typically classified as a [[fourth-generation programming language]], it utilizes 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.<ref name="introABL">Salvador Vinals, Introducing OpenEdge Advanced Business Language (ABL), PSC whitepaper, 2007</ref> 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. By combining a fourth-generation language and relational database, OpenEdge ABL allows the use of the [[Rapid Application Development]] (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]] (for machines like corporate [[IBM]] mainframes) and sometimes in [[C (programming language)|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]] operating systems such as [[OpenVMS]]. ==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 graphical user interface, but there is syntax to create one programmatically, or programmers can use the provided tools to build one. ==Examples== ===Hello World=== {{main|Hello world program}} The following ABL code creates a window with the text "Hello, World!" and a button labelled "OK". <syntaxhighlight lang="progress"> 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. </syntaxhighlight> A message-box can be used to achieve the same effect: <syntaxhighlight lang="progress"> MESSAGE "Hello World!" VIEW-AS ALERT-BOX INFO BUTTONS OK. </syntaxhighlight> The <code>INFO</code> parameter controls the message icons, and can be replaced with <code>ERROR</code> or <code>WARNING</code> for different looks. The most basic "Hello, World" program is: <syntaxhighlight lang="progress"> DISPLAY "Hello ". </syntaxhighlight> ===SQL <code>SELECT</code> equivalent=== The [[SQL]] statement: <syntaxhighlight lang="sql"> SELECT * FROM customer; </syntaxhighlight> (along with your chosen language connection and display procedures) can be expressed in Progress / ABL as: <syntaxhighlight lang="progress"> FOR EACH customer NO-LOCK: DISPLAY customer. END. </syntaxhighlight> ===SQL <code>UPDATE</code> equivalent=== The SQL statement: <syntaxhighlight lang="sql"> 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: <syntaxhighlight lang="progress"> 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 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== {{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 links == * [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:Fourth-generation programming languages]] [[Category:Data-centric programming languages]] [[Category:Articles with example code]] [[Category:Database-related software for Linux]]
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)
Pages transcluded onto the current version of this page
(
help
)
:
Template:Ambox
(
edit
)
Template:Cite web
(
edit
)
Template:ISBN
(
edit
)
Template:Infobox
(
edit
)
Template:Infobox software
(
edit
)
Template:Main
(
edit
)
Template:Main other
(
edit
)
Template:Promotional
(
edit
)
Template:Short description
(
edit
)
Template:Template other
(
edit
)
Template:Unreferenced
(
edit
)
Template:Unreferenced section
(
edit
)