Integrated Language
Environment
AS/400
e-series
I-series
What is ILE
New family of compilers
New RPG language
Support for ILE CL
Enhanced COBOL Compiler
ILE C/400 compiler from V2R3
System Support for new compilers
Static binding any to any
Better application control
Via job structure
More consistency across languages
Co-existence with existing applications.
Programmer Productivity
Modular programming with good performance
Code reuse
Faster compiles
Workload distribution
Significant new language function
Bindable subroutine packages
New debugger
With source view
Original Program Model
Dynamic program call (simplicity)
Single entry point
Language controls runtime behavior
One compilation = one program
Variables visible across entire program
Resources Shared across a job
Integrated Language Environment
Dynamic or static binding
Significant new language function (especially
RPG)
One environment ingrates all ILE languages
Both traditional and procedure based (like C)
Environment provides runtime behaviour
OPM still available
ILE Components
New Concepts for ILE
Procedures
Modules and programs
Static binding
Service programs
Activation Groups
Run unit
Application isolation
Code optimization
Source view debugger
Procedures
Piece of Source code with an entry point
Not an AS/400 object
Definition varies by language
ILE RPG,ILE CL, ILE Cobol one per run unit
ILE C Many per compilation unit (function Definition)
Procedure name is always same as the
containing module name for rpg / cl /cobol
Called with new call bound procedure syntax
Procedures appear on the stack.
Modules
*Module object type
Object type for ILE
Contains translated but not runnable code
Must be bound into a program to run
Input is a source member
Contains one procedure for ILE RPG 400,ILE
CL and ILE COBOL/400 of the same name
Contains 1-many procedures or ILE C /400
with different names
Created with CRTXXXMOD
Programs
*PGM Object type
Either an OPM program (CRTXXXPGM)
Or an ILE Program (CRTPGM, CRTBNDXXX)
ILE *PGMs Contain one or more modules
One external entry point (Called the program
entry procedure or PEP)
Called with Dynamic CALL program Syntax
Dynamic Binding
All Calls at runtime = Dynamic binding
Static Binding
Program Creation: CRTPGM with module list
CALL
*MODULE X
*MODULE Y
Prc x:
PRC Y:
Call PRC Y
CallB P2
*Module Z
PRC P1
PRC P2
Bound Call to procedure name
Faster performance than todays call
Bind by copy Static call
Bind by reference static call
Dynamic Call vs Static call
RPG
CL
COBOL
CL
ILE Static Call
CallB
CALLPRC
CALL LINKAGE
Function call
procname()
OPM or ILE Dynamic Call
CALL
CALL
CALL
#PRAGMA
LINKAGE(pgmname.OS)
Important Differences to note are:
An ILE Static call runs a procedure not a program
Bound Call
Static
By reference
Simple Program Creation
CRTBNDxxx(CL RP CBL C)
1. Create Module
2. Automatically binds
3. Creates Program Object
One step Compile / Bind for simple *PGM
objects
Module object deleted
IBM Supplied default CRTBNDxxx
DFTACTGRP(*YES) ensures program runs in
OPM-Compatibility mode.
Service Program
*SRVPGM object type
A collection of commonly used modules
packaged together
A Kind of subroutine Library
Uses fast static call static bind by reference
Cannot be called dynamically
Multiple entry points