Skip to main content

Software  >  Software Development  >  z/OS SCLM Suite  >  

SCLM for z/OS

  White Paper

SCLM: IBM's Best Kept Secret
TR29.2194

Marsha O'Brien and Beth Shelly
ISPF/PDF and SCLM Development
Research Triangle Park, N.C.

Table of Contents

Back to top




Abstract

Software Configuration and Library Manager (SCLM) offers software developers and project administrators the tools they need to develop and manage software projects. SCLM is an optionally installed feature of Interactive System Productivity Facility (ISPF). When you select SCLM from the ISPF primary option menu, SCLM provides programmers an easy-to-use interface for developing and maintaining programs. There is also a service interface which allows developers and project administrators more flexibility in support of different processes. The components of a software project are kept in hierarchies of libraries. Project administrators define hierarchies using SCLM macros.

SCLM provides solutions to library management and configuration problems. For library management, member locking prevents developers from overlaying each other's changes. Promotion moves members from one level to the next in the hierarchy.

SCLM provides configuration management through the build function. Build invokes compilers or other translators and ensures that the outputs in a given group have been created by the inputs. The object and load module are always synchronized with the source from which it was built. When a source member is promoted, the object and load module that resulted from the build are promoted at the same time, so that the inputs and outputs are synchronized at every level. SCLM only builds members that have changed or members that include members that have changed since the last build. A variety of languages are supported, and if you need more languages, SCLM is flexible enough to let you define them yourself.

The utilities help: migrate to SCLM, create a member list to perform your SCLM functions, report on the contents of your application, export or import accounting data, view audit information, and retrieve previous versions of members.

ITIRC KEYWORDS

  • build
  • configuration management
  • development process
  • hierarchy
  • library administrator
  • library management
  • member locking
  • project administrator
  • promote
  • Interactive System Productivity Facility
  • ISPF
  • software configuration
  • Software Configuration and Library Manager
  • SCLM
  • versioning

Back to top




About the Authors

Beth Shelly has been a member of the ISPF development team since 1982. She is currently on the SCLM development team, and provides level 3 support for SCLM.

Marsha O'Brien leads the SCLM development team and provides level 3 support for SCLM. She frequently presents SCLM sessions at the SHARE user group meetings.

Back to top




Introduction

Are you looking for a library manager or software configuration manager for MVS? You could have them and not even know it. IBM's Software Configuration and Library Manager (SCLM) provides both. SCLM was first introduced in Version 3 of the Interactive System Productivity Facility (ISPF). SCLM is an installable option of ISPF, so if you already have ISPF, SCLM is free!

Library Management

Library management products have been around for a long time. They have traditionally been used to manage source code and for the versioning and auditing of changes to the source. Some products also provide a mechanism, often called promotion, for moving the source code from one set of staging libraries to the next. SCLM provides all of these library management functions.

Configuration management

Configuration management, although an old friend in the hardware arena, is a newer concept in software application development. Software configuration management tools track how all of the pieces of an application fit together - not just the source code, but the objects and load modules as well. Some products, like SCLM, go even farther and allow the specification of additional relationships, such as which testcase or publication is associated with a source module. Build is a configuration management function which invokes translators, such as compilers, assemblers, and linkage editors. Configuration management tools use information about how an application is put together to control the build and promotion of the application. In the best products, the build function is optimized such that only the members that need to be regenerated are built when a change is made, rather than rebuilding the entire application. Tools in this class, such as SCLM, also provide for secure promotes - they ensure that all of the components of an application are synchronized (objects and load modules were generated from the current level of the source code) before allowing the movement of the application from one stage to the next in the development or maintenance process.

SCLM Projects

SCLM uses hierarchies to represent the stages in your development and maintenance processes. The number and content of these hierarchies is defined by each customer: you can choose to store all of your applications in one hierarchy or have one for each application; you may have one hierarchy to define your development process and another one for maintenance. It's up to you.

Each hierarchy is referred to as an SCLM PROJECT. Libraries in a hierarchy are arranged in GROUPs. Within each group, SCLM TYPEs are used to represent the different kinds of application data that will be controlled by SCLM (source, object, load, testcase, etc.). All application data is stored in partitioned data sets, logically referred to by project.group.type within SCLM.

Figure 1. Sample development hierarchy.

Beth2

Figure 1 shows an example of a development hierarchy. In this example, the project name is PROJ1. RELEASE, TEST, DEV1, and DEV2 are all the groups in the hierarchy. Groups DEV1 and DEV2 make up the development level. Groups are made up of libraries. Each of the boxes represents a library. The libraries in group DEV1 are:

  • PROJ1.DEV1.SOURCE
  • PROJ1.DEV1.OBJ
  • PROJ1.DEV1.LOAD
  • PROJ1.DEV1.SCRIPT
  • PROJ1.DEV1.DOC

If your data set naming convention is different than project.group.type, you can use flexible data set naming to map these logical names to the names of the physical data sets.

SCLM uses VSAM (Virtual Storage Access Method) data sets to store all of the information that it needs about the application and its components. SCLM never updates the application data itself; it is preserved intact. This is in strong contrast to some other products where updates are made to the application data in order to ensure synchronization and control.

SCLM and ISPF

If you are currently using ISPF, then you already know how to use SCLM! SCLM view and browse functions are the same as its ISPF counterparts. The SCLM edit function is built on top of ISPF edit. It supports the ISPF edit macros and commands, language sensitive editing, and the edit COMPARE command. From a user's perspective, an SCLM edit session is no different than an ISPF edit session. All of the SCLM processing to verify the group being used and to draw down and lock the member is transparent to the user. An ISPF configuration table option determines whether or not a member can be accessed from outside of SCLM. If such access is allowed and the data is changed, SCLM does not allow a build or promote until the member is either edited again from the SCLM editor or migrated back into SCLM using the Migration Utility.

Back to top




SCLM Functions

Develop your applications

If you are a developer, to get into SCLM, all you have to do is select option 10 from the ISPF Primary Option Menu.

