Jump to content
Wikipedia The Free Encyclopedia

OpenEdge Advanced Business Language

From Wikipedia, the free encyclopedia
Business application development language
This article contains promotional content . Please help improve it by removing promotional language and inappropriate external links, and by adding encyclopedic text written from a neutral point of view. (January 2023) (Learn how and when to remove this message)
OpenEdge Advanced Business Language (ABL)
Developer Progress Software Corporation
Stable release
OpenEdge 12.8 / January 21, 2024; 20 months ago (2024年01月21日)
Operating system Cross-platform (see below)
Type RDBMS
License Proprietary
Websitewww.progress.com/openedge

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, it utilizes an English-like syntax to simplify software development.[1] 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.[2]

OpenEdge ABL helps developers to develop applications optionally using its own integrated relational database and programming tools. 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

[edit ]

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 (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

[edit ]

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 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

[edit ]

Hello world

[edit ]
Main article: Hello world program

The following ABL code creates a window with the text "Hello, World!" and a button labelled "OK".

DEFINEVARIABLEwASHANDLENO-UNDO.
CREATEWINDOWwASSIGN 
WIDTH =50
HEIGHT =5
MESSAGE-AREA =FALSE
STATUS-AREA =FALSE.
CURRENT-WINDOW =w.
DEFINEBUTTONbtnOKLABEL "OK"SIZE12BY1.2.
FORM 
"Hello World!"VIEW-ASTEXTATCOL20ROW2
btnOKATCOL20ROW4
WITHFRAMEfSIZE50BY5NO-BOXTHREE-D.
VIEWFRAMEf.
ENABLEbtnOKWITHFRAMEf.
WAIT-FOR "CHOOSE"OFbtnOK.
DELETEOBJECTw.

A message-box can be used to achieve the same effect:

MESSAGE "Hello World!"
VIEW-ASALERT-BOXINFOBUTTONSOK.

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

[edit ]

The SQL statement:

SELECT*FROMcustomer;

(along with your chosen language connection and display procedures) can be expressed in Progress / ABL as:

FOREACHcustomerNO-LOCK:
DISPLAYcustomer.
END.

SQL UPDATE equivalent

[edit ]

The SQL statement:

UPDATEcustomer
SETsalesman='Fred'
WHEREcustno=14;

(again, along with your chosen language connection and display procedures) can be expressed in Progress / ABL as:

FOREACHcustomerWHEREcustomer.custno=14EXCLUSIVE-LOCK:
ASSIGNcustomer.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, 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.

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 ]

Application areas

[edit ]
This section does not cite any sources . Please help improve this section by adding citations to reliable sources. Unsourced material may be challenged and removed. (August 2020) (Learn how and when to remove this message)

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:[3]

  • 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

[edit ]
  1. ^ Campbell, John, Programmer's Progress, a guide to the progress language. white star software, 1991
  2. ^ Salvador Vinals, Introducing OpenEdge Advanced Business Language (ABL), PSC whitepaper, 2007
  3. ^ "Use Cases of Progress OpenEdge 2024". www.trustradius.com. 2024年01月26日. Retrieved 2024年06月26日.

References

[edit ]
[edit ]

AltStyle によって変換されたページ (->オリジナル) /