ILI - Interrupted Loop Indicator
An Interrupted Loop Indicator (ILI) is a programmer-defined flag or variable used within mainframe applications, typically written in COBOL or PL/I, to signal that a processing loop has been interrupted or terminated prematurely. It serves as a control mechanism to manage program flow when a loop's normal iteration sequence is broken by an external event, an error condition, or a specific business rule.
Key Characteristics
-
- Programmer-Defined: The ILI is not a built-in z/OS feature or a system-level register; it is a user-defined variable declared and managed entirely by the application program.
- Boolean or Status Value: It is commonly implemented as a single-character field (e.g.,
PIC X(1)) holding values like 'Y'/'N' or '1'/'0' to indicate a true/false state, or a numeric field for more granular status codes. - Control Flow Management: Its primary purpose is to enable the program to alter subsequent processing steps, execute specific exit routines, or perform cleanup based on the loop's interruption status.
- Context-Specific: The meaning and conditions for setting and checking the ILI are entirely dependent on the application's logic and business requirements.
- Error Handling Integration: Can be set upon detecting a critical error within a loop, prompting specific error recovery procedures, logging, or graceful program termination.
Use Cases
-
- Batch Job Termination: In a COBOL batch program processing a large sequential file, an ILI could be set if a severe data validation error occurs, allowing the program to close files, write an error report, and terminate gracefully without processing the remaining records.
- CICS Transaction Timeout: Within a CICS transaction that involves a sub-loop for data processing or resource acquisition, an ILI might be set if the loop exceeds a predefined time limit or resource threshold, prompting an exit and a message to the user.
- Interactive User Cancellation: In a CICS screen-based application, an ILI could be set if the user presses a specific Program Function (PF) key (e.g., PF3 for Exit, PF12 for Cancel) during a data entry or review loop, signaling the program to bypass further processing for that iteration.
- Resource Contention Handling: A loop attempting to acquire an exclusive lock on a DB2 table or IMS segment might set an ILI if the resource remains unavailable after a specified number of retries, leading to alternative processing paths or a delay.
Related Concepts
The ILI is intrinsically linked to application control flow and error handling mechanisms within COBOL or PL/I programs. It often works in conjunction with conditional statements (IF...THEN...ELSE, EVALUATE) and loop constructs (PERFORM...UNTIL, PERFORM VARYING, DO WHILE) to manage program execution. While not a direct system component, its implementation can be influenced by