The SCLM Main Menu, shown in the following figure, is a primary option panel, so that you can use the jump function to navigate between SCLM options, without ever leaving SCLM.

Figure 2. SCLM Main Menu


sclmain

There are 6 options on the SCLM Main Menu to help you develop and maintain your applications. They are:

  • View
  • Edit
  • Utilities
  • Build
  • Promote
  • Command
View Option

SCLM's view option is an interface to ISPF view. SCLM view automatically fills the ISPF library entry fields to the project hierarchy based on the SCLM Main Menu project, alternate project, and group fields.

Edit Option

When you want to create or change members in the hierarchy, you use the SCLM editor. SCLM keeps track of which types of members are editable, such as source code and messages, and which types of members are not, such as object and load.

SCLM uses the ISPF editor with several additional features. One of the most important features is member locking. If you edit a member, SCLM keeps anyone else from updating and promoting it without letting you know. When you promote the member, SCLM unlocks it and another developer can edit it.

Every member in SCLM has a language associated with it. The editor has a primary command that gives you the opportunity to assign a language to the member. Each language in the project has a parser associated with it and edit parses each member when it is saved. The most important job of the parser is to track included members, whether they are COBOL copybooks, PL/I includes, or SCRIPT imbeds. This tells build if any member needs to be rebuilt when a member it includes is changed.

You can edit a member that someone else is editing at the same time by using authorization codes. You supply the authorization code on the SCLM Edit - Entry panel. If someone is updating a member that you need, you can use a different authorization code, make the changes in your library, and merge them later.

Edit is where you specify change codes for members. Change codes are a way of tagging members with a problem number or the name of a functional enhancement. This groups members together. That way, any members you change to fix a problem or add a function can be built and promoted together.

Utilities Option

SCLM provides 9 utilities to make application development and maintenance easier. They are:

  • Library
  • Ada Sublibrary Management
  • Migration
  • Database Contents
  • Architecture Report
  • Export
  • Import
  • Audit and Version
  • Delete Group

These utilities are explained below:

  • Library Utility

    The library utility is the one-stop shopping place of SCLM. Almost everything that a developer would want to do can be done within the library utility.

    The most basic function of the library utility is to provide a list of members, either from a single library, or from the entire promotion hierarchy, starting from a given library up to the top group. You can select to browse, edit, view, build, and delete any member on the list. The member list also allows you to update a member's authorization code.

    The library utility is the place where SCLM makes its accounting information available to you. The accounting information comes in two parts: the accounting record, which is created when a member is locked, and the build map record, which is created when a member is built.

    The accounting record tells who updated the member, what language it is, when the member was last promoted, and lots of other information used by SCLM. It displays the statistics generated by the parser, such as how many comment lines and non-comment lines are in the member. You can display a list of all the change codes that have been used for the member, and you can delete any change codes you no longer need. If you want, you can look at the list of members that this member includes, or a list of compilation units, or user entries.

    The build map record contains general build map information, such as the language and language version, the name and type of the build map, and the date and time that the build map was created. If you choose to browse the build map contents, SCLM displays a list of all the members that are involved in the build of the selected member. There is a keyword to tell why the member was included, the member name, the type name, and the date and time the member was last modified.

  • Ada Sublibrary Management Utility

    Ada processing creates intermediate forms of compilation units. SCLM tracks intermediate forms of compilation units. The Ada sublibrary management utility lets you browse and delete the intermediate forms and the accounting records that track them.

  • Migration Utility

    The migration utility gives you all of the SCLM functions of the editor, but without the editor. The migrate function locks members, and assigns authorization codes and change codes to a member or group of members. Migrate parses members according to the language you specify.

    Migration is useful for introducing lots of members to SCLM at one time, as when first starting a project. Members can be migrated in batch or foreground mode. You can choose to have the migration stop processing as soon as a parser gets an unacceptable return code. You can choose to migrate members that already have accounting records, or you can have migrate keep the existing accounting records.

  • Database Contents Utility

    The database contents utility produces a report that is your window into the SCLM's view of your project. You use variables to design the report you want. You can select accounting records, build maps, or both. If you want, you can choose to see only records containing certain change codes, authorization codes, languages, or userids, or you can limit the report to certain hierarchies.

  • Architecture Report Utility

    The architecture report utility gives you information about all the components in your application. The first member of the report gives you a visual representation of the architecture structure. The second member of the report is a cross reference section that helps you determine the origin of a member.

  • Export Utility

    The export utility copies an image of the accounting database. Using the export utility, you can either archive your accounting database, or send it to another system.

  • Import Utility

    The Import Utility reintroduces an exported database into SCLM.

  • Audit and Version Utility

    The audit and version utility allows you to view SCLM audit records, retrieve a previous version of a member or delete an audit record and associated version. A version can be retrieved into an SCLM development group or a non-SCLM controlled partitioned or sequential data set.

  • Delete Group Utility

    The delete group utility deletes accounting records, build maps, or build outputs associated with a specified group

    .
Build Option

Build is the core of SCLM's configuration management. Build's job is to determine which members need to be translated, invoke the correct translators, and store the outputs in the correct libraries. One way SCLM saves processing time is to regenerate only the members that are effected by a change when a build is requested. A build translator can be a compiler, an assembler, a script processor, or anything else you can write a language definition for.

You can build a single member or an architecture definition. Architecture definitions let you define which members to build and how to build them. An architecture definition is a member of a library in the hierarchy. You write an architecture definition using a simple keywords. There is a model available from the edit MODEL command, in the ARCHDEF model class. The model gives the syntax of the valid architecture definition statements.

You can have builds that are one step, such as assembling a program to object, or you can have builds with many steps, such as, compile, link, and DB2 bind.

Build has several modes which allow you to build until you get an error, continue building even if you have an error, or build members that have already been built. Members can be built in batch or foreground mode.

