Default language.

Information
Space announcement This documentation space provides the same content as before, but the organization of the content has changed. The content is now organized based on logical branches instead of legacy book titles. We hope that the new structure will help you quickly find the content that you need.
Information
Space announcement To view the latest version of the product documentation, select the version from the Product version menu above the navigation pane.

Code Pipeline Troubleshooting


This section describes potential problems that can be avoided, as well as ongoing support issues. According to past experiences with various sites running Code Pipeline, a number of situations have been found. They should be either avoided or monitored to reduce the potential number of support problems. The following situations are described in this section.

Code Pipeline Support Versus ISPF Support

Because Code Pipeline is closely linked with ISPF, any changes to ISPF could affect Code Pipeline. If the same person or group is not supporting both products, there are potential problems if ISPF is upgraded without the corresponding changes to Code Pipeline.

Things to Watch Out For

Changes to the ISPF primary option menu or the Printoff or Script invocations. You may need to change:

  • The Code Pipeline primary menu to pick up the new ISPF invocations.
  • M.ER options for the Printoff (3.6) calls.
  • The Z functions list on the main menu, if you are using that option, via M.CZ or M.CO.

Recommendation

Code Pipeline should either be supported by the systems programming group, or the Code Pipeline support staff should be party to regular change control meetings to anticipate any impacts.

Code Pipeline Support Versus Other Program Products

Further to the point above, Code Pipeline interfaces to many technologies at any site, which undergo regular upgrades.

Things to Watch Out For

Changes to any of these products that are under the Code Pipeline umbrella. Most of the time, these changes are transparent to Code Pipeline, but you should check with us if unsure of the impacts. See the Code Pipeline Interfaces Guide chapter on new versions and their implications.

Recommendation

Code Pipeline should either be supported by the systems programming group, or the Code Pipeline support staff should be party to regular change control meetings to anticipate any impacts.

Upgrades to Compile Procs

In the planning phase, we discussed how the compiles are going to be installed and supported, and the “Skels only” approach versus the “Procs and Skels” approach.

If you have chosen to keep the Compile Procs separate from the Skels, there are potential synchronization problems.

Things to Watch Out For

Watch out for changes to the Compile Procs that may affect the Code Pipeline Skeletons. It is possible that the skeleton itself will need to be changed.

Recommendation

Code Pipeline should either be supported by the group responsible for the compiler interfaces, or the Code Pipeline support staff should be party to regular change control meetings to anticipate any impacts.

Code Pipeline and Migrated Datasets

Data sets used by Code Pipeline may be migrated based on a site’s storage management policies. Code Pipeline is unaware of the status of these data sets. Code Pipeline uses a variety of functions that may cause a migrated data set to be recalled. The expectation is that this occurs synchronously in the background.

Things to Watch Out For

There are several products that perform storage management. These products can be configured in various ways. This may include manual intervention for recalled data sets. 

BMC AMI Storage FDR

performs storage management functions. If you are using 

FDR

and have it configured for foreground recall of migrated data sets, the JCL for Code Pipeline started tasks will need updating.

Recommendation

You will need to add the following DD statement to the SX, RX, and FX procedures. Refer to the

BMC AMI Storage FDR

User documentation for complete information. Search for ABRSYNCH to find the details.

//ABRSYNCH DD DUMMY

Multiple Component Types Using the Same Libraries

Generally, one set of libraries can be used for many Component Types if they all have the same dataset format (for example, 80 bytes, fixed). This works well for such types as COB, JOB, COPY, etc. If this is the case, Component Domains should be set up to prevent these different component types from using the same name. A component name has to be unique across component types because they are sharing the same libraries. See Maintenance-Functions for more information on setting up Component Domains.

Error
Warning

If a Component Domain is not set up, 

Code Pipeline

 processing may fail on the copy operation when it checks whether a component with the same name already exists in the target library. Also, this check is only performed for cycle component types. If shared libraries are used for a mixture of cycle types and non-cycle types, because no check is performed, component data at the TEST level may be deleted.

Maintenance Guidelines

Code Pipeline base software is delivered and maintained using standard z/OS product installation processes (SMP/E).

