EGL (programming language)
EGL (Enterprise Generation Language) 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, Java, or JavaScript code to support deployment of business applications that can run in any of the following environments:
- Microsoft Windows, Linux, UNIX running JVM, for example in the context of a Java EE servlet container (IBM WebSphere Application Server, Apache Tomcat, GlassFish)
- IBM System z: CICS Transaction Server, IMS, z/OS Batch, UNIX System Services, WebSphere Application Server, z/VSE, Linux
- IBM System i: IBM i5/OS, IBM WebSphere Application Server, Apache Tomcat
- Internet Explorer, Firefox, Safari browsers for Ajax rich web applications
Code examples
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. In this example, the record Employee is bound to a table (or view) named Employee.
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
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. 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.
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 emp;
return (true);
onException (ex AnyException)
return (false);
end
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-style Rich Internet Applications. This technology simplifies development by hiding the complexities of Ajax, JavaScript, Rest, and SOAP 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 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 product provide automated the conversion from older and stabilized IBM and Informix 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 and from IBM RPG to EGL
External links
- IBM EGL Cafe Community Site
- IBM's developerWork EGL zone
- IBM's developerWork Rational Business Developer zone
- IBM Rational Business Developer product page
- IBM Rational Business Developer Information Centers
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.