Builds can take place on the host or on the workstation. SCLM is shipped with examples in the sample library to show you how to set up a language definition, and additional data sets to tell SCLM how to build on the workstation.

Promote Option

The promote function moves members from one level of the hierarchy to the next. You can promote a single member or an architecture definition. When you promote an architecture definition, the architecture definition and all of the members included by the architecture definition are promoted, including other architecture definitions.

If a member has changed since it was last built, the promote function stops and displays a message. This is how promote ensures that the outputs are synchronized with the inputs.

The project administrator can define groups to be key or non-key. When you promote from a non-key group, the members are copied from one group to the next. If you promote from a key group, the members are moved from the lower level into the higher one.

Promote has several modes which allow you to promote until you get an error, continue promoting even if you have an error, or promote members even if they have not been built. Members can be promoted in batch or foreground mode.

Command Option

The Command option has an input field where you can execute SCLM commands, REXX execs, CLISTs, or TSO commands.

Back to top




Extend SCLM's Development Environment

For people who want to use REXX, CLIST, or a programming language to work with controlled libraries, SCLM provides the following services:

ACCTINFO
Retrieves information about an SCLM controlled member into ISPF variables and tables
BUILD
Build a member
DBACCT
Retrieve accounting records for a member
DBUTIL
Generate a tailored report of the data base
DELETE
Delete database components
DELGROUP
Delete a group of database components
DSALLOC
Allocate a hierarchy view to a ddname
END
End an SCLM services session
EXPORT
Extract SCLM accounting information for a group
FREE
Free an SCLM ID
IMPORT
Import SCLM accounting information to the current project
INIT
Generate an SCLM ID
LOCK
Lock a member in a development library
MIGRATE
Create accounting information for selected members
PARSE
Parse a member for statistical and dependency information
PROMOTE
Promote a member from one library to another
RPTARCH
Generate an architecture report
SAVE
Lock, parse, and store a member
SNAPSHOT
Extract SCLM control information and populate Repository Manager
START
Generate an application ID for a services session
STORE
Store member information in an accounting record
UNLOCK
Unlock a member in a development library
VERDEL
Delete version information
VERINFO
Retrieve version information
VERRECOV
Recover a version

Most of these services are the same as functions available from SCLM panels, or are subsets of functions.

Back to top




Define SCLM Projects

If you are a project administrator, SCLM provides you with assembler macros to allow you to define the project for your users. When the project definition is assembled and linked, SCLM uses it to determine information it needs to perform the actions you request.

Some macros define the hierarchy. They tell SCLM:

  • project name
  • what groups are in the hierarchy
  • which group each group promotes into
  • which authorization codes allow promotion into which groups
  • which types are in the hierarchy
  • if a member is not found in a given type, which other types to search.

Some macros tell SCLM how to build applications. They define information such as:

  • language name
  • name of the translator to invoke
  • library where the translator is located
  • which version of the translator to invoke
  • translator options
  • which data sets to allocate to which ddnames
  • where included members are located
  • libraries necessary for processing, but not controlled by SCLM.

Then there are the macros that specify control information for SCLM. They specify:

  • whether to perform auditing and versioning
  • what VSAM data sets to use for the accounting database
  • whether to have secondary accounting databases
  • if any alternate control information is needed for a particular group
  • what DASD unit to use.

Back to top




SCLM Features

Whether you use SCLM for developing new products, maintaining existing products, or storing vendor code, SCLM provides the functions you need to manage your libraries. SCLM's features help project administrators to structure the hierarchies, programmers to perform day-to-day development and maintenance tasks, and auditors to track changes.

Back to top




Develop a Software Product

Develop software components

Since SCLM is part of ISPF, it is easy for those who are used to using ISPF to use SCLM. The concept of concatenated libraries in ISPF, which are evident on the entry panels for edit, view, and many other options, is consistent with SCLM's hierarchical approach to library management. The SCLM panels are consistent with ISPF's user interface, which means that developers do not have to waste precious time learning something new. When you develop members in SCLM, you use ISPF's editor with a few added features to support library and configuration management. In fact, SCLM makes direct use of ISPF's browse, view, and edit functions, so that developers who are used to ISPF have no trouble learning to use these parts of SCLM.

Convert an existing application to SCLM control

Whether your application is "out-of-control" or you are migrating your application from another library management system, you can use a utility to put your members under SCLM control. SCLM's migration utility sets the initial controls for members and parses the member according to the language you specify.

Back to top




Manage Libraries

Lock members

The basic function of a library management system is to control updates to members. If one developer is updating a member, no other developer else is allowed to update it until the first person is done. This function, called member locking, provides source member control in SCLM.

Promote members

Another issue in source member control is defining how members are moved within the hierarchy. SCLM allows project administrators to define hierarchies that have as many developers and as many levels as storage allows. In SCLM, members are moved by means of promotion. Promotion moves a member from one level of the hierarchy to the next, according to how the project administrator has defined the hierarchy.

Back to top




Configure Your Applications

Build members

SCLM can build your members for you using translators that you specify. Some examples of translators are:

  • compilers
    • PL/I
    • COBOL
    • Pascal
    • C
    • REXX
  • BookMaster
  • Dialog Tag Language

SCLM offers examples to show how to invoke many common languages. These can be modified to use different data set names, compiler options, or compiler names. If you need a language that is not provided, you can add your own, using one of the examples as a starting point.

Relate Members

You can define how members relate to each other, using SCLM's architecture definitions. Architecture definitions allow you to relate all kinds of members, so they can be built and promoted as a group. For example, if you are adding new function to your application, you might want to have your source code, object, load, DTL source, generated panels, messages, design documentation, and user documentation for the new function all in one architecture. On the other hand, you might want to have all of your source parts in on architecture, so that if you change a member that is included in most of the source members, you only have to build that one architecture. The same member can be included in more than one architecture definition, leaving you flexibility in how you build your application.

Synchronize Related Members