Upgrading a Code Pipeline environment involves additional considerations compared to typical z/OS products. To meet the specific requirements of each customer, Code Pipeline supports extensive configuration and customization. There will also be multiple Code Pipeline environments: at a minimum, one “test” and one “production” environment.

The SITE application is provided as the default mechanism for maintaining local customizations. New major versions of Code Pipeline, as well as any single PTF, may contain changes to components that have been placed and/or updated in the SITE application.

As part of any Code Pipeline implementation, the process by which product changes are applied to each Code Pipeline environment should be established. The Code Pipeline Administrator plays an important role in this process. They will need to verify whether any PTF or new version of the base software requires updates to the SITE application. The Code Pipeline Administrator and the z/OS product installer will need to coordinate their respective tasks in order to make those product changes active in each Code Pipeline environment.

A major upgrade may require going through the product installation process. The process to check for changes required to the SITE application is similar, whether it’s a completely new set of base software or a single PTF.

General Guidelines for Applying Product Updates

Local procedures for managing Code Pipeline updates should have been established as part of the initial Code Pipeline implementation. The training given to new Code Pipeline Administrators should cover their role and required activities when implementing Code Pipeline product updates. This will vary according to the established local procedures. The information in this section is intended only as a general guide. It is important that any Code Pipeline maintenance activity adhere to locally-established procedures.

The group or service provider responsible for the Code Pipeline z/OS product installation will receive and apply the base software updates. Typically, the base software datasets managed by SMP/E will not be used directly by your Code Pipeline environments. This will depend on the process adopted for managing Code Pipeline base software updates.

For each new version or PTF, the Code Pipeline Administrator will need to follow a process that includes:

  • Checking for the existence of any SITE versions
  • Resolving change impacts for SITE versions
  • Implementing the new SITE versions
  • Keeping code in sync.

Check for Existence of Any SITE Versions

For smaller upgrades, this can be accomplished by comparing the list of components delivered to the list of components in the SITE application. For larger upgrades or new releases, it may be necessary to compare the new base datasets with the previous version, along with the SITE application datasets. Identify where any base components have changed that also exist in the SITE application.

Note that there are different ways that customization may have been done:

  • Components customized from the 

    Code Pipeline

     base software datasets (REXX/CLIST, ISPF panels/skeletons/messages). Some components in these base datasets are expected to have local customization. They are copied to the SITE application for the customization to be made, then implemented using the SITE application lifecycle. If such components are in the SITE application, they will contain some local change—otherwise they would not be required in the SITE datasets.

  • Components implemented/customized from samples in the 

    Code Pipeline

     base SAMPLIB dataset. Many product features are provided with samples (REXX, ISPF panels/skeletons/messages, and JCL). Those samples would be imported to the SITE application and, in some cases, may not require any local changes. They would just need to be in the SITE datasets to be available to the Code Pipeline runtime environment. Depending on the Code Pipeline implementation at your site, the names used in the SITE application may also be different from the supplied samples.

Resolve Change Impacts for SITE Versions

If your SITE application has a version of a base component or sample received in an update, the update changes will need to be reviewed and incorporated into the SITE application version as part of the maintenance process. This could be done by a three-way compare of the previous base version, the new base version, and the current SITE version. It could also be done by comparing the SITE version to the current base, in conjunction with comparing the current and previous base versions.

If a new sample is simply copied to the SITE datasets without any changes (to quickly make it available, for instance), the new version can just be imported into the SITE application. If the SITE version contained changes, it might be easier—depending on the scale of the differences—to import the new version and reapply the local changes, or to check out the version in the SITE application and apply the new base version changes.

Workbench for Eclipse

, with its compare/merge capabilities, can make this process simpler. You may also utilize the merge feature in the ISPF PDF editor.

Implementing the New SITE Versions

After any impacts in the SITE application have been identified (and if necessary resolved by adding new SITE versions), the SITE application lifecycle can be used to promote those SITE changes to production. How the SITE application is used and made available in any given Code Pipeline environment will depend on the local procedures established as part of the Code Pipeline implementation. It is very important that any base software changes being made active for a given Code Pipeline environment occur in careful coordination with any required SITE changes.

Keeping Code in Sync

