le migration cookbook v4.3

19
Cookbook: Migration to Language Environment (LE) Languages Enterprise PL/I Version 4.3 / 18. October 2004

Upload: nigthstalker

Post on 03-Jan-2016

176 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: LE Migration Cookbook v4.3

Cookbook: Migration to Language Environment (LE) Languages Enterprise PL/I Version 4.3 / 18. October 2004

Page 2: LE Migration Cookbook v4.3

Index Cookbook: Migration to Language Environment (LE) Languages..........................................1

Preface....................................................................................................................................3 Focus:.....................................................................................................................................3

Change History ..................................................................................................................3 Migration path to Language Environment.............................................................................4

Language Environment definition .....................................................................................4 Migration............................................................................................................................4

Migration to Enterprise PL/I..................................................................................................6 Alterations in Enterprise PL/I for z/OS .................................................................................6 Planning the effort of Migration ............................................................................................7 PLIXOPT Runtime Options...................................................................................................7 Controlled Variables ..............................................................................................................8 DEBUG Tool for z/OS...........................................................................................................9 Fetch.......................................................................................................................................9 Compile..................................................................................................................................9

Job Region .........................................................................................................................9 Compile Parameter (Options) ..........................................................................................10 Example native PL/I Compile Job ...................................................................................10 Example Germany additional PL/I Options ....................................................................10 Init uninitialized variables................................................................................................11 Missing Eye catchers .......................................................................................................11 Output Listing LRECL ....................................................................................................11

CICS, DB2 Precompile........................................................................................................11 Example PL/I with CICS, DB2 Compile Job ..................................................................12

SCLM (Language Definitions) ............................................................................................12 Compile Example with native PL/I, no DB2 and no CICS) ............................................12 Compile Example with CICS and DB2 ...........................................................................13

BIND (Link).........................................................................................................................13 Example Bind Job ............................................................................................................13 AMODE(24) ....................................................................................................................14 SCLM Bind......................................................................................................................14 Bind together with OS PL/I V2.3 und Enterprise PL/I V3.x ...........................................14 CICS Bind........................................................................................................................15

Status of support packages...................................................................................................16 ECMVS............................................................................................................................16 ACM & FTCM ................................................................................................................16

FAQ and News.....................................................................................................................17 Literature..............................................................................................................................18 Country specific Information...............................................................................................18

Germany – ASA Error routine.........................................................................................18 Compiler Releases ...............................................................................................................19

PL/I ..................................................................................................................................19 COBOL (for mixed applications) ....................................................................................19

Enterprise PL/I Compiler Migration 2

Page 3: LE Migration Cookbook v4.3

Preface The authors of this document are:

Ralf Willers, Germany AMS Application Support Reiner Torian, Germany SCLM specialist Siegfried Österreicher, EMEA AMS Competency Tools Leader Johann Seidl Germany AMS Application Support

Special Thanks for additional Information and Suggestion:

Markus Hiltbrunner Phillipe Irrmann

Focus: Focus of this document is the PL/I Compiler Migration to Language Environment (LE) with additional information for COBOL. This cookbook describes points that are worth of knowing, need to be focused on and includes links to the IBM literature for further information. This Document cannot entirely cover the new Enterprise Compiler or all different constellations in the different application environments.

Change History Version

1.0 Draft Version 2.0 Final Version 3.0 Add SCLM Language Definition 4.0 Translation in English, several enhancements 4.1 Minor adaptations 4.2 Finalisation of first distribution version 4.3 Several small enhancements, Compiler Releases

Enterprise PL/I Compiler Migration 3

Page 4: LE Migration Cookbook v4.3

Migration path to Language Environment

L•

M

1

E

Please generate a realistic migration plan to LE for your application(s). This plan need tobe consolidated with all included stakeholders (Application owner, Application Developer, Middleware support, System support,…).

anguage Environment definition LE compliant:

o the compiled code run in a LE environment without problems (compatibility mode):

Code was compiled with a OS PL/I V1.5.1 compiler or later. Code was linked in test/production after installation of the OS PL/I V2

LE Compatibility PTF’s (available since 1996). Code was compiled in IBM VS Cobol II compiler or later

with RES compile Option. LE enabled:

o the source code has been compiled with a LE compliant PL/I or Cobol compiler Enterprise PL/I V3 IBM PL/I for MVS and VM Release 1.1 Enterprise Cobol V3 Cobol for OS/390 & VM V2

