z/OS TSO/E REXX Reference
Previous topic | Next topic | Contents | Contact z/OS | Library | PDF


Overview of Language Processor Environments

z/OS TSO/E REXX Reference
SA32-0972-00

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

Characteristics of a Language Processor Environment describes the environment characteristics.

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 environments are automatically initialized in TSO/E describes when the system automatically initializes an environment in the TSO/E address space. When environments are automatically initialized in MVS describes when the system initializes environments in non-TSO/E address spaces.

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)

Characteristics of a Language Processor Environment describes the parameters module that contains all of the characteristics for defining a language processor environment. Values provided in the three default parameters modules describes the defaults TSO/E provides in the three parameters modules. You can change the default parameters that TSO/E provides by providing your own load modules. Changing the default values for initializing an environment describes how to change the parameters.

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. Chains of environments and how environments are located describes the relationship between language processor environments and MVS tasks and how environments are chained together.

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. If this error occurs, you can change the maximum value by providing a new IRXANCHR load module. Changing the maximum number of environments in an address space describes the IRXANCHR load module and how to provide a new module.

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. Control blocks created for a Language Processor Environment describes all of the control blocks that IRXINIT creates. 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.

Go to the previous page Go to the next page




Copyright IBM Corporation 1990, 2014