Not every PTF will be essential for every installation. Applying those PTFs might still be necessary, however, because they can include updates to components that are generally used. If such a PTF isn’t applied, and a later PTF also updates the same component, SMP/E will prompt you to apply the previous PTF. Also, the PTF may update (for example) a REXX program. If that program is in the SITE application and the updates aren’t applied, subsequent updates to that program will be more difficult to apply. There will be more source code differences because the latest maintenance will include all the updated code, and the local version may be missing updates.

Error
Warning

Applying PTFs to an operational Code Pipeline environment without checking for and resolving any SITE application impacts could severely affect that environment. A local procedure to manage such changes with the involvement of the Code Pipeline Administrator is essential to ensure such impacts do not affect your Code Pipeline environment.

Abends in ISPF Client

The TSO/E Customization manual for z/OS 2.4.0 describes the region size as "the number of kilobytes of main storage available for the TSO/E session. … The maximum allowable region size is 2096128".

Determining a value for region size when using Code Pipeline is a difficult task. Thus, if your site allows you to use the maximum value, we recommend that you use it. However, if you run out of storage, and receive a 0C4 abend or a user abend, consider the following processing scenarios to take corrective steps:

  • If your site does not allow using the maximum value, then the size value depends on what work you perform during that sign on.
  • If you run other programs in your TSO session, you must factor in their needs and what Code Pipeline requires.
  • If you split your screen to do other work, such as using OMVS to edit files or run programs, you need to factor that in.
  • If you are only using Code Pipeline, then the functions you perform have their own storage needs.

We recommend that you increase your TSO region size to the maximum allowed value.

Searching tasks by WORK REQ No.

When you search for tasks by using the WORK REQ No. value in your search string, the system may not return all the expected results.

This happens when a container is comprised of tasks transferred from other containers. This is explained in the following example.

Consider that you are performing a search by using the WORK REQ No. field as shown in the following figure.

Search by WORK REQ No.

22.01             CONFIRM WORK LIST SELECTION CRITERIA                         
COMMAND ===>                                                                   
                                                                              
                                                                  More:     +
 In Progres  Y  (Y/N )                 Filter Dates   N           (Y/N )      
 Production  N  (Y/N )                   Start Date   ________    (YYYY-MM-DD)
 Historical  N  (Y/N )                   End Date     ________    (YYYY-MM-DD)
 Inactive    N  (Y/N )                 Batch Mode     N           (Y/N )      
                                                                              
 Type        ________                                                         
 Name        ________________________________________________________________
 Level       ____        Last Op       __                                     
 Application ________    SubAppl       ________  Stream      ________         
 Last Update ________    CheckOut User ________  Environment ____             
 Release     __________  WORK REQ No.  ________________________               
 OwnApplGrp  __________  Assignment ID __________                                                     
 Search Str. __________________________________________________  More.. _          

Your site may have customized the WORK REQ No. field. Verify the External Reference variable HEAD2 to see if that field was customized for your site, and verify its value. Consider that you create an assignment container (Container 1) and specify a WORK REQ value 12345678, as shown in the following figure.

Container 1: Assignment Container

22.01                      CONTAINER LIST                   Row     1 of     6
Command ===>                                                  Scroll ===> CSR  
                                                                     More -->
   View: U Closed: N User: USER001                                            
                                                                              
     Appl     SubAppl  T Container  WORK REQ     Description                   
     ________ ________ _ __________ ____________ ______________________________
__   PLAY     PLAY     A PLAY000052 12345678     WORK REQ TEST                 
__   PLAY     PLAY     A PLAY000003              TEST COMPILES                 
__   PLAY     PLAY     A PLAY000002              IVP2 TEST COMPILES          
__   PLAY     PLAY     A PLAY000001              IVP2 - LOAD PLAY COMPONENTS   
__   SITE     SITE     A SITE000002              IVP2 INSTALL GENERATE SYSTEM
__   SITE     SITE     A SITE000001              IVP1 FIRST ASSIGNMENT          

Then, you create a release container (Container 2) and specify a WORK REQ value 34567, as shown in the following figure.

Container 2: Release Container

22.01                      CONTAINER LIST                   Row     1 of     2
Command ===>                                                  Scroll ===> CSR  
                                                                     More -->
   View: U Closed: N User: USER001                                            
                                                                              
     Appl     SubAppl  T Container  WORK REQ     Description                   
     ________ ________ _ __________ ____________ ______________________________