igration 1. Analysis of all executable load modules (batch, IMS, CICS, TSO, ...).

a. identify the executable programs that need to be relinked • OS PL/I prior to LE compatibility PTF installation

b. identify the source code that need to be recompiled • OS PL/I V 1.5.0 and earlier • IBM VS Cobol II with NORES compile Option

2. Recompile or relink all needed modules based on the analysis. 3. Ensure that the LE Runtime is used for testing the new generated modules (temporary

use JOBLIB / STEPLIB SYS1.SCEERUN) 4. Remove all PL/I / Cobol run time libraries (SYS1.PLI.LINKLIB /

SYS1.COBOL.LINKLIB) in test and production jobs, IMS regions1 and CICS systems (ensure that the System LINKLIB contains only the LE Runtime library SYS1.SCEERUN)

5. Modify all compile Procedures (SCLM or compile Jobs) to use the new Enterprise PL/I and Cobol compilers.

6. Remove the access to the old PL/I and Cobol compiler and runtime libraries (Special access need to be proofed and controlled).

Please be aware of dependencies to other applications.

nterprise PL/I Compiler Migration 4

Page 5: LE Migration Cookbook v4.3

Several Tools has been written that can help in the LE compliant analysis. For example the German application support Team has written a load module checker for PL/I and Cobol programs. This tool analyzes, based on the load modules, which programs need to be recompiled or relinked. Further information can be requested from [email protected] Note: If LE dependant Application-Middleware, like ECMVS, is used the switch over to the LE runtime need to be planned carefully because of region dependencies in IMS or CICS between different applications and this Application-Middleware. This chart describes the decision path to LE for PL/I and COBOL. Base assumption: ’SYS1.SCEERUN” is prior to ’SYS1.PLI.LINKLIB’ and ‘SYS1.COBOL.LINKLIB’ in system linklib on the test and production systems. Do nothing for "BLUE" Applications with an

Application Owner Risk Acceptance Be aware that abends could happen.

Scan JCL / IMS Regions / CICS if steplib statements are used with SYS1.PLI.LINKLIB / SYS1.COBOL.LINKLIB (means non LE)

exists

Scan Le compatiblity in compiled code modules

if LECompatible delete joblib / steplib

statement in the job / procfunction test: test pgms if runnable in LE (test simple PGM start)

replacement link of PL/I and COBOL routines in production

full link or compile of modules with LE runtime

regression test of modulesdelete joblib / steplibstatement in the job / procfunction test: test pgms if runnable in LE (test simple PGM start)

or

no

yes

yes

no

conclusion: modules are LE compliant. No risk for production/ no urgent action needed

Enterprise PL/I Compiler Migration 5

Page 6: LE Migration Cookbook v4.3

Migration to Enterprise PL/I The PL/I Compiler mostly used by EMEA AMS ”OS PL/I Version 2 Release 3” (PL/I V2.3) went out of maintenance at the end of 2003 (extended until end of 2004). The successor is “Enterprise PL/I for z/OS Version 3 Release x” (Enterprise PL/I). This Compiler is fully compatible with “PL/I V2.3”. This means that no complete recompile of all application programs need to be done, as it is recommended in some places in the PL/I Literature. While using this mixed mode there are several items where you need to be aware of during compile time! Details and links are described later in this cookbook. Also, the new “Enterprise PL/I” compiler is definitely much to be preferred to the old “PL/I V2.3” compiler for many reasons, for instance, it's faster, it's less buggy and it's in service. [Peter Elderon, Laboratory Santa Teresa] The “PL/I for MVS & VM Release 1.1“ (PL/I R1.1) which is available and LE compliant should not be used, the aim is to use the newest Compiler (Enterprise PL/I) available. NOTE: Applications that are using “PL/I R1.1” today should change to the new Compiler as soon as possible, but it is not mandatory ‘yet’. The out-of-maintenance date has not been scheduled, but IBM will not maintain two different PL/I Compilers at the same time. New functions and performance enhancements will only be available in the “Enterprise PL/I” compiler. It’s important that Programs compiled with the LE Compiler must be linked with LE (Language Environment) Linklib and then only run under LE Runtime. All Applications which are not LE enabled (compliant or enabled) today have to be changed to LE A.S.A.P!

Uncontrolled and unpredictable Abends and Loops could occur if non LE compliant or enabled programs where used in a LE runtime environment.

Application running in the compliant mode need to ensure that they use from begin of 2005 for all compile runs a LE Compiler to ensure that the application is maintained in a fully controlled environment.