During development, there are many times that you want to group members together. For example, if you have source members that you compile and link, you would want to make sure that the source, object, and load were promoted together. SCLM keeps track of which members were inputs and outputs to a build, and when you promote the source, the object and load are promoted automatically.

Inputs and outputs can be tracked for members that are not programs. Documents that are build from BookMaster source can be stored in SCLM. So can Dialog Tag Language output. When the input member is promoted, the output member is automatically promoted, too.

Ensure Integrity

SCLM's member synchronization ensures when you build your application that all of the members are synchronized. If a member changes, SCLM ensures that when you build the architecture that defines your application, all of the source, object, and load modules reflect that change.

Build only the Members that have Changed

SCLM keeps track of which members have changed. When you build a member, SCLM only performs the translation if the member has changed since the last time SCLM built it. If you want to rebuild a member that has not changed, you can opt to build in forced mode.

Build Subsystems

Architecture definitions allow you to define not only the big picture, but the smaller details as well. You can break your application into subapplications, each of which can be built individually. This can save a lot of time for large applications.

Track Included Members

SCLM tracks included members, so that if a source member has an included member which is changed, the next time the source member is built, the translation will take place. If you try to promote a member which includes a changed member, SCLM displays a message if you haven't built since the member was changed.

Back to top




Use Different Translators

Define Languages

SCLM supports different programming languages by use of language definitions. Language definitions allow you to specify the details of how the build will take place. You can specify which translator will be invoked, which ddnames will be allocated to which data sets, and which default parameters are to be used during the build.

Parse Members

When you create a member, you specify which language definition to use by associating the member with a language name. In the language definition, you can specify a parser to be used by the editor when the member is saved. The parser collects statistics about the member and creates a list of included members so that SCLM will be able to track them at build time. To see the statistics created by the parser, use the library utility.

SCLM provides sample parsers in the sample library for many common programming languages, such as assembler, COBOL, and C.

Use Special Languages

SCLM includes special processing for Ada, with the sublibrary management utility, intermediate record processing, and the concept of scope. There is a cross reference data set that you can use to track Ada cross reference information. Jovial is supported through compilation unit processing. A member's compilation units can be browsed using the library utility.

SCLM can also be used to control Cross System Product (CSP) outputs, even though CSP members cannot be developed within SCLM.

Back to top




Process Dependencies

When the project administrator defines the languages for a project, a parser is associated with the language. Then, when the member is created or migrated, the developer associates a language with the member. The parser is invoked when the member is saved.

SCLM uses the parser to determine which members are dependent upon which other members. SCLM can track nested dependencies, so that if a member includes another member which includes another member which gets changed, all of the members that include it get translated when a build is requested. If you want to see the dependencies SCLM is tracking, you can use the library utility to view the list of included members.

Back to top




Use workstation tools to develop applications

Use workstation editors

SCLM, because it uses ISPF's edit interface, allows you to use a workstation editor of your choice to create and change members. The members are kept in the SCLM-controlled libraries on the host. SCLM locks the member and downloads it to your workstation for you. When you are finished with your changes, SCLM uploads the member and deletes it from your workstation.

Build applications on your workstation

If you want to compile your application on your workstation, you can create a translator that will do that. SCLM provides a sample translator in the sample library that you can follow. SCLM copies all of the members necessary for the build to your workstation. Then SCLM invokes the translator, and copies the output files back to the SCLM-controlled host libraries. SCLM can be used to invoke a workstation translator with a command line interface.

Back to top




Manage Changes

Use change codes

Change codes are a set of characters that you can associate with a member. These change codes can be used for tracking changes. It is common to use problem numbers as change codes to provide a link between your problem management system and SCLM. You can assign a change code to a member using the editor or the migration utility. The library utility allows you to delete change codes, if you want.

Track change codes

One of the many pieces of information that you can get from the database contents utility is the change code. If you want a report on every member in the hierarchy that has a particular change code, you can use variables to create that report.

Verify change codes

SCLM provides a Change Code Verification exit, which allows you to prohibit promotion of members unless the change code associated with the member meets whatever criteria you set.

Use Information/Management with change codes

Information/Management is an IBM software product consisting of an integrated set of tools and services for customizing and automating your: help desk or call center, problem management, change management, and configuration management.

SCLM provides a sample in the sample library to show how to link SCLM's change codes and Information/Management.

Merge changes

Occasionally, developers have to merge their changes with changes made by other developers. When this happens, the edit COMPARE command is invaluable. Using the COMPARE command, you can see what changes you made, what changes the other developer made, and what remains the same. Simple edit line commands are all that is needed to bring the other developer's changes into your library.

Back to top




Get information about your application from SCLM

Information about SCLM's view of your data is available in a variety of places.

Report the database contents

If you want information about the structure of your hierarchy, the statistics of individual members, the dates and times when builds and promotes occurred, or almost anything else SCLM tracks in the accounting database, you can use the database contents utility. The database contents utility provides variables which allow you to produce a report with whatever information you choose.

Report the architecture

The architecture report utility allows you to report on the structure of your architecture definitions. The report gives you a complete list of the application components. The report indents each architecture definition name and source member name under the name of the architecture definition or source member which included it.

Report the migrate, build, and promote processing

The migrate, build, and promote functions all create reports to describe what each of the functions did. The reports contain a heading which shows the input to the function. The body lists each member that was processed and the result.

Back to top




Multiple developers editing the same member at the same time

Often, more than one developer has to change a member. For example, an information developer might be editing some text on a panel which needs a technical change by a programmer.

Prevent developers overlaying each other's changes

SCLM allows two developers to make changes at the same time without overwriting each other's work by means of authorization codes. The project administrator determines what authorization codes allow promotion into which libraries. If someone has a member locked, another developer can edit a copy of that member using a different authorization code. When the first person completes their changes and promotes the member, the second person can change the authorization code, merge the changes using the edit COMPARE command, and promote the member that contains both sets of changes.

Back to top




Emergency fixes

Alternate project definitions

