ILE
ILE is an acronym which stands for Integrated Language Environment.
ILE was introduced with V3R1 of OS/400 and gave iSeries programming languages many of the capabilities that are found in modern programming languages.
Among these capabilities are...
- Static and dynamic binding to Procedures that can be coded in any ILE programming language.
- Multiple Modules can be included in a Service Program. These Service Programs are loaded at run time allowing for (something)
- Addition of the Activation Group concept for resource managment.
Contents
ILE Languages
Program Call Evolution
Trying to put this into perspective for people who may be more experienced with what came before and still struggling to Grok implications of new features.
Traditional (pre ILE) Program Calls
Each program can contain CALL statements that call other programs, that can be in the same or a different language. Each of the called programs can in turn call others.
These calls are resolved at execution time.
Each program object is directly compiled from a source member.
With only one exception known to Al Mac, each program must be 100% written in one language, although it typically accesses objects sourced from other languages, such as DDS for layout of stuff, and CLP heavy use of IBM Commands.
The exception is SQL embedded in RPG.
ILE Static Call - Bind by Copy
- Each module (*MODULE object) is created from one source member.
- Each program (*PGM object) is created by copying or "binding" one or more modules and specifying the name of the *MODULE to initially receive control.
- Linkages are established at compile time.
- Each module can be written in any ILE program.
- Thus a combined program can have several different languages in the same program, each being in a different module.
- Static Program Call has less overhead.
- Dynamic Program Call (the prior traditional approach) remains supported.
- ILE needs more memory.
- This executes faster than the prior methods.
- Each *MODULE within each *PGM has a unique virtual address.
- Where in the prior traditional approach, when you called some program or subroutine or whatever, always have smae entry point, but can have multiple exit points, and can leave program active to help performance if expect it to be called again soon, in this reality we can have multiple entry points.