Alterations in Enterprise PL/I for z/OS The new PL/I Compiler includes are many changes and enhancements. Here some Examples:

• multiple FETCH (fetch in fetch) • new Info and Error Messages • new Compiler Parameters • new DCL Parameters • many new BUILTIN Functions

o in mathematics, Binary Processing o Date routine with 4 digit year: DATETIME() o HEX Values output: HEX(), HEXIMAGE() o etc.

Enterprise PL/I Compiler Migration 6

Page 7: LE Migration Cookbook v4.3

• More information in PLIDUMP o a hex dump of user static o a list of the options used at compile time o more information on PL/I files

• XML support

Planning the effort of Migration The Cost/Effort for Applications derives from:

• The PLIXOPT parameters in the Main Modules have to be changed or deleted. • If fetch is used the MAIN OPTION must be changed. • Check if CONTROLLED variables are used. • PLITEST is replaced by DEBUG TOOL. • PLISTART entry is replaced by CEESTART. • The “Enterprise PL/I” Compiler finds and reports more Errors at Compile time. This

means more Info and error message than with “PL/I V2.3”, including some new messages. Attention: Read all Error, Warning and Information messages very carefully. Ensure that you understand the content and meaning, if you have problems then ask for support.

• Check that all jobs/procs run under LE, which means without SYS1.PLI.LINKLIB in the Steplib/Joblib of Systems-LINKLIB.

• Adapt Compile and link procedure (jobs/procs or SCLM) to the new compiler (JCL and parameters) and verify functionality

• Errors or Abends may occur if the Program was not properly programmed, there are many potentials, here is one example:

o If Variables are not initialized they may have a different init Value than expected, this can happen if in the past the Warnings have been ignored.

PLIXOPT Runtime Options The PLIXOPT Runtime Options need to be adapted for “Enterprise PL/I”. Please check if the Options are needed, if not delete them. The new Runtime Options are now the same for all LE Languages like” Enterprise PL/I”, “Enterprise Cobol”, C/C++…. Some Options are discontinued (COUNT, FLOW, …), and there are some new ones (ERRCOUNT,…). When using the “Enterprise PL/I” Compiler with the old Runtime Options, the Compile will run correctly, but the Options will be ignored and have no function at Runtime! In the transitional phase the ‘old’ and the ‘new’ Options can be put in the PLIXOPT.

• for “PL/I V2.3” only the old Options function will be used. • with “Enterprise PL/I” only the new Options function will be used and Info Messages

are written for the old Options. Example of Compiler Messages: ## DCL PLIXOPT CHAR (50) VAR STATIC EXT INIT('NOCOUNT,NOFLOW,NOSPIE,NOSTAE,ISASIZE(256K)');

Enterprise PL/I Compiler Migration 7

Page 8: LE Migration Cookbook v4.3

...

...

IEL0951I W 35 'NOCOUNT' IN 'PLIXOPT' STRING IS INVALID. SEE RELATED RUNTIME MESSAGE 'CEE3609I'.

COMPILER INFORMATORY MESSAGES

IEL0952I I 35 'NOSPIE' IN 'PLIXOPT' STRING IS NOT SUPPORTED. SEE RELATED RUNTIME MESSAGE 'CEE3613I'.

IEL0952I I 35 'NOSTAE' IN 'PLIXOPT' STRING IS NOT SUPPORTED. SEE RELATED RUNTIME MESSAGE 'CEE3613I'.

IEL0952I I 35 'ISASIZE' IN 'PLIXOPT' STRING IS NOT SUPPORTED. SEE RELATED RUNTIME MESSAGE 'CEE3610I'.

IEL0953I I 35 'SPIE' OR 'STAE' IN 'PLIXOPT' STRING IS NOT SUPPORTED. SEE RELATED RUNTIME MESSAGE 'CEE3631I'.

Examples for Runtime Options:

Old new Default ISASIZE(16K) STACK(16K,16K) STACK(128,128,BELOW,KEEP)NOSTAE,NOSPIE TRAP(OFF) TRAP(ON,SPIE) REPORT RPTSTG(ON) RPTSTG(OFF)

Example PL/I Source:

/* PL/I V2.3 Option */ DCL PLIXOPT CHAR (100) VAR STATIC EXT INIT('ISASIZE(16K),NOSTAE,NOSPIE');

/* Enterprise PL/I Option */ DCL PLIXOPT CHAR (100) VAR STATIC EXT INIT('STACK(16K,16K),TRAP(OFF)');

