Enterprise Generation Language
Encyclopedia
EGL is a high level, modern business oriented programming language, designed by IBM to be platform independent. EGL is similar in syntax to other common languages so it can be learned by application developers with similar previous programming background. EGL application development abstractions shield programmers from the technical interfaces of systems and middleware allowing them to focus on building business functionality.
EGL applications and services are written, tested and debugged at the EGL source level, and once they are satisfactorily functionally tested they can be compiled into COBOL
COBOL
COBOL is one of the oldest programming languages. Its name is an acronym for COmmon Business-Oriented Language, defining its primary domain in business, finance, and administrative systems for companies and governments....

, Java, or JavaScript code to support deployment of business applications that can run in any of the following environments:
  • Microsoft Windows
    Microsoft Windows
    Microsoft Windows is a series of operating systems produced by Microsoft.Microsoft introduced an operating environment named Windows on November 20, 1985 as an add-on to MS-DOS in response to the growing interest in graphical user interfaces . Microsoft Windows came to dominate the world's personal...

    , Linux
    Linux
    Linux is a Unix-like computer operating system assembled under the model of free and open source software development and distribution. The defining component of any Linux system is the Linux kernel, an operating system kernel first released October 5, 1991 by Linus Torvalds...

    , UNIX
    Unix
    Unix is a multitasking, multi-user computer operating system originally developed in 1969 by a group of AT&T employees at Bell Labs, including Ken Thompson, Dennis Ritchie, Brian Kernighan, Douglas McIlroy, and Joe Ossanna...

     running JVM, for example in the context of a Java EE servlet container (IBM WebSphere Application Server, Apache Tomcat
    Apache Tomcat
    Apache Tomcat is an open source web server and servlet container developed by the Apache Software Foundation...

    , GlassFish
    GlassFish
    GlassFish is an open source application server project started by Sun Microsystems for the Java EE platform and now sponsored by Oracle Corporation. The supported version is called Oracle GlassFish Server...

    )
  • IBM System z: CICS Transaction Server, IMS, z/OS
    Z/OS
    z/OS is a 64-bit operating system for mainframe computers, produced by IBM. It derives from and is the successor to OS/390, which in turn followed a string of MVS versions.Starting with earliest:*OS/VS2 Release 2 through Release 3.8...

     Batch, UNIX System Services
    UNIX System Services
    UNIX System Services is a required, included component of z/OS. USS is a certified UNIX implementation optimized for mainframe architecture. It is the first UNIX 95 to not be derived from the AT&T source code...

    , WebSphere Application Server, z/VSE, Linux
  • IBM System i
    IBM System i
    The IBM System i is IBM's previous generation of midrange computer systems for IBM i users, and was subsequently replaced by the IBM Power Systems in April 2008....

    : IBM i5/OS, IBM WebSphere Application Server, Apache Tomcat
    Apache Tomcat
    Apache Tomcat is an open source web server and servlet container developed by the Apache Software Foundation...

  • Internet Explorer
    Internet Explorer
    Windows Internet Explorer is a series of graphical web browsers developed by Microsoft and included as part of the Microsoft Windows line of operating systems, starting in 1995. It was first released as part of the add-on package Plus! for Windows 95 that year...

    , Firefox, Safari
    Safari (web browser)
    Safari is a web browser developed by Apple Inc. and included with the Mac OS X and iOS operating systems. First released as a public beta on January 7, 2003 on the company's Mac OS X operating system, it became Apple's default browser beginning with Mac OS X v10.3 "Panther". Safari is also the...

     browsers for Ajax rich web applications

Code examples

Program

An EGL Program part is a generatable logic part with one entry point. Each Program part contains a main function, which represents the logic that runs at program start up. A program can include other functions and can access functions that are outside of the program. The function main can invoke those other functions. Programs functions are composed of a set of EGL statements, variables, and constants.


Program HelloWorld

const GREETING string = "Hello, ";

function main
myName string = "John";
sayHello(myName);
end

function sayHello(name String in)
SysLib.writeStdOut(GREETING + name + "!");
end

end


Record

An EGL Record part defines a set of data elements. In this example, a record with the name CustomerRecord is defined with 6 fields.


Record CustomerRecord type BasicRecord
customerNumber INT;
customerName STRING;
customerAddr1 STRING;
customerAddr2 STRING;
customerAddr3 STRING;
customerBalance MONEY;
end


EGL has a specialized type of record called SQLRecord that is used to exchange data with a relational database.



record Employee type sqlRecord { tableNames =Employee"]
], keyItems =[EMPNO]}
EMPNUMBER string{ column = "EMPNO", maxLen = 6};
FIRSTNME string{ sqlVariableLen = yes, maxLen = 12};
MIDINIT string{ isSqlNullable = yes, maxLen = 1};
LASTNAME string{ sqlVariableLen = yes, maxLen = 15};
DEPT string{ column = "WORKDEPT", isSqlNullable = yes, maxLen = 3};
PHONENO string{ isSqlNullable = yes, maxLen = 4};
HIREDATE date{ isSqlNullable = yes};
end


  • In this example, the record Employee is bound to a table (or view) named Employee.