If something goes wrong with an application in the production library, you want a way to get your fix into production as quickly as possible. SCLM has a concept of an alternate hierarchy. A project administrator defines an alternate hierarchy by means of an alternate project definition.

An alternate project definition for emergency fixes is typically identical to the project definition that is used all the time, except that the promotion hierarchy allows selected developers to promote directly into the production library.

A typical scenario for an emergency fix would involve a maintenance developer, who is keeping the production libraries running, and a release developer, who is adding new function for the next release. The maintenance developer edits the part using the alternate hierarchy, and then promotes the part back into the production library. If the member that needed to be changed is locked in the release developer's library, the maintenance developer can update and promote the member by changing the authorization code in the library of the release developer. SCLM prevents the release developer from overwriting the emergency changes. SCLM notifies the release developer when an attempt is made to promote the member up the release hierarchy. The release developer can lock the member again with the original authorization code, and merge the emergency fix with the new function, using the edit COMPARE command.

Back to top




Manage multiple releases

It is common for a product to have more than one release in development at a time. Sometimes the same members need to be available for both fixing errors in an application, and adding new function for a future release. SCLM supports developing multiple releases in a variety of ways.

Alternate Project Definitions

Alternate project definitions, in addition to emergency fixes (as explained in "Emergency fixes"), can be used to define hierarchies where developers can work on more than one release.

Multiple hierarchies

It is often easiest to define a new hierarchy for each release of the product. When a product goes into production, the project administrator can define a new maintenance hierarchy, using the production code as the base. When developers make changes to the maintenance hierarchy, they can roll the changes into the development hierarchy as well, using the edit COMPARE command.

Back to top




Impact analysis

Build and promote in report mode

With large projects, building and promoting your application can take a long time. You might want to be able to determine how big a job is going to be before you actually do it. Both build and promote allow you to execute in report mode. This means that you get a report which tells what would have been built or promoted, without the actual overhead of doing it. For example, if you change a copybook that is included in lots of members, building the application in report mode can tell you how many members will be rebuilt.

Delete Group in Report Mode

The delete group utility deletes groups of members, accounting records, build maps, or build outputs. Since there is risk of accidentally deleting something you do not intend to delete, the delete group utility defaults to report mode, so you can make sure you delete only the components or accounting information you want.

Back to top




Manage risk when integrating software members

Sometimes there are changes that you know have the potential to break your application. If something goes wrong, it could slow down the whole project. SCLM lets you isolate the risk by using an alternate project definition with a primary non-key group.

Manage high-risk changes with primary non-key groups

To define a primary non-key group, the project administrator defines an alternate project definition. It matches the base project definition, except that there is a primary non-key group that a subset of the developers promote into. This library is in the path of only the high-risk developers. Since the group is non-key, when the developers promote individual changes for integration testing, the members are not moved from their library. They are still locked, so that other developers are aware that changes are in process. Anyone who wants to test the high-risk changes can allocate that library. The others can continue their development without interference.

Back to top




Back out fixes

Every so often, someone makes a change that turns out to be unwanted. In that case, it is helpful to have a method of removing the change from the hierarchy.

Keep previous versions of your code

SCLM allows you to keep previous versions of editable members in partitioned data sets. You can keep versions of members for whichever groups and types you specify. If you need to go back to a previous version, all of the information is there. You can specify how many versions to keep for each group and type. Versions can be retrieved into the hierarchy, or into a sequential or partitioned data set.

SCLM maintains versions in reverse delta format. Reverse delta format means that your source code is stored at the current level, and in order to go back, changes are removed in the reverse order they were applied. Reverse delta design means increased performance when members are edited and built, since changes do not have to be reapplied every time the member is used.

Backup your project

SCLM offers promote exits. From within an exit, you can copy the member that is being promoted to a backup library.

Archive your accounting information

The export utility saves your accounting information for your project. You can archive your data sets and accounting information to create a complete package containing all current information about your application. If you need to reintroduce the exported accounting information, you can use the import utility.

Back to top




Recover from system problems

Backup the accounting database

One of the features of the project definitions is the ability to have a secondary accounting database. If you specify a secondary accounting database on a different volume from your primary accounting database, SCLM automatically synchronizes the databases. If disaster strikes, you can REPRO the primary database from the secondary database, and continue work on your project.

Back to top




Audit changes

Track changes made in SCLM

Auditing, in SCLM, means that you can keep track of who makes changes to which modules at what time. The auditing information is kept in the VSAM database. To view the audit trail, use the audit and version utility or the VERINFO service.

Back to top




Develop SCLM controlled members outside of SCLM

Use SCLM services

SCLM provides a variety of services to help with your library configuration and management tasks. Most things that you can do from the SCLM panels can also be done through the SCLM services. For example, you can BUILD, PROMOTE, EXPORT, IMPORT, and MIGRATE, using SCLM services.

The services provide the ability to use editors other than the one provided by SCLM's edit option. For example, using the PARSE, LOCK, and STORE parameters with another editor gives you the same function, from SCLM's point of view.

Back to top




Propagate applications to other systems

Use exits to send your application to another system

You can define a promote exit to send members to another system when they are promoted. After the members are received, you can use the migrate utility to introduce them to SCLM on the other system.

Export and Import your applications

If you have an application under SCLM on one system, and you want to move it to another system, SCLM has the Export and Import Utilities to help you. Export captures your accounting information for you. Then you can send it to another system or archive it. If you send it to another system, the import utility puts the accounting information into the current project on that system.

Back to top




Project security

Secure your data

SCLM lets you use standard partitioned data sets (PDSs) and extended partitioned data sets (PDS-Es) to store your application. To secure your data sets, use a security package such as RACF.

Different levels of the hierarchy might require different levels of access. For example, your hierarchy can have an integration level, which all developers can change, but have the higher levels only accessible for update by the project administrator, and perhaps a backup administrator.

Define VSAM databases

To keep your VSAM accounting database secure, you can define separate VSAM data sets for each group of the hierarchy. Each of the data sets can be protected separately. You might have more security for the database at the higher levels of the hierarchy.

