Overview of Language Processor Environments - IBM-REXX

The language processor environment defines various characteristics that relate to how execs are processed and how system services are accessed and used.Some of the environment characteristics include the following:

  • The language in which the system displays REXX messages
  • The ddnames from which input is read, to which output is written, and from which REXX execs are fetched
  • The names of several replaceable routines that you can provide for system services, such as I/O processing, loading REXX execs, and processing data stack requests
  • The names of exit routines that the system invokes at different points in REXX processing, such as when the IRXEXEC routine is invoked or when a user enters attention mode in TSO/E
  • The names of host command environments and the corresponding routines that process commands for each host command environment
  • The function packages that are available to execs that run in the environment
  • The subpool the system uses for storage allocation
  • The name of the address space
  • Bit settings (flags) that define many characteristics, such as:
  • Whether the environment is integrated into TSO/E (that is, whether execs running in the environment can use TSO/E commands and services)
  • The search order for commands and for functions and subroutines
  • Whether the system displays primary and alternate messages.

The REXX language itself is address space independent. For example, if an exec includes a DO loop, the language processor processes the DO loop in the same manner regardless of whether the exec runs in TSO/E or in a non-TSO/E address space. However, when the language processor processes a REXX exec, various host services are used, such as I/O and storage. MVS address spaces differ in how they access and use system services, such as I/O and storage management. Although these differences exist, the REXX exec must run in an environment that is not dependent on the particular address space in which the exec was invoked. Therefore, a REXX exec runs in a language processor environment, which is an environment that can be customized to support how each address space accesses and uses host services.

When a language processor environment is initialized, different routines can be defined that the system invokes for system services, such as obtaining and freeing storage and handling I/O requests. The language processor environment provides for consistency across MVS address spaces by ensuring that REXX execs run independently of the way in which the system accesses system services. At the same time, the language processor environment provides flexibility to handle the differences between the address spaces and also lets you customize how REXX execs are processed and how the system accesses and uses system services.

Initialization of an Environment:
The initialization routine, IRXINIT, initializes language processor environments. The system calls IRXINIT in both TSO/E and non-TSO/E address spaces to automatically initialize an environment.Because the system automatically initializes language processor
environments, users need not be concerned with setting up such an environment, changing any values, or even that the environment exists. The language processor environment allows application programmers and system programmers to customize the system interfaces between the language processor and host services.

When the system calls IRXINIT to automatically initialize an environment, the system uses default values. TSO/E provides three default parameters modules (load modules) that contain the parameter values IRXINIT uses to initialize three different types of language processor environments. The three default parameters modules are:

  • IRXTSPRM (for a TSO/E session)
  • IRXISPRM (for ISPF)
  • IRXPARMS (for non-TSO/E address spaces

You can also explicitly invoke IRXINIT and pass the parameter values for IRXINIT to use to initialize the environment. Using IRXINIT gives you the flexibility to customize the environment in which REXX execs run and how the system accesses and uses system services.

Chains of Environments:
Many language processor environments can exist in a particular address space. A language processor environment is associated with an MVS task. There can be multiple environments associated with one task. Language processor environments are chained together in a hierarchical structure and form a chain of environments where each environment on a chain is related to the other environments on that chain.Although many environments can be associated with one MVS task, each individual language processor environment is associated with one and only one MVS task. Environments on a particular chain may share various resources, such as data sets and the data stack.

Maximum Number of Environments:
Although there can be many language processor environments initialized in a single address space, there is a default maximum. The load module IRXANCHR contains an environment table that defines the maximum number of environments for one address space. The default maximum is not a specific number of environments. The maximum number of environments depends on the number of chains of environments and the number of environments defined on each chain. The default maximum should be sufficient for any address space. However, if a new environment is being initialized and the maximum has already been used, IRXINIT completes unsuccessfully and returns with a return code of 20 and a reason code of 24

Control Blocks:
When IRXINIT initializes a new language processor environment, IRXINIT creates a number of control blocks that contain information about the environment. The main control block that IRXINIT creates is called the environment block (ENVBLOCK). Each language processor environment is represented by its environment block. The environment block contains pointers to other control blocks that contain information about the parameters that define the environment, the resources within the environment, and the exec currently running in the environment. IRXINIT creates an environment block for each language processor environment that it creates. Except for the initialization routine, IRXINIT, all REXX execs and services cannot operate without an environment being available.

Rule About Changing Any Control Blocks:You can obtain information from the control blocks. However, you must not change any of the control blocks. If you do, unpredictable results may occur.


All rights reserved © 2018 Wisdom IT Services India Pvt. Ltd DMCA.com Protection Status

IBM-REXX Topics