__   PLAY     PLAY     R R121212    34567        WORK REF TESTING              
__   PLAY     PLAY     S S000000008              WORK REQ TEST                 

You would notice that the WORK REQ values are different for the two containers. Consider that you transfer a task from Container 1 to Container 2. However, you specify only the release container name in Work List as shown in the following figure.

Release container name in Work List

22.01             CONFIRM WORK LIST SELECTION CRITERIA                         
COMMAND ===>                                                                   
                                                                              
                                                                              
 In Progres  Y  (Y/N )                 Filter Dates   N           (Y/N )      
 Production  N  (Y/N )                   Start Date   __________  (YYYY-MM-DD)
 Historical  N  (Y/N )                   End Date     __________  (YYYY-MM-DD)
 Inactive    N  (Y/N )                 Batch Mode     N           (Y/N )      
                                                                              
 Type        ________                                                         
 Name        ________________________________________________________________
 Level       ____        Last Op                                              
 Application ________    SubAppl       ________  Stream      ________         
 Last Update USER001_    CheckOut User ________  Environment ____             
 Release     R121212___  WORK REQ No.  ________________________               
 OwnApplGrp  __________  Assignment ID __________                                                     
 Search Str. __________________________________________________  More..              

The results displayed are as shown in the following figure.

Search result with WORK REQ value

22.01                WORK IN PROGRESS/AUDIT LIST            Row     1 of     1
Command ===>                                                  Scroll ===> CSR  
                                                                     More -->
  Work: Y Prod: Y Hist: N Inactive: N Date: N From: __________ To: __________
                                                                              
  Type     Name     Op Lev  A User     Date MM DD Time  WORK REQ              
   ________ ________ __ ____ _ ________ __________ _____ ____________          
__ COB      TPROG02  P  PRD    USER001  2022-05-29 15:43 12345678              

Note that the WORK REQ value for the task in the preceding figure, is the same as the assignment container (Container 1).

Consider that you want to search for tasks that have the WORK REQ number of the release container; you would need to set the work list screen as shown in the following figure.

Searching tasks by WORK REQ No. - Work List screen

22.01             CONFIRM WORK LIST SELECTION CRITERIA                         
COMMAND ===>                                                                   
                                                                              
                                                                              
 In Progres  Y  (Y/N )                 Filter Dates   N           (Y/N )      
 Production  N  (Y/N )                   Start Date   __________  (YYYY-MM-DD)
 Historical  N  (Y/N )                   End Date     __________  (YYYY-MM-DD)
 Inactive    N  (Y/N )                 Batch Mode     N           (Y/N )      
                                                                              
 Type        ________                                                         
 Name        ________________________________________________________________
 Level       ____        Last Op                                              
 Application ________    SubAppl       ________  Stream      ________         
 Last Update USER001_    CheckOut User ________  Environment ____             
 Release     __________  WORK REQ No.  12345678________________               
 OwnApplGrp  __________  Assignment ID __________                                                     
 Search Str. __________________________________________________  More..             

The search results displayed are as shown in the following figure.

Results for search criterion - WORK REQ number of the release container

22.01                                        WORK IN PROGRESS/AUDIT LIST                            
Command ===>                                                                                        
                                                                                                   
  Work: Y Prod: N Hist: N Inactive: N Date: N From:            To:                                 
                                                                                                   
  Type Name     Op Lev  Env  Appl User     Date MM DD Time  Assignment Copyuser Release    WORK REQ
                                                                                           34567
                                                                                                                                                                                            
------------------------------- Bottom of List -------------------------------

Note that there are no tasks listed though there are tasks in that container. This is because the WORK REQ number for a task does not change when your transfer the task from an assignment container to a release container. Tasks in a release container may come from many assignment containers, each having different WORK REQ numbers or none. Hence, we recommend that you do not use a WORK REQ No. as a search criterion for tasks.

The WORK REQ field on a release container is useful as documentation and as a problem-tracking number. The code in this release container will resolve that issue. However, you may not be able to use that field as a search criterion.

 

Tip: For faster searching, add an asterisk to the end of your partial query. Example: cert*

BMC AMI DevX Code Pipeline 22.01