Back to top




Select your processing mode

Batch or Foreground

SCLM supports many of its functions in both batch and foreground modes so each user can select the mode that they prefer. The utilities (migration, database contents report, architecture report, import, export, and delete group), build, and promote, all allow you to choose either batch or foreground processing.

Back to top




Customize SCLM

Exits (change code verification, build, and promote)

To support your development process, you can take advantage of the exit points offered throughout SCLM.

  • A change code verification routine is called by SCLM when a developer attempts to update a member. The routine might verify that the change code provided by the developer is correct, create a defect or feature record in an information database, or notify other users of the change activity.
  • The build exit routine is called at the end of the build. It may be used for logging information or notifying others of the build activity.
  • The first promote exit routine is called after the promote verification phase. It can be used for saving members in the "to-group" to a private data set before the copy operation, stopping the promote at this point, or notifying other users of the promote activity.
  • The second promote exit routine is called after the promote copy operation. It can be used for logging information about the copied members, copying the promoted members to a backup library, stopping the promote at this point, or notifying other users of the promote activity.
  • The third promote exit is called after the promote purge activity. It can be used for logging information or notifying others of the promote activity.
User entries

If you have some particular information that you want stored with the member, SCLM provides User Data Entry fields. You can input the data through the BUILD service, and you can view the data from the library utility.

Back to top




Name your data sets

Use flexible data set names

Sometimes system requirements do not allow you to use standard three level ISPF library names. In that case, you can use SCLM's flexible data set name feature, which maps your data set name to an ISPF library name. The SCLM panels show the ISPF library name, but all of the processing is done with the physical data set name. If you want to see the physical data set name that SCLM is using, you can view the accounting record from the library utility.

Back to top




Keep track of your application

VSAM accounting database (accounting record, build map record)

SCLM accounting information is stored in a VSAM database. The database contains information about the members, such as who has it locked, when it was last promoted, when it was most recently changed, and much more. There is also a build map record that contains the include information, so that SCLM can track included members.

No footprints left in your application

SCLM does not alter your application in order to track it. It leaves no footprints. All of the information that it needs is stored in the accounting database and project definition load module.

Back to top




Manage Vendor Code

Manage user modifications to SMPE installed products

SCLM can be used to manage the user modification and customization of the tables, panels and other "source" type data that is shipped along with an SMP installed product. The customization of a new release can then be done in a controlled manner and becomes much simpler. The edit COMPARE command is a great asset in merging your changes into the next release.

Manage object and load modules without source

SCLM can be used to manage object and load modules received from a vendor or another group within your organization. It can also be used to manage your own applications for which source is no longer available.

Back to top