Service

An EGL Service part contains public functions meant to be accessed from other applications or systems. In this example, a service with two functions is defined.


package com.mycompany.services;

service EmployeeService

function getEmployees returns(Employee[])
records Employee[0]; // define an empty array of records
get records; // retrieve records from the database
return (records); // return the records
end

function addEmployee(emp Employee in) returns (boolean)
try
add remp;
return (true);
onException (ex AnyException)
return (false);
end
end

end

  • In EGL, code is organized in packages (like Java (programming language)
    Java (programming language)
    Java is a programming language originally developed by James Gosling at Sun Microsystems and released in 1995 as a core component of Sun Microsystems' Java platform. The language derives much of its syntax from C and C++ but has a simpler object model and fewer low-level facilities...

    )
  • The first function, getEmployees, returns an array of records populated from the records in a database.
  • The second function, addEmployee adds a new record to the database and returns a true or false depending on whether the record was added successfully.


RUIHandler

The main component of a Rich UI application is a Rich UI handler part. These parts are generated into JavaScript.


package com.mycompany.ui;

import com.mycompany.services.Employee;
import com.mycompany.services.EmployeeService;
import dojo.widgets.DojoGrid;
import dojo.widgets.DojoGridColumn;

handler EmployeeView type RUIhandler { initialUI = [ grid
], onConstructionFunction = start, cssFile = "main.css" }

grid DojoGrid { behaviors = [ ], headerBehaviors = [ ], columns = [
new DojoGridColumn { displayName = "First Name", name = "FIRSTNAME" },
new DojoGridColumn { displayName = "Last Name", name = "LASTNAME" },
new DojoGridColumn { displayName = "Salary", name = "SALARY" }
] };

function start
svc EmployeeService { };
call svc.getEmployees returning to displayEmployees;
end

function displayEmployees(retResult Employee [ ] in)
grid.data = retResult as any [ ];
end

end

Web 2.0 with EGL

In December 2008, IBM introduced new technology, EGL Rich UI, to simplify the creation of Web 2.0
Web 2.0
The term Web 2.0 is associated with web applications that facilitate participatory information sharing, interoperability, user-centered design, and collaboration on the World Wide Web...

-style Rich Internet Applications. This technology simplifies development by hiding the complexities of Ajax
Ajax (programming)
Ajax is a group of interrelated web development methods used on the client-side to create asynchronous web applications...

, JavaScript
JavaScript
JavaScript is a prototype-based scripting language that is dynamic, weakly typed and has first-class functions. It is a multi-paradigm language, supporting object-oriented, imperative, and functional programming styles....

, Rest
Rest
Rest may refer to:* Leisure* Human relaxation* SleepRest may also refer to:* Rest , a pause in a piece of music* Rest , the relation between two observers* Rest , a 2008 album by Gregor Samsa...

, and SOAP
SOAP
SOAP, originally defined as Simple Object Access Protocol, is a protocol specification for exchanging structured information in the implementation of Web Services in computer networks...

 from the developer, which enables them to focus on the business requirement and not on the underlying technologies.

Commercial Products

EGL programming tools are available as an Eclipse-based commercial product, the Rational Business Developer
IBM Rational Business Developer Extension
IBM Rational Business Developer provides a powerful workbench for Enterprise Generation Language development, an innovative end-to-end rapid development approach.-Overview:...

 and also in the EGL edition of Rational Developer for System z.

EGL is a target language for modernization of legacy applications because of the language semantics affinity with procedural languages and legacy 4th generation languages:
  • a set of conversion tools available within the Rational Business Developer
    IBM Rational Business Developer Extension
    IBM Rational Business Developer provides a powerful workbench for Enterprise Generation Language development, an innovative end-to-end rapid development approach.-Overview:...

     product provide automated the conversion from older and stabilized IBM and Informix
    Informix
    IBM Informix is a family of relational database management system developed by IBM. It is positioned as IBM's flagship data server for online transaction processing as well as integrated solutions...

     4th generation languages
  • a set of IBM service offerings and complementary products (Rational Migration Extension for Natural, Rational Migration Extension for System i) provide the ability to convert from Software AG Natural
    NATURAL
    NATURAL is a fourth-generation programming language from Software AG. It is largely used for building databases output in plain text form, for example. * Hello World in NATURAL WRITE 'Hello World!' END...

     and from IBM RPG to EGL


Tools for searching large EGL code bases, comparing individual EGL files for changes, and detecting duplicated code are available from Semantic Designs

The Katana-EGL Rich UI Framework from ClearBlade delivers a jump start and rapid prototyping for EGL Web 2.0 and Mobile applications.

External links


Books on EGL

  • Enterprise Web 2.0 with EGL, ISBN 978-1-58347-091-6.
  • Developing Web 2.0 Applications with EGL for IBM i, ISBN 978-1-58347-089-3.
The source of this article is wikipedia, the free encyclopedia.  The text of this article is licensed under the GFDL.
 
x
OK