A Comparison of the old “PLI V2.3” and the new LE Options with the Options that have been discontinued can be found in:

• Enterprise PL/I V3.x for z/OS – Compiler Run-Time Migration Guide (GC27-1458-xx)

Controlled Variables Sharing of CONTROLLED Variables between “PL/I V2.3” and “Enterprise PL/I” is not allowed. An Allocate and Free of a CONTROLLED Variable must be done either in “PL/I V2.3” or in “Enterprise PL/I”. Mixing Variables causes an Abend.

Enterprise PL/I Compiler Migration 8

Page 9: LE Migration Cookbook v4.3

DEBUG Tool for z/OS With the new Debug Tool additionally to the debug possibility in the same ISPF session a ‘Remote Debug’ is available. This means that the Debug screen can be available on a different and special VTAM session, or on a Workstation, or on a Workstation with VisualAge Distributed Debugger, and also under WebSphere Studio Enterprise Developer. Now a Debug is possible directly out of Batch, IMS, CICS and DB2 stored procedures.

• Under IMS V7 without BTS and out of DB2 stored procedures the ‘TEST’ Parameters must be given with the source.

• Under CICS TS and IMS V8 you can set the ‘TEST’ Parameters using a Dialog or Lib for CICS and ISPF for IMS

All Programs that should to be Debugged must include the following Compile Parameters:

TEST(ALL,SYM),OPT(0)

Literature: • DEBUG Tool for z/OS – User’s Guide (SC18-7171-xx) • DEBUG Tool for z/OS – Reference and Messages (SC18-7172-xx)

Fetch With “Enterprise PL/I” a 'fetch in fetch’.is possible. This means you can now fetch a module from a already fetched Module and so on. Therefore these changes: PL/I V2.3:

PROC OPTIONS(MAIN); With PL/I V2.3 the Program had to be linked with itself through the ENTRY POINT.

Enterprise PL/I:

PROC OPTIONS(FETCHABLE); Remove the ENTRY Statement from the Linkage input otherwise the link receives an RC=8.

NOTE: When no 'fetch in fetch’ is to be used, the fetch still works under “PL/I V2.3” With a fetch from “Enterprise PL/I” to the “PL/I V2.3” the old Runtime Environment hast to be linked to it. This is documented below under the Title: Bind of OS PL/I and Enterprise PL/I

Compile

Job Region “Enterprise PL/I” Compiler needs much more Region and CPU Time. At Compile time, if problems occur with Region, then use REGION=100M in the Job.

Enterprise PL/I Compiler Migration 9

Page 10: LE Migration Cookbook v4.3