Frequently Asked Questions

  1. Q: What is the direction of SCLM?

    A: SCLM is considered by many users to be a powerful, yet flexible, software configuration and library manager for MVS. SCLM will continue to be enhanced to benefit customers who have heavy investment in the MVS mainframe for managing their application development. SCLM requirements are addressed and prioritized along with the other ISPF requirements to help customers increase the value of their mainframe investment while extending product capability into the client/server world. We will continue to consider additional SCLM capabilities that are in line with customer needs and IBM software strategy.

  2. Q: Does SCLM guarantee YEAR 2000 compliance?

    A: Yes. OS/390 Release 2 of SCLM and all later releases are Year 2000 enabled. PTFs to provide Year 2000 support for SCLM 3.5 and 4.2 are available.

  3. Q: What has changed in SCLM in the last 2-3 years?

    A: Significant enhancements were made to SCLM in ISPF Version 4 and OS/390. Some of the highlights include:

    • Year 2000 enablement
    • workstation edit, view and build support for the ISPF client environments
    • build and promote by change code
    • library utility extensions
    • versioning enhancements
    • services for versioning and auditing (VERINFO, VERRECOV, VERDEL)
    • performance improvements
  4. Q: How often do you provide upgrades or product enhancements?

    A: ISPF is now part of OS/390. OS/390 plans to make new releases available every six months. SCLM enhancements might or might not appear in each of these releases.

  5. Q: Is IBM's SCLM group receptive to software enhancements requested by clients?

    A: SCLM has been continuously improved since it was first introduced as part of PDF Version 3. Future enhancement decisions will be made based on how well they support the direction of SCLM, the pervasiveness of the requirement, its priority in relation to other SCLM and ISPF requirements, and available resources. We cannot do everything, but we try to be as responsive as possible.

  6. Q: What operating systems does SCLM support? (e.g. MVS/ESA-JES2, Windows, OS/2)

    A: All application data controlled by SCLM is stored in partitioned data sets on MVS. The tools invoked against this data at edit, view, or build time can reside on MVS or any of the ISPF-supported client environments (OS/2, Windows, AIX...).

  7. Q: Does SCLM function across multiple CPU's?

    A: SCLM does not currently support the sharing of its VSAM control information. Support for multiplex environments is a high priority requirement. We are currently working on this and expect to provide this support through the use of DFSMS 1.3 record level sharing. Some customers are using a Computer Associates product called MIM to allow the VSAM sharing today.

  8. Q: Does SCLM function online and in batch?

    A: Most SCLM functions such as build, promote, and migrate are available from foreground or batch.

  9. Q: Is SCLM compatible with ISPF and TSO?

    A: Yes. SCLM is a component of the ISPF product.

  10. Q: Are there any inconsistencies or conflicts with other features we might use?

    A: We use SCLM to manage the development of ISPF and the maintenance of the PDF and SCLM components. We have not found any inconsistencies or conflicts between the way SCLM and the rest of the ISPF product works. In fact, many of the functions that you are used to using in ISPF, such as browse, view, and edit, are exactly the same as their ISPF counterparts. SCLM edit is ISPF edit with the addition of member locking. You still have the same edit primary and line commands (including the COMPARE command), and edit macros that you have available when using ISPF Edit. SCLM workstation build is built upon the ISPF Client/Server support and services such as WSCMDV and FILEXFER.

    We haven't found any inconsistencies or conflicts between SCLM and any of the other products that we are using either.

  11. Q: Does your product store components in a format that can be accessed by other common MVS tools and utilities such as SAS, FILE-AID and the ISPF editor?

    A: Yes. SCLM does not use any proprietary file structures. All application data is stored in partitioned data sets. All SCLM control information is stored in VSAM databases. SCLM uses ISPF's edit and view functions. Editing of an SCLM-controlled member from outside SCLM can be allowed or forbidden, based on an ISPF configuration table option.

  12. Q: What are the product limitations?

    A: SCLM only directly manages application data stored in partitioned data sets. Other data, for example CSP MSLs, are handled through the use of specialized translators.

  13. Q: Did IBM develop this product? Are the primary developers of your product still employed by IBM?

    A: Yes. SCLM was first developed by the old IBM Federal Systems division and was used to manage the development of their software before it was first introduced as part of the ISPF product. Primary developers of SCLM are still employed by IBM with ISPF and other product areas.

  14. Q: Do SCLM developers use a configuration management tool? Do you use your product to develop your new releases?

    A: SCLM has been used to manage its own development and maintenance since it was first introduced as part of the ISPF product. It has been used to manage the development of ALL of the host components of ISPF since Version 4.

  15. Q: What training, support, and documentation is provided on SCLM?

    A: IBM offers an SCLM Implementation course, which teaches you the basics of SCLM. For information on the latest course offerings and schedules, in the United States call 1-800-IBM-TEACh (1-800-426-8322). IBM also offers services to help you get started or to help you migrate from another configuration management system. See "For Additional Information" to find out how to contact ISSC (Integrated Systems Solutions Corporation) to set up consulting services. SCLM is very active in the SHARE IBM User Group. Four SCLM sessions were offered at the last conference in New Orleans, including two hands-on sessions on setting up and using SCLM. Three technical manuals and several Redbooks and Technical Reports are available. The Redbooks and Technical Reports can be ordered or downloaded from the World Wide Web. (See "For Additional Information" for details on how to visit our web site.)

  16. Q: Is access to an implementation and installation specialist available during the initial implementation phase?

    A: Yes. See "For Additional Information" for information on contacting ISSC about consulting services available for SCLM.

  17. Q: Does SCLM require 100% implementation in order to enjoy its benefits and features or can SCLM use a phased-in approach to implementation?

    A: SCLM can be implemented in a phased manner, for instance, one application at a time. This is actually ideal in the beginning as it allows you to refine the definition of your project to best match your processes. Once the first project is working the way you want, you can copy the project definition and modify it to support additional applications or releases.

  18. Q: What skills, tasks, and time are required to perform implementation tasks?

    A: The amount of time required for full implementation will vary according to the customer environment and skills. IBM ISSC consulting services would be the best ones to estimate this effort for your shop. During the implementation phase, you will need someone with knowledge of both systems and applications as well as the development and maintenance processes you currently use or wish to implement.

  19. Q: Once set up, how much ongoing administration is needed?

    A: This will vary by customer and environment, but in general, very little. SCLM project design is modular. Making modifications is very easy. We have one full-time developer that maintains our projects, creates new ones as needed for a new release, and performs our builds and promotes at the higher groups in our projects where RACF prevents other developers from updating the libraries. All of this takes less than 2% of his time; the rest is spent on development.

  20. Q: Is technical support available 24 hours a day, 7 days a week?

    A: SCLM customers are entitled to the standard IBM host software service support: 7 days a week, 24 hours a day for severity 1 problems, 8 a.m. - 8 p.m. Monday through Friday for all other problems.

  21. Q: Do you currently have an established User Group? Please supply contact information.

    A: ISPF participates in both the SHARE and GUIDE user groups. SCLM is particularly active at the SHARE conferences. For information on SHARE, call 1-312-822-0932 or visit their web site at http://www.share.org. Information on GUIDE is available at 1-312-245-1599 or http://www.guide.org.

  22. Q: Do you have some customer references who are successfully using SCLM? Have any references switched to SCLM because their current configuration management system failed?

    A: You can contact our SCLM development manager or ISSC for customer references. (See "For Additional Information" for details.) You are welcome to talk to the references directly about their reasons for moving to SCLM.

  23. Q: What do I need to think about when deciding whether to use SCLM, TeamConnection, or both?

    A: Both SCLM and TeamConnection support the development of client/server and distributed applications on MVS, OS/2, and Windows.

    SCLM is a host-driven library and configuration management system. All data is stored on MVS. All builds, even workstation builds, are initiated from the host.

    TeamConnection integrates software configuration management function services and object-oriented repository services. It can be configured as stand-alone, or in LAN-based client/server mode. TeamConnection supports the development of OS/2 or Windows and MVS client/server and distributed applications.

    TeamConnection commands can be issued using ISPF services on MVS for command execution on supported workstations. In addition, TeamConnection commands can be included in SCLM build definitions so that SCLM and TeamConnection Builds can be synchronized.

    The following table shows some of the things you might want to consider when deciding which IBM software configuration management solution to use.

    Figure 3. Choosing SCLM or Team Connection

    Points to Consider Try Using
    Your project is developed exclusively on the mainframe. Your application is based on TSO, DB2, COBOL, PL/I, etc. SCLM
    Your project is developed exclusively on the workstation. Your developers are all experts in LAN and workstation development tools. TeamConnection
    Your project is a distributed or client/server application, involving both host and workstation components. SCLM, TeamConnection, or both
    You want to store your application on the host. SCLM
    You need electronic signatures, and are not willing to write and maintain exits to get this function. TeamConnection
    You need electronic signatures, and are willing to write and maintain exits to get this function. SCLM, TeamConnection, or both
    You want to track members against defects and features, and are not willing to write and maintain exits to get this function. TeamConnection
    You want to track members against defects and features, and are willing to write and maintain exits to get this function. SCLM, TeamConnection, or both
    Your application needs to interface with VisualAge, VisualAge Generator, PACBASE/CS, or DataAtlas. TeamConnection

    For more information about TeamConnection, visit their web site at http://www.ibm.com/software/awdtools/teamcon/.

