C – Checkout/Copy
This section provides information about Checkout/Copy.
C – Definition
Type C beside a module to invoke the Code Pipeline checkout/copy routine. Note modules are never actually “checked out” of Code Pipeline. The Checkout routine simply makes a copy of a module version to base further changes on.
Purpose
The C (Checkout) operation is used to make a copy of a module version to apply updates. Modules are first Added to a Task List, then C(hecked out) for update, then S(elected) to Edit.
Checkout for a New Component
When a component is new, and there are no other versions at Production or elsewhere in the change cycle, there is no source to copy. Code Pipeline creates a blank/empty component.
Checkout Conflicts
Checkout is one of the more complex operations. If another version of the same name is anywhere in the change cycle, Code Pipeline prompts with a list of the component versions to choose from. In many cases, the version in Production may not be the latest version of the module, so users should look at the version list carefully, before picking the version to base changes on.
Checkout Conflict Example
In the example shown in the following figure, other versions are already in the change cycle at the STG1 and QA levels. Depending on the Checkout Level, Code Pipeline will suggest the best version (the one immediately above it in the Path) by showing an S beside it. For example, for DEV1, the version at STG1 is the best candidate. If it is to be based on a different version, the S can be changed to another version.
Version Conflicts
Command ===> Scroll ===> CSR
More -->
Inactive: N
Appl: PLAY SubAppl: PLAY Type: COB Name: TPROG02
Lev iVer bVer rVer Op A User Date MM DD Time Status
____ ____ ____ ____ __ _ ________ __________ _____ ____________________
__ QA 6 5 5 G USER002 2022-05-14 13:19
S_ STG1 7 6 6 P USER002 2022-05-14 13:19
__ PRD 4 3 3 P USER001 2022-05-11 14:02
------------------------------- Bottom of List -------------------------------
From this list, the user can:
- Browse the modules at any level with the B command
- Compare the versions at various levels using the CM command to see what has been changed.
Historical Versions
To check out from an Inactive version, use special Action Code H on the Task Add.
Historical Versions
Command ===> Scroll ===> CSR
More -->
Inactive: Y
Appl: PLAY SubAppl: PLAY Type: COB Name: TPROG02
Lev iVer bVer rVer Op A User Date MM DD Time Status
____ ____ ____ ____ __ _ ________ __________ _____ ____________________
__ QA 6 5 5 G USER002 2022-05-14 13:19
__ QA 5 4 4 G USER002 2022-05-14 13:19 => Superseded Backup
S_ STG1 7 6 6 P USER002 2022-05-14 13:19
__ PRD 4 3 3 P USER001 2022-05-11 14:20
__ PRD 3 2 2 P USER001 2022-05-11 14:10 => History
__ PRD 2 2 2 P USER001 2022-05-11 14:00 => History
__ PRD 1 0 0 TL USER001 2022-05-09 13:58 => History
------------------------------- Bottom of List -------------------------------
Conflicts Can be Managed
Because the developer doing the Checkout can readily see the other version ahead in the change cycle, conflicts are visible and can be more easily managed.
Component Versions Can Exist at Every Level
Module versions may be Checked out multiple times, in as many update areas as are available. For example, if an Application has defined three change cycle paths—Development, Maintenance, and Fix—the same module could be checked out three times, in all three change paths, with changes for different reasons.
Check Versions Flag
In the examples shown in the following Check Versions Flag and Check Versions Message figures, a new version of the program is checked out to FIX, based on the version in Production.
Check Versions Flag
Command ===> Scroll ===> CSR
More -->
Inactive: Y
Appl: PLAY SubAppl: PLAY Type: COB Name: TPROG02
Lev iVer bVer rVer Op A User Date MM DD Time Status
____ ____ ____ ____ __ _ ________ __________ _____ ____________________
__ QA 6 5 5 G USER002 2022-05-14 13:19
__ STG1 7 6 6 P USER002 2022-05-14 13:19
S_ PRD 4 3 3 P USER001 2022-05-11 14:20
------------------------------- Bottom of List -------------------------------
To warn users working with the other versions at STG1 and QA, the 'Check Versions' message appears in the Status field beside those versions. It creates greater visibility and is an early notification of a potential version conflict requiring versions to be merged.
Check Versions Message
ASSIGNMENT PLAY000022: CHANGE CYCLE EXAMPLE 2 Row 1 of 10
Command ===> Scroll ===> CSR
More -->
+-----------------------------------------------------------------------------+
| Select(/) Add Approve Close Join Reset Show/Hide Work ++/-- |
+-----------------------------------------------------------------------------+
Type Name Lev Op A User Date MM DD Time Status
________ ________ ____ __ _ ________ __________ _____ ____________________
__ CLST TREXX03 STG1 P USER003 2022-05-16 12:19
__ COB TPROG01 DEV1 G USER002 2022-05-16 10:14
__ COB TPROG02 DEV1 G USER001 2022-05-16 10:11
__ COB TPROG02 FIX C USER003 2022-05-16 13:01 => Check Versions
__ COB TSUBR01 STG1 G USER002 2022-05-16 10:14
__ COB TSUBR02 DEV1 G USER003 2022-05-16 10:19
__ COPY TCPYA01 STG1 G USER002 2022-05-16 10:14
__ COPY TCPYA02 DEV1 G USER002 2022-05-16 10:14
__ COPY TCPYB01 STG1 P USER002 2022-05-16 10:14
__ COPY TCPYB02 DEV1 P USER002 2022-05-16 10:14
------------------------------- Bottom of List -------------------------------
COBOL Program TPROG02 is Now in FIX
There are now four versions of COBOL program TPROG02 in the change cycle: one at Production, one at the QA level, one at STG1 level, and one at the FIX level. The first two versions exist in other assignments, whereas the latter two are in the assignment shown in the above example.
V List Shows Module at FIX
Use the V (Versions command) beside COBOL program TPROG02 to see the version list again. For more information, see V – Version List.
The Component Version list now shows the version at the FIX level that has just been checked out.
V List
Command ===> Scroll ===> CSR
More -->
Inactive: N
Appl: PLAY SubAppl: PLAY Type: COB Name: TPROG02
Lev iVer bVer rVer Op A User Date MM DD Time Status
____ ____ ____ ____ __ _ ________ __________ _____ ____________________
__ QA 6 5 5 G USER002 2022-05-14 13:19
__ STG1 7 6 6 P USER002 2022-05-14 13:19
__ PRD 4 3 3 P USER001 2022-05-11 14:02
__ FIX 0 4 4 C USER003 2022-05-16 13:01
------------------------------- Bottom of List -------------------------------
iVer, bVer, and rVer
As shown in the preceding figure (Component Version list), Code Pipeline warns when there are possible conflicts—and even displays the Version number that changes were based on—to help resynchronize the versions.
- iVer is the Code Pipeline internal version number. This number is 0 while the module is still at the lowest (update) level in the change cycle. This version at FIX will become version 8 when promoted to the next level.
- bVer is the base version this specific component version is based on. Note the version in FIX (bVer = 4) was copied from PRD (iVer = 4).
- rVer is the replace version this specific version may replace if it must be promoted over the top of another version.
Modules Already at Target Level
Occasionally, a module that must be checked out for update is already in that physical file, and therefore is in the way of the Checkout operation. In this situation, an example error message is displayed as shown in the following figure.
Checkout Error Message
Command ===> Scroll ===> CSR
More -->
+-----------------------------------------------------------------------------+
| Setproc Errors. All selections failed for the reasons indicated below. |
| Press ENTER to continue. |
+-----------------------------------------------------------------------------+
Type Name Lev Op A User Date MM DD Time Status
________ ________ ____ __ _ ________ __________ _____ ____________________
C COB TPROG02 DEV1
Conflicts with task in assignment PLAY000002, last operation User ID
USER002
------------------------------- Bottom of List -------------------------------
At this point, there are two choices as to how to proceed:
- Check the module out to an alternate target library (that is, another leg), or
- RE(name) the module in the target level library to an alternate name to set it aside temporarily.
Email Interface
When checking out a new version while others already exist somewhere below Production in the change cycle, Code Pipeline can send an email or other type of message to alert other users that a new version has been created. The userIDs of the owners of the other versions are already filled in on the Email Interface screen. Type S beside the Email/SMTP input field and press Enter, then press Enter again on the Confirmation screen.
Email Interface
COMMAND ===>
Send to: USER002_ ________ ________ ________ ________ (Leave Blank for
________ ________ ________ ________ ________ list of users)
--EMAIL-- ------MVS/TSO------- ----VM---- (Enter One
Method: SMTP => _ SEND => _ XMIT => _ Profs => _ Other => _ or More)
Subject: Checkout of Module TCPYB10______________________________
Message: USER003 has checked out a module you currently have signed out.__
The details of the checkout are as follows:______________________
> Module Type: COPY______________________________________
> Module Name: TCPYB10___________________________________
> Appl / SubAppl: PLAY / PLAY_______________________________
> Current Level: DEV1______________________________________
> Level Copied From: STG1______________________________________
> Project: PLAY000022________________________________
> Checkout Date: 22/05/31 @ 15:51:01_______________________
Press ENTER to send the message or END to exit.