advanced ca endevor® software change manager processor coding techniques: practical techniques to...
TRANSCRIPT
Advanced CA Endevor® Software Change Manager Processor Coding Techniques: Practical Techniques to Streamline and Simplify your Processors
Maria Hackmann-Peters
Mainframe
ITERGO
Specialist
MFX34S
#CAWorld
2 © 2015 CA. ALL RIGHTS RESERVED.@CAWORLD #CAWORLD
© 2015 CA. All rights reserved. All trademarks referenced herein belong to their respective companies.
The content provided in this CA World 2015 presentation is intended for informational purposes only and does not form any type
of warranty. The information provided by a CA partner and/or CA customer has not been reviewed for accuracy by CA.
For Informational Purposes Only Terms of this Presentation
3 © 2015 CA. ALL RIGHTS RESERVED.@CAWORLD #CAWORLD
Abstract
In this session learn how simplify and automate your application build and
promotion tasks on the mainframe by creating reusable CA Endevor®
Software Change Manager Processors that are easy to maintain.
ITERGO develops innovative application systems and provides hardware and
low-level software to ensure the smooth operation of those applications for
the ERGO Insurance Group. Attend this session to learn various tips, tricks
and best practices that this real-world customer uses to address their
application development challenges.
Maria Hackmann-PetersITERGO
Specialist
Introduction: ERGO, ITERGO and ENDEVOR@ITERGO
Several best practices for processor
Example: How to use processor ‘includes’ to avoid redundant code
Using standard symbol ‘includes’ (for stages / types / languages)
Example: Using symbols for implementation of new requirement "double link for a PL1”
Circumvent symbol overrides: How to set a suitable symbol value
Example: Derive LOADLIB and LISTLIB names from type and stage symbols
Agenda
Maria Hackmann-Peters, ITERGO
ERGO Insurance Group at a glance
Zahlen Stand 31.12.2013Maria Hackmann-Peters, ITERGO
ITERGO is the group-wide provider of IT services
Cologne
Düsseldorf
Hamburg
Munich
Client / Server
30,000 users in more
than 30 countries
Management of approx.
4,000 servers
ERGO Printcenter
240 mill. pages per year
Enveloping volume of 45
mill. per year
Projects
400 medium and big
projects with a volume of
150,000 man days
per year
ERGO datacenter
(Mainframe)
25.000 MIPS
1.000 TB disc space
15 mill. online-transactions
per day
ITERGO GmbH
Victoriaplatz 2
40477 Düsseldorf
www.itergo.com
Maria Hackmann-Peters, ITERGO
ENDEVOR users
1000 overall authorized users
300 developers
295.000 live ELEMENTs
800,000 ENDEVOR actions (ADD / UPDATE, GENERATE, MOVE)
13 active ENVIRONMENTs, 17 active STAGEs
50 SYSTEMs, on average 8 SUBSYSTEMs per SYSTEM
190 PROCESSORs
7
ENDEVOR@ITERGO
Maria Hackmann-Peters, ITERGO
Avoid redundant code
Processor steps are made to be used in different processors
Processor ‘include’ technique
Prevent different coding styles
All processors should be implemented with the same uniform structure
Avoid symbol overrides
Streamline your dataset naming conventions
Set the correct symbol default in the processor
Several Best Practices For Processor
Maria Hackmann-Peters, ITERGO
Prerequisites for using includes:
Type definition: e.g. PROCINCL as a ENDEVOR TYPE for processor includes
C1DEFLTS: LIBENV=LB (enables use of -INC syntax)
TYPE PROCESS Definition: INCLUDE LIBRARY ===> dataset
Using ‘includes’ in a processor:
//name PROC START=START, separated by comma-INC symbol include contains symbol: :
ZZ=END NO comma at the end-INC general step1-INC compile step (language specific)-INC link step:
9
How To Use Processor Includes To Avoid Redundant Code
Maria Hackmann-Peters, ITERGO
One processor per processor type \per language > unique structure using appropriate includesper stage /
GPLIPD2 GENERATE Processor for PL1 at stage PD2
Use symbol includes PGPLIPD2 specific for GENERATE PL1 at PD2
PGPLI common PL1 settings e.g. PL1 Compiler Options
PGENPD2 specific for GENERATE at PD2
PGALL common GENERATE settings e.g. Utility parameters
PSYSPD2 System Qualifier PD2 e.g. DB2 Subsystem Name
PHLQPD2 (High Level) Qualifier PD2 e.g. IMS datasets HLQs
Duplicate definition of symbols is allowed: specific value “replaces” common value
Options Table ALLOW_DUP_SYMBOLS=ON
„First come, first serve“ Sequence is important!
10
Processors And Standard Symbol Includes
Maria Hackmann-Peters, ITERGO
Change ITERGO’s company-specific PL1 runtime (from “MAC” to “MAC-LE”)
NO mixed mode usage of MAC and MAC-LE load modules
Requires a re-link of 10,000 PL1 programs
Exchanging the runtime and every load module must be possible
• fast
• back and forth
• during test as well as later during production
Create two versions (MAC and MAC-LE) for each load module
ENDEVOR:
Dual link (only) for PL1 programs to two different load libraries (active one / fallback lib)
Easy and quick exchange of assignment MAC / MAC-LE to active / fallback lib
Step by step activation according to the MAP (and a generate of all the 10,000 PL1 modules)
Maria Hackmann-Peters, ITERGO 11
Example For Using Symbols: Dual Link For PL1 MAC-LE
Maria Hackmann-Peters, ITERGO 12
Example (cont’d)
MAC LE Implementation In ENDEVOR
1.Preparation
PGALL MACLE=DUMMY
+ dual Link step (IF MACLE<>”DUMMY”)
2.Dual link in PD2
PGPLIPD2 MACLE=OFF
3.MAC-LE in PD2
PGPLIPD2 MACLE=ON
4.MAC-LE through the MAP
PGPLIxxx per stage MACLE=ON
5.MAC-LE in production
PGPLI MACLE=ON
all PGPLIxxx remove MACLE=ON
6.FALLBACK swap the active / fallback loadlibs
PGPLI MACLE=OFF
MACLE Control Symbol
=DUMMY No dual link, no MAC-LE module
=ON MAC-LE module into active load library
=OFF MAC-LE module into fallback library
Includes
PGPLIPD2 specific GENERATE PL1 on PD2
PGPLI common PL1 settings
PGENPD2 specific GENERATE on PD2
PGALL common GENERATE settings
PSYSPD2 System Qualifier PD2
PHLQPD2 High Level Qualifier PD2
Use other symbols to create the symbol’s value
A simple example: The dataset name obeys a good naming convention.
Use a common symbol setting like:
LOADLIB=&HLQ.&C1STAGE..&C1TYPE..LOADLIB,
DONE
If all your datasets correspond to the naming conventions ….
But Dataset names have often developed over years
and do NOT follow a proper naming convention.
You may be able to derive their names as shown in the following examples.
Maria Hackmann-Peters, ITERGO 13
Avoid Symbol Overrides
Set A Correct Symbol Default In The Processor
LOADLIB contains a qualifier, which sometimes is an abbreviation of the type:
This LOADLIB qualifier can be derived from the type.
Maria Hackmann-Peters, ITERGO 14
Avoid Symbol Overrides
Example 1: LOADLIB
TYPE LOADLIB
PGMOCOB hlq.stagequal.PGMO.LOADLIB
PGMHCOB hlq.stagequal.PGMH.LOADLIB
PGMDCOB hlq.stagequal.PGMO.LOADLIB
ALIAS hlq.stagequal.PGMH.LOADLIB
… …
LOADLIB=&HLQPGM..&STGQUAL..<YPQUAL..LOADLIB,
Type-specific qualifier: LTYPQUAL=<YP&C1TY(1,4).,
LTYPPGMO=PGMO,
LTYPPGMD=PGMO,
LTYPPGMU=PGMU,
LTYPPGMH=PGMH,
LTYPALIA=PGMO,
LTYPCINC=PGMH,
ATTENTION: Please be aware of new types!
A runtime error will occur if the corresponding LTYPxxx does not exist.
Maria Hackmann-Peters, ITERGO 15
Avoid Symbol Overrides
Example 1: LOADLIB Qualifier Derived From The Type
LISTDS for several types contain an additional qualifier:
This additional qualifier can also be derived from the type.
Maria Hackmann-Peters, ITERGO 16
Avoid Symbol Overrides
Example 2: LISTDS
TYPE LISTDS
PGMOCOB
PGMUCOB
PGMHCOB
hlq.stage.LIST
PGMDCOB hlq.stage.PGMD.LIST
ALIAS hlq.stage.ALIAS.LIST
… …
LISTDS=&#HLQNDV..&C1EN.&C1SI..&LISTQUAL.LIST,
Type-specific qualifier: LISTQUAL=&LIST&C1TY(1,4).,
LISTPGMO=,
LISTPGMD=PGMD.,
LISTPGMU=,
LISTPGMH=,
LISTALIA=ALIAS.,
ATTENTION: Please be aware of the periods!
Maria Hackmann-Peters, ITERGO 17
Avoid Symbol Overrides
Example 2: LISTDS Qualifier Derived From Type
LOADLIB contains a stage qualifier, which is different for various stages:
This LOALDIB qualifier has to be derived from stage and processor group.
Maria Hackmann-Peters, ITERGO 18
Avoid Symbol Overrides
Example 3: LOADLIB
Stage Name Processor Group LOADLIB
PROJDV2 n.a. hlq.PD2.typequal.LOADLIB
PROJEKT2 E$000 hlq.PT2.E$000.typequal.LOADLIB
PROJEKT2 E$001 hlq.PT2.E$001.typequal.LOADLIB
PROD2 n.a. hlq.PROD.typequal.LOADLIB
… …
LOADLIB=&HLQPGM..&STGQUAL..<YPQUAL..LOADLIB,
Stage shortcut QSTAGE=&#Q&C1EN.&C1SI.., (PGALL)
#QPROJDV2=PD2 (site symbols)
#QPROJEKT2=PT2 (site symbols)
#QPROD2=PROD (site symbols)
QSTAGE in PROJDV2: #QPROJDV2 PD2QSTAGE in PROJEKT2: #QPROJEKT2 PT2QSTAGE in PROD: #QPROD2 PROD
PROCGRP lib PMULTPD2=, (PGALL)
PMULTPT2=&C1PRGRP(1,5). (PGALL)
PMULTPROD=, (PGALL)
Stage qualifier STGQUAL=&QSTAGE..&PMULT&QSTAGE., (PGALL)
STGQUAL in PROJDV2 PD2.&PMULTPD2 PD2 STGQUAL in PROJEKT2 PT2.&PMULTPD2 PT2.&C1PRGRP(1,5). e.g. PD2.E$000STGQUAL in PROD PROD.&PMULTPROD PROD
ATTENTION: Please be aware of the periods! Equivalent notation maybe different during processor execution.
Maria Hackmann-Peters, ITERGO 19
Avoid Symbol Overrides Example 3: LOADLIB Qualifier Derived From Stage And Processor Group
Keep it easy and reduce maintenance overhead:
Use a common processor coding style so that common processor steps can be
coded and maintained as ‘include’ members.
Keep it simple and avoid the need for unique symbol overrides:
Use a standard data set naming convention that incorporates CA Endevor
inventory references (Environment, Stage, Type, etc.) in the name so that standard
CA Endevor symbols can be used to "build" the names.
Conclusion
Maria Hackmann-Peters, ITERGO
21 © 2015 CA. ALL RIGHTS RESERVED.@CAWORLD #CAWORLD
Q & A
22 © 2015 CA. ALL RIGHTS RESERVED.@CAWORLD #CAWORLD
For More Information
To learn more, please visit:
http://cainc.to/Nv2VOe
CA World ’15