Compile Parameter (Options) To be fully compatible with ”V2.3”, the following Compile Options must be set within “Enterprise PL/I”, these are IBM default on the systems and are not to be overwritten : CMPAT(V2),NORENT,LIMITS(EXTNAME(7),BACKREG(5),BIFPREC(15),LINKAGE(SYSTEM)

In the JCL there is a length limitation of 100 Bytes for Parameters, due to this there is the new possibility to put the Compile Options in an File (member): ( +DD:ddname ). For ADM-Germany we created a member in the 'SCCMAIN.PROCLIB(PLIZOPT)' on the ADMPLEX MVSADM1. You can find a compilation of the most common Compile Options, these Options are adapted centrally based on the latest information’s and feedbacks. If one of these Options are to be overwritten, then you must put them after the +DD:xx

Example: PARM=('+DD:OPTIONS',' TEST(ALL,SYM)','OPT(0)') With the Enterprise PL/I Compiler the following Steplib must be used: 'SYS1.VAPLI.SIBMZCMP'. Additional we create for ADM-Germany the following compile procedures on AMDPLEX MVSADM1: 'SCCMAIN.PROCLIB(PLIZC)'and 'SCCMAIN.PROCLIB(PLIZCL)'

Example native PL/I Compile Job //COMP EXEC PGM=IBMZPLI,PARM=('+DD:OPTIONS') //OPTIONS DD DISP=SHR,DSN=SCCMAIN.PROCLIB(PLIZOPT) //STEPLIB DD DISP=SHR,DSN=SYS1.VAPLI.SIBMZCMP //SYSPRINT DD SYSOUT=* //SYSLIB DD DISP=SHR,DSN=hlq.group.PLINCL //SYSIN DD DISP=SHR,DSN=hlq.group.PLI(MBR) //SYSLIN DD DSN=&&LOADSET,DISP=(MOD,PASS), // UNIT=SYSDA,SPACE=(CYL,(5,1)) //SYSUT1 DD DSN=&&SYSUT1,UNIT=SYSDA,SPACE=(CYL,(3,1))

Example Germany additional PL/I Options ***************************** Top of Data ****** ATTRIBUTES(SHORT) MAXMEM(2097152) OFFSET OPTIMIZE(3) OPTIONS PP(MACRO) SOURCE XREF(SHORT) **************************** Bottom of Data ****

Enterprise PL/I Compiler Migration 10

Page 11: LE Migration Cookbook v4.3

Init uninitialized variables “Enterprise PL/I V3.3” has added, via a PTF UQ83822 (04/2004), a compile option called INITAUTO and INITSTATIC that will initialize all otherwise uninitialized automatic or static variables.

Example: PARM=('+DD:OPTIONS',' INITAUTO','INITSTATIC')

Missing Eye catchers If an INTERNAL static variable is unused, the compiler will not allocate any storage for it. For example, if the following declaration is the only reference to the variable build_data, then no storage would be allocated for this variable and its initial value would not be in the generated text:

dcl build_data char(30) var static init('Compiled in build 17');

If the ABNORMAL attribute is specified on a level-1 static variable, the compiler will allocate storage for the variable. For example, to keep the variable above, you could use:

dcl build_data char(30) var static abnormal init('Compiled in build 17');

Don't apply ABNORMAL to all variables or all static variables - it will lead to a time consuming compile and a decreasing performance at runtime.

Output Listing LRECL The LRECL for the compiler SYSPRINT listing dataset has changed to 137. The C/C++ compiler uses the same LRECL.

CICS, DB2 Precompile Starting with CICS Transaction Server Version 2.1 and DB2 Version 7 it is possible that these precompiles are processed directly in the PL/I Compiler precompile Phase. With this way the currently used extra precompile Steps are now obsolete. With the Option PP(..) you can change the sequence of the precompiler steps. Here an example: PL/I precompile, DB2 precompile, CICS precompile, PL/I compile. The sequence of the precompilers could be changed freely. The DB2 and CICS Loadlib have to be put into the Steplib if this one step precompile option is used. Example:

PP(MACRO,SQL(''opt1(xx),opt2''),CICS)

NOTE: Notice the '' double Apostrophes

Enterprise PL/I Compiler Migration 11

Page 12: LE Migration Cookbook v4.3

INFO: CICS should not be changed to CICS Transaction Server 2.x until TS 1.3 runs error free under LE. Example PL/I with CICS, DB2 Compile Job

//COMP EXEC PGM=IBMZPLI,PARM=('+DD:OPTIONS', // 'PP(MACRO,CICS,SQL(''opt1(xx),opt2'')') //OPTIONS DD DISP=SHR,DSN=SCCMAIN.PROCLIB(PLIZOPT) //STEPLIB DD DISP=SHR,DSN=SYS1.VAPLI.SIBMZCMP // DD DISP=SHR,DSN=SYS1.DSNDSNx.SDSNLOAD // DD DISP=SHR,DSN=SYS1.CTS230.SDFHLOAD //SYSPRINT DD SYSOUT=* //SYSLIB DD DISP=SHR,DSN=hlq.group.PLINCL //SYSIN DD DISP=SHR,DSN=hlq.group.PLI(MBR) //SYSLIN DD DSN=&&LOADSET,DISP=(MOD,PASS), // UNIT=SYSDA,SPACE=(CYL,(5,1)) //SYSUT1 DD DSN=&&SYSUT1,UNIT=SYSDA,SPACE=(CYL,(3,1))

SCLM (Language Definitions) The SCLM Language Definitions net to be adapted by the individual Application Administrator.

• The Language Definitions are in the mandatory Library: ’hlq.PROJDEFS.SOURCE’

• Compile the Project with the Member PROJJCL after the changes, to get them active.

With the following Examples, the existing Language Definitions have to be changed to use the “Enterprise PL/I” Compiler under SCLM. For ADM-Germany we create an example in on ADMPLEX MVSADM1: ’SCCS.PROJDEFS.SOURCE(FLM§PLIO)’, for IMS (FLM§PLII)

Compile Example with native PL/I, no DB2 and no CICS) ... *================================================== * STEP 2: PL/I COMPILE *================================================== * FLMTRNSL CALLNAM='PLI COMPILE ', C FUNCTN=BUILD, C COMPILE=IBMZPLI, C TASKLIB=TASKLIB, C VERSION=3.X, C GOODRC=4, C PORDER=1, C OPTIONS=('DD(SYSPRINT,SYSCIN,SYSLIB,SYSPUNCH,SYSLIN), C +DD:OPTIONS,SYSTEM(MVS),OBJ’) * FLMALLOC IOTYPE=A,DDNAME=OPTIONS FLMCPYLB SCCMAIN.PROCLIB(PLIZOPT) * FLMALLOC IOTYPE=A,DDNAME=TASKLIB FLMCPYLB SYS1.VAPLI.SIBMZCMP

Enterprise PL/I Compiler Migration 12

Page 13: LE Migration Cookbook v4.3

* FLMALLOC IOTYPE=S,DDNAME=SYSIN FLMALLOC IOTYPE=O,DDNAME=SYSLIN,KEYREF=OBJ,DFLTTYP=OBJ,RECNUM=35000 * FLMALLOC IOTYPE=I,DDNAME=SYSLIB,KEYREF=SINC FLMALLOC IOTYPE=O,DDNAME=SYSPRINT,KEYREF=LIST,DFLTTYP=COMPL, PRINT=Y,RECNUM=100000 FLMALLOC IOTYPE=A,DDNAME=SYSPUNCH FLMCPYLB NULLFILE ...

Compile Example with CICS and DB2 ... *===================================================================== * STEP 2: PL/I COMPILE WITH CICS / DB2 PRECOMPILE IN SINGLE STEP *===================================================================== * FLMTRNSL CALLNAM='PLI DB2/CICS ', C FUNCTN=BUILD, C COMPILE=IBMZPLI, C TASKLIB=TASKLIB, C VERSION=3.X, C GOODRC=4, C PORDER=1, C OPTIONS=('DD(SYSPRINT,SYSCIN,SYSLIB,SYSPUNCH,SYSLIN), C +DD:OPTIONS,SYSTEM(MVS),OBJ, C PP(MACRO,SQL(''opt1,opt2''),CICS)') * FLMALLOC IOTYPE=A,DDNAME=OPTIONS FLMCPYLB SCCMAIN.PROCLIB(PLIZOPT) * FLMALLOC IOTYPE=A,DDNAME=TASKLIB FLMCPYLB SYS1.VAPLI.SIBMZCMP FLMCPYLB SYS1.DSNDSNA.SDSNLOAD FLMCPYLB SYS1.CTS230.SDFHLOAD * FLMALLOC IOTYPE=S,DDNAME=SYSIN FLMALLOC IOTYPE=O,DDNAME=SYSLIN,KEYREF=OBJ,DFLTTYP=OBJ,RECNUM=35000 * FLMALLOC IOTYPE=I,DDNAME=SYSLIB,KEYREF=SINC FLMALLOC IOTYPE=O,DDNAME=SYSPRINT,KEYREF=LIST,DFLTTYP=COMPL, PRINT=Y,RECNUM=100000 FLMALLOC IOTYPE=A,DDNAME=SYSPUNCH FLMCPYLB NULLFILE ...

BIND (Link) With Bind the following Libraries must be in the DD SYSLIB: 'SYS1.PLIBASE' + 'SYS1.SIBMBASE' replaced with the Lib 'SYS1.SCEELKED'. For ADM-Germany: Bind Procedure: 'SCCMAIN.PROCLIB(PLIZL)' Example Bind Job

//LINK EXEC PGM=IEWL, // PARM=('XREF','LIST'), // COND=(4,LT,C) //SYSLIB DD DISP=SHR,DSN=SYS1.SCEELKED

Enterprise PL/I Compiler Migration 13

Page 14: LE Migration Cookbook v4.3

// DD DISP=SHR,DSN=SYS1.ORGSTAND // DD DISP=SHR,DSN=hlq.group.LOAD //SYSUT1 DD DSN=&&SYSUT1,UNIT=SYSDA, // SPACE=(CYL,(3,1),RLSE),DCB=BLKSIZE=1024 //SYSPRINT DD SYSOUT=* //SYSLIN DD DSN=&&LOADSET,DISP=(OLD,DELETE) // DD DDNAME=SYSIN

AMODE(24) AMODE(24) is supported, but with some restrictions:

1. all PL/I code must be compiled with the default compiler option NORENT, 2. link with the ’SYS1.SIBMAM24’ dataset concatenated in front of the

’SYS1.SCEELKED’ dataset, 3. run with the Language Environment run-time options

- ALL31(OFF) - HEAP(,,BELOW,,,) - STACK(,,BELOW,,,)

4. OPTIONS(COBOL) on PROCs is not supported under AMODE(24), but if the COBOL code is compiled with an LE-enabled compiler, OPTIONS(COBOL) is not needed.

SYS1.SIBMAM24 is available only via PTF PQ79092.

SCLM Bind Here the same, the 'SYS1.PLIBASE' + 'SYS1.SIBMBASE' must be replaced with the Lib 'SYS1.SCEELKED'.

... BINDER FLMSYSLB SYS1.SCEELKED ...

Bind together with OS PL/I V2.3 und Enterprise PL/I V3.x As long as one “PL/I V2.3” Module is linked or fetched, the 'old' Runtime Environment has to be linked too.. To do this, the BIND must include the “PL/I V2.3” Runtime module (CEESG010). Example Bind:

INCLUDE SYSLIB(mbrname) INCLUDE SYSLIB(CEESG010) ... NAME mbrname(R)

Example SCLM Language Definition:

LKED BINDER * Linkage Editor: SCLM-Language LOAD mbrname TPLOAD * EXECUTABLE Programm-Load LMAP mbrname LINKL * Link-Liste CMD INCLUDE SYSLIB(CEESG010) * OS/PL1 RUNTIME INCLD mbrname PLI * SOURCE-Pgm translator: PLIO

Enterprise PL/I Compiler Migration 14

Page 15: LE Migration Cookbook v4.3

CICS Bind In the Bind Include card the following has to be changed.

• the first INCLUDE of DFHEPI and DFHPL1OI to DFHELII • ENTRY of PLISTART to CEESTART

INCLUDE(DFHELII) INCLUDE(member) ... ENTRY(CEESTART) NAME name ...

Enterprise PL/I Compiler Migration 15

Page 16: LE Migration Cookbook v4.3

Status of support packages

ECMVS A PTF for ECMVS R10 is scheduled for end of October 2004 that includes the following requirements:

• Code is compatible with the Enterprise PL/I compiler to ensure that local adaptations in exits (e.g. BTM) can use the new compiler in the local installations.

ACM & FTCM ACM and FTCM will now be maintained in a central environment in Italy. Based on the current newest available libraries the packages will be updated to be LE enabled and packaged for distribution. REMARK: If local adaptations where made to the base package in the countries this has to be redone with the LE enabled version.

Enterprise PL/I Compiler Migration 16

Page 17: LE Migration Cookbook v4.3

FAQ and News

• If Errors occur at Compile time look at the Region Size. REGION=100M

• The Region is limited to 100M. For very large Programs the personal maximum size

(userid) of the Region size can be set in ASO to 400M. ACCESS(READ) CLASS(§MAJOPTS) PROFILE(MVS.*.SMF.EREGLRG)

• Integrated DB2, CICS precompile (one step) for DB2 V7 und CICS TS 2.1 and the following releases

• For a fetch from ASM or a PL/I Version to another Version, the Main Program must

be linked with the other Runtime Environment. see 'Programming Guide' and 'Migration Guide'

• Display or Print the Pointer content.

Example Program to Display the Pointer content when looking for errors: DCL PPP POINTER INIT(ADDR(xxx)); PUT SKIP LIST(HEX(PPP)); ... Example Output: 0000A673

• Performance Improvement with 'DO I ...' Loop If a 'DO I = 1 TO ...' Loop using BIN FIXED(31) is better for the

Performance than BIN FIXED(15), DEC FIXED or PICTURE.

• A DCL of fewer than BIN FIXED(7) uses only 1 Byte of memory in Enterprise PL/I V3.x, with “PL/I 2.3” BIN FIXED(7) uses 2 Bytes.

Solution: change BIN FIXED(7) to BIN FIXED(15), to have the same field length REMARK: Ensure that the field size can hold your largest possible number.

• The Output of PUT with CHAR Strings can be in a wrong HEX Value when printing 'non-printable-characters'.

To have the String correctly printed, the new Builtin Function HEX() must be used. With this the contents of Pointers can also be printed with PUT: Example PL/I Program: DCL AAA CHAR(4) BASED(ADDR(BBB)); DCL BBB BIT(32) INIT('00000000000000010000000000000101'B); PUT SKIP LIST(HEX(AAA));

• If you calculate with different types (PIC, Dec, Bin, Fixed, Float) of variables it seems that the calculation could generate unexpected errors and results.

Use same type and size of variables to calculate.

• LE Error codes 4xxx can be found in the Debugging Guide and Run-Time Messages.

Enterprise PL/I Compiler Migration 17

Page 18: LE Migration Cookbook v4.3

Literature Here in this Document, we tried to put together everything worth knowing, this Document cannot entirely cover the new Compiler: The Enterprise PL/I literature can be found under:

• http://www.ibm.com/software/ad/pli/plizos/library/ The Enterprise COBOL literature can be found under:

• http://www-306.ibm.com/software/awdtools/cobol/zos/library/ The Language Environment literature can be found under:

• http://www-1.ibm.com/servers/eserver/zseries/zos/le/library/library.html The Debug literature can be found under:

• http://www-306.ibm.com/software/awdtools/debugtool/library/ Or use the IBM Standard Literature:

• http://ehone.ibm.com/public/applications/publications/cgibin/pbi.cgi

Country specific Information

Germany – ASA Error routine

DP60343 Abend program During the occurrence of an Abend (Program error) in a Program compiled with “PLI V2.3”, or an Abend is forced with the ‘SIGNAL ERROR’ statement, the standard Return code (RC=4) is issued. With a Return Code a ROLLBACK in IMS is not issued, there is an Abend code necessary. Because of this situation, for a long time ADM-Germany wrote this DP60343 program which issues under “PL/I V2.3” runtime an U1000 Abend. Under LE runtime the DP60343 does nothing and the standard LE U4038 Abend will be issued. When changing to LE, in the ‘ON ERROR’ section the ‘CALL DP60343’ must be removed. If you want to initialize a program Abend, use the following LE / PL/I example:

... DCL CEE3ABD OPTIONS(ASSEMBLER); DCL ABDCODE REAL FIXED BINARY(31,0); DCL TIMING REAL FIXED BINARY(31,0); ... TIMING = 0; /* BREAK */ ABDCODE = 2000; /* SUSER ABEND CODE */ CALL CEE3ABD (ABDCODE,TIMING); ...

With the usage as ‘Abend Step’ in the Runtime JCL nothing changes for DP60343.

Enterprise PL/I Compiler Migration 18

Page 19: LE Migration Cookbook v4.3

Compiler Releases

PL/I Compiler Name PGM No. St. Compiler/Link Library Runtime Library OS PL/I Version 1 5743-PL1 O no longer on z/OS

Platform SYS1.PLI.LINKLIB

OS PL/I Version 2.3

5668-910 O * SYS1.PLI.LINKLIB SYS1.PLI.LINKLIB/ (SYS1.SCEERUN)

IBM PL/I for MVS & VM Release 1.1

5688-235 A SYS1.ADPLI.LINKLIB SYS1.SCEERUN

VisualAge PL/I for OS/390 Version 2

5688-B22 (1) Replaced with ‘Enterprise PL/l V3’

SYS1.SCEERUN

Enterprise PL/I for z/OS Version 3

5655-H31 A SYS1.VAPLI.SIBMZCMP SYS1.SCEERUN

O Compiler is out of service * special support agreements signed by some applications

(1) Compiler is out of service, Object is LE enabled, successor is “Enterprise PL/I for z/OS Version 3”

A Actual Compiler is in service

COBOL (for mixed applications) Compiler Name PGM No. St. Compiler/Link Library Runtime Library OS/VS Cobol 5740-CB1 O no longer on z/OS

Platform SYS1.COBOL.LINKLIB

IBM VS Cobol II 5668-958 O SYS1.COBOL.LINKLIB SYS1.COBOL.LINKLIB/ (SYS1.SCEERUN)

Cobol/370 1.1 5688-197 (1) Replaced with ‘Cobol for OS/390 V2’

SYS1.COBOL.LINKLIB

Cobol for OS/390 & VM Version 2

5648-A25 (2) Replaced with ‘Enterprise Cobol V3’

SYS1.SCEERUN

Enterprise Cobol for z/OS Version 3

5655-G53 A SYS1.ADCOB.LINKLIB SYS1.SCEERUN

O Compiler is out of service (1) Compiler is out of service,

Object is LE enabled, successor is “Cobol for OS/390 & VM Version 2”

(2) Compiler is out of service, Object is LE enabled, successor is “Enterprise Cobol for z/OS Version 3”

A Actual Compiler is in service

Enterprise PL/I Compiler Migration 19