Back to top




For Additional Information

For additional information about SCLM, you can:

  • Visit our web site. It is easy to find from the ISPF web site at http://software.ibm.com/ad/ispf. There is lots of information including Redbooks and presentations from GUIDE and SHARE. (If you do not have access to the web, ask your IBM representative to get the information from marketing tools.)
  • Participate in our various fora. ISPF CFORUM is available for customers, and there is an SCLM FORUM which your marketing representative can use on your behalf to ask questions or share information about SCLM.
  • Read the ISPF newsletter. It has lots of articles about SCLM. To get on the newsletter mailing list, do one of the following:
    • fax a request to 1-919-254-4914
    • call 1-800-IBM-2468 (1-800-426-2468).
    • write to Diann King, IBM Corp., P.O. Box 12195, Research Triangle Park, NC 27709-2195
    • send email to Diann King at monarc34@raleigh.ibm.com
  • Hire a consultant. If you are ready to begin using SCLM and would like some help getting started, call Peter Smith in ISSC at 1-919-254-7830.

Back to top




Conclusion

SCLM is a library manager and a configuration manager rolled into one. It provides the features project managers need to control their projects. It is easy for developers to use, because it is based on ISPF. It is easy to justify purchasing it, because it comes free with ISPF!

Back to top




Glossary

architecture definition
An architecture definition is a means of organizing components of an application into conceptual units. It is SCLM's method of defining an application's configuration. It describes how the components of an application fit together and is used to drive both the build and promote functions. Architecture definitions are used to group components into applications, sub-applications, and load modules.
authorization code
An authorization code is an identifier used by SCLM to control the authority to update and promote members within a hierarchy. These codes can be used to allow concurrent development without the risk of module collisions (overlayed changes).
build
Build is the process of transforming inputs into outputs through the invocation of translators specified in the language definition. Compilers, preprocessors, and linkage editors are examples of translators that might be invoked at build time.
change code
A change code is an eight-character identifier used to indicate the reason for an update or modification to a member controlled by SCLM.
component
A component is any input or output member associated with an application, which together make up all or a member of the application.
concurrent updates
Concurrent updates occur when two programmers update the same member at the same time. This is supported through the use of authorization codes and the Edit Compare tool or alternate project definitions.
configuration
A configuration is a relationship between software components.
CSP
Cross System Product
dependency
Dependency describes a relationship between a source member and the members it includes. A source member has a dependency on a member which it includes.
development group
All groups in the lowest level of the hierarchy are known as 'development groups'. These groups represent end-nodes with no other lower groups promoting into them.
draw down
During edit, SCLM copies the member from its first occurrence in a key group in the library concatenation into a development group and locks it.
hierarchy
A hierarchy is an organization of libraries where each library is subordinate to the one above it.
ISPF
Interactive System Productivity Facility
ISSC
Integrated Systems Solutions Corporation
language definition
A language definition specifies the set of translators to be executed for SCLM functions PARSE, VERIFY, BUILD, COPY, and PURGE. A language definition is composed of one FLMLANGL macro followed by an FLMTRNSL macro for each translator to be executed for members of SCLM libraries whose language attribute matches the value of the LANG keyword in the FLMLANGL macro.
level
A level is a set of libraries representing one tier of a hierarchy.
lock
When a user locks a member, only that user can change it. All other users are unable to change that member until the member is promoted or unlocked. When you lock a member, you specify an authorization code. If two users need to change a part, they can use different authorization codes.
migration
Migration is the process of introducing members into SCLM control. Migration locks the member, parses it according to the requested language, and stores the information in the accounting database. You can use the migration utility to enter a large number of members into a project's database, such as during conversion to SCLM.
nested dependencies
Nested dependencies occur when a source member includes another member, which in turn includes another member. SCLM tracks nested dependencies, so that when a member changes, any member that includes it is rebuilt, no matter how many levels of nesting there are.
parser
A parser is a program that reads an editable member to determine dependency and statistical information about the member. This information is stored in the SCLM accounting database.
PDF
The Program Development Facility component of ISPF.
project
A project is a collection of libraries representing an integrated SCLM database, under a single high-level qualifier.
project definition
A project definition defines the SCLM library structure, project control information, and language definitions. A project definition is a load module used by SCLM at run time. The source code for a project definition is composed of macros.
promote
Promote is the process of moving an application or its components from one level in the project hierarchy into the next. Promotion out of a development group removes the lock on editable members that were successfully promoted.
RACF
Resource Access Control Facility
SCLM
The Software Configuration and Library Manager is a component of the ISPF product. SCLM was first introduced in ISPF/PDF Version 3 Release 1.
translator
A translator is a load module, CLIST, or REXX program that receives control from SCLM for execution. The name of the translator is specified as the value of the COMPILE keyword for the FLMTRNSL macro. Examples of translators are compilers, assemblers, linkage editors, text processors, DB2 preprocessors, CICS preprocessors, utilities, and customer tools.
version
A version is a copy of a member as it existed at a previous point in time.
versioning
Versioning is a function that allows you to retrieve a version of a member. Versioning is useful for backing out changes.
VSAM
Virtual Storage Access Method.

Back to top




Trademarks and Service Marks

The following terms used in this publication are trademarks or service marks of the IBM Corporation in the United States or other countries:

  • AIX, BookMaster, CICS, DB2, DFSMS, Integrated Systems Solutions, IBM, ISSC, MVS, MVS/ESA, OS/2, S/390, Repository Manager, RACF, TeamConnection, VisualAge, YEAR 2000

The following terms and phrases used in this publication are trademarks or service marks of other companies:

  • Windows (Microsoft Corporation)
  • SAS (SAS Institute, Inc.)

Back to top