Escolar Documentos
Profissional Documentos
Cultura Documentos
June 1993
This edition applies to Version 3 Release 5 of ISPF/PDF Software Configuration and Library Manager,
Program Number 5665-402 for use with MVS Version 2 Release 2 or later and TSO/E Version 2 Release 1.
Order publications through your IBM representative or the IBM branch office serving your locality.
Publications are not stocked at the address given below.
An ITSC Technical Bulletin Evaluation Form for readers' feedback appears facing Chapter 1. If the form
has been removed, comments may be addressed to:
When you send information to IBM, you grant IBM a non-exclusive right to use or distribute the
information in any way it believes appropriate without incurring any obligation to you.
AD LS (171 pages)
Chapter 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
Why Migrate to SCLM? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
Objectives and Scope of the Project . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
Project Environment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
Sample Applications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
Migration Steps . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
Vendor Library Systems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
CA-LIBRARIAN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
ENDEVOR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
vi Library Migration
Using SCLM Command Interface for Mass BUILDs . . . . . . . . . . . . . . . . . . . . . . 158
Glossary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163
Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167
Contents vii
viii Library Migration
Figures
1. Release Procedure for Sample Application 1: General Flow . . . . . . . . . . . . . . 14
2. Release Procedure for Sample Application 1: Data Flow . . . . . . . . . . . . . . . . 15
3. Release Procedure Using ENDEVOR . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
4. Extraction of Program Sources for Application 1 . . . . . . . . . . . . . . . . . . . . . 20
5. Project Hierarchy for Our Migration Project . . . . . . . . . . . . . . . . . . . . . . . . 25
6. Extraction and Use of Control Information . . . . . . . . . . . . . . . . . . . . . . . . . 30
7. Extraction of Information from Load Modules . . . . . . . . . . . . . . . . . . . . . . . 32
8. Formatted File before Editing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
9. Formatted File after Editing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
10. Sample Job to Run the IBM AMBLIST Utility . . . . . . . . . . . . . . . . . . . . . . . . 43
11. AMBLIST Output for Assembler Load Module P92N041 . . . . . . . . . . . . . . . . . 43
12. Input Records to Create LEC and CC Architecture Definitions for COBOL Programs 45
13. LEC and CC Architecture Definitions for OS/VS COBOL Program P92N002 . . . . . 45
14. LEC Architecture Definition for VS COBOL II Program P92N046 . . . . . . . . . . . . 46
15. Input Records to Create LEC and CC Architecture Definitions for PL/I Programs . . 46
16. LEC and CC Architecture Definitions for PL/I Program P94N353 . . . . . . . . . . . . 46
17. Input Records to Create LEC and CC Architecture Definitions for Assembler
Programs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
18. LEC Architecture Definition for Assembler Program P92N041 . . . . . . . . . . . . . . 47
19. HL Architecture Definition Created by the MIGR0050 Program . . . . . . . . . . . . . 48
20. Overview of Bulk Data Migration Steps . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
21. SCLM Migration Utility Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
22. COBOL Copy Book without 01 Level Data Name . . . . . . . . . . . . . . . . . . . . . 53
23. COBOL Copy Book with 01 Level Data Name . . . . . . . . . . . . . . . . . . . . . . . 53
24. COBOL Error Messages for Duplicate 01 Level Data Names . . . . . . . . . . . . . . 54
25. COPY REPLACING: Example 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
26. COPY REPLACING: Example 2a (COBOL Standard) . . . . . . . . . . . . . . . . . . . 55
27. COPY REPLACING: Example 2b (CA-LIBRARIAN Standard) . . . . . . . . . . . . . . . 56
28. COPY REPLACING: Example 2c (COBOL ANSI 85 Standard) . . . . . . . . . . . . . . 56
29. Partial SCLM Architecture Report for Member #COB2 . . . . . . . . . . . . . . . . . . 59
30. HL Architecture Definition #P1010 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
31. HL Architecture Definition #P1100 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
32. HL Architecture Definition #C1100 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
33. HL Architecture Definition #P92N200 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
34. Partial SCLM Architecture Report for Application 1 . . . . . . . . . . . . . . . . . . . . 66
35. HL Architecture Definition @X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
36. HL Architecture Definition @L . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
37. Partial SCLM Architecture Report for Application 2 . . . . . . . . . . . . . . . . . . . . 68
38. Job to Copy Members from CA-LIBRARIAN to CA-LIBRARIAN . . . . . . . . . . . . . 73
39. Job to Extract Programs from One CA-LIBRARIAN to Another CA-LIBRARIAN . . . 74
40. Job to Unload All Members from CA-LIBRARIAN to PDS . . . . . . . . . . . . . . . . 75
41. PL/I Program MIGU001 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
42. Sample Job to Run Program MIGU001 . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
43. Output Records from Analysis of Load Modules with Program MIGU001 . . . . . . . 81
44. Sorted Output Records from Load Module Analysis . . . . . . . . . . . . . . . . . . . 81
45. VS COBOL II Program MIGU002 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
46. Sample Job to Run Program MIGU002 . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
x Library Migration
Tables
1. SCLM Types Used in the Migration Project . . . . . . . . . . . . . . . . . . . . . . . . 26
2. SCLM Languages Used in the Migration Project . . . . . . . . . . . . . . . . . . . . . 33
3. VS COBOL II Compile-Time Options in Effect . . . . . . . . . . . . . . . . . . . . . . . 37
The following terms, which are denoted by a double asterisk (**) in this publication, are
trademarks of other companies:
Related Publications
The following publications are considered particularly suitable for a more detailed discussion
of the topics covered in this document:
Software Configuration and Library Manager WorkStation Platform/2 Usage Guide,
GG24-3538
AD/Cycle: SCLM 3.4 New Functions Usage Guide, GG24-3833
AD/Cycle: Using SCLM to Manage CSP/AD and CSP/AE Libraries, GG24-3621
ISPF/PDF Software Configuration and Library Manager (SCLM) Guide and Reference,
SC34-4254
VS COBOL II Application Programming Guide for MVS and CMS, SC26-4045
VS COBOL II Application Programming: Language Reference, SC26-4047
VS COBOL II Application Programming: Debugging, SC26-4049
OS PL/I Version 2 Programming Guide, SC26-4307.
Acknowledgments
The advisor for this project was:
Christian Peterhans
International Technical Support Center - San Jose
Walther Fitz
IBM Germany
This publication is the result of a residency conducted at the International Technical Support
Center, San Jose.
Thanks to the following people who reviewed this document and made technical
contributions:
Ron Blackwell
IBM Canada
Claude Bourrec
IBM France
Ralph Naegeli
IBM Switzerland
Ueli Wahli
International Technical Support Center - San Jose
Thanks are also due to the many other collaborators and reviewers who contributed to
improve this document.
Preface xvii
xviii Library Migration
Executive Summary
The objective of our project was to migrate applications from vendor library systems to
SCLM and to document the migration in an ITSC Redbook.
The basic steps of our migration strategy can be applied to other migrations, even though
the approaches used to address the issues may vary from installation to installation. Our
migration can be viewed as an example that shows the conceptual steps of a migration from
a vendor library to SCLM. Understanding the methodology we used to succeed with the
migration, rather than simply reusing the tools developed, should prove beneficial.
We selected two applications from two different vendor library systems, CA-LIBRARIAN and
ENDEVOR, for our project. These two library systems offer different levels of functionality.
CA-LIBRARIAN is a library management system with no software configuration support
functions. ENDEVOR is a software configuration and library management system. We
wanted to show the different considerations that apply depending on how sophisticated your
existing environment is.
We did not install either of the vendor library systems in our environment. We extracted all
data deemed useful from the source environments before we started our project, and we
had no access to additional information during the project. A customer migration should be
easier and may require fewer intermediate steps.
We did not try to clone the existing environment because we believe that cloning does not
give you all the benefits of SCLM and increases considerably the cost of the migration.
The tools developed during the project and described in this book are not designed as
general-purpose tools. You may want use the tools as a starting point for developing your
own tools or modify them to suit your environment.
It turned out during the project that the most critical factor for a successful migration to
SCLM is the availability of control information from the existing environment and information
about the application structure. Of lesser importance is whether the vendor library provides
this control information or whether the information is available elsewhere in your
environment. This book shows examples for both situations. The less information about
your application and its structure that is available from the existing environment, the more
you have to invest during the migration, but the benefits from maintaining the application
under SCLM will pay off even more.
The total cost of a migration to SCLM depends on the existing environment and on whether
you want to clone the existing environment with SCLM. The cost for the actual migration
might be small compared to the investment to introduce software management discipline in
your environment. However, proper software management pays off big in the future in terms
of reduced development cost, management of configuration changes, software auditability,
application reliability, and production stability.
Project Environment
For all the migration work we used an MVS/ESA* (SP 4.2.2) system with ISPF/PDF 3.5
installed. A vendor library was not installed on the system, so we had to start with data
unloaded at the customer site.
The project dealt mainly with the migration steps. Premigration steps, for example,
selection of the sample applications, were partly carried out in the original customer
environment before the project started. We did not perform postmigration steps, such as
deleting migrated modules in the old library system, and, outside the real customer
environment, we could do only limited regression testing.
The migration process is quite host-bound, and we did not use the workstation interface of
the IBM SAA* AD/Cycle WorkStation Platform/2 during the migration.
4 Library Migration
Sample Applications
We used two different applications for the migration from two different vendor library
systems. We expect that the lessons learned from this project are applicable to migrations
from other vendor tools.
“Sample Application 1” on page 12 and “Sample Application 2” on page 16 contain a
detailed description of the applications and the use of the library systems in the customer
environments from where these applications are taken.
Migration Steps
We defined the following migration steps for our project:
1. Preparing for Migration
This step includes the definition of a migration strategy and provides the deliverables
that are input to the physical migration. This step also defines the project structure and
identifies the project personnel. It also determines all education required.
The pilot application is selected during the preparation step.
2. Defining SCLM Project Setup
This step covers the collection and study of the information required to set up an SCLM
environment.
3. Migrating the Control Information
This step covers the detailed analysis of the existing control information and the
transformation of that information into a format that can be used as input to SCLM.
4. Migrating the Bulk Data
This step includes the physical migration of bulk data.
5. Creating High-Level Application Structure
This step covers the creation of the required architecture definitions to define the
high-level application structure to SCLM. The deliverable is the complete application
built under control of SCLM.
6. Post-Migration
This step brings our application into production and provides test and validation. It
includes cleaning up the old environment.
Chapter 1. Introduction 5
CA-LIBRARIAN
CA-LIBRARIAN is a storage medium for modules that can be represented in 80-byte
card-image format records. CA-LIBRARIAN is most useful for source programs and offers
features for auditing and control.
The basic component of CA-LIBRARIAN is the master file, which is a direct-access data set
with fixed-length blocks. This preallocated area of space contains an index and a data area.
Data records can be stored in compressed format.
The archiving facility allows previous versions of an updated module to be recreated. First
you must initialize archiving for a master file, and then you can specify archiving for
individual modules.
CA-LIBRARIAN started out as a batch tool. Now, online interfaces are available for some
environments, for instance, the ELIPS interface for a TSO/ISPF environment.
Batch CA-LIBRARIAN operations are activated by control statements. These control
statements can carry special options. There are seven basic types of CA-LIBRARIAN control
statements:
Execution control statements that govern general execution of CA-LIBRARIAN for the
whole control stream
Module control statements for processing a particular module
Editing control statements
Updating control statements
Documentary control statements that can record control information about a module
Miscellaneous control statements that can, for instance, add records from another file or
include another module
Utility control statements.
Processing options can be specified after the commands in a control statement. Processing
options can control processing, such as handling of archiving levels, sequence numbering,
invoking expansion of CA-LIBRARIAN COBOL COPY verbs, invoking the group processing
option (GPO), and generating a master file index listing. Not all processing options can be
used in online environments.
File access interface routines (FAIRs) allow read-only access to a CA-LIBRARIAN master file.
Any modifications to a master file must be made through the CA-LIBRARIAN@ program.
In addition to external security systems, such as RACF, a CA-LIBRARIAN management code
(MCD) can be used to restrict access to selected members. Four different member status
values designate the degree of protection.
ENDEVOR
ENDEVOR is a family of software products that provides automation and control of the
software development life cycle. ENDEVOR's function spans from initial system design and
development through implementation and ongoing maintenance. In the case of
vendor-supplied software, ENDEVOR supports installation and maintenance, including
upgrades. The components of the ENDEVOR family are ENDEVOR/MVS, ENDEVOR/DB,
ENDEVOR/DB2, ENDEVOR/CSP, ENDEVOR for DOS, and ENDEVOR for OS/2*.
ENDEVOR/MVS provides the following functions:
6 Library Migration
An inventory of software objects (sources and executables) that reside in partitioned
data sets (PDSs), library management systems (PANVALET and CA-LIBRARIAN), and
executable libraries.
To manage the inventory, ENDEVOR uses a concept of logically and physically separate
structures. An inventory item (element) is identified to the ENDEVOR Inventory Manager
by a five-part name consisting of:
− I/S location
− System
− Subsystem
− Type
− Element name.
This logical classification provides a view of the inventory that is separated from the
inventory's physical structure.
ENDEVOR manages multiple data sets with different data set organizations and
characteristics to store the physical objects independent of their logical classification.
A base/delta technology is used to store the source elements within the application
inventory. The base/delta files can be PDSs, VSAM files, or BDAM files. ENDEVOR
provides an interface to read directly from and write directly to PANVALET and
CA-LIBRARIAN files.
Control and history of changes that occurred to the source. Change control identifiers
(CCIDs) provide a means for grouping and manipulating related change activity.
ENDEVOR tracks all source changes by creating a unique delta to record each change
event.
Control of the process and procedures that translate sources into executables. The
procedures are called processors and are written in job control language (JCL)
statements. The appropriate processor is determined by the type and element name
information of the logical inventory classification.
A link between the source code and its related executable forms. The technique used is
called footprinting. ENDEVOR places an encrypted audit stamp (footprint) in the output
source, object, or load modules created.
Control of the movement of software release packages. ENDEVOR provides a software
control language (SCL) to manipulate and move objects or portions of an application
system through the predefined levels (stages) of ENDEVOR. There are two predefined
stages per ENDEVOR environment: STAGE 1 and STAGE 2.
For software distribution, the TRANSFER utility extracts objects from one ENDEVOR site
in a format that allows the transfer to another ENDEVOR site.
An ARCHIVE function to back up an entire environment. This function extracts objects
and related control information from an ENDEVOR environment and writes them to an
archive file. This file is input to the RESTORE function.
A set of standard reports that provide information about the inventory of software
objects:
− Report 01: System Inventory Profile
− Report 02: System Inventory Summary
− Report 03: Element Catalog
− Report 04: Element Activity Profile
− Report 05: Element Activity Summary
− Report 06: Element Catalog by CCID
− Report 07: System Definition Profile.
These reports are available only in batch mode. You specify which one of the seven
reports you want in the standard report JCL.
Chapter 1. Introduction 7
The standard ENDEVOR reports are not the only way to find information about software
objects. You can also use SCL specifying the PRINT action (action is an SCL command).
See “Find Information for Languages” on page 96 for a detailed description.
In our project we used both standard reports (01 to 07) and PRINT SCL for all objects to
be migrated.
A batch or interactive interface for all functions and actions. For example, we could
have used the interactive interface to get the same information that we have in our
report listings.
8 Library Migration
Chapter 2. Preparing for Migration
In this chapter we explain how to develop a migration strategy, define your project
organization, and select a pilot application. We describe the sample applications for our
migration and show how we extracted the data for those applications.
10 Library Migration
Project leader
SCLM support person
Library administrator
Application developers.
The project leader coordinates migration steps and evaluates the cost of the project. The
project leader is responsible for setting up a project plan, proposing this plan to information
systems (IS) management for approval, and ensuring that the project plan is followed during
the project. The project leader has overall responsibility for the project (cost, time,
deliverables, and so on) and reports directly to IS management.
The SCLM support person is responsible for the SCLM implementation and the technical
aspects of the migration. The SCLM support person is also responsible for educating the
library administrator during the migration and the developers who will use SCLM after the
migration. The SCLM support person must be experienced in implementing SCLM.
The library administrator has a working knowledge of the existing library system and
performs the migration together with the SCLM support person. One objective of the library
administrator is to develop his or her SCLM skills during the migration.
The application developers know the applications to be migrated. They assist the SCLM
support person in all steps of the migration and during testing of the migrated applications.
These roles are defined in terms of activities and responsibilities in the project and do not
necessarily correspond one-to-one to the people required. You can combine several roles in
one person if appropriate. That is, application developers, SCLM support, and library
administrator may be one or several persons. However, for the project to be successful, you
should have a separate project leader.
The degree of involvement in the project of the different roles varies. You should expect it to
be about 90% (workload) for the SCLM support person and the library administrator and
about 25% for application developers and the project leader.
Our approach did not involve the application owners and end users in the migration process.
However, application owner and end-user participation might be required during the test
phase, especially if code integrity problems are discovered during the migration.
To evaluate the amount of effort required to migrate an application to SCLM we recommend
that you take the following criteria into account:
Application technology
Knowledge of application
Size of application
Code integrity
Vendor library system
Interface with other tools
Particular customer environment.
You can also use some of these criteria to select the pilot application, as described below.
Sample Application 1
This section describes sample application 1, its function, its implementation in the old
environment, and its use of functions of the old library system.
12 Library Migration
Description
Application 1 originates from a customer's IS method and tools department. The application
controls the existing release procedure from development to production for programs and
for other software modules, such as CICS BMS macros; IMS database control blocks (DBDs),
program specification blocks (PSBs), and message format service (MFS) macros; TSO
CLISTs; REXX procedures; and ISPF modules.
The application provides a dialog user interface to support the release procedures, keeps
track of intermediate and final module status, provides logging of important activities, and
offers utility functions for reporting and cleanup.
The customer wants to maintain use of the release procedures until all other business
applications are migrated to SCLM and therefore wants to migrate application 1 to SCLM
first.
The application is a TSO/ISPF application with programs written in COBOL, Assembler, and
PL/I. The TSO/ISPF pieces consist of TSO CLISTs, ISPF panels, skeletons, and message
members. The whole application consists of:
168 programs
129 macros and included members
99 CLISTs
113 ISPF panels
36 message members
260 skeletons.
The application is handled like all other business applications at that customer site; that is, it
is maintained and released to production with its own functionality.
Release Process
The customer uses the CA-LIBRARIAN library system for program source files. Our sample
application 1 controls the release of modules to the so-called R-Test and production
environments.
Several test levels are available for the developers before they use the release procedures.
Production and each test level have separate sets of libraries for source and load
modules—CA-LIBRARIANs and PDSs.
Figure 1 on page 14 shows the release procedure that applies to all module types.
Figure 1. Release Procedure for Sample Application 1: General Flow. For programs, the DR and DP
processes involve compiles and link edits of the modules. RP is essentially a copy process.
Details of the direct release of programs to production are shown in Figure 2 on page 15.
Audit information and other module attributes are stored in a separate CA-LIBRARIAN
control data set for all module types.
Interpreted modules, such as TSO CLISTs or ISPF panels, are copied from one PDS to
another under control of the release procedure.
The first step for programs is to get the modules out of the CA-LIBRARIAN source data set.
At the development level, programs and included members, such as COBOL copy books, are
stored as individual members in CA-LIBRARIAN.
Special copy book handling features of the CA-LIBRARIAN COPY option are used for COBOL
programs. Please refer to “Nonstandard Source Code” on page 52 for more details. All
COBOL COPY statements are replaced with the actual copy code from the same source
CA-LIBRARIAN using the CA-LIBRARIAN COPY option. A user program resolves nested VS
COBOL II copy books because the CA-LIBRARIAN COPY option does not support nested
copy books.
For Assembler and PL/I source code the CA-LIBRARIAN − INC statement is used instead of
the compiler standard statements %INCLUDE and COPY, respectively. The included
members replace the − INC statements.
A source program is then presented as one single file to the compiler and stored as one
single file in the CA-LIBRARIAN data set of the target environment. Special leading and
trailing comment lines mark the beginning and end of an included member in the source file.
Compile and linkage edit control options that are allowed to deviate from the defaults are
stored as special comment lines at the beginning of the source code.
Figure 2 on page 15 shows the release procedure for the direct release of programs from
development to production. The release from development to R-Test works the same way.
14 Library Migration
1A Copy source file by replacing COPY and − INC
statements with the full text of the included members and
adding comment lines with compile and link information.
1B Compile and link edit the source code.
2A Save old source file to archive.
2B Move new files to production libraries.
Figure 2. Release Procedure for Sample Application 1: Data Flow. This is the direct release
procedure from test to production corresponding to the DP path in Figure 1. The application
developers (1A + 1B) move the modules into “wait” libraries. The production
administrators (2A + 2B) move the modules into final libraries.
Description
Application 2 originates from a customer's IS production department. The application was
developed by the production department because of the special functionality it provides.
The application extracts information from the library system used and stores that information
in relational tables. Therefore, this application extends the functionality of the library
system.
Application 2 is a DB2 application written in Assembler and consists of:
20 programming objects
Data definition language (DDL) statements
DB2 BIND statements.
Release Process
The software configuration and library management system used is ENDEVOR. However,
only the production department in the IS organization uses ENDEVOR. The development
department does not use any tool to provide software configuration and library management
functions.
All customer applications in production are under ENDEVOR control. ENDEVOR is used to
manage a preproduction test and to handle distribution to various production environments
on separate MVS systems.
When developing a new application, developers manage application objects (configuration
and library management) without tool support. After coding and testing, they give their
“package” to the production administrator, who belongs to the IS production management
organization.
The package must contain the information required for compile and link edit. The production
administrator uses ENDEVOR SCL to put objects into the ENDEVOR system.
The first SCL action is ADD, which actually puts one object with processing options
(languages) into an ENDEVOR environment. The GENERATE action submits processors
(written in JCL) that translate sources into executables. Figure 3 on page 17 shows the
process involved between the development and production departments.
The MOVE action provides for promotion from preproduction to production. When the
package is ready to be distributed to the target sites, the production administrator prepares
the SCL to be executed and all required parameters for the target environment.
The process for maintenance is similar. First, developers have to make a request to
ENDEVOR to get the object. After they change the object and test it, they must give it back
to ENDEVOR. The action to put the object back into the ENDEVOR system is REPLACE with
the same information as required by the ADD action plus a CCID.
ENDEVOR uses different file organizations depending on the type of data. Control and
attribute information used by ENDEVOR is stored in a VSAM file, the Master Control File.
For source programs (base and delta), ENDEVOR provides a choice of PDSs, VSAM data
sets, or BDAM data sets. The customer uses BDAM data sets to store the base and delta
sources. Load modules are stored in PDSs.
16 Library Migration
Figure 3. Release Procedure Using ENDEVOR. Application coding and testing are not under control of
the ENDEVOR system. The production department translates the sources into executables,
tests the application in the preproduction environment, and moves the application to up to
six different production sites.
Application 1
Data extraction for application 1 was a two-step process:
1. Identify all modules that belong to the application. Because CA-LIBRARIAN is not a
software configuration tool you must use other methods to identify all modules of an
application. The following information sources may help:
Application documentation
Naming conventions
Listings from source code scans (for copy books)
Dictionary reports
Control information created during the release process.
P92N0..
P92N2..
P92N3.. .
Some subroutines with different naming conventions are called by the programs. To find
these additional programs, scans of the source modules were performed. We used the
CA-LIBRARIAN utility with the − SCAN option. Another possibility is to extract the already
identified modules to a PDS and use the ISPF search-for utility.
We scanned the program source code for:
Included members
These members are included with COPY or with CA-LIBRARIAN − INC statements. The
CA-LIBRARIAN data set for production contains the program source with the expanded
text of the included member. The names of the included members can be extracted
from the comment lines inserted when the included member was expanded in the
source program (refer to “Release Process” on page 13). Because all Assembler user
macros are included with − INC statements and expanded in the program source for
archiving reasons, you can find the names of these macros in the same step.
CALL statements
These provided us with the names of all subroutines. We added the subroutines that do
not follow the naming convention to the list of programs for the application.
After finishing this first step in the extraction process we had a list of all modules per
module type that needed to be migrated.
18 Library Migration
TSO CLISTs, ISPF panels, skeletons, and message members from the corresponding
PDSs
A report for all the selected program modules from the CA-LIBRARIAN file that holds
module control information.
Source code for programs, copy books, and Assembler macros: Figure 4 on page 20 shows
this source code extraction graphically. The extraction was performed as follows:
Modules were copied from the source CA-LIBRARIAN to a temporary CA-LIBRARIAN
using member lists created when we identified all modules in step 1.
This task separated the modules of the sample application from thousands of modules
in the enterprise. Appendix A, “Data Extraction from CA-LIBRARIAN” on page 73
contains sample jobs for this task.
Modules were unloaded from the temporary CA-LIBRARIAN to a PDS. Because all
members were copied, no member list was required as input to this job. “Unload from
CA-LIBRARIAN to Partitioned Data Set” on page 75 shows a sample job for this task.
PDSs were unloaded to tape.
This customer environment requires a check that the included members taken from the
development CA-LIBRARIAN are identical to those released to production. Such a
procedure is available but we do not describe it here because it is not of common interest
and not important for the general migration concept.
We used files C and P for the migration of the source members and file PP for the analysis
of the included control information. For details see Chapter 4, “Migrating the Control
Information” on page 29 and Appendix B, “Methods and Tools for Analyzing Existing
Applications” on page 77.
Load modules: Load modules were copied directly from the load library PDSs using
member lists from step 1. These load modules were used to extract information. Refer to
Chapter 4, “Migrating the Control Information” on page 29 for details on the information that
can be extracted from load modules.
TSO CLISTs and ISPF modules: These modules were copied directly from their PDSs using
member lists from step 1.
Figure 4. Extraction of Program Sources for Application 1. Three PDSs are created. Files C and P are
direct input to the migration. Only the control information is used from file PP.
20 Library Migration
Application 2
We extracted three types of information from the customer environment:
Source data with control information
Source data
ENDEVOR reports.
Source Data
Even though the archive file contains the source code, we used the TRANSFER utility to
extract the source code because the TRANSFER utility extracts data directly into PDS
members. Using the archive file would require a tool to extract the source code into PDS
members. Only the control information from the archive file was used.
We could not provide a direct extraction from the ENDEVOR environment to SCLM PDSs
because ENDEVOR was not available in our environment. We used the TRANSFER utility to
extract the source data into intermediate PDSs and copied all members to diskette.
To avoid any additional steps during the migration of bulk data (see “Standard Source
Code” on page 51), we recommend that you run the TRANSFER utility using processor
(language) as the selection criterion. Create a software release list using the SCL LIST
action with processor as the selection criterion in the WHERE clause. The resulting list can
be used to drive the TRANSFER process.
ENDEVOR Reports
We created all the reports (listings) that were thought to be helpful for the analysis of the
application; that is, all seven standard reports and an SCL PRINT report for all objects to be
migrated.
Refer to “ENDEVOR” on page 6 for a description of the ARCHIVE and TRANSFER functions
and the standard reports.
Set Up High-Level Qualifier with Information from ENDEVOR: ENDEVOR supports the
concept of application domains by keeping system and subsystem information (refer to
“ENDEVOR” on page 6). A system represents a logical grouping of inventory elements as
they apply to major applications, departments, or work areas within the organization. For
example, system could represent applications, such as Finance or Personnel. A subsystem
is a logical subclassification within a system. For example, the system finance application
might be divided into logical subsystems, such as Accounts Receivable, Accounts Payable,
and so on.
System and subsystem information can impact the architecture definitions required for the
application as well as the selection of the PDS high-level qualifier. In fact, application name,
system name, and subsystem name are all good candidates for becoming the PDS high-level
qualifier.
Groups
Because we mixed our two applications in the migration process, we set up a common
project. Therefore we did not use a naming convention for promotion hierarchies from the
existing environments.
We built a simple project hierarchy with three layers and two development groups, one for
each application to be migrated.
In the development groups we received modules from external files during the SCLM
migration and created architecture definitions to handle them. Then we built the
components and promoted them to the TEST layer. Figure 5 on page 25 shows the project
hierarchy for our project.
24 Library Migration
ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
³ ³
³ PROD ³
³ ³
ÀÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÙ
³ AC=FUA,NDV
³
³
ÚÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄ¿
³ ³
³ TEST ³
³ ³
ÀÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÙ
³ AC=FUA,NDV
³
³
ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
³ ³
ÚÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄ¿ ÚÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄ¿
³ ³ ³ ³
³ MIG1 ³ ³ MIG2 ³
³ ³ ³ ³
ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
AC=FUA AC=NDV
Figure 5. Project Hierarchy for Our Migration Project. MIG1 is used to migrate application 1 from
CA-LIBRARIAN to SCLM, and MIG2 is used to migrate application 2 from ENDEVOR to
SCLM. Authorization codes are shown beneath each group.
Even if your final project structure is sophisticated, we recommend that you create a simple
structure for the migration. You can use alternate project definitions to define your final
project structure in parallel. This approach is particularly useful when you migrate on an
application domain basis with many applications in a single SCLM project. So, while some
applications are being controlled by SCLM, you can migrate other applications through the
special migration hierarchy. To build a more complex project structure that takes advantage
of flexible naming conventions for PDSs refer to the ITSC Redbook AD/Cycle: SCLM 3.4 New
Functions Usage Guide, GG24-3833.
We used authorization codes to separate our two applications: FUA for application 1 and
NDV for application 2 (see Figure 5). Appendix C, “SCLM Project Definition” on page 101
shows our project definition.
Set Up Groups with Information from ENDEVOR: ENDEVOR keeps information related to
levels or phases of the development process. These levels or phases are called stages and
are provided in the logical structure of ENDEVOR. Therefore, stages do not affect the
naming convention of the physical files as SCLM groups do with the second-level qualifier.
ENDEVOR provides two predefined stages per environment that can be identified by either
the standard name (STAGE1 and STAGE2), an identifier (A and B), or a name (TEST and
PROD).
Types
We decided to put all objects coded in different languages into separate types; for example,
Assembler source programs into type ASM, PL/I source programs into type PLI. All
variations within one language, such as with or without DB2, and different releases of a
single language are put into the same type. Table 1 lists the types for our two applications.
SCLM allows you to store members of different languages in the same type. For example,
you could store all your source code in an SCLM type SOURCE. However, for ease of use in
that case, you should use a naming convention that allows you to differentiate by name
between source code written in different programming languages.
You may have to review the type definitions during the migration of the application control
information.
26 Library Migration
Table 1 shows the naming convention we used for the type names. We did not differentiate
between members according to whether they belong to application 1 or 2.
We used the following approach to define our types:
Types provided by the existing environment that follow IBM proposed names, such as
ASM, DBRM, LOAD. You can also use customer standards that deviate from the IBM
SCLM proposed names. What is important here is to take the opportunity of the
migration to implement a new, or enforce an existing, naming convention.
Types not provided by the existing environment but required by SCLM, such as
ARCHDEF, DB2CLIST, DB2OUT.
New types implemented in SCLM, such as OBJ, LIST, LMAP. SCLM provides code
integrity between all kinds of related data, and you may want to keep compile and link
edit listings synchronized with your source code and load modules.
In an ENDEVOR environment you can find information about type names in ENDEVOR report
1 (System Inventory Profile). This report should be executed using the following selection
parameters:
Environment
System
Subsystem
Stage.
You may want to use the existing type names especially if your migration objective is to
clone the existing environment.
The CA-LIBRARIAN library system only stores source files. The term “type” is not used by
CA-LIBRARIAN. You can reuse the qualifiers from the existing data sets for member types,
such as LOAD, CLIST, and PANELS, that are stored in PDSs if you do not want to change the
naming conventions.
Set Up Version and Audit with Information from ENDEVOR: Versioning and auditing are set
up in the existing ENDEVOR environment for application 2. You can create an element
report using option “HIS” (for History) to show the ENDEVOR information related to
versioning.
Auditing in ENDEVOR is defined using the environment definition table (SMF activity = YES)
and provides an activity report that includes system management facility (SMF) data.
No actual version or audit data was migrated in our project. The only information we used
was the fact that the customer had ENDEVOR collect version and audit information for
application 2. Therefore, we had to implement versioning and auditing in our target SCLM
environment.
28 Library Migration
Chapter 4. Migrating the Control Information
Migration of control information is the most challenging part of the whole migration process.
You must find all parameters used in the existing environment and use them to build the
new SCLM environment, keeping the application itself unchanged.
If your old library system does not provide a real software configuration component, as is
the case for CA-LIBRARIAN, you must find all the required information by analyzing the
existing modules and/or by looking into control information files that have been filled by
customer-specific procedures during the release process. Therefore, migration of control
information may vary considerably from one installation to another. In this chapter we show
how we migrated the control information for the two selected sample applications and
describe some tools that may be useful to you.
Figure 6 on page 30 and Figure 7 on page 32 present an overview of the basic steps
required to extract and use control information. Figure 6 shows the basic flow for handling
control information in our migration project. The steps are discussed in more detail in the
sections that follow; technical details are listed in Appendix B, “Methods and Tools for
Analyzing Existing Applications” on page 77.
30 Library Migration
(1) PDS with released programs extracted from CA-LIBRARIAN. This corresponds to file
PP in Figure 4 on page 20. Formatted control information is stored in leading
comment records. These comments were added by the customer's release
procedure.
(2) EDIT macro MIGE0040 separates the comment records from the source code for each
program. A PDS member is created for the comment records of one program. All the
PDS members are copied together into one single file.
(3) Control information records are sorted by module type (COBOL/ASM/PLI). For some
very old modules the module type was added manually. The information about the
translator options is used to select defaults for the SCLM language definitions.
(4) REXX procedure MIGR0040 converts the information into a common format for
application 1 and application 2. All previously specified options that are defaults in
the SCLM language definition of the migration environment are eliminated.
Compatibility options for old modules are added automatically.
(5) This is the ENDEVOR archive file extracted from the environment of application 2.
(6) REXX procedure MIGR0030 extracts information about translator options from the
ENDEVOR archive file.
(7) This control information file already has the common format of file 9 but contains all
options extracted from the old environment.
(8) All previously specified options that are defaults in the SCLM language definition of
the migration environment are eliminated manually.
(9) This is the common format file used for both sample applications. This file contains
all information needed to create link edit control (LEC) and—if required—compilation
control (CC) architecture definitions.
(10) REXX procedure MIGR0010 creates the LEC and CC architecture definitions. It can be
used unchanged in other environments, or it can be easily adjusted to other input
formats.
(11) The architecture definitions can be directly created in the SCLM ARCHDEF PDS.
(12) Because the members are created outside SCLM, they must be migrated.
(13) The migrated architecture definition members are now ready for use.
Figure 7 on page 32 shows the extraction of complementary control information from load
modules. Two types of information are extracted:
Compiler product and release information
For VS COBOL II modules, COBOL information bytes that contain information about the
compiler release and the options used at compile time.
You can use the methods presented here in other environments. They are based on the
structure of the load modules. You will find it particularly useful to apply these methods if
you cannot extract the required control information elsewhere. We found most of the
required information to create the LEC and CC architecture definitions from the steps shown
in Figure 6 on page 30.
The information extracted from load modules helped us to decide which SCLM languages to
use in our project and to identify where old compiler releases were used in the old
environment. The statistics on VS COBOL II compiler options served as a basis for setting
up the SCLM translator defaults for VS COBOL II. The resulting files of this extraction
process contain the module names that we used to create member lists for copying in the
bulk data migration.
(1) Load modules from the customer's production environment for the two sample
applications.
(2) Program MIGU001 checks for compiler product numbers in the load modules.
(3) Output from MIGU001 is a PDS with each member containing one record per load
module. The members are copied into one file for further use.
(4) Program MIGU002 checks for VS COBOL II information bytes in the load modules.
(5) Output from MIGU002 is a PDS with one member per load module. The members are
copied into one file for further use.
(6) Separate lists are created for the different SCLM types, and for COBOL, for the
different languages. Information about VS COBOL II release and option
CMPR2/NOCMPR2 was used to split into SCLM languages. Reformatting means
removing everything except the module names and adding “SELECT MEMBER=” in
front of the module name to create input files for IEBCOPY.
(7) The member lists are used during bulk data migration (refer to Chapter 5, “Migrating
the Bulk Data” on page 49).
All steps are discussed in more detail in the sections that follow. Technical details are listed
in Appendix B, “Methods and Tools for Analyzing Existing Applications” on page 77.
32 Library Migration
Languages and Translators
SCLM offers a wide range of language definitions, many more than you normally need in
one project or even in the whole enterprise. You must find out which of these language
definitions are required in your environment, whether some customization needs to be done,
or whether additional language definitions must be developed—because you use a special
preprocessor for a programming language, for example.
It is not sufficient to know that COBOL and Assembler programs exist in your application.
You should also know if all COBOL programs are written in VS COBOL II or if there are still
some old OS/VS COBOL programs. You must find out which preprocessors (CICS, SQL) are
used together with which compilers.
Other module types, such as TSO CLISTs or DB2 DDL statements, must be considered.
Some compilers support different language levels, for instance:
VS COBOL II Release 3 with option NOCMPR2 for the ANSI 85 standard or with option
CMPR2 for Release 2 source compatibility
OS/VS COBOL Release 2 with option LANGLVL(2) for ANSI 74 or with option
LANGLVL(1) for ANSI 68 standard support
OS PL/I Version 2 with option CMPAT(V2) or option CMPAT(V1) for source compatibility
with Version 1.
If you have source code at different language levels you have two solutions:
Use one SCLM language definition for the compiler. This language definition normally
uses a set of compiler options either by using the defaults or by explicit specification of
the options in the build translator definition.
For modules that need other compiler options, those options must be specified in a CC
architecture definition. Overriding of compiler options specified in a translator definition
must be allowed by specifying OPTFLAG=Y in the FLMTRNSL macro and OPTOVER=Y
in the FLMCNTRL macro (default value).
Have two different SCLM language definitions for the same compiler. Each language
definition works with a different set of compiler options.
If all modules with a particular language use the same set of compiler options, you may
want to inhibit overriding of compiler options by specifying OPTFLAG=N in the
FLMTRNSL macro.
Table 2 (Page 1 of 2). SCLM Languages Used in the Migration Project. Member names
with FLM@... refer to the original IBM-supplied language definitions in
the ISR.V3R5M0.ISRMACS library of ISPF/PDF Version 3 Release 5.
Member names with F@... are customized language definitions for this
project.
Member Language Language Definition for Used for
Name Name Appl.
FLM@ARCH ARCHDEF SCLM architecture definition language 1+ 2
Because many COBOL modules in application 1 were compiled with VS COBOL II Release 1
or Release 2 or with VS COBOL II Release 3 using the CMPR2 option, we decided to use two
translators for VS COBOL II. (Migration of these modules to the latest COBOL standard is
planned as a separate project by the customer and is outside the scope of our project.)
Using two languages for the same compiler allows for easy identification of the “ o l d ”
modules that reside in the same library as the “ n e w ” modules. You can use the SCLM
DBUTIL service with “LANGUAGE” as a selection criterion for this purpose.
Because our sample applications contained a limited number of OS/VS COBOL modules that
require option LANGLVL(1) and PL/I modules that require option CMPAT(V1), we used only
one language definition for those two compilers and specified compatibility options as part of
CC architecture definitions for the modules affected. Details on compiler options and CC
architecture definitions are discussed in “Compiler Options” on page 36 and “Creating LEC
and CC Architecture Definitions” on page 44.
Languages for CLISTs, ISPF panels, message members, and skeletons have only a PARSE
and no BUILD translator. Panels and message members are parsed like TEXT. For
skeletons we used the skeleton parser listed in the SCLM Guide and Reference, SC34-4254.
This parser traces embedded skeletons and handles them as included members, like
COBOL copy books for COBOL programs. Therefore, only the main skeletons have to be
referenced in the architecture definitions (refer to Figure 75 on page 121).
34 Library Migration
Compilers Used in the Old Environment
Depending on the library system used and/or additional functions added on top of the old
library system, you may have a detailed knowledge of which compiler version was used to
produce the load module now in production.
Find Compiler Used with ENDEVOR: ENDEVOR is not only a library management system but
a software configuration management system. It manages relationships between objects
and therefore is capable of managing the process of transforming source code into load
modules.
This point is important to keep in mind when trying to find the compilers used in the existing
environment. Although ENDEVOR stores information about compilers differently from SCLM,
the information exists and there is no need to analyze load modules as you do in a
CA-LIBRARIAN environment.
ENDEVOR stores information about so-called processors. There is a one-to-one relationship
between a processor and a JCL member. The job in the JCL member calls the compiler.
Each time the processor is called, the related JCL is submitted in background. The
processor used for each object can be found by using browse dialogs provided by ENDEVOR
or by using ENDEVOR report listings.
As we did not have an ENDEVOR system available in our environment, we used ENDEVOR
report listings to find all our information. Specify PRINT in the SCL used to create an
element report. Refer to the sample SCL for element GNDV0050 in “Find Information for
Languages” on page 96. The processor name for a particular element can be found in the
“Element information” part of the report.
We recommend that you direct the output of the report to a data set for reports that you run
against a large number of elements.
Compiler Options
Most compilers offer different ways of specifying compiler options and have different rules
for the order in which these options are processed. The “Programming Guide” manuals
usually contain information about compiler options.
For VS COBOL II, you find the compiler options in Part 4 of the VS COBOL II Application
Programming Guide for MVS and CMS, SC26-4045. The order of precedence for VS COBOL
II compiler options is as follows:
1. Fixed installation defaults
Options that are fixed for an installation cannot be overridden for an individual
compilation. These options are not affected by the migration process.
2. Options specified on a COBOL PROCESS (or CBL) statement at the beginning of the
source module
This is the method you can use to keep specific compiler options together with the
source code without using a software configuration tool. The use of the PROCESS (or
CBL) statement can be disallowed for an installation with the default options module of
the COBOL compiler.
If you use this method of specifying compiler options, you should decide whether you
want to:
Stay with these PROCESS (or CBL) statements
Specify the options in CC architecture definitions and remove the PROCESS (or
CBL) statements from the source code.
We do not recommend that you use both—PROCESS statements and compiler PARM
specifications in CC architecture definitions—simultaneously.
3. Options specified with P A R M = on EXEC statements of compile jobs
You may use this method to override enterprise standards or to add additional options.
Knowing if and where these options are stored will depend on the software
configuration management in your installation. Some options may have been coded in
standard procedures.
4. Nonfixed installation defaults
These defaults are used if an option is not specified elsewhere. In a given installation
these defaults remain unchanged during the migration.
36 Library Migration
Because our environment was not identical to the customer environments from where
the applications came, we had to override some installation defaults to meet the
customers' installation defaults. We did this by customizing the SCLM language
definitions.
Similar rules apply to PL/I programs: *PROCESS statements at the beginning of the source
code override the options given as PARMs on the EXEC statement of the compile job, and
these again override the installation defaults. For more details see the OS PL/I Version 2
Programming Guide, SC26-4307.
38 Library Migration
Table 3 (Page 3 of 3). VS COBOL II Compile-Time Options in Effect. This information is
taken from the COBOL information bytes for the 114 VS COBOL II
modules of application 1. NoM is the number of modules that use the
option, InD indicates whether this option is an installation default in our
environment, and Rem gives a reference to special remarks in the text.
Option On NoM InD Option Off NoM InD Rem
TRUNC(BIN) 20 No (6)
Based on the information in Table 3 on page 37 we applied the following rules for our
project:
If an option is used for all modules and the option is an installation default, the option
does not have to be specified.
If an option is used for all modules and the option is not an installation default, the
option must be specified in the OPTIONS= parameter of the FLMTRNSL macro in the
SCLM language definition.
If an option is not common for all modules, the following approach is used:
− If the option is used for many modules and the option is not an installation default,
the option must be specified in the OPTIONS= parameter of the FLMTRNSL macro
in the SCLM language definition.
− For the remaining modules the complementary option must be specified in a PARM
(or PARMx) statement in a CC architecture definition.
Here are some special considerations for some of the VS COBOL II options (the numbers
refer to the Rem column in Table 3 on page 37):
(1) According to the above rules, modules with option DATA(31) require CC architecture
definitions.
(2) NOLIB was always used in the old environment because the existing compile
procedure passes the source code as one single file to the compiler. With SCLM,
option LIB is required because the compiler will take the copy books from PDSs.
(3) New customer standard is NONUM; NUM will not be specified.
(4) New customer standard is RENT; NORENT will not be specified.
(5) All modules in production must be compiled with NOSSRANGE; SSRANGE will no
longer be specified.
(6) For Release 3 modules TRUNC(BIN) is equivalent to NOTRUNC for Release 2 modules.
All our Release 2 modules use NOTRUNC, all Release 3 modules use TRUNC(BIN). We
therefore specified TRUNC(BIN) for all modules.
(7) The NOCMPR2/CMPR2 (compatibility with Release 2) options are only relevant for
modules compiled with Release 3. All Release 2 modules must use CMPR2. As
mentioned earlier, we decided to use two different SCLM language definitions for VS
COBOL II, one with option CMPR2, and one with option NOCMPR2. This option
therefore determines which language must be assigned to a module during the source
code migration (see Chapter 5, “Migrating the Bulk Data” on page 49).
(8) This option can be specified only at installation time. The four NUMCLASS modules
were compiled during a month when different VS COBOL II installation options were in
effect. This was probably not done on purpose. Our default NONUMCLASS matches
the standard customer default.
40 Library Migration
For all these reasons we decided to create a tool (MIGR0030) to extract compiler option
information from an ENDEVOR archive file and to create the input file required for tool
MIGR0010. The MIGR0030 extraction tool is described in “Extract Control Information from
ENDEVOR Archive File” on page 97.
After running MIGR0030 you may have to edit the formatted file to remove compiler options
that are either defaults or handled in the SCLM language definition. Figure 8 shows the
formatted file before editing.
The first column contains the element name, the second column contains the type, and the
third column contains the compiler options. The last column in the formatted file contains
the linkage edit control options. Use of linkage edit control options is discussed below under
“Control Information for the Linkage Editor.” The records in Figure 8 are truncated (linkage
edit control option A C = 1 is not visible).
Figure 9 shows the formatted file after editing.
All compiler options are removed during editing because they are either common or default
options (except linkage edit control option AC=1).
42 Library Migration
//....... JOB ................, 00010000
// ..................... 00020000
//*==================================================================== 00030000
//AMBLIST EXEC PGM=AMBLIST 00040000
//SYSLIB DD DISP=SHR,DSN=STADE5.RUV.LOAD 00050000
//SYSIN DD * 00070000
LISTLOAD OUTPUT=XREF,MEMBER=P92N041 00080000
/* 00090000
//SYSPRINT DD SYSOUT=T 00091000
//*==================================================================== 00100000
SYMBOL AT LMOD LOC CSECT LOC IN CSECT IS REFERRED TO BY LMOD LOC CSECT LOC IN CSECT
P92N010 438 00 P92N010 3CC 3CC P92N041
P92N011 2018 00 P92N011 3D0 3D0 P92N041
** END OF MAP AND CROSS-REFERENCE LISTING
Figure 11. AMBLIST Output for Assembler Load Module P92N041. This output shows that P92N041 has attributes
NOT-RENT, NOT-REUS, AMODE=24, RMODE=24, and so on. The listing of CONTROL SECTIONs
indicates that modules P92N010 and P92N011 are linked to P92N041.
44 Library Migration
modules with NOCMPR2. Samples of the generated output from this input file are shown in
Figure 13 on page 45 for program P92N002 and in Figure 14 on page 46 for program
P92N046.
For P92N002 the CC architecture definition was required to specify the nondefault
LANGLVL(1) compiler option with the PARM1 keyword. Use of the PARM1 keyword (instead
of PARM) allows you to direct the options to a specific BUILD translator within the SCLM
language definition. In the FLMTRNSL macro for the compiler you then have to code
PARMKWD=PARM1 (refer to language definitions in “Language Definitions” on page 104).
This coding is required only if you have more than one BUILD translator in your language
definition, for example, preprocessor and compiler. We recommend that you handle
parameter input for translators in a uniform way for all languages. We decided to use
PARM1 for all compiler options. The source code reference to program P92N002 was made
with the SINC keyword in the CC architecture definition member.
Program P92N046 uses the common compiler options assigned to its language. No CC
architecture definition was required. The source code reference was made with the INCLD
keyword.
P92N000 COBOL
P92N002 COBOL LANGLVL(1)
P92N004 COBOL LANGLVL(1)
P92N005 COBOL RENT,AMODE=24
P92N008 COBOL RENT
P92N009 COBOL LANGLVL(1)
..
.
P92N044 COBOL RENT
P92N045 COBOL
P92N046 COBOL RENT
P92N047 COBOL RENT
P92N048 COBOL RENT,AMODE=24
P92N049 COBOL RENT
..
.
P92N349 COBOL RENT
P92N362 COBOL DATA(31) RENT
P92N363 COBOL RENT
P92N399 COBOL DATA(31) RENT
Figure 12. Input Records to Create LEC and CC Architecture Definitions for COBOL Programs
Figure 13. LEC and CC Architecture Definitions for OS/VS COBOL Program P92N002
Figure 15 shows input for PL/I programs. A sample of the generated output from this input
file is shown in Figure 16 for program P94N353.
The LEC architecture definition for P94N353 had the nondefault option AMODE=24 coded
with the PARM keyword. The CC architecture definition was required to specify the
nondefault compiler options with the PARM1 keyword. The source code reference was
made with the SINC keyword in the CC architecture definition.
Figure 15. Input Records to Create LEC and CC Architecture Definitions for PL/I Programs
Figure 16. LEC and CC Architecture Definitions for PL/I Program P94N353
Figure 17 on page 47 shows input for Assembler programs. A sample of the generated
output from this input file is shown in Figure 18 on page 47 for program P92N041.
This program used the common compiler options assigned to its language. No CC
architecture definition was required. The source code reference was made with the INCLD
keyword. Two modules (P92N010 and P92N011) are linked to this program. The reference to
these modules was made with the INCL keyword referring to their LEC architecture
definitions.
46 Library Migration
KR00030 ASM
P03N905 ASM
P92N001 ASM
P92N003 ASM
P92N006 ASM
P92N022 ASM
----+----1----+----2----+----3----+----4----+----5----+----6----+----7--
P92N041 ASM
(line continued:) -+----9----+----0----+----1----+----2----+----3--<COLS
P92N010 P92N011
P92N219 ASM
P92N242 ASM
..
.
P94N053 ASM REUS
P94N066 ASM
P94N115 ASM REUS
Figure 17. Input Records to Create LEC and CC Architecture Definitions for Assembler Programs
For application 2, we had to reference DDL members in the architecture definitions using the
PROM keyword. We could use either an HL or LEC architecture definition. In most cases it
is better to reference the DDL member in an HL architecture definition, because DB2 tables
are very often used by many programs within one application, or even by more than one
application. For our project, because we had only five DDL members and each one was
related to only one program, we decided to reference the DDL members in LEC architecture
definitions.
DB2CLIST Considerations
SCLM manages the relationship between a program and its DB2 plan through a proxy
member, the DB2CLIST. The DB2CLIST is a TSO CLIST that contains the required BIND and
FREE PLAN statements. When executed during a build process, the CLIST executes the
BIND PLAN statement and writes a copy of itself, the DB2OUT CLIST, as output. This
DB2OUT CLIST is used during promote processes and executes the BIND and FREE PLAN
statements.
In our project definition, we set up the DB2CLIST type to hold the DB2CLIST members and
the DB2OUT type to hold the DB2OUT members. We do not discuss creation of the DB2OUT
members in this book because SCLM creates them automatically.
Application 2 is an Assembler DB2 application and therefore includes SQL BIND statements.
The BIND statements are stored with type SDB in the existing ENDEVOR environment.
During the migration, these BIND statements must be included in DB2CLIST members.
Figure 19. HL Architecture Definition Created by the MIGR0050 Program. The five LEC architecture
definitions were previously created by the MIGR0010 program. A BUILD of this
architecture definition provoked a BUILD of each LEC architecture definition and the
execution of the @GNDV000 CLIST.
We recommend that you create DB2CLIST members and related HL architecture definitions
after you create the LEC architecture definitions and before you create “higher level” HL
architecture definitions.
After you have created the DB2CLIST and HL architecture definitions, you have to migrate
these new members with the SCLM migration utility. We recommend that you use the
SUBMIT command for migration.
48 Library Migration
Chapter 5. Migrating the Bulk Data
Because our target system for the migration was not identical to the source systems of the
vendor libraries, the extraction of source data and the migration of that data were really
separate steps. The extraction of source data from the vendor library systems is described
in “Extract Data for the Sample Applications” on page 17; additional details are provided in
Appendix A, “Data Extraction from CA-LIBRARIAN” on page 73.
This chapter describes the migration of source data on the SCLM target system. Migration
of source data is very simple if the source data:
Conforms to compiler standards
Does not contain library-specific coding.
If you have nonstandard code to migrate, changes to the source code are required, and your
source code migration will have additional steps.
If you migrate within a single MVS environment, that is, the vendor library and SCLM
installed on the same system, and you do not need to adjust your source code, you do not
need intermediate data sets. You can extract the source code from the old library system
directly into SCLM PDSs.
Figure 20 on page 50 gives an overview of bulk data migration including modifications of
source code for programs from CA-LIBRARIAN. The following remarks refer to the numbers
in the figure:
(1) Programs extracted from CA-LIBRARIAN for all languages.
(2) Copy (IEBCOPY) using member lists, provided by the analysis of control information,
for each SCLM type.
(3) Insert missing periods using MIGE0030, and (*) handle COPY ... REPLACING as
described later.
(4) Change − INC to %INCLUDE using MIGE0010.
(5) Delete − INC using MIGE0020.
(6) ENDEVOR programs are extracted separately for different languages.
(7) Copy modules with the same language. The member lists mentioned in (2) are used.
(8) Migrate all modules with the same language in one step.
50 Library Migration
In the sections that follow we describe the basic steps that must be performed for all bulk
data migrations. Then we discuss special steps that may or may not be required depending
on the type of the old library system and the standards used.
If you put members with different languages into one SCLM PDS, you must carefully
consider the order of the bulk data migration steps. Copy and migrate only members with
the same language into the SCLM PDS, then proceed with the next language.
We used the same SCLM PDS (type COBOL) for all COBOL programs and distinguished the
members by language (refer to Table 2 on page 33). Therefore, we first copied and
migrated all VS COBOL II modules conforming to ANSI 85 standard (option NOCMPR2) into
the PDS and assigned language COB2. Then we copied and migrated the remaining VS
COBOL II modules (option CMPR2) into the same PDS and assigned language COB22.
Finally we copied and migrated the OS/VS COBOL modules and assigned language COBOL.
A similar stepwise process was used for Assembler programs, where we assigned the
languages ASMH and ASMDB2.
52 Library Migration
Code in main program: Resulting expanded code:
01 ABC COPY ABCCOPY. 01 ABC.
05 ABC-1 PIC X.
05 ABC-2 PIC X.
.....
Copy book ABCCOPY: .....
ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
³ ³
³ 05 ABC-1 PIC X. ³
³ 05 ABC-2 PIC X. ³
³ ..... ³
³ ..... ³
ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
Figure 22. COBOL Copy Book without 01 Level Data Name
Figure 23 illustrates replacement of the 01 level data name. In such a situation it is not
sufficient to insert a missing period. You will end up with two 01 level data name
specifications after the copy book is resolved by the compiler. Two solutions are possible:
Remove the line with the 01 level data name specification in the copy book
Remove the 01 level data name specification preceding the COPY statement and change
the 01 level data name in the copy book.
Other programs that use the copy book may be affected by the changes.
We recommend that you remove the 01 level data name specification from the copy book. In
programs that previously included this copy book without a 01 level data name specification
you must insert the 01 level data name preceding the COPY statement.
ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
³ ³
³ 01 XYZ. ³
³ 05 XYZ-1 PIC X. ³
³ 05 XYZ-2 PIC X. ³
³ ..... ³
³ ..... ³
ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
Figure 23. COBOL Copy Book with 01 Level Data Name
How can you find where changes are required? We consider the COBOL compiler the best
tool to identify errors. We inserted only the missing periods automatically before migrating
the programs and copy books.
The VS COBOL II compiler gives an IGYDS1159-E error message if two 01 level data names
precede a data structure. If the 01 level data name inside and outside the copy book are
IGYDS1159-E A "PICTURE" clause was not found for elementary item "AAA". "PICTURE
X(1)" was assumed.
IGYPS0037-S "AAA" was not a uniquely defined name. The definition to be used could
not be determined from the context. The reference to the name was
discarded.
Figure 24. COBOL Error Messages for Duplicate 01 Level Data Names
We made the remaining corrections manually. Only a few old programs were affected, as
the customer normally used copy books without a 01 level data name specification.
When you change copy books you may want to use the cross reference listing from SCLM
architecture reports (see “Completeness and Correctness Checks” on page 58) to identify
all affected programs.
54 Library Migration
Code in main program: Resulting expanded code:
01 ABCDEF. 01 ABCDEF.
COPY ABCCOPY REPLACING ABC BY XYZ. 05 XYZ PIC X.
05 ABC-2 PIC X.
.....
.....
Copy book ABCCOPY:
ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
³ ³
³ 05 ABC PIC X. ³
³ 05 ABC-2 PIC X. ³
³ ..... ³
³ ..... ³
ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
Figure 25. COPY REPLACING: Example 1. A matching data name is replaced.
ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
³ ³
³ 05 ABC-1 PIC X. ³
³ 05 ABC-2 PIC X. ³
³ ..... ³
³ ..... ³
ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
Figure 26. COPY REPLACING: Example 2a (COBOL Standard). No replacement takes place because
the string in the REPLACING clause does not match a data name in the copy book.
ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
³ ³
³ 05 ABC-1 PIC X. ³
³ 05 ABC-2 PIC X. ³
³ ..... ³
³ ..... ³
ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
Figure 27. COPY REPLACING: Example 2b (CA-LIBRARIAN Standard). The data name prefixes are
replaced.
ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
³ ³
³ 05 :ABC:-1 PIC X. ³
³ 05 :ABC:-2 PIC X. ³
³ ..... ³
³ ..... ³
ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
Figure 28. COPY REPLACING: Example 2c (COBOL ANSI 85 Standard). The text between the
delimiters is replaced.
Application 1 contained COPY statements with REPLACING clauses as shown in Figure 27.
If a copy book is used more than once, you cannot simply change the data names in the
copy book and remove the REPLACING clause. You must consider other COPY statements
referencing the copy book.
A similar problem arises if you use the ANSI 85 standard as shown in Figure 28. Not only
do the colon delimiters have to be inserted into the copy books, but also all the COPY
statements in all programs using the copy book must be changed. Furthermore, for
programs that include such a copy book without a REPLACING clause, a dummy REPLACING
clause must be added to eliminate the colons in the copy book from the expanded text. Two
solutions remain:
1. Remove the REPLACING clause from the COPY statement, change all references to the
affected data names within the program to the original names in the copy book, and use
the high-level data name as qualifier in all these references.
56 Library Migration
The qualification with the high-level data name is required if a copy book is used
multiple times within one program with different prefixes assigned by different
REPLACING clauses.
2. Change the REPLACING clause in the COPY statement from prefix replacement to
replacement of matching names. For the example, in Figure 27 on page 56, replacing
the CA-LIBRARIAN syntax
For large copy books this might result in extended COPY statements.
We decided to use the first solution. We believe that using REPLACING clauses makes the
source code harder to understand, because data names in the DATA DIVISION copy books
and data names in the PROCEDURE DIVISION do not match. In “Handling COPY Prefix
Replacement in COBOL Programs” on page 141 we describe the tools we used to help
automate the required changes.
−INC GETPARM
− INC in Assembler Programs: The text for user-written Assembler macros was included in
program source code using − INC statements for the following two reasons:
To retrieve the macro code from CA-LIBRARIAN data sets to make it available to the
Assembler compiler
To include the user macros in the source code for archiving.
This is no longer required in an SCLM environment. The Assembler compiler finds these
macros automatically in the PDSs allocated through FLMALLOC macros in the SCLM
language definitions. The SCLM parser detects the names of the macros, and new or
changed macros are promoted together with the program.
We changed the − INC statements in application 1 Assembler programs into comment
statements. The automated procedure for these changes is described in “Changing
CA-LIBRARIAN − INC Statements” on page 156.
− INC in PL/I Programs: CA-LIBRARIAN − INC statements were used instead of PL/I
%INCLUDE statements.
We changed the − INC statements in application 1 PL/I programs to PL/I %INCLUDE
statements. The automated procedure for these changes is described in “Changing
CA-LIBRARIAN − INC Statements” on page 156.
58 Library Migration
******************************************************************************
******************************************************************************
** **
** SOFTWARE CONFIGURATION AND LIBRARY MANAGER (SCLM) **
** **
** ARCHITECTURE REPORT **
..
.
** PROJECT: SCLM3 **
** GROUP: MIG1 **
** TYPE: ARCHDEF **
** MEMBER: #COB2 **
** CUTOFF: NONE **
..
.
==============================================================================
* *
* ARCHITECTURE REPORT *
* *
* H = HIGH LEVEL C = COMPILATION CONTROL T = TOP SOURCE E = ERROR *
* L = LINKEDIT CONTROL G = GENERIC I = INCLUDED D = DEFAULT *
* *
==============================================================================
CODE: H MEMBER: #COB2
----+----1----+----2----+----3----+----4----+----5----+----6----+----7----+---
H #COB2
..
.
L P92N203
D P92N203
T P92N203
I S92C001C
I S92C002C
I S92U299C
E* S92U250C <--- E* indicates missing member
I S92U251C
I S92U253C
..
.
60 Library Migration
Chapter 6. Creating High-Level Application Structure
Unlike other library systems, SCLM allows you to structure your application in a multilevel
hierarchy. This structuring is achieved by creating related HL architecture definitions that
reflect the structure of your application. You can think of this system of related architecture
definitions as the blueprint of your application. The HL architecture definitions reference the
CC, LEC, and HL architecture definitions for DB2CLISTs created at the lowest level.
To create the HL architecture definitions and link them to the low-level architecture
definitions is not an easy task, but one of the major advantages of SCLM is that the structure
of your application can be explicitly described using architecture definitions. Nevertheless,
there is no real technical need to structure your application. If you build and promote your
programs based on their LEC architecture definitions, you may not need any HL architecture
definitions at all. However, such an approach would not take advantage of SCLM's
extensive software configuration functions. Even a single HL architecture definition that
includes all lowest-level architecture definitions gives you advantages. You can build and
promote the whole application by specifying that HL architecture definition on the SCLM
BUILD and PROMOTE panels.
Real structuring requires a multilevel hierarchy. You make a trade-off between the
investments during the migration phase and the benefits you will gain for your application
under SCLM control. Well-structured applications are easier to maintain and will pay back
your investment in a short time.
At this point of the migration some structuring already has been done:
Information about included members (COBOL copy books, Assembler macros, PL/I
includes, embedded skeletons) is stored by SCLM parsers in the SCLM accounting data
set
Statically linked programs are included in the LEC architecture definitions during
migration of control information (refer to “Creating LEC and CC Architecture Definitions”
on page 44).
When creating the HL architecture definitions required to describe the structure of your
application, you might ask the following questions:
Where can I find information about the application structure?
How do I create the HL architecture definitions from the information available?
Sources of Information
Possible sources of information for application structuring are:
Application structure information in your old library system
Structure information from dictionary reports
62 Library Migration
Structure Information from Dictionary Reports
Dictionary reports are a very useful information source for the application structure. The
completeness of the information useful for defining the application structure in SCLM will
depend on the amount of information and links in the dictionary.
The program-subprogram structure is a typical dictionary report output. Well-maintained
dictionaries also provide higher-level structure information. It is important to understand
which information, required to build your architecture definitions, is not available in the
dictionary.
Because dictionary reports have well-known formats, simple tools can be written to
transform the report information into SCLM architecture definitions. We had no dictionary
information available for our project and therefore we do not provide tools to extract
information from dictionary reports. The general concept for such a tool is similar to our
tool for creating LEC and CC architecture definitions (see “LEC and CC Architecture
Definitions” on page 123), even if input and output formats differ.
64 Library Migration
INCLD FUAP1010 PANELS
INCL #P1100 ARCHDEF
INCL #P1300 ARCHDEF
INCL #P1600 ARCHDEF
INCL #P1690 ARCHDEF
INCL #P1800 ARCHDEF
INCL #P3010 ARCHDEF
INCL #C1050 ARCHDEF
INCL #C9000 ARCHDEF
INCL #C9100 ARCHDEF
INCL #P9900 ARCHDEF
Figure 30. HL Architecture Definition #P1010. #P1010 is the HL architecture definition for ISPF
selection panel FUAP1010. #P1100 is the HL architecture definition for panel FUAP1100,
which represents one of the selections on panel FUAP1010.
Figure 31. HL Architecture Definition #P1100. #P1100 is the HL architecture definition for ISPF
selection panel FUAP1100. The only possible selection on this panel selects CLIST
FUAC1100 represented by the HL architecture definition member #C1100.
Figure 32. HL Architecture Definition #C1100. #C1100 is the HL architecture definition for CLIST
FUAC1100. This HL architecture definition contains references to source modules (panels)
and to other HL architecture definition members, such as #P92N200.
Figure 34 shows a partial SCLM architecture report for application 1. The report refers to
the architecture definition members shown in Figure 30 on page 65 through Figure 33 on
page 65.
..
.
H #P1010 *
D FUAP1010 | H = HIGH LEVEL
T FUAP1010 | L = LINKEDIT CONTROL
H #P1100 | C = COMPILATION CONTROL
D FUAP1100 | G = GENERIC
T FUAP1100 | T = TOP SOURCE
H #C1100 | I = INCLUDED
D FUAC1100 | E = ERROR
T FUAC1100 | D = DEFAULT
H #C1140 *
..
.
..
.
H #P92N200
L P92N200
D P92N200
T P92N200
I S92C001C
I S92U299C
I S92U250C
I S92U251C
I S92U253C
I S92U254C
I S92U258C
I S92U259C
I S92U262C
I S92U290C
I S92U291C
I S92D290C
D FUAP0100
T FUAP0100
D FUAP1110
Figure 34 (Part 1 of 2). Partial SCLM Architecture Report for Application 1
66 Library Migration
T FUAP1110
D FUAP1120
T FUAP1120
D FUAP1620
T FUAP1620
L P92N250
D P92N250
T P92N250
I S92U011C
I S92U010C
I S92D250C
I S92U003C
I S92U004C
I S92U005C
I S92U299C
..
.
Figure 34 (Part 2 of 2). Partial SCLM Architecture Report for Application 1. The partial report for
application 1 refers to the architecture definition members in Figure 30 on
page 65 through Figure 33 on page 65. No CUTOFF is used and all included
members are listed.
* HL SYSTEM ARCHDEF
INCL @L ARCHDEF * SUB-SYSTEM
Figure 35. HL Architecture Definition @X. This architecture definition only makes sense in a real
environment if many subsystems are related to one system.
* HL SUB-SYSTEM ARCHDEF
INCL GNDV0050 ARCHDEF * LEC ARCHDEF
INCL @GNDV000 ARCHDEF * HL ARCHDEF FOR DB2 PGM AND BIND
Figure 37 on page 68 shows a partial SCLM architecture report for application 2 with all HL
architecture definitions, LEC architecture definitions, source code, and included members.
68 Library Migration
BUILD and PROMOTE Using the Architecture Definitions
We performed BUILDs for all programs during bulk data migration (see “Completeness and
Correctness Checks” on page 58). Therefore, SCLM does not initiate recompiles for the
programs when you build the newly created HL architecture definitions. Our HL architecture
definitions all built successfully.
Promotion to the TEST layer checks the consistency of your migration process. For example,
we had to check the DB2 BIND/FREE process for application 2. During this first PROMOTE,
SCLM must invoke the DB2 FREE process for the “from” group (MIG2) and the DB2 BIND for
the “ t o ” group (TEST).
If the promotion is successful but some modules remain in the PDSs of the development
group, you may have one of the following situations:
The HL architecture definition structure is incomplete.
Some source modules are not used in your application.
In the first case you have to complete your structure. Carefully evaluate whether there are
systematic errors in your method to create the HL architecture definition structure. If there
are systematic errors, you should improve your method. This is particularly important if you
work in a pilot project and want to migrate other applications using the methods developed
in the pilot project.
If you find modules that are not used, use the SCLM Library utility (SCLM option 3.1) to
delete these modules and their accounting information from your SCLM project. Unused
modules may be old “safety copies” or parts of an application no longer used.
It is important to use more than two layers in the SCLM project for the migration (refer to
“Groups” on page 24). This allows you to promote to a test layer and test the application
before you finally promote to the production layer.
72 Library Migration
Appendix A. Data Extraction from CA-LIBRARIAN
This appendix shows the jobs used to extract data for application 1 from the CA-LIBRARIAN
data sets in the customer environment.
Figure 38. Job to Copy Members from CA-LIBRARIAN to CA-LIBRARIAN. This is the job to copy the
Assembler macros and COBOL copy books. Specified members are unloaded from one
CA-LIBRARIAN to an intermediate file and then added to another CA-LIBRARIAN.
Figure 39. Job to Extract Programs from One CA-LIBRARIAN to Another CA-LIBRARIAN. The
DDSE01 DD file contains the list of members selected.
74 Library Migration
Unload from CA-LIBRARIAN to Partitioned Data Set
Figure 40 shows a sample job that unloads a complete CA-LIBRARIAN to a PDS. Because
the extraction from the original CA-LIBRARIAN was done previously (see “Copy Selected
Members between CA-LIBRARIANs” on page 73), our temporary CA-LIBRARIAN contained
only members of the sample application and no member list was needed as input to this job.
Application 1
Because CA-LIBRARIAN does not supply all the information required for migration to SCLM,
we looked for other sources of information. We analyzed the load modules to find:
Information about the compiler used
Compiler options for programs compiled with VS COBOL II.
The methods used and the tools developed for the analysis of load modules are general and
may be used unchanged in other environments.
We also extracted control information from comment records added to the source code
during the release process. The technical details of this analysis are specific to the
environment of application 1, but the concept might be of interest for other environments as
well.
Compiler Information
In a CA-LIBRARIAN environment, all the source code is typically stored in one file. In SCLM
you want to set up different data sets for different source types, such as COBOL, PLI, or
ASM. You have to extract your source code according to its programming language to store
it in different data sets under SCLM. We analyzed the load modules of application 1 to find
the compiler information.
Compilers place their own IDs into the object modules they produce. Therefore, you can find
these compiler IDs (which normally are the product numbers) in the load modules. Program
MIGU001 (listed in Figure 41 on page 78) analyzes load modules. Program MIGU001 has
the following restrictions:
MIGU001 looks for the first load module record with a character string of “5665”
(5665-284 stands for MVS/XA DFP) or “5752” (you find 5752-SC1 in some old modules) in
position 4 and uses this record as an anchor point.
The next record is assumed to contain the compiler ID starting in position 7. This is not
true for PL/I modules. If you do not find a proper product number in the output listing,
you can check the load module and find the PL/I product number elsewhere in the same
record. We used this simple approach because we had only four PL/I programs in our
78 Library Migration
/*-------------------------------------------------------------------*/00450000
DCL 1 OUTDD_RECORD UNALIGNED, /* */00460000
2 O_PGMNAME CHAR(08), /* PROGRAM NAME */00470000
2 O_DFPX_TEXT CHAR(14), 00480000
2 O_DFPX, 00490000
3 O_DFPX_1 CHAR(4), 00500000
3 O_DFPX_1A CHAR(1), 00510000
3 O_DFPX_2 CHAR(3), 00520000
2 O_COMP_TEXT CHAR(16), 00530000
2 O_COMP, 00540000
3 O_COMP_1 CHAR(4), 00550000
3 O_COMP_1A CHAR(1), 00560000
3 O_COMP_2 CHAR(3), 00570000
2 O_FILLER26 CHAR(26); 00580000
/***============================================================= ***/00590000
/*** ON ENDFILE SET EOF-SWITCH ***/00600000
/*-------------------------------------------------------------------*/00610000
ON ENDFILE(INDD) BEGIN; 00620000
O_FILLER26 = '## PREMATURE EOF FOUND. ##'; 00630000
WRITE FILE(OUTDD) FROM(OUTDD_RECORD); 00640000
GOTO FINIS; 00650000
END; 00660000
/***------------------------------------------------------------- ***/00670000
/*** OPEN DATEIEN ***/00680000
/*-------------------------------------------------------------------*/00690000
OPEN FILE(INDD) SEQUENTIAL RECORD INPUT, 00700000
FILE(OUTDD) SEQUENTIAL RECORD OUTPUT; 00710000
/***------------------------------------------------------------- ***/00720000
/*** INITIALIZATIONS ***/00730000
/*-------------------------------------------------------------------*/00740000
EOF = ' '; /* EOF-SWITCH */00750000
INF = ' '; /* NOT RECORD WITH LKED ID */00760000
PROGRAM_RECORD = ' '; 00770000
/***------------------------------------------------------------- ***/00780000
/*** READ LOAD MODULE RECORDS UNTIL PROD.NO. FOR DFP FOUND ***/00790000
/*-------------------------------------------------------------------*/00800000
DO WHILE (INF = ' '); 00810000
READ FILE(INDD) INTO(PROGRAM_RECORD); 00820000
IF (I_DFPX_1 ='5665') THEN INF = 'I'; /* 5665-284 = MVS/XA DFP */00830000
IF (I_DFPX_1 ='5752') THEN INF = 'I'; 00840000
END; /* */00850000
/***------------------------------------------------------------- ***/00860000
/*** TRANSFER INFO INTO OUTPUT RECORD ***/00870000
/*-------------------------------------------------------------------*/00880000
OUTDD_RECORD = ''; 00890000
O_PGMNAME = PARM; /* PROGRAM NAME FROM EXEC CARD */00900000
O_DFPX_TEXT = ' (PGM MGMT:) '; 00910000
O_DFPX_1A = '-'; 00920000
O_COMP_TEXT = ' COMPILED WITH '; 00930000
O_COMP_1A = '-'; 00940000
O_DFPX_1 = I_DFPX_1; 00950000
O_DFPX_2 = I_DFPX_2; 00960000
READ FILE(INDD) INTO(PROGRAM_RECORD); 00970000
O_COMP_1 = I_COMP_1; /* COMPILER PRODUCT NR. */00980000
O_COMP_2 = I_COMP_2; /* COMPILER PRODUCT NR. */00990000
/* */01000000
Figure 41 (Part 2 of 3). PL/I Program MIGU001
Figure 42 shows the sample job to run MIGU001. You need to know the names of the
modules you want to analyze for the EXEC statements in the job. A list of all programs to be
migrated is developed during the preparation for migration (refer to “Extract Data for the
Sample Applications” on page 17).
Members of a PDS are the primary output of program MIGU001. Each member contains only
one record. If the anchor point is not found, you will get an empty member.
We copied all members into one single file for the subsequent migration steps. Figure 43 on
page 81 shows this file with the output records from program MIGU001.
80 Library Migration
KR00030 (PGM MGMT:) 5752-SC1 COMPILED WITH 5741-SC1
P03N905 (PGM MGMT:) 5752-SC1 COMPILED WITH 5741-SC1
P92N000 (PGM MGMT:) 5665-284 COMPILED WITH 5740-CB1
P92N001 (PGM MGMT:) 5752-SC1 COMPILED WITH 5741-SC1
P92N002 (PGM MGMT:) 5752-SC1 COMPILED WITH 40CB-1 <== old COBOL
P92N003 (PGM MGMT:) 5752-SC1 COMPILED WITH 5741-SC1
P92N004 (PGM MGMT:) 5752-SC1 COMPILED WITH 40CB-1 <== old COBOL
P92N005 (PGM MGMT:) 5665-284 COMPILED WITH 5668-958
P92N006 (PGM MGMT:) 5665-284 COMPILED WITH 5668-962
P92N008 (PGM MGMT:) 5665-284 COMPILED WITH 5668-958
..
.
P92N058 (PGM MGMT:) 5665-284 COMPILED WITH 5668-958
P92N064 (PGM MGMT:) 5665-284 COMPILED WITH 5668-958
P92N065 (PGM MGMT:) 5665-284 COMPILED WITH ....-³.. <== PL/I
P92N066 (PGM MGMT:) 5665-284 COMPILED WITH .Ø..-573 <== PL/I
..
.
Figure 43. Output Records from Analysis of Load Modules with Program MIGU001. The old OS/VS
COBOL compiler does not record the full product number 5740-CB1. Because of the
restrictions for MIGU001, the product number output field for PL/I programs contains
garbage and manual correction is required.
The summary file in Figure 43 was sorted by compiler product number, the correct number
for the PL/I modules was inserted, and for the old OS/VS COBOL programs the number was
shifted to the right to conform with the other output records.
Figure 44 shows the sorted file as the final result of this analysis step. This file serves as a
base to create member lists that can be used when an action for one type or one language
should be performed (for example, to copy all source modules of a given type into the
corresponding SCLM PDS from a common source file that contains all types of modules).
Figure 44 (Part 2 of 2). Sorted Output Records from Load Module Analysis. The primary file (see
Figure 43 on page 81) was corrected for old OS/VS COBOL programs and
for PL/I programs and sorted by product number.
82 Library Migration
000100*=================================================================00010000
000200 IDENTIFICATION DIVISION. 00020000
000300 PROGRAM-ID. MIGU002. 00030000
000400*=================================================================00040000
000500*** PURPOSE.....: READ LOAD MODULE FROM FILE EINGABE AND EXTRACT 00050000
000600*** VS COBOL II INFORMATION BYTES (IF VS COBOL II) 00060000
000700*** INTO OUTPUT FILE AUSGABE. 00070000
000800*** VS COBOL II MUST BE FIRST CSECT IN LOAD 00080000
000900*** MODULE OR SECOND AFTER DFH... MODULE FROM 00090000
001000*** CICS V1 / V3 OR CICS/ESA V3. 00100000
001100*** RETURN CODE: 0 = ALL OK *** 00110000
001200*** 4 = NOT RECOGNIZED AS VS COBOL II PROGRAM *** 00120000
001300*** DATE WRITTEN: 02/22/93-FITZ 00130000
001400*=================================================================00140000
001500 ENVIRONMENT DIVISION. 00150000
001600*=================================================================00160000
001700 CONFIGURATION SECTION. 00170000
001800*-----------------------------------------------------------------00180000
001900 SOURCE-COMPUTER. IBM-370. 00190000
002000 OBJECT-COMPUTER. IBM-370. 00200000
002100 SPECIAL-NAMES. 00210000
002200 DECIMAL-POINT IS COMMA. 00220000
002300 INPUT-OUTPUT SECTION. 00230000
002400 FILE-CONTROL. 00240000
002500 SELECT EINGABE 00250000
002600 ASSIGN INDD 00260000
002700 FILE STATUS IO-STATUS. 00270000
002800 SELECT AUSGABE 00280000
002900 ASSIGN OUTDD. 00290000
003000 DATA DIVISION. 00300000
003100 FILE SECTION. 00310000
003200 FD EINGABE 00320000
003300 LABEL RECORDS OMITTED 00330000
003400 RECORDING MODE IS U. 00340000
003500*-----------------------------------------------------------------00350000
003600*-- RECORD LAYOUT OF FIRST CHARACTERS OF THE INPUT RECORD ---00360000
003700*-- CONTAINING COBOL INFORMATION BYTES. ---00370000
003800*-----------------------------------------------------------------00380000
003900 01 EINGABE-SATZ. 00390000
004000 05 FILLER PIC X(04). 00400000
004100 88 E-KENNUNG-INFO VALUE X'47F0F070'. 00410000
004200 05 FILLER PIC X(72). 00420000
004300 05 FILLER PIC X(72). 00430000
004400 01 EINGABE-SATZ-CICS2. 00440000
004500 05 FILLER PIC X(06). 00450000
004600 88 E-KENNUNG-INFO-CICS1 VALUE 'DFHYC1'. 00460000
004700 88 E-KENNUNG-INFO-CICS2 VALUE 'DFHYC2'. 00470000
004800 05 FILLER PIC X(66). 00480000
004900 05 EINGABE-SATZ-2. 00490000
005000 10 FILLER PIC X(04). 00500000
005100 88 E-KENNUNG-INFO-2 VALUE X'47F0F070'. 00510000
005200 10 FILLER PIC X(72). 00520000
005300 01 EINGABE-SATZ-CICS3. 00530000
005400 05 FILLER PIC X(06). 00540000
005500 88 E-KENNUNG-INFO-CICS3 VALUE 'DFHYC3'. 00550000
005600 05 FILLER PIC X(50). 00560000
Figure 45 (Part 1 of 5). VS COBOL II Program MIGU002
84 Library Migration
011300 05 INFODATE PIC X(08). 01130000
011400 05 INFOTIME PIC X(08). 01140000
011500 05 INFO-DD PIC X(08). 01150000
011600 05 INFO-DD-NUM REDEFINES INFO-DD 01160000
011700 PIC 9(08). 01170000
011800 05 INFO-PD PIC X(08). 01180000
011900 05 INFO-PD-NUM REDEFINES INFO-PD 01190000
012000 PIC 9(08). 01200000
012100 05 FILLER OCCURS 24. 01210000
012200 10 INFO-I PIC X(08). 01220000
012300 05 INFEHLER PIC X(08). 01230000
012400 88 KEIN-FEHLER VALUE SPACE. 01240000
012500* 01250000
012600*-----------------------------------------------------------------01260000
012700*--- TABLE FOR BIT-BYTE-CONVERSION ---01270000
012800*-----------------------------------------------------------------01280000
012900* 01290000
013000 01 B-B-TABLE. 01300000
013100* 01310000
013200 05 FILLER PIC X(08) VALUE '00000000'. 01320000
013300 05 FILLER PIC X(08) VALUE '00000001'. 01330000
013400 05 FILLER PIC X(08) VALUE '00000010'. 01340000
013500 05 FILLER PIC X(08) VALUE '00000011'. 01350000
013600 05 FILLER PIC X(08) VALUE '00000100'. 01360000
013700 05 FILLER PIC X(08) VALUE '00000101'. 01370000
013800 05 FILLER PIC X(08) VALUE '00000110'. 01380000
013900 05 FILLER PIC X(08) VALUE '00000111'. 01390000
014000 05 FILLER PIC X(08) VALUE '00001000'. 01400000
014100 05 FILLER PIC X(08) VALUE '00001001'. 01410000
014200 05 FILLER PIC X(08) VALUE '00001010'. 01420000
014300 05 FILLER PIC X(08) VALUE '00001011'. 01430000
014400 05 FILLER PIC X(08) VALUE '00001100'. 01440000
014500 05 FILLER PIC X(08) VALUE '00001101'. 01450000
014600 05 FILLER PIC X(08) VALUE '00001110'. 01460000
014700 05 FILLER PIC X(08) VALUE '00001111'. 01470000
014800* 01480000
014900 05 FILLER PIC X(08) VALUE '00010000'. 01490000
015000 05 FILLER PIC X(08) VALUE '00010001'. 01500000
015100 05 FILLER PIC X(08) VALUE '00010010'. 01510000
..
.
..
.
040000 05 FILLER PIC X(08) VALUE '11111101'. 04000000
040100 05 FILLER PIC X(08) VALUE '11111110'. 04010000
040200 05 FILLER PIC X(08) VALUE '11111111'. 04020000
040300* 04030000
040400 01 FILLER REDEFINES B-B-TABLE. 04040000
040500 05 B-B-TABLE-J PIC X(08) OCCURS 256. 04050000
040600* 04060000
040700*=================================================================04070000
040800 PROCEDURE DIVISION. 04080000
040900*=================================================================04090000
041000* 04100000
041100******************************************************************04110000
041200*** MAIN CONTROL FLOW. ***04120000
041300******************************************************************04130000
041400* 04140000
Figure 45 (Part 3 of 5). VS COBOL II Program MIGU002
86 Library Migration
047100*** PREPARE-AUSGABE SECTION. ***04710000
047200*** MOVE DATA FROM EINGABE-SATZ TO VARLIST ***04720000
047300*** CONVERTING BITS OF COBOL INFO BYTES TO BYTES. ***04730000
047400*** ***04740000
047500******************************************************************04750000
047600* 04760000
047700 PREPARE-AUSGABE SECTION. 04770000
047800* 04780000
047900 MOVE E-PGMNAME TO INFONAME. 04790000
048000 MOVE E-COMPILER-V-R-M TO INFO-VRM. 04800000
048100 MOVE E-COMPILE-DATE TO INFODATE. 04810000
048200 MOVE E-COMPILE-TIME TO INFOTIME. 04820000
048300 MOVE E-DATA-DIV-STMTS TO INFO-DD-NUM. 04830000
048400 MOVE E-PROC-DIV-STMTS TO INFO-PD-NUM. 04840000
048500* 04850000
048600 PERFORM WITH TEST BEFORE 04860000
048700 VARYING I FROM 1 BY 1 UNTIL I > 24 04870000
048800 MOVE ZERO TO J 04880000
048900 MOVE E-INFO-BYTE(I) TO J2 04890000
049000 ADD 1 TO J 04900000
049100 MOVE B-B-TABLE-J(J) TO INFO-I(I) 04910000
049200 END-PERFORM. 04920000
049300* 04930000
049400 PREPARE-AUSGABE-EXIT. 04940000
049500 EXIT. 04950000
049600*=================================================================04960000
Figure 46. Sample Job to Run Program MIGU002. The OUTDD file is a PDS with LRECL=255.
We copied the output members into a single file for further analysis. Figure 47 on page 88
shows the file with the output records from program MIGU002
The output was analyzed using the description of the COBOL information bytes in VS COBOL
II Application Programming: Debugging, SC26-4049. Table 3 on page 37 shows the results of
our analysis.
Figure 47. Output from Program MIGU002. The full output record length is 255 bytes. Only the first
part of the records, which contains the COBOL information flags for the compiler options, is
shown. V.R.M indicates compiler version, release, and modification level.
88 Library Migration
Step 1: Extract Records from Program Source Code
To extract the records from program source code perform the following actions:
Allocate a PDS and copy the source modules extracted from the customer's production
CA-LIBRARIAN to this PDS (refer to file PP in Figure 4 on page 20). Figure 48 shows
examples of the first lines of released program source code for different programming
languages.
* *MZI*CP****** 00000100
* *MZI*IC******P92N010 P92N011 00000200
* *MZI*XX******ENDE MODUL-ZUSATZINFO**************************** 00000300
..
.
Delete all leading comment lines except the lines that contain the control information
(called “MZI records” in application 1). A delimiter record (with string “MZI*XX******”)
indicates the end of the valid control information records.
We used ISPF EDIT macro MIGE0040 (see Figure 49 on page 90) for this data reduction.
This macro inserts the member name in front of each record and converts the
language-specific comment delimiter to a language type keyword (COBOL, PLI, or ASM).
If leading control information records are not found, the macro creates one dummy
record with “???” instead of the language type keyword.
To apply the EDIT macro to all members of a PDS, we used the general-purpose EDIT
macro MIGE0000 listed in Figure 50 on page 91. Figure 51 on page 91 shows the
resulting members.
Copy all members into one file (sequential data set or member of a PDS) and sort by
type. The records with type “???” need manual correction. We used the information
about the compiler used from the corresponding load modules (refer to “Compiler
Information” on page 77) to insert the correct type. This was only required for a few old
OS/VS COBOL and Assembler modules with release dates before 1984. Default compile
options are assumed for these modules.
The resulting file is the input for “Step 2: Reformat Extracted Records” on page 92.
Figure 50 on page 91 shows the general-purpose EDIT macro MIGE0000. This EDIT macro
allows you to execute another EDIT macro—specified as a parameter—for all members of a
PDS. To apply an EDIT macro, for example, MIGE0040, to all members of a PDS, edit a new
member, $$$ say, and type MIGE0000 MIGE0040 on the command line. Wait until * END OF
MEMBER LIST * is displayed and cancel the new member, $$$ in this case.
90 Library Migration
ISREDIT MACRO (MACRO2) 00010000
/***============================================================== ***/00020000
/*** PURPOSE.....: THIS EDIT MACRO IS TO BE CALLED FROM ***/00030000
/*** AN EDITED MEMBER OF A PDS. ***/00040000
/*** IT EXECUTES AN OTHER MACRO (NAME GIVEN AS A ***/00050000
/*** PARAMETER) FOR ALL OTHER MEMBERS OF THE PDS) ***/00060000
/*** ***/00070000
/*** DATE WRITTEN: 03/06/93-FITZ ***/00080000
/***============================================================== ***/00090000
ISREDIT (DATA1) = DATAID 00100000
ISREDIT (CURMBR) = MEMBER 00110000
ISPEXEC LMOPEN DATAID(&DATA1) OPTION(INPUT) 00120000
SET MEMBER = 00130000
SET LCC = &LASTCC 00140000
DO WHILE (&LCC = 0) 00150000
ISPEXEC LMMLIST DATAID(&DATA1) OPTION(LIST) MEMBER(MEMBER) STATS(NO) 00160000
SET LCC = &LASTCC 00170000
IF (&LCC = 0) THEN DO 00180000
IF (&MEMBER NE &CURMBR) THEN + 00190000
ISPEXEC EDIT DATAID(&DATA1) MEMBER(&MEMBER) MACRO(&MACRO2) 00200000
END 00210000
IF (&LCC = 8) THEN DO 00220000
WRITE &STR( * END OF MEMBER LIST *) 00230000
END 00240000
END 00250000
ISPEXEC LMMLIST DATAID(&DATA1) OPTION(FREE) 00260000
ISPEXEC LMCLOSE DATAID(&DATA1) 00270000
EXIT CODE(&MAXCC) 00280000
/***============================================================== ***/00290000
Figure 51. Control Information Extracted with EDIT Macro MIGE0040. MZI*CP lines contain compiler
options, MZI*LP lines contain linkage editor options, and MZI*IC lines contain names of
linked modules. At least the MZI*CP line is always present.
KR00030 ASM
P03N905 ASM
P92N000 COBOL
P92N001 ASM
P92N002 COBOL LANGLVL(1)
P92N003 ASM
P92N004 COBOL LANGLVL(1)
P92N005 COBOL RENT,AMODE=24
P92N006 ASM
P92N008 COBOL RENT
P92N009 COBOL LANGLVL(1)
P92N010 COBOL
..
.
..
.
The reformatting was done with the REXX procedure MIGR0040 listed in Figure 54 on
page 93. Input and output data set names for this procedure were entered in panel
MIGP0040. Figure 55 on page 96 shows the panel definition for MIGP0040.
MIGR0040 also considers the control information discussed in “Compiler Options” on
page 36 and “Control Information for the Linkage Editor” on page 41. Only the nondefault
options for the SCLM target environment appear in the output.
92 Library Migration
/***** REXX ***********************************************************/00010000
/* PURPOSE.....: EXTRACT COMPILE AND LINK INFO FROM APPL.1 RECORDS */00020000
/* DATE WRITTEN: 03/22/93-FITZ */00030000
/**********************************************************************/00040000
/* TRACE R */ 00050000
/* ------------------------------------------------------------------ */00060000
ADDRESS ISPEXEC 00070000
"DISPLAY PANEL(MIGP0040)" /* GET DSNAMES FROM PANEL */ 00080000
IF RC = 0 THEN DO 00090000
CINNAME = "'"CINNAME"'" 00100000
COUNAME = "'"COUNAME"'" 00110000
ADDRESS TSO 00120000
"ALLOC FILE(INPFILE) DATASET("CINNAME") SHR REUSE" 00130000
"ALLOC FILE(OUTFILE) DATASET("COUNAME") OLD REUSE" 00140000
PGMPREV = ' ' 00150000
MOREINP = 1 00160000
DO WHILE MOREINP = 1 00170000
ADDRESS TSO 00180000
"EXECIO 1 DISKR INPFILE" 00190000
IF RC ¬= 0 THEN DO 00200000
MOREINP = 0 00210000
IF (PGMPREV ¬= ' ') THEN DO /* IF NOT FIRST INPUT MBR:*/ 00220000
/* WRITE RECORD PREV. MBR.*/ 00230000
QUEUE PGMPREV || CPINFO || LPINFO || ICINFO 00240000
"EXECIO 1 DISKW OUTFILE" 00250000
END 00260000
END 00270000
ELSE DO 00280000
PULL RECORD /* LRECL=80 EXPECTED */ 00290000
PGMINFO = SUBSTR(RECORD,1,20) /* MODULE NAME AND TYPE */ 00300000
PGMTYPE = SUBSTR(RECORD,11,10) /* MODULE TYPE */ 00310000
PGMTYPE = STRIP(PGMTYPE) 00320000
MZITYPE = SUBSTR(RECORD,25,2) /* TYPE OF CONTROL INFO */ 00330000
IF (PGMPREV ¬= PGMINFO) THEN DO /* IF INPUT FOR NEW MBR.: */ 00340000
IF (PGMPREV ¬= ' ') THEN DO /* IF NOT FIRST INPUT MBR:*/ 00350000
/* WRITE RECORD PREV. MBR.*/ 00360000
QUEUE PGMPREV || CPINFO || LPINFO || ICINFO 00370000
"EXECIO 1 DISKW OUTFILE" 00380000
END 00390000
PGMPREV = PGMINFO 00400000
LPINFO = LEFT(' ',40) /* DEFLT., IF NO LP INPUT */ 00410000
ICINFO = LEFT(' ',40) /* DEFLT., IF NO IC INPUT */ 00420000
END 00430000
/* CONTROL DATA IN INPUT REC = 5 * 8 CHAR */ 00440000
XX1 = SUBSTR(RECORD,33,8) 00450000
XX2 = SUBSTR(RECORD,41,8) 00460000
XX3 = SUBSTR(RECORD,49,8) 00470000
XX4 = SUBSTR(RECORD,57,8) 00480000
XX5 = SUBSTR(RECORD,65,8) 00490000
SELECT 00500000
/*------------------------------------- COMPILER OPTIONS */ 00510000
WHEN MZITYPE = 'CP' THEN DO 00520000
SELECT 00530000
WHEN PGMTYPE = 'COBOL' THEN DO 00540000
/* ----- TYPE = COBOL --------------------------*/ 00550000
SELECT 00560000
Figure 54 (Part 1 of 3). REXX Procedure MIGR0040
94 Library Migration
CPINFO = STRIP(XX1) 01130000
IF XX2 ¬= ' ' THEN 01140000
CPINFO = CPINFO || ',' || STRIP(XX2) 01150000
IF XX3 ¬= ' ' THEN 01160000
CPINFO = CPINFO || ',' || STRIP(XX3) 01170000
IF XX4 ¬= ' ' THEN 01180000
CPINFO = CPINFO || ',' || STRIP(XX4) 01190000
IF XX5 ¬= ' ' THEN 01200000
CPINFO = CPINFO || ',' || STRIP(XX5) 01210000
CPINFO = STRIP(CPINFO,,',') 01220000
CPINFO = LEFT(CPINFO,40) 01230000
END 01240000
/*------------------------------- LINKAGE EDITOR OPTIONS */ 01250000
WHEN MZITYPE = 'LP' THEN DO 01260000
LPINFO = '' 01270000
IF ((LANG = 'COB2') | (LANG = 'COB22')) THEN DO 01280000
XX1 = 'RENT' 01290000
IF XX2 = 'AMODE=31' THEN 01300000
XX2 = ' ' 01310000
IF XX3 = 'RMODEANY' THEN 01320000
XX3 = ' ' 01330000
END 01340000
IF (LANG = 'ASMH') THEN DO /* USE CODED VALUES */ 01350000
XX2 = ' ' 01360000
XX3 = ' ' 01370000
END 01380000
IF XX2 = 'AMODEANY' THEN 01390000
XX2 = 'AMODE=ANY' 01400000
IF XX3 = 'RMODEANY' THEN 01410000
XX3 = 'RMODE=ANY' 01420000
/*--------------------------*/ 01430000
LPINFO = STRIP(XX1) 01440000
IF XX2 ¬= ' ' THEN 01450000
LPINFO = LPINFO || ',' || STRIP(XX2) 01460000
IF XX3 ¬= ' ' THEN 01470000
LPINFO = LPINFO || ',' || STRIP(XX3) 01480000
LPINFO = STRIP(LPINFO,,',') 01490000
LPINFO = LEFT(LPINFO,40) 01500000
END 01510000
/*-------------------------------- STATIC LINKED MODULES */ 01520000
WHEN MZITYPE = 'IC' THEN DO 01530000
ICINFO = SUBSTR(RECORD,33,40) 01540000
END 01550000
/*------------------------------------------------------ */ 01560000
OTHERWISE 01570000
END 01580000
END 01590000
END 01600000
"EXECIO 0 DISKR INPFILE (FINIS" 01610000
"EXECIO 0 DISKW OUTFILE (FINIS" 01620000
"FREE FILE(INPFILE)" 01630000
"FREE FILE(OUTFILE)" 01640000
END 01650000
/* ------------------------------------------------------------------ */01660000
EXIT 01670000
Application 2
All the information required for the migration to SCLM can be found in ENDEVOR control
information. You can use PRINT software control language (SCL) or an ENDEVOR archive
file to find compiler and linkage editor information.
96 Library Migration
and refers to statement B3, which is more general and prints information for all elements
satisfying the where clause.
Figure 56. SCL for Action B37 and Statement B3. One action must be specified. The WHERE clause
refers to the change code identifier (CCID) specification in STMT B3.
STMT B3
PRINT ELE *
FROM ENV EMET SYS X SUB L STA NUM 1 TYPE *
TO C1PRINT
WHERE CCID OF CURRENT EQ (MRWSCLM,MRWSCLM1)
OPT COMP
.
Figure 57. SCL for Statement B3. This statement provides the list of all elements that meet the
following selection parameters: environment EMET, system X, subsystem L, stage number
1, all types, and CCID MRWSCLM or MRWSCLM1.
/* REXX */
/***********************************************************************
MIGR0030 :
Purpose : To extract information from ENDEVOR Archive file
:
Description : This program read the ENDEVOR archive file and
: writes all compiler and link edit options related
: to Element/Type in the common formatted file.
Figure 58 (Part 1 of 3). REXX Procedure MIGR0030
98 Library Migration
fqnameout = "'"fqnameout"'"
"alloc da("fqnameout") f(outp) shr reus"
if rc¬=0 then call error fqnameout
return rc
/**************************/
/* SEARCH_LKPARM PROC */
/**************************/
search_lkparm:
do forever
"execio 1 diskr inp "
pull record
parse value record with line
if substr(line,2,1)=h & substr(line,25,7)=lnkparm then
do
lkparm = substr(line,37,50)
leave
end
end
return rc
/**************************/
/* ERROR PROC */
/**************************/
error:
parse upper arg filename
say 'file 'filename' does not exist'
exit rc
*********************************************************************** 00010000
**** SCLM3 PROJECT DEFINITION - PDF 3.5 00020000
*********************************************************************** 00030000
PRINT NOGEN 00040000
*********************************************************************** 00050000
*** START THE PROJECT DEFINITION FOR PROJECT SCLM3 00060000
*********************************************************************** 00070000
SCLM3 FLMABEG 00080000
* 00090000
*********************************************************************** 00100000
** DEFINE GROUPS OF AUTHORIZATION CODES (FLMAGRP) 00110000
*********************************************************************** 00120000
COPY ASCLM3 00130000
* 00140000
*********************************************************************** 00150000
** PROJECT CONTROLS (FLMCNTRL) 00160000
*********************************************************************** 00170000
COPY CSCLM3 00180000
* 00190000
*********************************************************************** 00200000
** FLEXIBLE DATABSE (FLMALTC) 00210000
*********************************************************************** 00220000
COPY FSCLM3 00230000
* 00240000
*********************************************************************** 00250000
** DEFINE THE PROJECT HIERARCHY (FLMGROUP) 00260000
*********************************************************************** 00270000
PROD FLMGROUP AC=(PAG),KEY=Y,ALTC=SCLM3P 00280000
TEST FLMGROUP AC=(TAG),KEY=Y,PROMOTE=PROD,ALTC=SCLM3T 00290000
MIG1 FLMGROUP AC=(MAG1),KEY=Y,PROMOTE=TEST,ALTC=SCLM3D 00300000
MIG2 FLMGROUP AC=(MAG2),KEY=Y,PROMOTE=TEST,ALTC=SCLM3D 00310000
* 00320000
*********************************************************************** 00330000
** DEFINE THE TYPES (FLMTYPE) 00340000
*********************************************************************** 00350000
COPY TSCLM3 00360000
* 00370000
*********************************************************************** 00380000
** LANGUAGE DEFINITION TABLES (FLMLANGL,FLMTRNSL) 00390000
*********************************************************************** 00400000
Figure 59 (Part 1 of 2). SCLM Project Definition SCLM3
*********************************************************************** 00010000
** DEFINE GROUPS OF AUTHORIZATION CODES 00020000
*********************************************************************** 00030000
PAG FLMAGRP AC=(FUA,NDV) 00040000
TAG FLMAGRP AC=(FUA,NDV) 00050000
MAG1 FLMAGRP AC=(FUA) 00060000
MAG2 FLMAGRP AC=(NDV) 00070000
*********************************************************************** 00010000
** PROJECT CONTROLS 00020000
*********************************************************************** 00030000
* 00040000
FLMCNTRL ACCT=SCLM3.ACCOUNT.FILE, C00050000
LIBID=SCLM3, C00060000
MAXVIO=10000, C00070000
OPTOVER=Y, C00080000
VERPDS=@@FLMPRJ.@@FLMGRP.@@FLMTYP.VERSION, C00090000
VERS=SCLM3.AUDIT.FILE 00100000
* 00110000
*********************************************************************** 00010000
** DEFINE THE TYPES 00020000
*********************************************************************** 00030000
ARCHDEF FLMTYPE 00040000
* 00050000
ASM FLMTYPE EXTEND=ASMMACS 00060000
ASMMACS FLMTYPE 00070000
COBCOPY FLMTYPE 00080000
COBOL FLMTYPE EXTEND=COBCOPY 00090000
DB2CLIST FLMTYPE EXTEND=DBRM 00100000
DB2OUT FLMTYPE 00110000
SQL FLMTYPE 00120000
PLI FLMTYPE 00130000
* 00140000
DBRM FLMTYPE 00150000
OBJ FLMTYPE 00160000
LIST FLMTYPE 00170000
LMAP FLMTYPE 00180000
LOAD FLMTYPE 00190000
* 00200000
CLIST FLMTYPE 00210000
PANELS FLMTYPE 00220000
SKELS FLMTYPE 00230000
MSGS FLMTYPE 00240000
* 00250000
*********************************************************************** 00010000
** VERSIONING AND AUDITIBILITY 00020000
*********************************************************************** 00030000
FLMATVER GROUP=PROD,TYPE=*,VERSION=YES 00040000
* 00050000
Language Definitions
Figure 66 through Figure 76 on page 122 show the SCLM language definitions that we either
created or modified for the project. Modifications for our project are marked with @@ in
positions 70 to 71.
*********************************************************************** 00010000
* OS/VS ASSEMBLER 'H' LANGUAGE DEFINITION FOR SCLM * 00020000
Figure 66 (Part 1 of 3). Language Definition F@ASMH for Assembler H
***********************************************************************
* 370/LINKAGE EDITOR LANGUAGE DEFINITION FOR SCLM *
* *
*@@*****************************************************************@@*
*@@ Modifications for ITSC Migration Project: @@*
*@@ -- Link options LIST,LET,XREF added @@*
*@@ -- FLMCPYLB customized @@*
*@@ @@*
Figure 67 (Part 1 of 3). Language Definition F@L370 for the Linkage Editor
Figure 67 (Part 3 of 3). Language Definition F@L370 for the Linkage Editor
*********************************************************************** 00000100
* OS/VS COBOL LANGUAGE DEFINITION FOR SCLM * 00000200
* * 00000300
*@@*****************************************************************@@* 00000400
*@@ Modifications for ITSC Migration Project: @@* 00000500
*@@ -- DSNAME parameter inserted for IFKCBL00 @@* 00000600
*@@ -- GOODRC=0 --> GOODRC=4 @@* 00000700
*@@ -- PARMKWD parameter added to build translator(s) @@* 00000800
Figure 68 (Part 1 of 3). Language Definition F@COBL for OS/VS COBOL
*********************************************************************** 00000100
* COBOL II LANGUAGE DEFINITION FOR SCLM * 00000200
*@@ for ANSI85 Standard (NOCMPR2) @@* 00000300
*@@*****************************************************************@@* 00000400
*@@ Modifications for ITSC Migration Project: @@* 00000500
*@@ -- DSNAME parameter inserted for IGYCRCTL @@* 00000600
*@@ -- GOODRC=0 --> GOODRC=4 @@* 00000700
*@@ -- PARMKWD parameter added to build translator(s) @@* 00000800
Figure 69 (Part 1 of 3). Language Definition F@COB2 for VS COBOL II
*********************************************************************** 00000100
* COBOL II LANGUAGE DEFINITION FOR SCLM * 00000200
*@@ for interpreting source code @@* 00000300
*@@ like VS COBOL II Release 2 @@* 00000400
*@@ (i.e. with options CMPR2,FLAGMIG) @@* 00000500
*@@*****************************************************************@@* 00000600
*@@ Modifications for ITSC Migration Project: @@* 00000700
*@@ -- LANG=COB22 (this language will disappear after @@* 00000800
Figure 70 (Part 1 of 3). Language Definition F@COB22 for VS COBOL II with CMPR2
Figure 70 (Part 3 of 3). Language Definition F@COB22 for VS COBOL II with CMPR2
*********************************************************************** 00000100
* OS PL/I OPTIMIZING COMPILER LANGUAGE DEFINITION FOR SCLM * 00000200
* * 00000300
*@@*****************************************************************@@* 00000400
Figure 71 (Part 1 of 3). Language Definition F@PLIO for OS PL/I V2
*********************************************************************** 00010000
* FLM@AD2 - ASMH/DB2 PREPROCESS AND ASSEMBLE * 00020000
* * 00030000
*@@*****************************************************************@@* 00040000
*@@ Modifications for ITSC Migration Project: @@* 00050000
*@@ -- FLMSYSLB/FLMCPYLB DCB.V3R3M0.CSPBD2 not used (no CSP) @@* 00060000
*@@ -- GOODRC=0 --> GOODRC=4 @@* 00070000
*@@ -- PARMKWD parameter added to build translator(s) @@* 00080000
Figure 72 (Part 1 of 4). Language Definition F@AD2 for Assembler H with DB2
Figure 72 (Part 4 of 4). Language Definition F@AD2 for Assembler H with DB2
*********************************************************************** 00000100
* UNTRANSLATED TEXT LANGUAGE DEFINITION FOR SCLM * 00000200
* * 00000300
*@@*****************************************************************@@* 00000400
*@@ Modifications for ITSC Migration Project (FLM@TEXT): @@* 00000500
*@@ -- FLMLANGL und CALLNAM modified for SCMD @@* 00000600
*@@ (DB2 subcommands for generation of DDL) @@* 00000700
*@@ @@* 00000800
********************** GENERAL NOTES ******************************** 00000900
* * 00001000
* THIS LANGUAGE DEFINITION IS AN EXAMPLE THAT CAN SERVE AS A * 00001100
* REFERENCE IN THE CONSTRUCTION AND CUSTOMIZATION OF LANGUAGE * 00001200
* DEFINITIONS FOR A PARTICULAR APPLICATION AND ENVIRONMENT. * 00001300
* * 00001400
*********************************************************************** 00001500
* * 00001600
* CUSTOMIZATION IS NOT REQUIRED. * 00001700
*********************************************************************** 00001800
* CHANGE ACTIVITY: * 00001900
* * 00002000
* * 00002100
*********************************************************************** 00002200
FLMLANGL LANG=SCMD,VERSION=V1.0 @@ 00002300
* 00002400
Figure 73 (Part 1 of 2). Language Definition F@SCMD for DB2 DDL Subcommands
Figure 73 (Part 2 of 2). Language Definition F@SCMD for DB2 DDL Subcommands
*********************************************************************** 00000100
* UNTRANSLATED TEXT LANGUAGE DEFINITION FOR SCLM * 00000200
* * 00000300
*@@*****************************************************************@@* 00000400
*@@ Modifications for ITSC Migration Project (FLM@TEXT): @@* 00000500
*@@ -- FLMLANGL und CALLNAM modified for PANELS @@* 00000600
*@@ @@* 00000700
********************** GENERAL NOTES ******************************** 00000800
* * 00000900
* THIS LANGUAGE DEFINITION IS AN EXAMPLE THAT CAN SERVE AS A * 00001000
* REFERENCE IN THE CONSTRUCTION AND CUSTOMIZATION OF LANGUAGE * 00001100
* DEFINITIONS FOR A PARTICULAR APPLICATION AND ENVIRONMENT. * 00001200
* * 00001300
*********************************************************************** 00001400
* * 00001500
* CUSTOMIZATION IS NOT REQUIRED. * 00001600
*********************************************************************** 00001700
* CHANGE ACTIVITY: * 00001800
* * 00001900
* * 00002000
*********************************************************************** 00002100
FLMLANGL LANG=PANELS,VERSION=V1.0 @@ 00002200
* 00002300
* PARSER TRANSLATOR 00002400
Figure 74 (Part 1 of 2). Language Definition F@PANELS for ISPF Panels
*@@*****************************************************************@@* 00010000
*@@ LANGUAGE DEFINITION FOR SKELETONS (PARSE ONLY) @@* 00020000
*@@ (WITH SKEL PARSER FROM SCLM 3.4 GUIDE & MANUAL) @@* 00030000
*@@*****************************************************************@@* 00040000
FLMLANGL LANG=SKELS,VERSION=V1.0,BUFSIZE=100 00050000
* 00060000
* PARSER TRANSLATOR 00070000
* 00080000
FLMTRNSL CALLNAM='SCLM SKEL PARSER', C00090000
FUNCTN=PARSE, C00100000
COMPILE=PSKELS, C00110000
DSNAME=SCLM3.RESI.LOAD, C00120000
PORDER=1, C00130000
GOODRC=0, C00140000
VERSION-V1R1M0, C00150000
OPTIONS='/@@FLMSTP,@@FLMLIS,@@FLMSIZ,' 00160000
* (* SOURCE *) 00170000
FLMALLOC IOTYPE=A,DDNAME=SSOURCE 00180000
FLMCPYLB @@FLMDSN(@@FLMMBR) 00190000
* (* LISTING *) 00200000
FLMALLOC IOTYPE=W,DDNAME=ERROR, C00210000
RECFM=VBA,LRECL=133,RECNUM=6000,PRINT=Y 00220000
* (* LISTING *) 00230000
FLMALLOC IOTYPE=W,DDNAME=SYSPRINT, C00240000
RECFM=VBA,LRECL=133,RECNUM=6000,PRINT=Y 00250000
* 00260000
Figure 75. Language Definition F@@SKEL for ISPF Skeletons. For information about the parser, refer
to SCLM Guide and Reference, SC34-4254. The parser looks for embedded skeletons and
stores the names for these included members in the accounting file.
*********************************************************************** 00000100
* UNTRANSLATED TEXT LANGUAGE DEFINITION FOR SCLM * 00000200
* * 00000300
*@@*****************************************************************@@* 00000400
*@@ Modifications for ITSC Migration Project (FLM@TEXT): @@* 00000500
*@@ -- FLMLANGL und CALLNAM modified for MSGS @@* 00000600
*@@ @@* 00000700
********************** GENERAL NOTES ******************************** 00000800
* * 00000900
* THIS LANGUAGE DEFINITION IS AN EXAMPLE THAT CAN SERVE AS A * 00001000
* REFERENCE IN THE CONSTRUCTION AND CUSTOMIZATION OF LANGUAGE * 00001100
* DEFINITIONS FOR A PARTICULAR APPLICATION AND ENVIRONMENT. * 00001200
* * 00001300
*********************************************************************** 00001400
* * 00001500
* CUSTOMIZATION IS NOT REQUIRED. * 00001600
*********************************************************************** 00001700
* CHANGE ACTIVITY: * 00001800
* * 00001900
* * 00002000
*********************************************************************** 00002100
FLMLANGL LANG=MSGS,VERSION=V1.0 @@ 00002200
* 00002300
* PARSER TRANSLATOR 00002400
* 00002500
FLMTRNSL CALLNAM='SCLM MSGS PARSE', @@C00002600
FUNCTN=PARSE, C00002700
COMPILE=FLMLPGEN, C00002800
PORDER=1, C00002900
OPTIONS=(SOURCEDD=SOURCE, C00003000
STATINFO=@@FLMSTP, C00003100
LISTINFO=@@FLMLIS, C00003200
LISTSIZE=@@FLMSIZ, C00003300
LANG=T) 00003400
* (* SOURCE *) 00003500
FLMALLOC IOTYPE=A,DDNAME=SOURCE 00003600
FLMCPYLB @@FLMDSN(@@FLMMBR) 00003700
* 00003800
* BUILD TRANSLATOR(S) 00003900
* 00004000
* 5665-402 (C) COPYRIGHT IBM CORP 1980, 1989 00004100
Input data set (Sequential data set or PDS with member specification),
which contains the formatted module information:
INPUT DSNAME ===> SCLM3.STADE5.DATA160(MZI$COB)...............
Figure 79 on page 125 through Figure 83 on page 129 show the listings of all modules
belonging to this tool.
)ATTR DEFAULT(%$_) /* TEXT HIGH / TEXT LOW / INPUT HIGH CAPS LEFT */
# TYPE(INPUT) INTENS(HIGH) CAPS(ON) JUST(LEFT) PAD('.')
< TYPE(OUTPUT) INTENS(LOW) CAPS(OFF)
/**********************************************************************/
/* INPUT PANEL TO SPECIFY INPUT AND OUTPUT DSNAMES OF PDSS FOR */00020000
/* CREATING LEC (AND CC) ARCHDEF FROM INPUT LIST */00020000
/* WITH REXX MIGR0010 */00020000
/* DATE WRITTEN: 03/03/93-FITZ */00030000
/**********************************************************************/
)BODY
$MIGP0010 ------------+-% Create SCLM ARCHDEF members $-+-----------------------
%===>_ZCMD $+---------------------------------+ <ZDATE <ZTIME
$
$
$Input data set (Sequential data set or PDS with member specification),
$which contains the formatted module information:
$
$ INPUT DSNAME%===>#INPNAME $
$
$
$Output data set (must be a partitioned dataset), where the ARCHDEF
$members will be created:
$
$OUTPUT DSNAME%===>#OUTNAME $
$
$
$
$
$press HELP for info, ENTER to execute, END to cancel function.
)INIT /****************************************************************/
&ZCMD = ' '
.CURSOR = INPNAME
.HELP = MIGH0010
)PROC /****************************************************************/
VER(&INPNAME DSNAME)
VER(&OUTNAME DSNAME)
VPUT (INPNAME OUTNAME) PROFILE
)END
)CM *******************************************************************
)CM SKEL FOR LEC ARCHDEF MEMBER
)CM DATE WRITTEN: 03/03/93-FITZ
)CM *******************************************************************
* LEC ARCHDEF FOR PGM &PGMNAME
)TB 9 18 41
LKED!&LENAME! !* TRANSLATOR FOR LINK EDIT
LOAD!&PGMNAME!LOAD!* LOAD MODULE
Figure 82 (Part 1 of 2). ISPF Skeleton MIGS0010
/* REXX */ 00010002
/***********************************************************************00020002
MIGR0050 : 00030002
Purpose : To create HL architecture definition member and 00040002
: DB2CLIST member. 00050002
: 00060002
Description : This program creates HL ARCHDEF member or DB2CLIST 00070002
: member or both. Inputs comes from user. Defaults 00080002
: are coded into this program, and can be changed 00090002
: (see init_default part). 00100002
: 00110002
Inputs : Alternate project definition name 00111002
: PDS High Level Qualifier name 00112002
: Group name 00113002
: HL architecture definition name 00114002
: Architecture definition name (link with DB2) 00115002
Figure 84 (Part 1 of 9). REXX Procedure MIGR0050
Figure 87. COPY Statements and Text for Copy Book S92U905C
IF RETURN-CODE = 0 THEN
MOVE 'D' TO S92N-ST-KZ
MOVE ZWI-BUFF TO S92N-MASCH-DAT
CALL 'P03N905' USING PARM-OBUFF905
IF RETURN-CODE = 0 THEN
MOVE 'D' TO SAWX-ST-KZ IN PARM-OBUFF905
MOVE ZWI-BUFF TO SAWX-MASCH-DAT IN PARM-OBUFF905
CALL 'P03N905' USING PARM-OBUFF905
Figure 88. Sample Statements Referring to Data Names from Copy Book S92U905C
Figure 89. Sample Job to Run Program MIGU003. SAWX- is the prefix in the S92U905C copy book
data names; S92N- is the prefix previously used in the program source code.
000100*=================================================================00010000
000200 IDENTIFICATION DIVISION. 00020000
000300 PROGRAM-ID. MIGU003. 00030000
000400*=================================================================00040000
000500*** PURPOSE.....: *** 00050000
000600*** UTILITY TO CREATE AN EDIT MACRO IN ORDER TO CHANGE *** 00060000
000700*** A PROGRAM TOGETHER WITH REMOVAL OF A REPLACING CLAUSE *** 00070000
000800*** FROM A COBOL COPY STATEMENT. *** 00080000
000900*** THE PROGRAM USES THE INFO FROM THE REPLACING CLAUSE *** 00090000
001000*** (IN A FORMATTED FORM) AND THE TEXT OF THE COPY BOOK *** 00100000
001100*** AS INPUT. *** 00110000
001200*** THE CREATED EDIT MACRO WILL HAVE THE PROPER CHANGE *** 00120000
001300*** COMMANDS TO REPLACE THE USED NAMES FOR VARIABLES *** 00130000
001400*** AFTER REPLACING BY THE ORIGINAL ONES FROM THE COPY *** 00140000
001500*** BOOK (TOGETHER WITH AN OPTIONAL HIGH LEVEL QUALIFIER). *** 00150000
001600*** *** 00160000
Figure 90 (Part 1 of 10). COBOL Program MIGU003
Figure 92. ISPF EDIT Macro MIGE0010. This EDIT macro was used to convert CA-LIBRARIAN − INC
statements in Assembler programs into comment lines.
Figure 93 (Part 2 of 2). ISPF EDIT Macro MIGE0020. This EDIT macro was used to convert
CA-LIBRARIAN − INC statements in PL/I programs into PL/I %INCLUDE
statements.
Because we used all the defaults coded in MIGR0020, the input file only had an LEC member
name starting in column 1 in each record.
E G
EDIT macro GENERATE action 16
MIGE0000 89, 90, 139, 156 group 24, 25
MIGE0030 139
MIGE0040 31, 89
MIGE0050 141, 143 H
ELIPS 6
ENDEVOR high-level qualifier 23, 24
ADD action 16 HL architecture definition 58, 59, 61, 62, 64, 67, 69,
archive file 21, 31, 42, 97 129
ARCHIVE function 7, 21 naming conventions 48, 63
attribute information 21
auditing 27
CCID 7, 16, 72
environment 26 I
footprint 7
GENERATE action 16 IEBCOPY utility 32, 52
inventory item 7 IGYDS1159-E 53
LIST action 21 IGYPS0037-S 54
master control file 16 INCLUDE 42
MOVE action 16 information bytes 31, 32, 37
MOVE processors 26 ISPF help panel
PRINT action 8, 35, 96 MIGH0010 123
processor 7, 21, 35 ISPF panel
REPLACE action 16 MIGP0010 123
report 7, 27, 72 MIGP0040 92
RESTORE function 7, 21 ISPF search-for utility 18, 64, 141
SCL 7, 16 ISPF skeleton
software objects 7 MIGS0010 123
stages 7, 25 MIGS0011 123
subsystem 24, 67
system 24, 67
TRANSFER utility 7, 21 J
enterprise project 24
ENTRY 42 jobs 73
error message
IGYDS1159-E 53
IGYPS0037-S 54
L
LANG information 35
LANGLVL(1) 33
Index 169
R SCLM (continued)
project 5, 23, 25
RACF 4, 6, 28 project definition 3, 4, 23, 28, 101
release procedures promote 4, 61, 71
audit information 14 types 26, 27
RENT 39, 41 version information 27
REPLACE action 16 versioning 4, 27
REPLACING clause 52, 54, 56, 57, 141 software control language
RESTORE function 7, 21 See SCL
REUS 41 software objects 7
REXX procedure SSRANGE 39
G621HLA 48 stages 25
MIGR0010 31, 44, 123
MIGR0020 59, 158
MIGR0030 31, 42, 97 T
MIGR0040 31, 92
MIGR0050 48, 129 TRANSFER utility 7, 21
RMODE 41 translator options 28
TRUNC(BIN) 39
types 26, 27
S
SCAN option 18 U
SCL 7, 16
SCLM utility
accounting data set 4, 28, 61 AMBLIST 42
alternate project definitions 25 CA-LIBRARIAN 73, 74
architecture definition 3, 24 IEBCOPY 32, 52
architecture report 58, 64 ISPF search-for 18, 64, 141
audit information 27 migration 51
auditing 27 TRANSFER 7, 21
authorization code 25, 51
build 3, 59, 61, 158
CC architecture definition 33, 34, 36, 37, 44, 62 V
command interface 158
compiler options 37 version information 27
data sets 28 versioning 4, 27
DB2CLIST 47, 48, 52, 129 VS COBOL II 77
DB2OUT 47 compiler options 31, 82
DBUTIL service 34 information bytes 31, 32, 37
enterprise project 24 modules 31
FLMALLOC macros 57 VS COBOL II options
FLMALTC macro 23 CMPR2 32, 33, 39
FLMCNTRL macro 33 DATA(31) 39
FLMGROUP macro 23 LIB 39
FLMLANGL macro 36 NOCMPR2 32, 33, 39
FLMTRNSL macro 33, 37, 39, 45 NOLIB 39
group 24, 25 NONUM 39
high-level qualifier 23, 24 NONUMCLASS 39
HL architecture definition 58, 59, 61, 62, 64, 67, NORENT 39
69, 129 NOSSRANGE 39
language definition 3, 4, 28, 33, 39, 104 NUM 39
LEC architecture definition 44, 62, 123 NUMCLASS 39
migration utility 51 RENT 39
parser 61 SSRANGE 39
Index 171
ITSC Technical Bulletin Evaluation RED000
Migrating Applications
from Vendor Libraries
to SCLM
Publication No. GG24-4021-00
Your feedback is very important to us to maintain the quality of ITSO redbooks. Please fill out this
questionnaire and return it using one of the following methods:
Mail it to the address on the back (postage paid in U.S. only)
Give it to an IBM marketing representative for mailing
Fax it to: Your International Access Code + 1 914 432 8246
Name Address
Company or Organization
Phone No.
ITSC Technical Bulletin Evaluation RED000
GG24-4021-00
NO POSTAGE
NECESSARY
IF MAILED IN THE
UNITED STATES
GG24-4021-00
Printed in U.S.A.
GG24-4021-00