OpenEdge Advanced Business Language

Embed Size (px)

Citation preview

  • 8/12/2019 OpenEdge Advanced Business Language

    1/5

    OpenEdge Advanced Business Language, or OpenEdge ABLfor short, is a business application

    development language created and maintained byProgress Software Corporation(PSC). The language,

    typically classified as afourth-generation programming language,uses an English-like syntax to simplify

    software development.[1]

    The name was changed in 2006 to OpenEdge Advanced Business Language

    (OpenEdge ABL), by PSC, from PROGRESS, also known as Progress 4GL, in order to overcome a

    presumed industry perception that 4GLs were less capable than other languages.[2]The language was

    called PROGRESS or Progress 4GL prior to the release of version 10.0. A subset of the language,

    called SpeedScript, is used in the development of web applications.[3]

    OpenEdge ABL helps developers to develop applications optionally using its own integrated relational

    databaseandprogramming tool.These applications are portable across computing systems and allow

    access to various popular data sources without having to learn the underlying data accessmethods. This

    means that theend-userof these products can be unaware of the underlying architecture.

    By combining a fourth generation language and relational database, OpenEdge ABL allows the use of

    theRapid Application Development(RAD) model for developing software. A programmer and even end

    users can dorapid prototypingusing the integrated and GUI tools of the development environment.

    Contents

    [hide]

    1 History

    2 Syntax and semantics

    3 Examples

    o 3.1 Hello World

    o 3.2 SQL SELECT equivalent

    o 3.3 SQL UPDATE equivalent

    4 Notes

    5 References

    History[edit]

    1984

    First Commercial Release

    1989

    Version 5

    1990

    Version 6

    1993

    Version 7

    1995

    Version 8

    http://en.wikipedia.org/wiki/Progress_Softwarehttp://en.wikipedia.org/wiki/Progress_Softwarehttp://en.wikipedia.org/wiki/Progress_Softwarehttp://en.wikipedia.org/wiki/Fourth-generation_programming_languagehttp://en.wikipedia.org/wiki/Fourth-generation_programming_languagehttp://en.wikipedia.org/wiki/Fourth-generation_programming_languagehttp://en.wikipedia.org/wiki/OpenEdge_Advanced_Business_Language#cite_note-p2-1http://en.wikipedia.org/wiki/OpenEdge_Advanced_Business_Language#cite_note-p2-1http://en.wikipedia.org/wiki/OpenEdge_Advanced_Business_Language#cite_note-p2-1http://en.wikipedia.org/wiki/OpenEdge_Advanced_Business_Language#cite_note-introABL-2http://en.wikipedia.org/wiki/OpenEdge_Advanced_Business_Language#cite_note-introABL-2http://en.wikipedia.org/wiki/OpenEdge_Advanced_Business_Language#cite_note-introABL-2http://en.wikipedia.org/wiki/OpenEdge_Advanced_Business_Language#cite_note-webspeedcomplete-3http://en.wikipedia.org/wiki/OpenEdge_Advanced_Business_Language#cite_note-webspeedcomplete-3http://en.wikipedia.org/wiki/OpenEdge_Advanced_Business_Language#cite_note-webspeedcomplete-3http://en.wikipedia.org/wiki/Relational_databasehttp://en.wikipedia.org/wiki/Relational_databasehttp://en.wikipedia.org/wiki/Relational_databasehttp://en.wikipedia.org/wiki/Relational_databasehttp://en.wikipedia.org/wiki/Programming_toolhttp://en.wikipedia.org/wiki/Programming_toolhttp://en.wikipedia.org/wiki/Programming_toolhttp://en.wikipedia.org/wiki/Data_accesshttp://en.wikipedia.org/wiki/Data_accesshttp://en.wikipedia.org/wiki/Data_accesshttp://en.wikipedia.org/wiki/End-userhttp://en.wikipedia.org/wiki/End-userhttp://en.wikipedia.org/wiki/End-userhttp://en.wikipedia.org/wiki/Rapid_Application_Developmenthttp://en.wikipedia.org/wiki/Rapid_Application_Developmenthttp://en.wikipedia.org/wiki/Rapid_Application_Developmenthttp://en.wikipedia.org/wiki/Rapid_prototypinghttp://en.wikipedia.org/wiki/Rapid_prototypinghttp://en.wikipedia.org/wiki/Rapid_prototypinghttp://en.wikipedia.org/wiki/OpenEdge_Advanced_Business_Languagehttp://en.wikipedia.org/wiki/OpenEdge_Advanced_Business_Languagehttp://en.wikipedia.org/wiki/OpenEdge_Advanced_Business_Languagehttp://en.wikipedia.org/wiki/OpenEdge_Advanced_Business_Language#Historyhttp://en.wikipedia.org/wiki/OpenEdge_Advanced_Business_Language#Historyhttp://en.wikipedia.org/wiki/OpenEdge_Advanced_Business_Language#Syntax_and_semanticshttp://en.wikipedia.org/wiki/OpenEdge_Advanced_Business_Language#Syntax_and_semanticshttp://en.wikipedia.org/wiki/OpenEdge_Advanced_Business_Language#Exampleshttp://en.wikipedia.org/wiki/OpenEdge_Advanced_Business_Language#Exampleshttp://en.wikipedia.org/wiki/OpenEdge_Advanced_Business_Language#Hello_Worldhttp://en.wikipedia.org/wiki/OpenEdge_Advanced_Business_Language#Hello_Worldhttp://en.wikipedia.org/wiki/OpenEdge_Advanced_Business_Language#SQL_SELECT_equivalenthttp://en.wikipedia.org/wiki/OpenEdge_Advanced_Business_Language#SQL_SELECT_equivalenthttp://en.wikipedia.org/wiki/OpenEdge_Advanced_Business_Language#SQL_UPDATE_equivalenthttp://en.wikipedia.org/wiki/OpenEdge_Advanced_Business_Language#SQL_UPDATE_equivalenthttp://en.wikipedia.org/wiki/OpenEdge_Advanced_Business_Language#Noteshttp://en.wikipedia.org/wiki/OpenEdge_Advanced_Business_Language#Noteshttp://en.wikipedia.org/wiki/OpenEdge_Advanced_Business_Language#Referenceshttp://en.wikipedia.org/wiki/OpenEdge_Advanced_Business_Language#Referenceshttp://en.wikipedia.org/w/index.php?title=OpenEdge_Advanced_Business_Language&action=edit&section=1http://en.wikipedia.org/w/index.php?title=OpenEdge_Advanced_Business_Language&action=edit&section=1http://en.wikipedia.org/w/index.php?title=OpenEdge_Advanced_Business_Language&action=edit&section=1http://en.wikipedia.org/w/index.php?title=OpenEdge_Advanced_Business_Language&action=edit&section=1http://en.wikipedia.org/wiki/OpenEdge_Advanced_Business_Language#Referenceshttp://en.wikipedia.org/wiki/OpenEdge_Advanced_Business_Language#Noteshttp://en.wikipedia.org/wiki/OpenEdge_Advanced_Business_Language#SQL_UPDATE_equivalenthttp://en.wikipedia.org/wiki/OpenEdge_Advanced_Business_Language#SQL_SELECT_equivalenthttp://en.wikipedia.org/wiki/OpenEdge_Advanced_Business_Language#Hello_Worldhttp://en.wikipedia.org/wiki/OpenEdge_Advanced_Business_Language#Exampleshttp://en.wikipedia.org/wiki/OpenEdge_Advanced_Business_Language#Syntax_and_semanticshttp://en.wikipedia.org/wiki/OpenEdge_Advanced_Business_Language#Historyhttp://en.wikipedia.org/wiki/OpenEdge_Advanced_Business_Languagehttp://en.wikipedia.org/wiki/Rapid_prototypinghttp://en.wikipedia.org/wiki/Rapid_Application_Developmenthttp://en.wikipedia.org/wiki/End-userhttp://en.wikipedia.org/wiki/Data_accesshttp://en.wikipedia.org/wiki/Programming_toolhttp://en.wikipedia.org/wiki/Relational_databasehttp://en.wikipedia.org/wiki/Relational_databasehttp://en.wikipedia.org/wiki/OpenEdge_Advanced_Business_Language#cite_note-webspeedcomplete-3http://en.wikipedia.org/wiki/OpenEdge_Advanced_Business_Language#cite_note-introABL-2http://en.wikipedia.org/wiki/OpenEdge_Advanced_Business_Language#cite_note-p2-1http://en.wikipedia.org/wiki/Fourth-generation_programming_languagehttp://en.wikipedia.org/wiki/Progress_Software
  • 8/12/2019 OpenEdge Advanced Business Language

    2/5

    1998

    Version 9

    December 10, 2002

    Progress Dynamics 2.0 announced - the application environment for the OpenEdge business

    platform[4]

    February 17, 2004

    OpenEdge 10 announced[5]

    2005

    OpenEdge Studio packages[6]

    Progress Version 9

    Progress WebClient

    Progress Dynamics Version 2.1

    February 8, 2006

    OpenEdge 10.1 announced - addition of object-oriented extensions to ABL, and new auditing

    service[7]

    February 13, 2007

    OpenEdge 10.1b announced - adds support for 64-bit data formats[8]

    April 15, 2008

    OpenEdge 10.1c announced - first business application development platform to support IPv6[9]

    November 3, 2008

    OpenEdge 10.2A announced -New OpenEdge GUI for .NET that allows developers to create

    modern WinForms-style UI's without leaving the OpenEdge environment.

    December 2009

    OpenEdge 10.2B release providing improved OpenEdge GUI .Net Integration and additional

    online database features.

    December 2011

    OpenEdge 11.0 releaseintroducing patent-

    pending multi-tenancy, multi-Cloud

    deployment options and extended platform

    support.

    June 2012:

    OpenEdge 11.1 releaseproviding

    performance and productivity tools for the

    development of SaaS (software as a service)

    and Cloud applications. It also delivers

    stronger security coupled with simplified user

    authentication.

    http://en.wikipedia.org/wiki/OpenEdge_Advanced_Business_Language#cite_note-4http://en.wikipedia.org/wiki/OpenEdge_Advanced_Business_Language#cite_note-4http://en.wikipedia.org/wiki/OpenEdge_Advanced_Business_Language#cite_note-5http://en.wikipedia.org/wiki/OpenEdge_Advanced_Business_Language#cite_note-5http://en.wikipedia.org/wiki/OpenEdge_Advanced_Business_Language#cite_note-5http://en.wikipedia.org/wiki/OpenEdge_Advanced_Business_Language#cite_note-6http://en.wikipedia.org/wiki/OpenEdge_Advanced_Business_Language#cite_note-6http://en.wikipedia.org/wiki/OpenEdge_Advanced_Business_Language#cite_note-7http://en.wikipedia.org/wiki/OpenEdge_Advanced_Business_Language#cite_note-7http://en.wikipedia.org/wiki/OpenEdge_Advanced_Business_Language#cite_note-8http://en.wikipedia.org/wiki/OpenEdge_Advanced_Business_Language#cite_note-8http://en.wikipedia.org/wiki/OpenEdge_Advanced_Business_Language#cite_note-8http://en.wikipedia.org/wiki/OpenEdge_Advanced_Business_Language#cite_note-9http://en.wikipedia.org/wiki/OpenEdge_Advanced_Business_Language#cite_note-9http://en.wikipedia.org/wiki/OpenEdge_Advanced_Business_Language#cite_note-9http://www.progress.com/en/inthenews/progress-software-un-48648.htmlhttp://www.progress.com/en/inthenews/progress-software-un-48648.htmlhttp://www.progress.com/en/inthenews/progress-software-an-62602.htmlhttp://www.progress.com/en/inthenews/progress-software-an-62602.htmlhttp://www.progress.com/en/inthenews/progress-software-an-62602.htmlhttp://www.progress.com/en/inthenews/progress-software-un-48648.htmlhttp://en.wikipedia.org/wiki/OpenEdge_Advanced_Business_Language#cite_note-9http://en.wikipedia.org/wiki/OpenEdge_Advanced_Business_Language#cite_note-8http://en.wikipedia.org/wiki/OpenEdge_Advanced_Business_Language#cite_note-7http://en.wikipedia.org/wiki/OpenEdge_Advanced_Business_Language#cite_note-6http://en.wikipedia.org/wiki/OpenEdge_Advanced_Business_Language#cite_note-5http://en.wikipedia.org/wiki/OpenEdge_Advanced_Business_Language#cite_note-4
  • 8/12/2019 OpenEdge Advanced Business Language

    3/5

    February 2013:

    OpenEdge 11.2 releaseprovided enhanced

    mobility capabilities through: visual designer

    and UI toolkit for phone and tablet

    applications, REST support for the

    OpenEdge application server, JavaScriptData Binding support libraries, and write-

    once, run anywhere support for iOS and

    Android;

    Summer 2013:

    OpenEdge 11.3 release

    Syntax and semantics[edit]

    Progress ABL is a strongly typed, late-

    bound, English-like programming language.

    Although initially designed as a procedurallanguage, 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 be said to 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 programatically; 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".

    DEFINEVARIABLEw ASHANDLENO-

    UNDO.

    CREATEWINDOWwASSIGN

    WIDTH=50

    http://www.progress.com/en/inthenews/new-progress-softwar-65552.htmlhttp://www.progress.com/en/inthenews/new-progress-softwar-65552.htmlhttp://en.wikipedia.org/w/index.php?title=OpenEdge_Advanced_Business_Language&action=edit&section=2http://en.wikipedia.org/w/index.php?title=OpenEdge_Advanced_Business_Language&action=edit&section=2http://en.wikipedia.org/w/index.php?title=OpenEdge_Advanced_Business_Language&action=edit&section=2http://en.wikipedia.org/w/index.php?title=OpenEdge_Advanced_Business_Language&action=edit&section=3http://en.wikipedia.org/w/index.php?title=OpenEdge_Advanced_Business_Language&action=edit&section=3http://en.wikipedia.org/w/index.php?title=OpenEdge_Advanced_Business_Language&action=edit&section=3http://en.wikipedia.org/w/index.php?title=OpenEdge_Advanced_Business_Language&action=edit&section=4http://en.wikipedia.org/w/index.php?title=OpenEdge_Advanced_Business_Language&action=edit&section=4http://en.wikipedia.org/w/index.php?title=OpenEdge_Advanced_Business_Language&action=edit&section=4http://en.wikipedia.org/wiki/Hello_world_programhttp://en.wikipedia.org/wiki/Hello_world_programhttp://en.wikipedia.org/wiki/Hello_world_programhttp://en.wikipedia.org/wiki/Hello_world_programhttp://en.wikipedia.org/w/index.php?title=OpenEdge_Advanced_Business_Language&action=edit&section=4http://en.wikipedia.org/w/index.php?title=OpenEdge_Advanced_Business_Language&action=edit&section=3http://en.wikipedia.org/w/index.php?title=OpenEdge_Advanced_Business_Language&action=edit&section=2http://www.progress.com/en/inthenews/new-progress-softwar-65552.html
  • 8/12/2019 OpenEdge Advanced Business Language

    4/5

    HEIGHT=5

    MESSAGE-AREA=FALSE

    STATUS-AREA=FALSE.

    CURRENT-WINDOW=w.

    DEFINE BUTTONbtnOK LABEL"OK"

    SIZE12BY1.2.

    FORM

    "Hello World!"VIEW-ASTEXTAT

    COL20ROW2

    btnOKATCOL20ROW4

    WITHFRAMEf SIZE50BY5NO-BOX

    THREE-D.

    VIEWFRAMEf.

    ENABLEbtnOKWITHFRAMEf.

    WAIT-FOR"CHOOSE"OFbtnOK.

    DELETE OBJECTw.

    A message-box can be used to achieve the

    same effect:

    MESSAGE"Hello World!"

    VIEW-ASALERT-BOXINFO

    BUTTONS OK.

    Also, you can

    use ERRORand WARNINGinstead of INFOtochange the message icons.

    The simplest "Hello, World" program,

    though, is this:

    DISPLAY"Hello World!".

    SQL SELECTequivalent[edit]

    The SQL statement:

    SELECT*FROMcustomer;

    (along with your chosen language display

    procedure) can be expressed in Progress /

    ABL as:

    FOREACHcustomerNO-LOCK:

    DISPLAY

    SQL UPDATEequivalent[edit]

    The SQL statement:

    http://en.wikipedia.org/w/index.php?title=OpenEdge_Advanced_Business_Language&action=edit&section=5http://en.wikipedia.org/w/index.php?title=OpenEdge_Advanced_Business_Language&action=edit&section=5http://en.wikipedia.org/w/index.php?title=OpenEdge_Advanced_Business_Language&action=edit&section=5http://en.wikipedia.org/w/index.php?title=OpenEdge_Advanced_Business_Language&action=edit&section=6http://en.wikipedia.org/w/index.php?title=OpenEdge_Advanced_Business_Language&action=edit&section=6http://en.wikipedia.org/w/index.php?title=OpenEdge_Advanced_Business_Language&action=edit&section=6http://en.wikipedia.org/w/index.php?title=OpenEdge_Advanced_Business_Language&action=edit&section=6http://en.wikipedia.org/w/index.php?title=OpenEdge_Advanced_Business_Language&action=edit&section=5
  • 8/12/2019 OpenEdge Advanced Business Language

    5/5

    UPDATEcustomer

    SETsalesman ='Fred'

    WHEREcustno =14;

    can be expressed in Progress / ABL as:

    FORcustomerWHERE

    customer.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.)