Difference between revisions of "ILE"

From MidrangeWiki
Jump to: navigation, search
(Traditional (pre ILE) Program Calls)
m
Line 12: Line 12:
 
== ILE Languages ==
 
== ILE Languages ==
  
* ILE C
+
* ILE [[C]]
* ILE CL
+
* ILE [[CL]]
* ILE COBOL
+
* ILE [[COBOL]]
* ILE RPG
+
* ILE [[RPG]]
  
 
== Program Call Evolution ==
 
== Program Call Evolution ==
Line 23: Line 23:
 
=== Traditional (pre ILE) Program Calls ===
 
=== 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.
+
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.
 
These calls are resolved at execution time.
Line 29: Line 29:
 
Each program object is directly compiled from a source member.
 
Each program object is directly compiled from a source member.
  
With only one exception known to [[User:Al Mac|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]].
+
With only one exception known to [[User:Al Mac|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]].
 
The exception is [[SQL]] embedded in [[RPG]].
Line 35: Line 35:
 
=== ILE Static Call - Bind by Copy ===
 
=== ILE Static Call - Bind by Copy ===
  
* Each module (*MOD object) is created from one source member.
+
* 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 *MOD to initially receive control.
+
* 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.
 
* Linkages are established at compile time.
 
* Each module can be written in any ILE program.
 
* Each module can be written in any ILE program.
Line 44: Line 44:
 
* ILE needs more memory.
 
* ILE needs more memory.
 
* This executes faster than the prior methods.
 
* This executes faster than the prior methods.
* Each *MOD within each *PGM has a unique virtual address.
+
* 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.
 
* 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.
  
 
=== ILE Static Call - Bind by Reference ===
 
=== ILE Static Call - Bind by Reference ===

Revision as of 14:21, 15 June 2006

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

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.

ILE Static Call - Bind by Reference