Possibly little known changes have been made to the LE/PLI run-time since the LE z/VSE 1.4.6 (z/VSE 4.2) release. There are two major changes that are PL/I specific.
The first, available with LE z/VSE 1.4.6 (with the PTF for APAR PM02293 installed), is a significant reduction in the PL/I "FETCH" limitations that have been imposed on PL/1 VSE users ever since LE/VSE 1.1.0.
The only limitations now associated with "FETCH"ing a PL/I fetchable routine from another PL/I program are :
- Only external procedures can be fetched.
- If a controlled variable is passed as a parameter, and received by the FETCHed routine as a controlled variable, then the original fetch restrictions come back into effect.
- Fetched PL/I procedures must have been compiled by PL/I for VSE/ESA.
- PL/I OPTIONS(MAIN) procedures cannot be fetched.
- The FETCH, RELEASE and CALL statements must specify entry constants. An entry constant for a fetched procedure cannot be assigned to an entry variable.
Ref : Info APAR II11716
All other noted restrictions in the PL/I for VSE/ESA Language Reference, section 220.127.116.11.1 "FETCH and RELEASE Restrictions" no longer apply.
The next new enhancement available since LE z/VSE 1.4.7 (z/VSE 4.3) is the addition of Multi-Tasking support for PL/1 VSE applications.
This improvement allows PL/I for VSE/ESA programmers to construct applications that can control other PL/I for VSE/ESA routines that perform asyncronous processing as another task (VSE sub-task) in the same partition. Thus allowing for greater exploitation of the available z/VSE systems CPU and memory resources.
To use this new capability will require the installation of the PL/I for VSE/ESA Compiler PTF (UK62805) for APAR PM17894 to enable the new "task" PL/I for VSE/ESA compile-time option. The PDF available at the following link describes the documentation updates associated with this new PL/I for VSE/ESA compiler option :
" Within a multi-tasking environment, a PL/I program is a set of one or more procedures. The execution of these procedures constitutes one or more tasks, each associated with a different task variable. A task is dynamic; it exists only while the procedure is being executed. The distinction between the procedure and its execution is essential to the discussion of multitasking. A procedure can be executed concurrently in different tasks."
Supplied with LE z/VSE 1.4.7 is a sample PL/I for VSE/ESA multi-tasking application. This sample is intended to demonstrate how to design and code PL/I VSE applications to take advantage of the new multi-tasking management and processing capabilities. Have a look at member IBMIVPMT.P in your LE z/VSE installation Library (PRD2.SCEEBASE). When the compiler required PTF is installed the IBMIVPMT member can be tailored to your z/VSE systems specifications and submitted for execution to view the results and see the sub-tasks execution within the z/VSE partition.
It should be noted that the PL/I VSE multi-tasking environment is only supported in the BATCH environment. Such multi-tasking processing will not be supported or performed when executed in any CICS environment.